open_source_licenses.txt

Cloud Director UI Emulator 15.0.2 GA

======================================================================

The following copyright statements and licenses apply to various open
source software packages (or portions thereof) that are included in
this VMware service.

The VMware service may also include other VMware components, which may
contain additional open source software packages. One or more such
open_source_licenses.txt files may therefore accompany this VMware
service.

The VMware service that includes this file does not necessarily use all the open 
source software packages referred to below and may also only use portions of a 
given package.

==================== TABLE OF CONTENTS ====================

The following is a listing of the open source components detailed in
this document. This list is provided for your convenience; please read
further if you wish to review the copyright notice(s) and the full text
of the license associated with each component.


SECTION 1: Apache License, V2.0

   >>> forever-agent-0.6.1
   >>> tunnel-agent-0.6.0
   >>> caseless-0.12.0
   >>> aws-sign2-0.7.0
   >>> oauth-sign-0.9.0
   >>> validate-npm-package-license-3.0.4
   >>> reflect-metadata-0.1.13
   >>> @xtuc/long-4.2.2
   >>> request-2.88.2
   >>> websocket-driver-0.7.4
   >>> websocket-extensions-0.1.4
   >>> human-signals-2.1.0
   >>> rxjs-6.6.7
   >>> faye-websocket-0.11.4
   >>> @assemblyscript/loader-0.10.1
   >>> ansi-html-community-0.0.8
   >>> critters-0.0.16
   >>> @ampproject/remapping-2.2.0
   >>> ecdsa-sig-formatter-v1.0.11
   >>> @jridgewell/set-array-1.1.2
   >>> less-4.1.3
   >>> rxjs-7.8.0
   >>> typescript-4.9.4
   >>> spdx-correct-3.2.0
   >>> @sigstore/protobuf-specs-0.1.0
   >>> @pkgjs/parseargs-0.11.0
   >>> sigstore-1.7.0
   >>> @sigstore/tuf-1.0.2
   >>> exponential-backoff-3.1.1

SECTION 2: BSD-STYLE, MIT-STYLE, OR SIMILAR STYLE LICENSES

   >>> typedarray-0.0.6
   >>> media-typer-0.3.0
   >>> concat-map-0.0.1
   >>> is-typedarray-1.0.0
   >>> isstream-0.1.2
   >>> json-stringify-safe-5.0.1
   >>> delayed-stream-1.0.0
   >>> ee-first-1.1.1
   >>> cookie-signature-1.0.6
   >>> unpipe-1.0.0
   >>> sprintf-js-1.0.3
   >>> through-2.3.8
   >>> util-deprecate-1.0.2
   >>> jsesc-0.5.0
   >>> text-table-0.2.0
   >>> is-arrayish-0.2.1
   >>> escape-html-1.0.3
   >>> delegates-1.0.0
   >>> requires-port-1.0.0
   >>> core-util-is-1.0.2
   >>> assert-plus-1.0.0
   >>> isarray-1.0.0
   >>> escape-string-regexp-1.0.5
   >>> imurmurhash-0.1.4
   >>> wrappy-1.0.2
   >>> set-blocking-2.0.0
   >>> console-control-strings-1.1.0
   >>> has-unicode-2.0.1
   >>> fs.realpath-1.0.0
   >>> unc-path-regex-0.1.2
   >>> lodash.isstring-4.0.1
   >>> normalize-range-0.1.2
   >>> extsprintf-1.3.0
   >>> once-1.4.0
   >>> merge-descriptors-1.0.1
   >>> require-directory-2.1.1
   >>> path-to-regexp-0.1.7
   >>> methods-1.1.2
   >>> lodash.isplainobject-4.0.6
   >>> array-flatten-1.1.1
   >>> inherits-2.0.3
   >>> os-tmpdir-1.0.2
   >>> inflight-1.0.6
   >>> is-glob-3.1.0
   >>> path-is-absolute-1.0.1
   >>> buffer-equal-constant-time-1.0.1
   >>> lodash.once-4.1.1
   >>> path-dirname-1.0.2
   >>> commondir-1.0.1
   >>> http-deceiver-1.2.7
   >>> hpack.js-2.1.6
   >>> select-hose-2.0.0
   >>> asynckit-0.4.0
   >>> boolbase-1.0.0
   >>> dashdash-1.14.1
   >>> tweetnacl-0.14.5
   >>> wcwidth-1.0.1
   >>> glob-parent-3.1.0
   >>> is-extglob-2.1.1
   >>> jsbn-0.1.1
   >>> isexe-2.0.0
   >>> event-emitter-0.3.5
   >>> es6-map-0.1.5
   >>> ms-2.0.0
   >>> jsonparse-1.3.1
   >>> getpass-0.1.7
   >>> batch-0.6.1
   >>> sax-1.2.4
   >>> image-size-0.5.5
   >>> verror-1.10.0
   >>> color-name-1.1.3
   >>> is-plain-object-2.0.4
   >>> remove-trailing-separator-1.1.0
   >>> function-bind-1.1.1
   >>> bytes-3.0.0
   >>> etag-1.8.1
   >>> isobject-3.0.1
   >>> dns-equal-1.0.0
   >>> tmp-0.0.33
   >>> fresh-0.5.2
   >>> utils-merge-1.0.1
   >>> vary-1.1.2
   >>> debug-2.6.9
   >>> http-signature-1.2.0
   >>> har-schema-2.0.0
   >>> performance-now-2.1.0
   >>> promise-inflight-1.0.1
   >>> humanize-ms-1.2.1
   >>> abbrev-1.1.1
   >>> source-map-0.6.1
   >>> es6-iterator-2.0.3
   >>> serve-index-1.9.1
   >>> setprototypeof-1.1.0
   >>> systemjs-0.20.19
   >>> ultron-1.1.1
   >>> mime-1.6.0
   >>> prr-1.0.1
   >>> ws-3.3.3
   >>> color-support-1.1.3
   >>> is-relative-1.0.0
   >>> is-absolute-1.0.0
   >>> is-unc-path-1.0.0
   >>> depd-1.1.2
   >>> encodeurl-1.0.2
   >>> pump-2.0.1
   >>> resolve-from-4.0.0
   >>> has-flag-3.0.0
   >>> brace-expansion-1.1.11
   >>> lodash.includes-4.3.0
   >>> is-windows-1.0.2
   >>> json-stable-stringify-without-jsonify-1.0.1
   >>> lodash.isnumber-3.0.3
   >>> argparse-1.0.10
   >>> lodash.isinteger-4.0.4
   >>> lodash.isboolean-3.0.3
   >>> string_decoder-1.1.1
   >>> statuses-1.5.0
   >>> http-errors-1.6.3
   >>> concat-stream-1.6.2
   >>> pump-3.0.0
   >>> minimalistic-assert-1.0.1
   >>> obuf-1.1.2
   >>> safe-buffer-5.1.2
   >>> wbuf-1.7.3
   >>> ansi-styles-3.2.1
   >>> clone-1.0.4
   >>> safer-buffer-2.1.2
   >>> pumpify-1.5.1
   >>> has-1.0.3
   >>> json-schema-traverse-0.4.1
   >>> error-ex-1.3.2
   >>> extend-3.0.2
   >>> bcrypt-pbkdf-1.0.2
   >>> esprima-4.0.1
   >>> lodash.debounce-4.0.8
   >>> require-from-string-2.0.2
   >>> to-absolute-glob-2.0.2
   >>> glob-stream-6.1.0
   >>> ecc-jsbn-0.1.2
   >>> leven-2.1.0
   >>> ordered-read-streams-1.0.1
   >>> is-negated-glob-1.0.0
   >>> supports-color-5.5.0
   >>> to-fast-properties-2.0.0
   >>> color-convert-1.9.3
   >>> js-tokens-4.0.0
   >>> form-data-2.3.3
   >>> through2-2.0.5
   >>> array-flatten-2.1.2
   >>> @xtuc/ieee754-1.2.0
   >>> color-name-1.1.4
   >>> big.js-5.2.2
   >>> @yarnpkg/lockfile-1.1.0
   >>> lru-cache-5.1.1
   >>> spdy-transport-3.0.0
   >>> chalk-2.4.2
   >>> parse-node-version-1.0.1
   >>> aproba-2.0.0
   >>> duplexify-3.7.1
   >>> normalize-path-3.0.0
   >>> randombytes-2.1.0
   >>> on-headers-1.0.2
   >>> p-try-2.2.0
   >>> pify-4.0.1
   >>> mimic-fn-2.1.0
   >>> make-dir-2.1.0
   >>> compression-1.7.4
   >>> camelcase-5.3.1
   >>> get-caller-file-2.0.5
   >>> parseurl-1.3.3
   >>> @types/caseless-0.12.2
   >>> type-is-1.6.18
   >>> karma-source-map-support-1.4.0
   >>> combined-stream-1.0.8
   >>> ms-2.1.2
   >>> mute-stream-0.0.8
   >>> p-locate-4.1.0
   >>> external-editor-3.1.0
   >>> xtend-4.0.2
   >>> globals-11.12.0
   >>> callsites-3.1.0
   >>> esutils-2.0.3
   >>> parent-module-1.0.1
   >>> jws-3.2.2
   >>> form-data-2.5.1
   >>> type-1.2.0
   >>> end-of-stream-1.4.4
   >>> yallist-3.1.1
   >>> through2-filter-3.0.0
   >>> unique-stream-2.3.1
   >>> reusify-1.0.4
   >>> fill-range-7.0.1
   >>> path-type-4.0.0
   >>> to-regex-range-5.0.1
   >>> is-number-7.0.0
   >>> string_decoder-1.3.0
   >>> dir-glob-3.0.1
   >>> clean-stack-2.2.0
   >>> braces-3.0.2
   >>> thunky-1.1.0
   >>> is-fullwidth-code-point-3.0.0
   >>> color-convert-2.0.1
   >>> merge-stream-2.0.0
   >>> path-exists-4.0.0
   >>> resolve-from-5.0.0
   >>> shallow-clone-3.0.1
   >>> pkg-dir-4.2.0
   >>> clone-deep-4.0.1
   >>> depd-2.0.0
   >>> stream-shift-1.0.1
   >>> fast-json-stable-stringify-2.1.0
   >>> jsonwebtoken-8.5.1
   >>> uuid-3.4.0
   >>> kind-of-6.0.3
   >>> compressible-2.0.18
   >>> pako-1.0.11
   >>> @babel/plugin-syntax-object-rest-spread-7.8.3
   >>> @babel/plugin-syntax-json-strings-7.8.3
   >>> @babel/plugin-syntax-dynamic-import-7.8.3
   >>> @babel/plugin-syntax-optional-catch-binding-7.8.3
   >>> @babel/plugin-syntax-nullish-coalescing-operator-7.8.3
   >>> @babel/plugin-syntax-optional-chaining-7.8.3
   >>> figures-3.2.0
   >>> emojis-list-3.0.0
   >>> rimraf-3.0.2
   >>> @types/parse-json-4.0.0
   >>> yallist-4.0.0
   >>> handle-thing-v2.0.1
   >>> process-nextick-args-v2.0.1
   >>> indent-string-v4.0.0
   >>> locate-path-v5.0.0
   >>> find-up-v4.1.0
   >>> fs-minipass-v2.1.0
   >>> has-flag-4.0.0
   >>> async-limiter-v1.0.1
   >>> restore-cursor-v3.1.0
   >>> estraverse-v4.3.0
   >>> cssesc-3.0.0
   >>> cli-cursor-v3.1.0
   >>> tree-kill-v1.2.2
   >>> emoji-regex-v8.0.0
   >>> is-interactive-1.0.0
   >>> minipass-collect-1.0.2
   >>> jsesc-v2.5.2
   >>> minipass-flush-1.0.5
   >>> iconv-lite-v0.4.24
   >>> tough-cookie-v2.5.0
   >>> inherits-v2.0.4
   >>> range-parser-v1.2.1
   >>> spdy-4.0.2
   >>> p-limit-2.3.0
   >>> is-binary-path-v2.1.0
   >>> run-async-2.4.1
   >>> spdx-expression-parse-3.0.1
   >>> http-proxy-1.18.1
   >>> which-2.0.2
   >>> merge2-1.4.1
   >>> mkdirp-1.0.4
   >>> shebang-regex-3.0.0
   >>> shebang-command-2.0.0
   >>> path-key-3.1.1
   >>> paho-mqtt-1.1.0
   >>> is-wsl-2.2.0
   >>> make-dir-3.1.0
   >>> chownr-2.0.0
   >>> p-map-4.0.0
   >>> neo-async-2.6.2
   >>> lru-cache-6.0.0
   >>> test-exclude-6.0.0
   >>> @istanbuljs/load-nyc-config-1.1.0
   >>> get-package-type-0.1.0
   >>> strip-final-newline-2.0.0
   >>> ajv-keywords-3.5.2
   >>> har-validator-5.1.5
   >>> npm-run-path-4.0.1
   >>> eventemitter3-4.0.7
   >>> cli-width-3.0.0
   >>> cross-spawn-7.0.3
   >>> aggregate-error-3.1.0
   >>> next-tick-1.1.0
   >>> minipass-pipeline-1.2.4
   >>> json-parse-even-better-errors-2.3.1
   >>> eastasianwidth-0.2.0
   >>> parse5-6.0.1
   >>> ajv-6.12.6
   >>> tslib-1.14.1
   >>> escalade-3.1.1
   >>> regex-parser-2.2.11
   >>> agent-base-6.0.2
   >>> regenerate-1.4.2
   >>> base64-js-1.5.1
   >>> setprototypeof-1.2.0
   >>> debug-3.2.7
   >>> gensync-1.0.0-beta.2
   >>> @babel/plugin-syntax-async-generators-7.8.4
   >>> uuid-8.3.2
   >>> errno-0.1.8
   >>> ms-2.1.3
   >>> js-yaml-3.14.1
   >>> @ngrx/effects-10.1.2
   >>> @ngrx/store-10.1.2
   >>> encoding-v0.1.13
   >>> es6-symbol-v3.1.3
   >>> esrecurse-v4.3.0
   >>> ansi-styles-v4.3.0
   >>> minizlib-v2.1.2
   >>> eslint-scope-v5.1.1
   >>> @babel/plugin-syntax-export-namespace-from-7.8.3
   >>> safe-buffer-v5.2.1
   >>> @babel/plugin-syntax-numeric-separator-7.10.4
   >>> fast-deep-equal-v3.1.3
   >>> @babel/plugin-syntax-logical-assignment-operators-7.10.4
   >>> parse5-htmlparser2-tree-adapter-6.0.1
   >>> import-fresh-3.3.0
   >>> uri-js-4.4.1
   >>> call-bind-1.0.2
   >>> @istanbuljs/schema-0.1.3
   >>> entities-2.2.0
   >>> lodash-4.17.21
   >>> json-schema-traverse-1.0.0
   >>> @vcd/bindings-9.1.1
   >>> @types/mime-1.3.2
   >>> events-3.3.0
   >>> is-what-3.14.1
   >>> is-lambda-1.0.1
   >>> split2-3.2.2
   >>> minipass-sized-1.0.3
   >>> minipass-json-stream-1.0.1
   >>> fsevents-2.3.2
   >>> is-unicode-supported-0.1.0
   >>> log-symbols-4.1.0
   >>> @babel/plugin-syntax-class-properties-7.12.13
   >>> glob-parent-5.1.2
   >>> bl-4.1.0
   >>> env-paths-2.2.1
   >>> side-channel-1.0.4
   >>> binary-extensions-v2.2.0
   >>> y18n-5.0.8
   >>> pretty-bytes-5.6.0
   >>> yaml-1.10.2
   >>> postcss-modules-scope-3.0.0
   >>> type-fest-0.21.3
   >>> postcss-modules-extract-imports-3.0.0
   >>> Buffer-v5.7.1
   >>> ansi-escapes-4.3.2
   >>> wrap-ansi-v7.0.0
   >>> parse-json-v5.2.0
   >>> ieee754-v1.2.1
   >>> queue-microtask-1.2.3
   >>> run-parallel-v1.2.0
   >>> promise-retry-2.0.1
   >>> err-code-2.0.3
   >>> balanced-match-1.0.2
   >>> icss-utils-5.1.0
   >>> postcss-modules-values-4.0.0
   >>> get-stream-6.0.1
   >>> readdirp-3.6.0
   >>> chrome-trace-event-1.0.3
   >>> is-docker-2.2.1
   >>> detect-node-2.1.0
   >>> iconv-lite-0.6.3
   >>> path-parse-1.0.7
   >>> node-addon-api-3.2.1
   >>> execa-5.1.1
   >>> forwarded-0.2.0
   >>> proxy-addr-2.0.7
   >>> tslib-2.3.0
   >>> @babel/plugin-syntax-top-level-await-7.14.5
   >>> @babel/plugin-syntax-class-static-block-7.14.5
   >>> @babel/plugin-syntax-private-property-in-object-7.14.5
   >>> webpack-merge-5.8.0
   >>> emoji-regex-9.2.2
   >>> @nodelib/fs.scandir-2.1.5
   >>> adjust-sourcemap-loader-4.0.0
   >>> @nodelib/fs.stat-2.0.5
   >>> @nodelib/fs.walk-1.2.8
   >>> @types/qs-6.9.7
   >>> ora-5.4.1
   >>> modern-normalize-1.1.0
   >>> chalk-4.1.2
   >>> buffer-from-1.1.2
   >>> is-stream-2.0.1
   >>> supports-color-8.1.1
   >>> d-v1.0.1
   >>> onetime-v5.1.2
   >>> retry-v0.12.0
   >>> commander-v2.20.3
   >>> chardet-v0.7.0
   >>> supports-color-v7.2.0
   >>> ipaddr.js-v1.9.1
   >>> core-util-is-1.0.3
   >>> find-cache-dir-3.3.2
   >>> ansi-regex-5.0.1
   >>> unicode-canonical-property-names-ecmascript-2.0.0
   >>> unicode-match-property-ecmascript-2.0.0
   >>> tapable-2.2.1
   >>> domutils-2.8.0
   >>> strip-ansi-6.0.1
   >>> string-width-4.2.3
   >>> is-glob-4.0.3
   >>> dependency-graph-0.11.0
   >>> @webassemblyjs/wasm-edit-1.11.1
   >>> @webassemblyjs/ast-1.11.1
   >>> symbol-observable-4.0.0
   >>> @webassemblyjs/helper-wasm-bytecode-1.11.1
   >>> @webassemblyjs/helper-api-error-1.11.1
   >>> @webassemblyjs/wasm-opt-1.11.1
   >>> @webassemblyjs/helper-buffer-1.11.1
   >>> hdr-histogram-percentiles-obj-3.0.0
   >>> @webassemblyjs/wast-printer-1.11.1
   >>> define-lazy-prop-2.0.0
   >>> eventemitter-asyncresource-1.0.0
   >>> @webassemblyjs/wasm-gen-1.11.1
   >>> @webassemblyjs/utf8-1.11.1
   >>> @webassemblyjs/helper-wasm-section-1.11.1
   >>> @webassemblyjs/floating-point-hex-parser-1.11.1
   >>> @webassemblyjs/wasm-parser-1.11.1
   >>> @webassemblyjs/helper-numbers-1.11.1
   >>> smart-buffer-4.2.0
   >>> @webassemblyjs/leb128-1.11.1
   >>> glob-to-regexp-0.4.1
   >>> nice-napi-1.0.2
   >>> @webassemblyjs/ieee754-1.11.1
   >>> @tootallnate/once-2.0.0
   >>> http-proxy-agent-5.0.0
   >>> istanbul-lib-coverage-3.2.0
   >>> picocolors-1.0.0
   >>> wide-align-1.1.5
   >>> @types/connect-3.4.35
   >>> @types/range-parser-1.2.4
   >>> glob-parent-6.0.2
   >>> babel-plugin-istanbul-6.1.1
   >>> default-gateway-6.0.3
   >>> is-plain-obj-3.0.0
   >>> ajv-formats-2.1.1
   >>> safe-identifier-0.4.2
   >>> ansi-regex-6.0.1
   >>> retry-0.13.1
   >>> statuses-2.0.1
   >>> estraverse-5.3.0
   >>> @babel/preset-modules-0.1.5
   >>> asn1-0.2.6
   >>> json-schema-0.4.0
   >>> lines-and-columns-1.2.4
   >>> source-map-support-0.5.21
   >>> postcss-value-parser-4.2.0
   >>> jsprim-1.4.2
   >>> toidentifier-1.0.1
   >>> sshpk-1.17.0
   >>> qs-6.5.3
   >>> chokidar-3.5.3
   >>> supports-preserve-symlinks-flag-1.0.0
   >>> copy-anything-2.0.6
   >>> hdr-histogram-js-2.0.3
   >>> content-disposition-0.5.4
   >>> sockjs-0.3.24
   >>> negotiator-0.6.3
   >>> picomatch-2.3.1
   >>> source-map-js-1.0.2
   >>> signal-exit-3.0.7
   >>> accepts-1.3.8
   >>> jest-worker-27.5.1
   >>> webpack-sources-3.2.3
   >>> @types/estree-0.0.51
   >>> ramda-0.28.0
   >>> @types/request-2.48.8
   >>> @types/body-parser-1.19.2
   >>> bytes-3.1.2
   >>> minimatch-3.1.2
   >>> has-symbols-1.0.3
   >>> @clr/icons-13.0.2
   >>> debug-4.3.4
   >>> domhandler-4.3.1
   >>> mime-types-2.1.35
   >>> mime-db-1.52.0
   >>> es-module-lexer-0.9.3
   >>> http-errors-2.0.0
   >>> micromatch-4.0.5
   >>> fraction.js-4.2.0
   >>> @discoveryjs/json-ext-0.5.7
   >>> brace-expansion-2.0.1
   >>> node-forge-1.3.1
   >>> gauge-4.0.4
   >>> npmlog-6.0.2
   >>> typed-assert-1.0.9
   >>> slash-4.0.0
   >>> ajv-keywords-5.1.0
   >>> webpack-subresource-integrity-5.1.0
   >>> css-what-6.1.0
   >>> css-select-4.3.0
   >>> @types/serve-index-1.9.1
   >>> piscina-3.2.0
   >>> license-webpack-plugin-4.0.2
   >>> @types/bonjour-3.5.10
   >>> resolve-url-loader-5.0.0
   >>> http-proxy-middleware-2.0.6
   >>> @types/sockjs-0.3.33
   >>> @jridgewell/gen-mapping-0.1.1
   >>> glob-7.2.3
   >>> cookie-0.5.0
   >>> jwa-v1.4.1
   >>> destroy-1.2.0
   >>> on-finished-2.4.1
   >>> raw-body-2.5.1
   >>> watchpack-2.4.0
   >>> https-proxy-agent-5.0.1
   >>> nth-check-2.1.1
   >>> abab-2.0.6
   >>> domelementtype-2.3.0
   >>> dom-serializer-1.4.1
   >>> @types/tough-cookie-4.0.2
   >>> finalhandler-1.2.0
   >>> send-0.18.0
   >>> serve-static-1.15.0
   >>> loader-runner-4.3.0
   >>> @messageformat/runtime-3.0.1
   >>> @types/retry-0.12.0
   >>> p-retry-4.6.2
   >>> ip-2.0.0
   >>> resolve-1.22.1
   >>> qs-6.11.0
   >>> socks-proxy-agent-7.0.0
   >>> @babel/helper-split-export-declaration-7.18.6
   >>> @jridgewell/sourcemap-codec-1.4.14
   >>> @types/eslint-scope-3.7.4
   >>> @babel/helper-annotate-as-pure-7.18.6
   >>> @jridgewell/resolve-uri-3.1.0
   >>> @babel/plugin-proposal-numeric-separator-7.18.6
   >>> psl-1.9.0
   >>> @babel/plugin-proposal-unicode-property-regex-7.18.6
   >>> @babel/plugin-proposal-dynamic-import-7.18.6
   >>> @babel/plugin-proposal-json-strings-7.18.6
   >>> @babel/plugin-proposal-optional-catch-binding-7.18.6
   >>> @babel/plugin-proposal-class-properties-7.18.6
   >>> ansi-colors-4.1.3
   >>> http-parser-js-0.5.8
   >>> @babel/plugin-proposal-private-methods-7.18.6
   >>> jsonc-parser-3.2.0
   >>> are-we-there-yet-3.0.1
   >>> webpack-dev-middleware-5.3.3
   >>> @babel/plugin-proposal-nullish-coalescing-operator-7.18.6
   >>> @babel/plugin-proposal-export-namespace-from-7.18.9
   >>> yargs-parser-21.1.1
   >>> source-map-0.7.4
   >>> es5-ext-0.10.62
   >>> ext-1.7.0
   >>> nopt-6.0.0
   >>> type-2.7.2
   >>> es6-set-0.1.6
   >>> follow-redirects-1.15.2
   >>> multicast-dns-7.2.5
   >>> inquirer-8.2.4
   >>> @leichtgewicht/ip-codec-2.0.4
   >>> unicode-property-aliases-ecmascript-2.1.0
   >>> cliui-8.0.1
   >>> selfsigned-2.1.1
   >>> convert-source-map-1.9.0
   >>> @babel/helper-define-polyfill-provider-0.3.3
   >>> babel-plugin-polyfill-regenerator-0.4.1
   >>> connect-history-api-fallback-2.0.0
   >>> copy-webpack-plugin-11.0.0
   >>> regenerate-unicode-properties-10.1.0
   >>> @babel/core-7.19.3
   >>> regjsparser-0.9.1
   >>> body-parser-1.20.1
   >>> defaults-1.0.4
   >>> babel-plugin-polyfill-corejs2-0.3.3
   >>> istanbul-lib-instrument-5.2.1
   >>> builtins-5.0.1
   >>> socks-2.7.1
   >>> semver-7.3.8
   >>> express-4.18.2
   >>> @messageformat/date-skeleton-1.0.1
   >>> @vcd/angular-client-0.0.2-alpha.9
   >>> loader-utils-2.0.4
   >>> zone.js-0.12.0
   >>> loader-utils-3.2.1
   >>> anymatch-3.1.3
   >>> regenerator-runtime-0.13.11
   >>> yargs-17.6.2
   >>> websocket-stream-5.5.2
   >>> hosted-git-info-6.1.1
   >>> regenerator-transform-0.15.1
   >>> needle-3.2.0
   >>> unicode-match-property-value-ecmascript-2.1.0
   >>> babel-plugin-polyfill-corejs3-0.6.0
   >>> autoprefixer-10.4.13
   >>> @babel/preset-env-7.20.2
   >>> ajv-8.12.0
   >>> fastq-1.15.0
   >>> ignore-5.2.4
   >>> ini-3.0.1
   >>> cosmiconfig-7.1.0
   >>> string-width-5.1.2
   >>> less-loader-11.1.0
   >>> @babel/plugin-transform-runtime-7.19.6
   >>> has-proto-1.0.1
   >>> json5-2.2.3
   >>> babel-loader-9.1.2
   >>> object-inspect-1.12.3
   >>> glob-8.1.0
   >>> postcss-8.4.21
   >>> tslib-2.5.0
   >>> punycode-2.3.0
   >>> parse5-7.1.2
   >>> browserslist-4.21.5
   >>> @babel/template-7.20.7
   >>> @babel/runtime-7.20.13
   >>> @babel/generator-7.20.14
   >>> @babel/core-7.20.12
   >>> minimist-1.2.8
   >>> content-type-1.0.5
   >>> http-cache-semantics-4.1.1
   >>> @types/trusted-types-2.0.3
   >>> validate-npm-package-name-5.0.0
   >>> npm-bundled-3.0.0
   >>> minimatch-5.1.6
   >>> read-package-json-fast-3.0.2
   >>> unique-slug-4.0.0
   >>> magic-string-0.27.0
   >>> npm-pick-manifest-8.0.1
   >>> npm-packlist-7.0.4
   >>> normalize-package-data-5.0.0
   >>> json-parse-even-better-errors-3.0.0
   >>> npm-package-arg-10.1.0
   >>> @npmcli/promise-spawn-6.0.2
   >>> proc-log-3.0.0
   >>> @npmcli/node-gyp-3.0.0
   >>> @npmcli/fs-3.1.0
   >>> cacache-17.0.4
   >>> unique-filename-3.0.0
   >>> serialize-javascript-6.0.1
   >>> terser-5.16.3
   >>> minipass-3.3.6
   >>> klona-2.0.6
   >>> aws4-1.12.0
   >>> @babel/plugin-transform-async-to-generator-7.20.7
   >>> @babel/plugin-proposal-logical-assignment-operators-7.20.7
   >>> @babel/plugin-proposal-object-rest-spread-7.20.7
   >>> @babel/plugin-proposal-async-generator-functions-7.20.7
   >>> readable-stream-2.3.8
   >>> graceful-fs-4.2.11
   >>> readable-stream-3.6.2
   >>> ws-8.13.0
   >>> @babel/plugin-proposal-class-static-block-7.21.0
   >>> @babel/plugin-proposal-optional-chaining-7.21.0
   >>> @babel/regjsgen-0.8.0
   >>> @cds/core-6.3.1
   >>> @types/express-4.17.17
   >>> node-gyp-build-4.6.0
   >>> css-loader-6.7.3
   >>> mini-css-extract-plugin-2.7.2
   >>> webpack-dev-server-4.11.1
   >>> resolve-1.22.2
   >>> @webcomponents/webcomponentsjs-2.8.0
   >>> entities-4.5.0
   >>> minipass-4.2.8
   >>> @lit-labs/ssr-dom-shim-1.1.1
   >>> lit-element-3.3.2
   >>> @jridgewell/gen-mapping-0.3.3
   >>> @jridgewell/sourcemap-codec-1.4.15
   >>> @jridgewell/trace-mapping-0.3.18
   >>> nanoid-3.3.6
   >>> update-browserslist-db-1.0.11
   >>> minipass-5.0.0
   >>> spdx-license-ids-3.0.13
   >>> colorette-2.0.20
   >>> @angular-devkit/build-angular-15.2.8
   >>> @angular/cli-15.2.8
   >>> get-intrinsic-1.2.1
   >>> is-core-module-2.12.1
   >>> tar-6.1.15
   >>> acorn-import-assertions-1.9.0
   >>> moo-0.5.2
   >>> postcss-selector-parser-6.0.13
   >>> regexpu-core-5.3.2
   >>> terser-webpack-plugin-5.3.9
   >>> wildcard-2.0.1
   >>> @types/json-schema-7.0.12
   >>> lru-cache-7.18.3
   >>> which-3.0.1
   >>> @types/express-serve-static-core-4.17.35
   >>> @lit/reactive-element-1.6.2
   >>> @babel/helper-module-imports-7.22.5
   >>> @babel/helper-string-parser-7.22.5
   >>> @babel/helper-validator-identifier-7.22.5
   >>> @babel/types-7.22.5
   >>> @isaacs/cliui-8.0.2
   >>> @npmcli/installed-package-contents-2.0.2
   >>> @npmcli/run-script-6.0.2
   >>> @tufjs/canonical-json-1.0.0
   >>> agentkeepalive-4.3.0
   >>> ansi-styles-6.2.1
   >>> bonjour-service-1.1.1
   >>> dns-packet-5.6.0
   >>> foreground-child-3.1.1
   >>> fs-minipass-3.0.2
   >>> make-fetch-happen-11.1.1
   >>> npm-install-checks-6.1.1
   >>> npm-normalize-package-bin-3.0.1
   >>> npm-registry-fetch-14.0.5
   >>> signal-exit-4.0.2
   >>> ssri-10.0.4
   >>> wrap-ansi-8.1.0
   >>> @babel/code-frame-7.22.5
   >>> @babel/helper-annotate-as-pure-7.22.5
   >>> @babel/helper-builder-binary-assignment-operator-visitor-7.22.5
   >>> @babel/helper-environment-visitor-7.22.5
   >>> @babel/helper-function-name-7.22.5
   >>> @babel/helper-hoist-variables-7.22.5
   >>> @babel/helper-member-expression-to-functions-7.22.5
   >>> @babel/helper-module-transforms-7.22.5
   >>> @babel/helper-optimise-call-expression-7.22.5
   >>> @babel/helper-plugin-utils-7.22.5
   >>> @babel/helper-remap-async-to-generator-7.22.5
   >>> @babel/helper-replace-supers-7.22.5
   >>> @babel/helper-simple-access-7.22.5
   >>> @babel/helper-skip-transparent-expression-wrappers-7.22.5
   >>> @babel/helper-validator-option-7.22.5
   >>> @babel/helper-wrap-function-7.22.5
   >>> @babel/highlight-7.22.5
   >>> @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5
   >>> @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5
   >>> @babel/plugin-syntax-import-assertions-7.22.5
   >>> @babel/plugin-transform-arrow-functions-7.22.5
   >>> @babel/plugin-transform-block-scoped-functions-7.22.5
   >>> @babel/plugin-transform-block-scoping-7.22.5
   >>> @babel/plugin-transform-computed-properties-7.22.5
   >>> @babel/plugin-transform-destructuring-7.22.5
   >>> @babel/plugin-transform-dotall-regex-7.22.5
   >>> @babel/plugin-transform-duplicate-keys-7.22.5
   >>> @babel/plugin-transform-exponentiation-operator-7.22.5
   >>> @babel/plugin-transform-for-of-7.22.5
   >>> @babel/plugin-transform-function-name-7.22.5
   >>> @babel/plugin-transform-literals-7.22.5
   >>> @babel/plugin-transform-member-expression-literals-7.22.5
   >>> @babel/plugin-transform-modules-amd-7.22.5
   >>> @babel/plugin-transform-modules-commonjs-7.22.5
   >>> @babel/plugin-transform-modules-systemjs-7.22.5
   >>> @babel/plugin-transform-modules-umd-7.22.5
   >>> @babel/plugin-transform-named-capturing-groups-regex-7.22.5
   >>> @babel/plugin-transform-new-target-7.22.5
   >>> @babel/plugin-transform-object-super-7.22.5
   >>> @babel/plugin-transform-parameters-7.22.5
   >>> @babel/plugin-transform-property-literals-7.22.5
   >>> @babel/plugin-transform-regenerator-7.22.5
   >>> @babel/plugin-transform-reserved-words-7.22.5
   >>> @babel/plugin-transform-shorthand-properties-7.22.5
   >>> @babel/plugin-transform-spread-7.22.5
   >>> @babel/plugin-transform-sticky-regex-7.22.5
   >>> @babel/plugin-transform-template-literals-7.22.5
   >>> @babel/plugin-transform-typeof-symbol-7.22.5
   >>> @babel/plugin-transform-unicode-escapes-7.22.5
   >>> @babel/plugin-transform-unicode-regex-7.22.5
   >>> @babel/template-7.22.5
   >>> @types/connect-history-api-fallback-1.5.0
   >>> @types/http-errors-2.0.1
   >>> @types/http-proxy-1.17.11
   >>> @types/send-0.17.1
   >>> @types/serve-static-1.15.2
   >>> @types/ws-8.5.5
   >>> browserslist-4.21.9
   >>> enhanced-resolve-5.15.0
   >>> fs-monkey-1.0.4
   >>> html-entities-2.4.0
   >>> ipaddr.js-2.1.0
   >>> memfs-3.5.3
   >>> schema-utils-3.3.0
   >>> schema-utils-4.2.0
   >>> strip-ansi-7.1.0
   >>> tslib-2.6.0
   >>> @angular-devkit/core-15.2.8
   >>> @angular-devkit/schematics-15.2.8
   >>> @vcd/i18n-15.0.1
   >>> cli-spinners-2.9.0
   >>> magic-string-0.29.0
   >>> make-plural-7.3.0
   >>> @clr/angular-15.0.3
   >>> @clr/ui-15.0.3
   >>> fast-glob-3.3.0
   >>> postcss-modules-local-by-default-4.0.3
   >>> acorn-8.10.0
   >>> lit-html-2.7.5
   >>> lit-2.7.6
   >>> @esbuild/linux-s390x-0.17.8
   >>> @esbuild/android-arm64-0.17.8
   >>> @esbuild/openbsd-x64-0.17.8
   >>> @esbuild/netbsd-x64-0.17.8
   >>> esbuild-0.17.8
   >>> @esbuild/linux-ia32-0.17.8
   >>> webpack-5.76.1
   >>> minipass-fetch-3.0.3
   >>> parse5-html-rewriting-stream-7.0.0
   >>> @esbuild/android-arm-0.17.8
   >>> @esbuild/linux-arm64-0.17.8
   >>> esbuild-wasm-0.17.8
   >>> parse5-sax-parser-7.0.0
   >>> open-8.4.1
   >>> @esbuild/linux-mips64el-0.17.8
   >>> @esbuild/win32-arm64-0.17.8
   >>> @esbuild/win32-ia32-0.17.8
   >>> @esbuild/linux-arm-0.17.8
   >>> @esbuild/darwin-x64-0.17.8
   >>> webpack-dev-middleware-6.0.1
   >>> @angular-devkit/build-webpack-0.1502.8
   >>> @ngtools/webpack-15.2.8
   >>> ignore-walk-6.0.3
   >>> sass-loader-13.2.0
   >>> @esbuild/darwin-arm64-0.17.8
   >>> @esbuild/linux-loong64-0.17.8
   >>> @schematics/angular-15.2.8
   >>> @esbuild/linux-riscv64-0.17.8
   >>> source-map-loader-4.0.1
   >>> sass-1.58.1
   >>> @esbuild/linux-x64-0.17.8
   >>> @tufjs/models-1.0.4
   >>> read-package-json-6.0.4
   >>> @esbuild/linux-ppc64-0.17.8
   >>> @esbuild/win32-x64-0.17.8
   >>> @esbuild/freebsd-x64-0.17.8
   >>> @esbuild/sunos-x64-0.17.8
   >>> postcss-loader-7.0.2
   >>> pacote-15.1.0
   >>> jackspeak-2.2.1
   >>> @angular-devkit/architect-0.1502.8
   >>> @esbuild/freebsd-arm64-0.17.8
   >>> @esbuild/android-x64-0.17.8
   >>> @babel/helper-split-export-declaration-7.22.6
   >>> @babel/helpers-7.22.6
   >>> @babel/parser-7.22.7
   >>> @babel/traverse-7.22.8
   >>> node-releases-2.0.13
   >>> semver-5.7.2
   >>> semver-6.3.1
   >>> @webcomponents/scoped-custom-element-registry-0.0.8
   >>> core-js-compat-3.31.1
   >>> @babel/plugin-transform-classes-7.22.6
   >>> @angular/animations-15.2.0
   >>> @angular/cdk-15.2.0
   >>> @angular/common-15.2.0
   >>> @angular/compiler-cli-15.2.0
   >>> @angular/compiler-15.2.0
   >>> @angular/core-15.2.0
   >>> @angular/forms-15.2.0
   >>> @angular/platform-browser-dynamic-15.2.0
   >>> @angular/platform-browser-15.2.0
   >>> @angular/router-15.2.0
   >>> @babel/compat-data-7.22.6
   >>> @babel/generator-7.22.7
   >>> @babel/helper-compilation-targets-7.22.6
   >>> @babel/helper-create-class-features-plugin-7.22.6
   >>> @babel/helper-create-regexp-features-plugin-7.22.6
   >>> @babel/plugin-proposal-private-property-in-object-7.21.11
   >>> @babel/plugin-transform-optional-chaining-7.22.6
   >>> @jridgewell/source-map-0.3.5
   >>> @messageformat/core-3.2.0
   >>> @messageformat/number-skeleton-1.2.0
   >>> @messageformat/parser-5.1.0
   >>> @ngx-formly/core-v5.6.1
   >>> @nicolo-ribaudo/semver-v6-6.3.3
   >>> @npmcli/git-4.1.0
   >>> @types/eslint-8.44.0
   >>> @types/mqtt-2.5.0
   >>> @types/node-20.4.1
   >>> @types/paho-mqtt-1.0.7
   >>> @vcd/node-client-0.0.6-alpha.2
   >>> @vcd/ui-components-13.0.1-dev.10
   >>> callback-stream-1.1.0
   >>> commist-1.1.0
   >>> electron-to-chromium-1.4.457
   >>> glob-10.3.3
   >>> globby-13.2.2
   >>> help-me-1.1.0
   >>> immutable-4.3.1
   >>> lru-cache-10.0.0
   >>> minimatch-9.0.3
   >>> minipass-7.0.2
   >>> mqtt-packet-6.10.0
   >>> mqtt-4.1.0
   >>> node-gyp-9.4.0
   >>> path-scurry-1.10.1
   >>> reinterval-1.1.0
   >>> terser-5.19.0
   >>> tuf-js-1.1.7

SECTION 3: Creative Commons Attribution 4.0 International

   >>> caniuse-lite-1.0.30001515

SECTION 4: Creative Commons Attribution License, V3.0

   >>> spdx-exceptions-2.3.0

SECTION 5: SIL Open Font License, V1.1

   >>> @cds/city-1.1.0


APPENDIX. Standard License Files

   >>> Apache License, V2.0
   >>> Creative Commons Attribution License, V3.0
   >>> SIL Open Font License, V1.1
   >>> Creative Commons Attribution 4.0 International
   >>> Eclipse Public License, V1.0


-------------------- SECTION 1: Apache License, V2.0 --------------------

   >>> forever-agent-0.6.1

       License: Apache 2.0


   >>> tunnel-agent-0.6.0

       LICENSE: Apache 2.0


   >>> caseless-0.12.0

       License: Apache 2.0


   >>> aws-sign2-0.7.0

       Copyright 2010 LearnBoost <dev@learnboost.com>

       Licensed under the Apache License, Version 2.0 (the "License");
       you may not use this file except in compliance with the License.
       You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.


   >>> oauth-sign-0.9.0

       LICENSE: APACHE 2.0


   >>> validate-npm-package-license-3.0.4

       License: Apache 2.0


   >>> reflect-metadata-0.1.13

       Copyright (c) Microsoft Corporation. All rights reserved.
       Licensed under the Apache License, Version 2.0 (the "License"); you may not use
       this file except in compliance with the License. You may obtain a copy of the
       License at http://www.apache.org/licenses/LICENSE-2.0

       THIS CODE IS PROVIDED ON AN AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
       KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
       WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
       MERCHANTABLITY OR NON-INFRINGEMENT.

       See the Apache Version 2.0 License for specific language governing permissions
       and limitations under the License.


       ADDITIONAL LICENSE INFORMATION:

       >MIT

       reflect-metadata-0.1.13.tgz\reflect-metadata-0.1.13.tar\package\docs\index.html

       The following license applies to the fuzzysearch function
       The MIT License (MIT)
       Copyright Â© 2015 Nicolas Bevacqua
       Copyright Â© 2016 Brian Terlson
       Permission is hereby granted, free of charge, to any person obtaining a copy of
       this software and associated documentation files (the "Software"), to deal in
       the Software without restriction, including without limitation the rights to
       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
       the Software, and to permit persons to whom the Software is furnished to do so,
       subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
       FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
       COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
       IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
       CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @xtuc/long-4.2.2

       License: Apache 2.0


   >>> request-2.88.2

       Copyright 2010-2012 Mikeal Rogers

       Licensed under the Apache License, Version 2.0 (the "License");
       you may not use this file except in compliance with the License.
       You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.


   >>> websocket-driver-0.7.4

       Copyright 2010-2020 James Coglan

       Licensed under the Apache License, Version 2.0 (the "License"); you may not use
       this file except in compliance with the License. You may obtain a copy of the
       License at

           http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing, software distributed
       under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
       CONDITIONS OF ANY KIND, either express or implied. See the License for the
       specific language governing permissions and limitations under the License.


   >>> websocket-extensions-0.1.4

       Copyright 2014-2020 James Coglan

       Licensed under the Apache License, Version 2.0 (the "License"); you may not use
       this file except in compliance with the License. You may obtain a copy of the
       License at

           http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing, software distributed
       under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
       CONDITIONS OF ANY KIND, either express or implied. See the License for the
       specific language governing permissions and limitations under the License.


   >>> human-signals-2.1.0

       License : Apache 2.0


   >>> rxjs-6.6.7

       License- Apache 2.0

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       package/bundles/rxjs.umd.js

       Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors

       package/bundles/rxjs.umd.js

       Copyright (c) Microsoft Corporation

       package/bundles/rxjs.umd.js.map

       Copyright (c) Microsoft Corporation

       package/bundles/rxjs.umd.min.js

       (c) Sa (c)

       package/bundles/rxjs.umd.min.js

       Copyright (c) Microsoft Corporation

       package/_esm2015/LICENSE.txt

       Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors

       package/_esm5/LICENSE.txt

       Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors

       package/LICENSE.txt

       Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors

       package/src/LICENSE.txt

       Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors

       > MIT

       package/src/internal/util/root.ts

       Copyright Google Inc.


   >>> faye-websocket-0.11.4

       Found in: package/LICENSE.md

       Copyright 2010-2021 James Coglan

       Licensed under the Apache License, Version 2.0 (the "License"); you may not use
       this file except in compliance with the License. You may obtain a copy of the
       License at

           http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing, software distributed
       under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
       CONDITIONS OF ANY KIND, either express or implied. See the License for the
       specific language governing permissions and limitations under the License.


   >>> @assemblyscript/loader-0.10.1

       License: Apache 2.0


   >>> ansi-html-community-0.0.8

       License: Apache 2.0


   >>> critters-0.0.16

       Found in: package/dist/critters.mjs

       Copyright 2018 Google LLC

        * Licensed under the Apache License, Version 2.0 (the "License"); you may not
        * use this file except in compliance with the License. You may obtain a copy of
        * the License at
        *
        *     http://www.apache.org/licenses/LICENSE-2.0
        *
        * Unless required by applicable law or agreed to in writing, software
        * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
        * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
        * License for the specific language governing permissions and limitations under
        * the License.

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       package/dist/critters.js

       Copyright 2018 Google LLC

       See SECTION 92 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/css.js

       Copyright 2018 Google LLC

       See SECTION 92 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/dom.js

       Copyright 2018 Google LLC

       See SECTION 92 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/index.d.ts

       Copyright 2018 Google LLC

       See SECTION 92 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/index.js

       Copyright 2018 Google LLC

       See SECTION 92 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @ampproject/remapping-2.2.0

       License : Apache 2.0


   >>> ecdsa-sig-formatter-v1.0.11

       > Apache2.0

       node-ecdsa-sig-formatter-c730235f4a54526f33f5309d80beb12ee298db6b/LICENSE

       Copyright 2015 D2L Corporation



   >>> @jridgewell/set-array-1.1.2

       License- Apache 2.0

       ADDITIONAL LICENSE INFORMATION

       > MIT

       set-array-1.1.2/LICENSE

       Copyright 2022 Justin Ridgewell <jridgewell@google.com>

       See SECTION 35 in 'LICENSE TEXT REFERENCE TABLE'


   >>> less-4.1.3

       License : Apache 2.0

       ADDITIONAL LICENSE INFORMATION

       > 0BSD

       less.js-4.1.3/dist/less.js

       Copyright (c) 2006-2009 Hampton Catlin, Natalie Weizenbaum, and Chris Eppstein http://sass-lang.com

       See SECTION 58 in 'LICENSE TEXT REFERENCE TABLE'

       less.js-4.1.3/dist/less.min.js.map

       Copyright (c) Microsoft Corporation

       See SECTION 85 in 'LICENSE TEXT REFERENCE TABLE'

       less.js-4.1.3/packages/less/dist/less.js

       Copyright (c) 2006-2009 Hampton Catlin, Natalie Weizenbaum, and Chris Eppstein http://sass-lang.com

       See SECTION 58 in 'LICENSE TEXT REFERENCE TABLE'

       less.js-4.1.3/packages/less/dist/less.min.js.map

       Copyright (c) Microsoft Corporation

       See SECTION 85 in 'LICENSE TEXT REFERENCE TABLE'

       > Apache2.0

       less.js-4.1.3/dist/less.js

       Copyright (c) Microsoft Corporation

       See SECTION 75 in 'LICENSE TEXT REFERENCE TABLE'

       less.js-4.1.3/dist/less.js

       Copyright (c) 2009-2022, Alexis Sellier <self@cloudhead.net>

       See SECTION 89 in 'LICENSE TEXT REFERENCE TABLE'

       less.js-4.1.3/dist/less.min.js

       Copyright (c) 2009-2022, Alexis Sellier <self@cloudhead.net>

       See SECTION 55 in 'LICENSE TEXT REFERENCE TABLE'

       less.js-4.1.3/dist/less.min.js.map

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       less.js-4.1.3/packages/less/dist/less.js

       Copyright (c) Microsoft Corporation

       See SECTION 75 in 'LICENSE TEXT REFERENCE TABLE'

       less.js-4.1.3/packages/less/dist/less.js

       Copyright (c) 2009-2022, Alexis Sellier <self@cloudhead.net>

       See SECTION 89 in 'LICENSE TEXT REFERENCE TABLE'

       less.js-4.1.3/packages/less/dist/less.min.js

       Copyright (c) 2009-2022, Alexis Sellier <self@cloudhead.net>

       See SECTION 55 in 'LICENSE TEXT REFERENCE TABLE'

       less.js-4.1.3/packages/less/dist/less.min.js.map

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       less.js-4.1.3/README.md

       Copyright (c) 2009-2017 Alexis Sellier (http://cloudhead.io) & The Core Less Team

       See SECTION 147 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       less.js-4.1.3/packages/test-data/css/3rd-party/bootstrap4.css

       Copyright 2011-2018 Twitter, Inc.

       See SECTION 15 in 'LICENSE TEXT REFERENCE TABLE'

       > Unknown License file reference

       less.js-4.1.3/packages/less/build/banner.js

       Copyright (c) 2009-$ new

       See SECTION 148 in 'LICENSE TEXT REFERENCE TABLE'


   >>> rxjs-7.8.0

       License : Apache 2.0

       ADDITIONAL LICENSE INFORMATION

       > 0BSD

       package/dist/bundles/rxjs.umd.js

       Copyright (c) Microsoft Corporation

       See SECTION 112 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/bundles/rxjs.umd.js.map

       Copyright (c) Microsoft Corporation

       See SECTION 85 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/bundles/rxjs.umd.min.js

       (c) b.value

       See SECTION 60 in 'LICENSE TEXT REFERENCE TABLE'

       > Apache2.0

       package/dist/bundles/rxjs.umd.js

       Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors

       See SECTION 94 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/bundles/rxjs.umd.min.js

       Copyright (c) Microsoft Corporation

       See SECTION 90 in 'LICENSE TEXT REFERENCE TABLE'

       package/LICENSE.txt

       Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors

       See SECTION 48 in 'LICENSE TEXT REFERENCE TABLE'


   >>> typescript-4.9.4

       Found in: package/lib/lib.es2019.symbol.d.ts

       Copyright (c) Microsoft Corporation

       Licensed under the Apache License, Version 2.0 (the "License"); you may not use
       this file except in compliance with the License. You may obtain a copy of the
       License at http://www.apache.org/licenses/LICENSE-2.0

       THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
       KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
       WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
       MERCHANTABLITY OR NON-INFRINGEMENT.

       See the Apache Version 2.0 License for specific language governing permissions
       and limitations under the License.


   >>> spdx-correct-3.2.0



   >>> @sigstore/protobuf-specs-0.1.0

       Found in: package/LICENSE

       Copyright 2023 The Sigstore Authors

                                        Apache License
                                  Version 2.0, January 2004
                               http://www.apache.org/licenses/

          TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

          1. Definitions.

             "License" shall mean the terms and conditions for use, reproduction,
             and distribution as defined by Sections 1 through 9 of this document.

             "Licensor" shall mean the copyright owner or entity authorized by
             the copyright owner that is granting the License.

             "Legal Entity" shall mean the union of the acting entity and all
             other entities that control, are controlled by, or are under common
             control with that entity. For the purposes of this definition,
             "control" means (i) the power, direct or indirect, to cause the
             direction or management of such entity, whether by contract or
             otherwise, or (ii) ownership of fifty percent (50%) or more of the
             outstanding shares, or (iii) beneficial ownership of such entity.

             "You" (or "Your") shall mean an individual or Legal Entity
             exercising permissions granted by this License.

             "Source" form shall mean the preferred form for making modifications,
             including but not limited to software source code, documentation
             source, and configuration files.

             "Object" form shall mean any form resulting from mechanical
             transformation or translation of a Source form, including but
             not limited to compiled object code, generated documentation,
             and conversions to other media types.

             "Work" shall mean the work of authorship, whether in Source or
             Object form, made available under the License, as indicated by a
             copyright notice that is included in or attached to the work
             (an example is provided in the Appendix below).

             "Derivative Works" shall mean any work, whether in Source or Object
             form, that is based on (or derived from) the Work and for which the
             editorial revisions, annotations, elaborations, or other modifications
             represent, as a whole, an original work of authorship. For the purposes
             of this License, Derivative Works shall not include works that remain
             separable from, or merely link (or bind by name) to the interfaces of,
             the Work and Derivative Works thereof.

             "Contribution" shall mean any work of authorship, including
             the original version of the Work and any modifications or additions
             to that Work or Derivative Works thereof, that is intentionally
             submitted to Licensor for inclusion in the Work by the copyright owner
             or by an individual or Legal Entity authorized to submit on behalf of
             the copyright owner. For the purposes of this definition, "submitted"
             means any form of electronic, verbal, or written communication sent
             to the Licensor or its representatives, including but not limited to
             communication on electronic mailing lists, source code control systems,
             and issue tracking systems that are managed by, or on behalf of, the
             Licensor for the purpose of discussing and improving the Work, but
             excluding communication that is conspicuously marked or otherwise
             designated in writing by the copyright owner as "Not a Contribution."

             "Contributor" shall mean Licensor and any individual or Legal Entity
             on behalf of whom a Contribution has been received by Licensor and
             subsequently incorporated within the Work.

          2. Grant of Copyright License. Subject to the terms and conditions of
             this License, each Contributor hereby grants to You a perpetual,
             worldwide, non-exclusive, no-charge, royalty-free, irrevocable
             copyright license to reproduce, prepare Derivative Works of,
             publicly display, publicly perform, sublicense, and distribute the
             Work and such Derivative Works in Source or Object form.

          3. Grant of Patent License. Subject to the terms and conditions of
             this License, each Contributor hereby grants to You a perpetual,
             worldwide, non-exclusive, no-charge, royalty-free, irrevocable
             (except as stated in this section) patent license to make, have made,
             use, offer to sell, sell, import, and otherwise transfer the Work,
             where such license applies only to those patent claims licensable
             by such Contributor that are necessarily infringed by their
             Contribution(s) alone or by combination of their Contribution(s)
             with the Work to which such Contribution(s) was submitted. If You
             institute patent litigation against any entity (including a
             cross-claim or counterclaim in a lawsuit) alleging that the Work
             or a Contribution incorporated within the Work constitutes direct
             or contributory patent infringement, then any patent licenses
             granted to You under this License for that Work shall terminate
             as of the date such litigation is filed.

          4. Redistribution. You may reproduce and distribute copies of the
             Work or Derivative Works thereof in any medium, with or without
             modifications, and in Source or Object form, provided that You
             meet the following conditions:

             (a) You must give any other recipients of the Work or
                 Derivative Works a copy of this License; and

             (b) You must cause any modified files to carry prominent notices
                 stating that You changed the files; and

             (c) You must retain, in the Source form of any Derivative Works
                 that You distribute, all copyright, patent, trademark, and
                 attribution notices from the Source form of the Work,
                 excluding those notices that do not pertain to any part of
                 the Derivative Works; and

             (d) If the Work includes a "NOTICE" text file as part of its
                 distribution, then any Derivative Works that You distribute must
                 include a readable copy of the attribution notices contained
                 within such NOTICE file, excluding those notices that do not
                 pertain to any part of the Derivative Works, in at least one
                 of the following places: within a NOTICE text file distributed
                 as part of the Derivative Works; within the Source form or
                 documentation, if provided along with the Derivative Works; or,
                 within a display generated by the Derivative Works, if and
                 wherever such third-party notices normally appear. The contents
                 of the NOTICE file are for informational purposes only and
                 do not modify the License. You may add Your own attribution
                 notices within Derivative Works that You distribute, alongside
                 or as an addendum to the NOTICE text from the Work, provided
                 that such additional attribution notices cannot be construed
                 as modifying the License.

             You may add Your own copyright statement to Your modifications and
             may provide additional or different license terms and conditions
             for use, reproduction, or distribution of Your modifications, or
             for any such Derivative Works as a whole, provided Your use,
             reproduction, and distribution of the Work otherwise complies with
             the conditions stated in this License.

          5. Submission of Contributions. Unless You explicitly state otherwise,
             any Contribution intentionally submitted for inclusion in the Work
             by You to the Licensor shall be under the terms and conditions of
             this License, without any additional terms or conditions.
             Notwithstanding the above, nothing herein shall supersede or modify
             the terms of any separate license agreement you may have executed
             with Licensor regarding such Contributions.

          6. Trademarks. This License does not grant permission to use the trade
             names, trademarks, service marks, or product names of the Licensor,
             except as required for reasonable and customary use in describing the
             origin of the Work and reproducing the content of the NOTICE file.

          7. Disclaimer of Warranty. Unless required by applicable law or
             agreed to in writing, Licensor provides the Work (and each
             Contributor provides its Contributions) on an "AS IS" BASIS,
             WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
             implied, including, without limitation, any warranties or conditions
             of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
             PARTICULAR PURPOSE. You are solely responsible for determining the
             appropriateness of using or redistributing the Work and assume any
             risks associated with Your exercise of permissions under this License.

          8. Limitation of Liability. In no event and under no legal theory,
             whether in tort (including negligence), contract, or otherwise,
             unless required by applicable law (such as deliberate and grossly
             negligent acts) or agreed to in writing, shall any Contributor be
             liable to You for damages, including any direct, indirect, special,
             incidental, or consequential damages of any character arising as a
             result of this License or out of the use or inability to use the
             Work (including but not limited to damages for loss of goodwill,
             work stoppage, computer failure or malfunction, or any and all
             other commercial damages or losses), even if such Contributor
             has been advised of the possibility of such damages.

          9. Accepting Warranty or Additional Liability. While redistributing
             the Work or Derivative Works thereof, You may choose to offer,
             and charge a fee for, acceptance of support, warranty, indemnity,
             or other liability obligations and/or rights consistent with this
             License. However, in accepting such obligations, You may act only
             on Your own behalf and on Your sole responsibility, not on behalf
             of any other Contributor, and only if You agree to indemnify,
             defend, and hold each Contributor harmless for any liability
             incurred by, or claims asserted against, such Contributor by reason
             of your accepting any such warranty or additional liability.

          END OF TERMS AND CONDITIONS

          APPENDIX: How to apply the Apache License to your work.

             To apply the Apache License to your work, attach the following
             boilerplate notice, with the fields enclosed by brackets "[]"
             replaced with your own identifying information. (Don't include
             the brackets!)  The text should be enclosed in the appropriate
             comment syntax for the file format. We also recommend that a
             file or class name and description of purpose be included on the
             same "printed page" as the copyright notice for easier
             identification within third-party archives.

          Copyright 2023 The Sigstore Authors

          Licensed under the Apache License, Version 2.0 (the "License");
          you may not use this file except in compliance with the License.
          You may obtain a copy of the License at

              http://www.apache.org/licenses/LICENSE-2.0

          Unless required by applicable law or agreed to in writing, software
          distributed under the License is distributed on an "AS IS" BASIS,
          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          See the License for the specific language governing permissions and
          limitations under the License.

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       package/dist/index.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @pkgjs/parseargs-0.11.0

       License : Apache 2.0


   >>> sigstore-1.7.0

       Found in: package/LICENSE

       Copyright 2023 The Sigstore Authors

                                        Apache License
                                  Version 2.0, January 2004
                               http://www.apache.org/licenses/

          TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

          1. Definitions.

             "License" shall mean the terms and conditions for use, reproduction,
             and distribution as defined by Sections 1 through 9 of this document.

             "Licensor" shall mean the copyright owner or entity authorized by
             the copyright owner that is granting the License.

             "Legal Entity" shall mean the union of the acting entity and all
             other entities that control, are controlled by, or are under common
             control with that entity. For the purposes of this definition,
             "control" means (i) the power, direct or indirect, to cause the
             direction or management of such entity, whether by contract or
             otherwise, or (ii) ownership of fifty percent (50%) or more of the
             outstanding shares, or (iii) beneficial ownership of such entity.

             "You" (or "Your") shall mean an individual or Legal Entity
             exercising permissions granted by this License.

             "Source" form shall mean the preferred form for making modifications,
             including but not limited to software source code, documentation
             source, and configuration files.

             "Object" form shall mean any form resulting from mechanical
             transformation or translation of a Source form, including but
             not limited to compiled object code, generated documentation,
             and conversions to other media types.

             "Work" shall mean the work of authorship, whether in Source or
             Object form, made available under the License, as indicated by a
             copyright notice that is included in or attached to the work
             (an example is provided in the Appendix below).

             "Derivative Works" shall mean any work, whether in Source or Object
             form, that is based on (or derived from) the Work and for which the
             editorial revisions, annotations, elaborations, or other modifications
             represent, as a whole, an original work of authorship. For the purposes
             of this License, Derivative Works shall not include works that remain
             separable from, or merely link (or bind by name) to the interfaces of,
             the Work and Derivative Works thereof.

             "Contribution" shall mean any work of authorship, including
             the original version of the Work and any modifications or additions
             to that Work or Derivative Works thereof, that is intentionally
             submitted to Licensor for inclusion in the Work by the copyright owner
             or by an individual or Legal Entity authorized to submit on behalf of
             the copyright owner. For the purposes of this definition, "submitted"
             means any form of electronic, verbal, or written communication sent
             to the Licensor or its representatives, including but not limited to
             communication on electronic mailing lists, source code control systems,
             and issue tracking systems that are managed by, or on behalf of, the
             Licensor for the purpose of discussing and improving the Work, but
             excluding communication that is conspicuously marked or otherwise
             designated in writing by the copyright owner as "Not a Contribution."

             "Contributor" shall mean Licensor and any individual or Legal Entity
             on behalf of whom a Contribution has been received by Licensor and
             subsequently incorporated within the Work.

          2. Grant of Copyright License. Subject to the terms and conditions of
             this License, each Contributor hereby grants to You a perpetual,
             worldwide, non-exclusive, no-charge, royalty-free, irrevocable
             copyright license to reproduce, prepare Derivative Works of,
             publicly display, publicly perform, sublicense, and distribute the
             Work and such Derivative Works in Source or Object form.

          3. Grant of Patent License. Subject to the terms and conditions of
             this License, each Contributor hereby grants to You a perpetual,
             worldwide, non-exclusive, no-charge, royalty-free, irrevocable
             (except as stated in this section) patent license to make, have made,
             use, offer to sell, sell, import, and otherwise transfer the Work,
             where such license applies only to those patent claims licensable
             by such Contributor that are necessarily infringed by their
             Contribution(s) alone or by combination of their Contribution(s)
             with the Work to which such Contribution(s) was submitted. If You
             institute patent litigation against any entity (including a
             cross-claim or counterclaim in a lawsuit) alleging that the Work
             or a Contribution incorporated within the Work constitutes direct
             or contributory patent infringement, then any patent licenses
             granted to You under this License for that Work shall terminate
             as of the date such litigation is filed.

          4. Redistribution. You may reproduce and distribute copies of the
             Work or Derivative Works thereof in any medium, with or without
             modifications, and in Source or Object form, provided that You
             meet the following conditions:

             (a) You must give any other recipients of the Work or
                 Derivative Works a copy of this License; and

             (b) You must cause any modified files to carry prominent notices
                 stating that You changed the files; and

             (c) You must retain, in the Source form of any Derivative Works
                 that You distribute, all copyright, patent, trademark, and
                 attribution notices from the Source form of the Work,
                 excluding those notices that do not pertain to any part of
                 the Derivative Works; and

             (d) If the Work includes a "NOTICE" text file as part of its
                 distribution, then any Derivative Works that You distribute must
                 include a readable copy of the attribution notices contained
                 within such NOTICE file, excluding those notices that do not
                 pertain to any part of the Derivative Works, in at least one
                 of the following places: within a NOTICE text file distributed
                 as part of the Derivative Works; within the Source form or
                 documentation, if provided along with the Derivative Works; or,
                 within a display generated by the Derivative Works, if and
                 wherever such third-party notices normally appear. The contents
                 of the NOTICE file are for informational purposes only and
                 do not modify the License. You may add Your own attribution
                 notices within Derivative Works that You distribute, alongside
                 or as an addendum to the NOTICE text from the Work, provided
                 that such additional attribution notices cannot be construed
                 as modifying the License.

             You may add Your own copyright statement to Your modifications and
             may provide additional or different license terms and conditions
             for use, reproduction, or distribution of Your modifications, or
             for any such Derivative Works as a whole, provided Your use,
             reproduction, and distribution of the Work otherwise complies with
             the conditions stated in this License.

          5. Submission of Contributions. Unless You explicitly state otherwise,
             any Contribution intentionally submitted for inclusion in the Work
             by You to the Licensor shall be under the terms and conditions of
             this License, without any additional terms or conditions.
             Notwithstanding the above, nothing herein shall supersede or modify
             the terms of any separate license agreement you may have executed
             with Licensor regarding such Contributions.

          6. Trademarks. This License does not grant permission to use the trade
             names, trademarks, service marks, or product names of the Licensor,
             except as required for reasonable and customary use in describing the
             origin of the Work and reproducing the content of the NOTICE file.

          7. Disclaimer of Warranty. Unless required by applicable law or
             agreed to in writing, Licensor provides the Work (and each
             Contributor provides its Contributions) on an "AS IS" BASIS,
             WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
             implied, including, without limitation, any warranties or conditions
             of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
             PARTICULAR PURPOSE. You are solely responsible for determining the
             appropriateness of using or redistributing the Work and assume any
             risks associated with Your exercise of permissions under this License.

          8. Limitation of Liability. In no event and under no legal theory,
             whether in tort (including negligence), contract, or otherwise,
             unless required by applicable law (such as deliberate and grossly
             negligent acts) or agreed to in writing, shall any Contributor be
             liable to You for damages, including any direct, indirect, special,
             incidental, or consequential damages of any character arising as a
             result of this License or out of the use or inability to use the
             Work (including but not limited to damages for loss of goodwill,
             work stoppage, computer failure or malfunction, or any and all
             other commercial damages or losses), even if such Contributor
             has been advised of the possibility of such damages.

          9. Accepting Warranty or Additional Liability. While redistributing
             the Work or Derivative Works thereof, You may choose to offer,
             and charge a fee for, acceptance of support, warranty, indemnity,
             or other liability obligations and/or rights consistent with this
             License. However, in accepting such obligations, You may act only
             on Your own behalf and on Your sole responsibility, not on behalf
             of any other Contributor, and only if You agree to indemnify,
             defend, and hold each Contributor harmless for any liability
             incurred by, or claims asserted against, such Contributor by reason
             of your accepting any such warranty or additional liability.

          END OF TERMS AND CONDITIONS

          APPENDIX: How to apply the Apache License to your work.

             To apply the Apache License to your work, attach the following
             boilerplate notice, with the fields enclosed by brackets "[]"
             replaced with your own identifying information. (Don't include
             the brackets!)  The text should be enclosed in the appropriate
             comment syntax for the file format. We also recommend that a
             file or class name and description of purpose be included on the
             same "printed page" as the copyright notice for easier
             identification within third-party archives.

          Copyright 2023 The Sigstore Authors

          Licensed under the Apache License, Version 2.0 (the "License");
          you may not use this file except in compliance with the License.
          You may obtain a copy of the License at

              http://www.apache.org/licenses/LICENSE-2.0

          Unless required by applicable law or agreed to in writing, software
          distributed under the License is distributed on an "AS IS" BASIS,
          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          See the License for the specific language governing permissions and
          limitations under the License.

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       package/bin/sigstore.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/ca/verify/chain.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/ca/verify/sct.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/ca/verify/signer.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/cli/index.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/config.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/error.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/external/fulcio.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/external/index.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/external/rekor.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/external/tsa.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/identity/ci.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/identity/index.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/identity/issuer.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/identity/oauth.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/sigstore.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/sigstore-utils.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/tlog/index.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/tlog/verify/body.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/tlog/verify/index.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/tlog/verify/merkle.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/tsa/index.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/types/sigstore/index.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/types/sigstore/validate.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/types/utility.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/asn1/error.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/asn1/index.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/asn1/length.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/asn1/obj.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/asn1/parse.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/asn1/tag.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/crypto.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/dsse.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/encoding.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/index.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/json.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/oidc.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/pem.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/promise.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/stream.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/util/ua.js

       Copyright 2022 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/x509/verify.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @sigstore/tuf-1.0.2

       Found in: package/LICENSE

       Copyright 2023 The Sigstore Authors

                                        Apache License
                                  Version 2.0, January 2004
                               http://www.apache.org/licenses/

          TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

          1. Definitions.

             "License" shall mean the terms and conditions for use, reproduction,
             and distribution as defined by Sections 1 through 9 of this document.

             "Licensor" shall mean the copyright owner or entity authorized by
             the copyright owner that is granting the License.

             "Legal Entity" shall mean the union of the acting entity and all
             other entities that control, are controlled by, or are under common
             control with that entity. For the purposes of this definition,
             "control" means (i) the power, direct or indirect, to cause the
             direction or management of such entity, whether by contract or
             otherwise, or (ii) ownership of fifty percent (50%) or more of the
             outstanding shares, or (iii) beneficial ownership of such entity.

             "You" (or "Your") shall mean an individual or Legal Entity
             exercising permissions granted by this License.

             "Source" form shall mean the preferred form for making modifications,
             including but not limited to software source code, documentation
             source, and configuration files.

             "Object" form shall mean any form resulting from mechanical
             transformation or translation of a Source form, including but
             not limited to compiled object code, generated documentation,
             and conversions to other media types.

             "Work" shall mean the work of authorship, whether in Source or
             Object form, made available under the License, as indicated by a
             copyright notice that is included in or attached to the work
             (an example is provided in the Appendix below).

             "Derivative Works" shall mean any work, whether in Source or Object
             form, that is based on (or derived from) the Work and for which the
             editorial revisions, annotations, elaborations, or other modifications
             represent, as a whole, an original work of authorship. For the purposes
             of this License, Derivative Works shall not include works that remain
             separable from, or merely link (or bind by name) to the interfaces of,
             the Work and Derivative Works thereof.

             "Contribution" shall mean any work of authorship, including
             the original version of the Work and any modifications or additions
             to that Work or Derivative Works thereof, that is intentionally
             submitted to Licensor for inclusion in the Work by the copyright owner
             or by an individual or Legal Entity authorized to submit on behalf of
             the copyright owner. For the purposes of this definition, "submitted"
             means any form of electronic, verbal, or written communication sent
             to the Licensor or its representatives, including but not limited to
             communication on electronic mailing lists, source code control systems,
             and issue tracking systems that are managed by, or on behalf of, the
             Licensor for the purpose of discussing and improving the Work, but
             excluding communication that is conspicuously marked or otherwise
             designated in writing by the copyright owner as "Not a Contribution."

             "Contributor" shall mean Licensor and any individual or Legal Entity
             on behalf of whom a Contribution has been received by Licensor and
             subsequently incorporated within the Work.

          2. Grant of Copyright License. Subject to the terms and conditions of
             this License, each Contributor hereby grants to You a perpetual,
             worldwide, non-exclusive, no-charge, royalty-free, irrevocable
             copyright license to reproduce, prepare Derivative Works of,
             publicly display, publicly perform, sublicense, and distribute the
             Work and such Derivative Works in Source or Object form.

          3. Grant of Patent License. Subject to the terms and conditions of
             this License, each Contributor hereby grants to You a perpetual,
             worldwide, non-exclusive, no-charge, royalty-free, irrevocable
             (except as stated in this section) patent license to make, have made,
             use, offer to sell, sell, import, and otherwise transfer the Work,
             where such license applies only to those patent claims licensable
             by such Contributor that are necessarily infringed by their
             Contribution(s) alone or by combination of their Contribution(s)
             with the Work to which such Contribution(s) was submitted. If You
             institute patent litigation against any entity (including a
             cross-claim or counterclaim in a lawsuit) alleging that the Work
             or a Contribution incorporated within the Work constitutes direct
             or contributory patent infringement, then any patent licenses
             granted to You under this License for that Work shall terminate
             as of the date such litigation is filed.

          4. Redistribution. You may reproduce and distribute copies of the
             Work or Derivative Works thereof in any medium, with or without
             modifications, and in Source or Object form, provided that You
             meet the following conditions:

             (a) You must give any other recipients of the Work or
                 Derivative Works a copy of this License; and

             (b) You must cause any modified files to carry prominent notices
                 stating that You changed the files; and

             (c) You must retain, in the Source form of any Derivative Works
                 that You distribute, all copyright, patent, trademark, and
                 attribution notices from the Source form of the Work,
                 excluding those notices that do not pertain to any part of
                 the Derivative Works; and

             (d) If the Work includes a "NOTICE" text file as part of its
                 distribution, then any Derivative Works that You distribute must
                 include a readable copy of the attribution notices contained
                 within such NOTICE file, excluding those notices that do not
                 pertain to any part of the Derivative Works, in at least one
                 of the following places: within a NOTICE text file distributed
                 as part of the Derivative Works; within the Source form or
                 documentation, if provided along with the Derivative Works; or,
                 within a display generated by the Derivative Works, if and
                 wherever such third-party notices normally appear. The contents
                 of the NOTICE file are for informational purposes only and
                 do not modify the License. You may add Your own attribution
                 notices within Derivative Works that You distribute, alongside
                 or as an addendum to the NOTICE text from the Work, provided
                 that such additional attribution notices cannot be construed
                 as modifying the License.

             You may add Your own copyright statement to Your modifications and
             may provide additional or different license terms and conditions
             for use, reproduction, or distribution of Your modifications, or
             for any such Derivative Works as a whole, provided Your use,
             reproduction, and distribution of the Work otherwise complies with
             the conditions stated in this License.

          5. Submission of Contributions. Unless You explicitly state otherwise,
             any Contribution intentionally submitted for inclusion in the Work
             by You to the Licensor shall be under the terms and conditions of
             this License, without any additional terms or conditions.
             Notwithstanding the above, nothing herein shall supersede or modify
             the terms of any separate license agreement you may have executed
             with Licensor regarding such Contributions.

          6. Trademarks. This License does not grant permission to use the trade
             names, trademarks, service marks, or product names of the Licensor,
             except as required for reasonable and customary use in describing the
             origin of the Work and reproducing the content of the NOTICE file.

          7. Disclaimer of Warranty. Unless required by applicable law or
             agreed to in writing, Licensor provides the Work (and each
             Contributor provides its Contributions) on an "AS IS" BASIS,
             WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
             implied, including, without limitation, any warranties or conditions
             of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
             PARTICULAR PURPOSE. You are solely responsible for determining the
             appropriateness of using or redistributing the Work and assume any
             risks associated with Your exercise of permissions under this License.

          8. Limitation of Liability. In no event and under no legal theory,
             whether in tort (including negligence), contract, or otherwise,
             unless required by applicable law (such as deliberate and grossly
             negligent acts) or agreed to in writing, shall any Contributor be
             liable to You for damages, including any direct, indirect, special,
             incidental, or consequential damages of any character arising as a
             result of this License or out of the use or inability to use the
             Work (including but not limited to damages for loss of goodwill,
             work stoppage, computer failure or malfunction, or any and all
             other commercial damages or losses), even if such Contributor
             has been advised of the possibility of such damages.

          9. Accepting Warranty or Additional Liability. While redistributing
             the Work or Derivative Works thereof, You may choose to offer,
             and charge a fee for, acceptance of support, warranty, indemnity,
             or other liability obligations and/or rights consistent with this
             License. However, in accepting such obligations, You may act only
             on Your own behalf and on Your sole responsibility, not on behalf
             of any other Contributor, and only if You agree to indemnify,
             defend, and hold each Contributor harmless for any liability
             incurred by, or claims asserted against, such Contributor by reason
             of your accepting any such warranty or additional liability.

          END OF TERMS AND CONDITIONS

          APPENDIX: How to apply the Apache License to your work.

             To apply the Apache License to your work, attach the following
             boilerplate notice, with the fields enclosed by brackets "[]"
             replaced with your own identifying information. (Don't include
             the brackets!)  The text should be enclosed in the appropriate
             comment syntax for the file format. We also recommend that a
             file or class name and description of purpose be included on the
             same "printed page" as the copyright notice for easier
             identification within third-party archives.

          Copyright 2023 The Sigstore Authors

          Licensed under the Apache License, Version 2.0 (the "License");
          you may not use this file except in compliance with the License.
          You may obtain a copy of the License at

              http://www.apache.org/licenses/LICENSE-2.0

          Unless required by applicable law or agreed to in writing, software
          distributed under the License is distributed on an "AS IS" BASIS,
          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          See the License for the specific language governing permissions and
          limitations under the License.

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       package/dist/appdata.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/client.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/index.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'

       package/dist/target.js

       Copyright 2023 The Sigstore Authors

       See SECTION 3 in 'LICENSE TEXT REFERENCE TABLE'


   >>> exponential-backoff-3.1.1



-------------------- SECTION 2: BSD-STYLE, MIT-STYLE, OR SIMILAR STYLE LICENSES --------------------

   >>> typedarray-0.0.6

       Copyright (c) 2010, Linden Research, Inc.

        Copyright (c) 2012, Joshua Bell

       

        Permission is hereby granted, free of charge, to any person obtaining a copy

        of this software and associated documentation files (the "Software"), to deal

        in the Software without restriction, including without limitation the rights

        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

        copies of the Software, and to permit persons to whom the Software is

        furnished to do so, subject to the following conditions:

       

        The above copyright notice and this permission notice shall be included in

        all copies or substantial portions of the Software.

       

        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN

        THE SOFTWARE.


   >>> media-typer-0.3.0

       (The MIT License)

       

       Copyright (c) 2014 Douglas Christopher Wilson

       

       Permission is hereby granted, free of charge, to any person obtaining

       a copy of this software and associated documentation files (the

       'Software'), to deal in the Software without restriction, including

       without limitation the rights to use, copy, modify, merge, publish,

       distribute, sublicense, and/or sell copies of the Software, and to

       permit persons to whom the Software is furnished to do so, subject to

       the following conditions:

       

       The above copyright notice and this permission notice shall be

       included in all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,

       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY

       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,

       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE

       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> concat-map-0.0.1

       This software is released under the MIT license:

       

       Permission is hereby granted, free of charge, to any person obtaining a copy of

       this software and associated documentation files (the "Software"), to deal in

       the Software without restriction, including without limitation the rights to

       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of

       the Software, and to permit persons to whom the Software is furnished to do so,

       subject to the following conditions:

       

       The above copyright notice and this permission notice shall be included in all

       copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS

       FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR

       COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER

       IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN

       CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> is-typedarray-1.0.0

       This software is released under the MIT license:

       

       Permission is hereby granted, free of charge, to any person obtaining a copy of

       this software and associated documentation files (the "Software"), to deal in

       the Software without restriction, including without limitation the rights to

       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of

       the Software, and to permit persons to whom the Software is furnished to do so,

       subject to the following conditions:

       

       The above copyright notice and this permission notice shall be included in all

       copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS

       FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR

       COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER

       IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN

       CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> isstream-0.1.2

       The MIT License (MIT)

       =====================

       

       Copyright (c) 2015 Rod Vagg

       ---------------------------

       

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> json-stringify-safe-5.0.1

       The ISC License

       

       Copyright (c) Isaac Z. Schlueter and Contributors

       

       Permission to use, copy, modify, and/or distribute this software for any

       purpose with or without fee is hereby granted, provided that the above

       copyright notice and this permission notice appear in all copies.

       

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES

       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF

       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR

       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES

       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN

       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR

       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> delayed-stream-1.0.0

       Copyright (c) 2011 Debuggable Limited <felix@debuggable.com>

       

       Permission is hereby granted, free of charge, to any person obtaining a copy

       of this software and associated documentation files (the "Software"), to deal

       in the Software without restriction, including without limitation the rights

       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

       copies of the Software, and to permit persons to whom the Software is

       furnished to do so, subject to the following conditions:

       

       The above copyright notice and this permission notice shall be included in

       all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN

       THE SOFTWARE.


   >>> ee-first-1.1.1

       The MIT License (MIT)

       

       Copyright (c) 2014 Jonathan Ong me@jongleberry.com

       

       Permission is hereby granted, free of charge, to any person obtaining a copy

       of this software and associated documentation files (the "Software"), to deal

       in the Software without restriction, including without limitation the rights

       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

       copies of the Software, and to permit persons to whom the Software is

       furnished to do so, subject to the following conditions:

       

       The above copyright notice and this permission notice shall be included in

       all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN

       THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright (c) 2014 Jonathan Ong me@jongleberry.com


   >>> cookie-signature-1.0.6

       License:

       

       The MIT License

       

       Copyright (c) 2012 LearnBoost &lt;tj@learnboost.com&gt;

       

       Permission is hereby granted, free of charge, to any person obtaining

       a copy of this software and associated documentation files (the

       'Software'), to deal in the Software without restriction, including

       without limitation the rights to use, copy, modify, merge, publish,

       distribute, sublicense, and/or sell copies of the Software, and to

       permit persons to whom the Software is furnished to do so, subject to

       the following conditions:

       

       The above copyright notice and this permission notice shall be

       included in all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,

       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY

       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,

       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE

       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> unpipe-1.0.0

       (The MIT License)

       

       Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com>

       

       Permission is hereby granted, free of charge, to any person obtaining

       a copy of this software and associated documentation files (the

       'Software'), to deal in the Software without restriction, including

       without limitation the rights to use, copy, modify, merge, publish,

       distribute, sublicense, and/or sell copies of the Software, and to

       permit persons to whom the Software is furnished to do so, subject to

       the following conditions:

       

       The above copyright notice and this permission notice shall be

       included in all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,

       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY

       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,

       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE

       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com>


   >>> sprintf-js-1.0.3

       Copyright (c) 2007-2014, Alexandru Marasteanu <hello [at) alexei (dot] ro>

       All rights reserved.

       

       Redistribution and use in source and binary forms, with or without

       modification, are permitted provided that the following conditions are met:

       Redistributions of source code must retain the above copyright

       notice, this list of conditions and the following disclaimer.

       Redistributions in binary form must reproduce the above copyright

       notice, this list of conditions and the following disclaimer in the

       documentation and/or other materials provided with the distribution.

       Neither the name of this software nor the names of its contributors may be

       used to endorse or promote products derived from this software without

       specific prior written permission.

       

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND

       ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED

       WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE

       DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR

       ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES

       (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;

       LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND

       ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

       (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS

       SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> through-2.3.8

       [PLEASE NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS COMPONENT UNDER THE TERMS OF THE [MIT LICENSE].  THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE;]

       

       License

       

       MIT / Apache2

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       package/LICENSE.APACHE2

       Copyright (c) 2011 Dominic Tarr

       > MIT

       package/LICENSE.MIT

       Copyright (c) 2011 Dominic Tarr


   >>> util-deprecate-1.0.2

       (The MIT License)

       

       Copyright (c) 2014 Nathan Rajlich <nathan@tootallnate.net>

       

       Permission is hereby granted, free of charge, to any person

       obtaining a copy of this software and associated documentation

       files (the "Software"), to deal in the Software without

       restriction, including without limitation the rights to use,

       copy, modify, merge, publish, distribute, sublicense, and/or sell

       copies of the Software, and to permit persons to whom the

       Software is furnished to do so, subject to the following

       conditions:

       

       The above copyright notice and this permission notice shall be

       included in all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES

       OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT

       HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,

       WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR

       OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright (c) 2014 Nathan Rajlich <nathan@tootallnate.net>

       package/README.md

       Copyright (c) 2014 Nathan Rajlich <nathan@tootallnate.net>


   >>> jsesc-0.5.0

       Copyright Mathias Bynens <http://mathiasbynens.be/>

       

       Permission is hereby granted, free of charge, to any person obtaining

       a copy of this software and associated documentation files (the

       "Software"), to deal in the Software without restriction, including

       without limitation the rights to use, copy, modify, merge, publish,

       distribute, sublicense, and/or sell copies of the Software, and to

       permit persons to whom the Software is furnished to do so, subject to

       the following conditions:

       

       The above copyright notice and this permission notice shall be

       included in all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> text-table-0.2.0

       This software is released under the MIT license:

       

       Permission is hereby granted, free of charge, to any person obtaining a copy of

       this software and associated documentation files (the "Software"), to deal in

       the Software without restriction, including without limitation the rights to

       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of

       the Software, and to permit persons to whom the Software is furnished to do so,

       subject to the following conditions:

       

       The above copyright notice and this permission notice shall be included in all

       copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS

       FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR

       COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER

       IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN

       CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> is-arrayish-0.2.1

       The MIT License (MIT)

       

       Copyright (c) 2015 JD Ballard

       

       Permission is hereby granted, free of charge, to any person obtaining a copy

       of this software and associated documentation files (the "Software"), to deal

       in the Software without restriction, including without limitation the rights

       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

       copies of the Software, and to permit persons to whom the Software is

       furnished to do so, subject to the following conditions:

       

       The above copyright notice and this permission notice shall be included in

       all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN

       THE SOFTWARE.


   >>> escape-html-1.0.3

       (The MIT License)

       Copyright (c) 2012-2013 TJ Holowaychuk
       Copyright (c) 2015 Andreas Lubbe
       Copyright (c) 2015 Tiancheng "Timothy" Gu

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright (c) 2012-2013 TJ Holowaychuk


   >>> delegates-1.0.0

       Copyright (c) 2015 TJ Holowaychuk <tj@vision-media.ca>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> requires-port-1.0.0

       The MIT License (MIT)

       Copyright (c) 2015 Unshift.io, Arnout Kazemier,  the Contributors.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright (c) 2015 Unshift.io, Arnout Kazemier,  the Contributors.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> core-util-is-1.0.2

       Copyright Joyent, Inc. and other Node contributors.

       Permission is hereby granted, free of charge, to any person obtaining a
       copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to permit
       persons to whom the Software is furnished to do so, subject to the
       following conditions:

       The above copyright notice and this permission notice shall be included
       in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
       OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
       NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
       DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
       OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
       USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/lib/util.js

       Copyright Joyent, Inc. and other Node contributors.


   >>> assert-plus-1.0.0

       License

       

       The MIT License (MIT)

       Copyright (c) 2012 Mark Cavage

       

       Permission is hereby granted, free of charge, to any person obtaining a copy of

       this software and associated documentation files (the "Software"), to deal in

       the Software without restriction, including without limitation the rights to

       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of

       the Software, and to permit persons to whom the Software is furnished to do so,

       subject to the following conditions:

       

       The above copyright notice and this permission notice shall be included in all

       copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE

       SOFTWARE.


   >>> isarray-1.0.0

       Copyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;

       

       Permission is hereby granted, free of charge, to any person obtaining a copy of

       this software and associated documentation files (the "Software"), to deal in

       the Software without restriction, including without limitation the rights to

       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies

       of the Software, and to permit persons to whom the Software is furnished to do

       so, subject to the following conditions:

       

       The above copyright notice and this permission notice shall be included in all

       copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE

       SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/README.md

       Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>


   >>> escape-string-regexp-1.0.5

       The MIT License (MIT)

       

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       

       Permission is hereby granted, free of charge, to any person obtaining a copy

       of this software and associated documentation files (the "Software"), to deal

       in the Software without restriction, including without limitation the rights

       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

       copies of the Software, and to permit persons to whom the Software is

       furnished to do so, subject to the following conditions:

       

       The above copyright notice and this permission notice shall be included in

       all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN

       THE SOFTWARE.


   >>> imurmurhash-0.1.4

       License (MIT)
       -------------
       Copyright (c) 2013 Gary Court, Jens Taylor

       Permission is hereby granted, free of charge, to any person obtaining a copy of
       this software and associated documentation files (the "Software"), to deal in
       the Software without restriction, including without limitation the rights to
       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
       the Software, and to permit persons to whom the Software is furnished to do so,
       subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
       FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
       COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
       IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
       CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/README.md

       Copyright (c) 2013 Gary Court, Jens Taylor


   >>> wrappy-1.0.2

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> set-blocking-2.0.0

       Copyright (c) 2016, Contributors

       Permission to use, copy, modify, and/or distribute this software
       for any purpose with or without fee is hereby granted, provided
       that the above copyright notice and this permission notice
       appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
       OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE
       LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
       OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
       WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
       ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE.txt

       Copyright (c) 2016, Contributors

       Permission to use, copy, modify, and/or distribute this software
       for any purpose with or without fee is hereby granted, provided
       that the above copyright notice and this permission notice
       appear in all copies.



   >>> console-control-strings-1.1.0

       Copyright (c) 2014, Rebecca Turner <me@re-becca.org>

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
       OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> has-unicode-2.0.1

       Copyright (c) 2014, Rebecca Turner <me@re-becca.org>

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
       OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> fs.realpath-1.0.0

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

       ----

       This library bundles a version of the `fs.realpath` and `fs.realpathSync`
       methods from Node.js v0.10 under the terms of the Node.js MIT license.

       Node's license follows, also included at the header of `old.js` which contains
       the licensed code:

       Copyright Joyent, Inc. and other Node contributors.

       Permission is hereby granted, free of charge, to any person obtaining a
       copy of this software and associated documentation files (the "Software"),
       to deal in the Software without restriction, including without limitation
       the rights to use, copy, modify, merge, publish, distribute, sublicense,
       and/or sell copies of the Software, and to permit persons to whom the
       Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       DEALINGS IN THE SOFTWARE.


   >>> unc-path-regex-0.1.2

       The MIT License (MIT)

       Copyright (c) 2015, Jon Schlinkert.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> lodash.isstring-4.0.1

       Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
       Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas,
       DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> normalize-range-0.1.2

       The MIT License (MIT)

       

       Copyright (c) James Talmage <james@talmage.io>(github.com/jamestalmage)

       

       Permission is hereby granted, free of charge, to any person obtaining a copy

       of this software and associated documentation files (the "Software"), to deal

       in the Software without restriction, including without limitation the rights

       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

       copies of the Software, and to permit persons to whom the Software is

       furnished to do so, subject to the following conditions:

       

       The above copyright notice and this permission notice shall be included in

       all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN

       THE SOFTWARE.


   >>> extsprintf-1.3.0

       Copyright (c) 2012, Joyent, Inc. All rights reserved.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE


   >>> once-1.4.0

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> merge-descriptors-1.0.1

       (The MIT License)

       

       Copyright (c) 2013 Jonathan Ong <me@jongleberry.com>

       Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com>

       

       Permission is hereby granted, free of charge, to any person obtaining

       a copy of this software and associated documentation files (the

       'Software'), to deal in the Software without restriction, including

       without limitation the rights to use, copy, modify, merge, publish,

       distribute, sublicense, and/or sell copies of the Software, and to

       permit persons to whom the Software is furnished to do so, subject to

       the following conditions:

       

       The above copyright notice and this permission notice shall be

       included in all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,

       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY

       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,

       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE

       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> require-directory-2.1.1

       The MIT License (MIT)

       Copyright (c) 2015-2016, Jon Schlinkert

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright (c) 2011 Troy Goode <troygoode@gmail.com>

       Permission is hereby granted, free of charge, to any person obtaining a
       copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be included
       in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> path-to-regexp-0.1.7

       The MIT License (MIT)

       

       Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)

       

       Permission is hereby granted, free of charge, to any person obtaining a copy

       of this software and associated documentation files (the "Software"), to deal

       in the Software without restriction, including without limitation the rights

       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

       copies of the Software, and to permit persons to whom the Software is

       furnished to do so, subject to the following conditions:

       

       The above copyright notice and this permission notice shall be included in

       all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN

       THE SOFTWARE.


   >>> methods-1.1.2

       (The MIT License)

       

       Copyright (c) 2013-2014 TJ Holowaychuk <tj@vision-media.ca>

       Copyright (c) 2015-2016 Douglas Christopher Wilson <doug@somethingdoug.com>

       

       Permission is hereby granted, free of charge, to any person obtaining

       a copy of this software and associated documentation files (the

       'Software'), to deal in the Software without restriction, including

       without limitation the rights to use, copy, modify, merge, publish,

       distribute, sublicense, and/or sell copies of the Software, and to

       permit persons to whom the Software is furnished to do so, subject to

       the following conditions:

       

       The above copyright notice and this permission notice shall be

       included in all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,

       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY

       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,

       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE

       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> lodash.isplainobject-4.0.6

       Copyright jQuery Foundation and other contributors <https://jquery.org/>

       

       Based on Underscore.js, copyright Jeremy Ashkenas,

       DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>

       

       This software consists of voluntary contributions made by many

       individuals. For exact contribution history, see the revision history

       available at https://github.com/lodash/lodash

       

       The following license applies to all parts of this software except as

       documented below:

       

       ====

       

       Permission is hereby granted, free of charge, to any person obtaining

       a copy of this software and associated documentation files (the

       "Software"), to deal in the Software without restriction, including

       without limitation the rights to use, copy, modify, merge, publish,

       distribute, sublicense, and/or sell copies of the Software, and to

       permit persons to whom the Software is furnished to do so, subject to

       the following conditions:

       

       The above copyright notice and this permission notice shall be

       included in all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       

       ====

       

       Copyright and related rights for sample code are waived via CC0. Sample

       code is defined as all source code displayed within the prose of the

       documentation.

       

       CC0: http://creativecommons.org/publicdomain/zero/1.0/

       

       ====

       

       Files located in the node_modules and vendor directories are externally

       maintained libraries used by this software which have their own

       licenses; we recommend you read them, as their terms may differ from the

       terms above.


   >>> array-flatten-1.1.1

       The MIT License (MIT)

       

       Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)

       

       Permission is hereby granted, free of charge, to any person obtaining a copy

       of this software and associated documentation files (the "Software"), to deal

       in the Software without restriction, including without limitation the rights

       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

       copies of the Software, and to permit persons to whom the Software is

       furnished to do so, subject to the following conditions:

       

       The above copyright notice and this permission notice shall be included in

       all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN

       THE SOFTWARE.


   >>> inherits-2.0.3

       The ISC License

       Copyright (c) Isaac Z. Schlueter

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
       REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
       FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
       INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
       LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
       OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
       PERFORMANCE OF THIS SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright (c) Isaac Z. Schlueter

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.



   >>> os-tmpdir-1.0.2

       The MIT License (MIT)

       

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       

       Permission is hereby granted, free of charge, to any person obtaining a copy

       of this software and associated documentation files (the "Software"), to deal

       in the Software without restriction, including without limitation the rights

       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

       copies of the Software, and to permit persons to whom the Software is

       furnished to do so, subject to the following conditions:

       

       The above copyright notice and this permission notice shall be included in

       all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN

       THE SOFTWARE.


   >>> inflight-1.0.6

       MIT-STYLE

       The ISC License

       Copyright (c) Isaac Z. Schlueter

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> is-glob-3.1.0

       The MIT License (MIT)

       Copyright (c) 2014-2016, Jon Schlinkert.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> path-is-absolute-1.0.1

       The MIT License (MIT)

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> buffer-equal-constant-time-1.0.1

       Copyright (c) 2013, GoInstant Inc., a salesforce.com company

       All rights reserved.

       

       Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

       

       * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

       

       * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

       

       * Neither the name of salesforce.com, nor GoInstant, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

       

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> lodash.once-4.1.1

       Copyright jQuery Foundation and other contributors <https://jquery.org/>

       

       Based on Underscore.js, copyright Jeremy Ashkenas,

       DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>

       

       This software consists of voluntary contributions made by many

       individuals. For exact contribution history, see the revision history

       available at https://github.com/lodash/lodash

       

       The following license applies to all parts of this software except as

       documented below:

       

       ====

       

       Permission is hereby granted, free of charge, to any person obtaining

       a copy of this software and associated documentation files (the

       "Software"), to deal in the Software without restriction, including

       without limitation the rights to use, copy, modify, merge, publish,

       distribute, sublicense, and/or sell copies of the Software, and to

       permit persons to whom the Software is furnished to do so, subject to

       the following conditions:

       

       The above copyright notice and this permission notice shall be

       included in all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       

       ====

       

       Copyright and related rights for sample code are waived via CC0. Sample

       code is defined as all source code displayed within the prose of the

       documentation.

       

       CC0: http://creativecommons.org/publicdomain/zero/1.0/

       

       ====

       

       Files located in the node_modules and vendor directories are externally

       maintained libraries used by this software which have their own

       licenses; we recommend you read them, as their terms may differ from the

       terms above.


   >>> path-dirname-1.0.2

       Copyright (c) Elan Shanker and Node.js contributors. All rights reserved.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to
       deal in the Software without restriction, including without limitation the
       rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
       sell copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
       IN THE SOFTWARE.


   >>> commondir-1.0.1

       The MIT License

       Copyright (c) 2013 James Halliday (mail@substack.net)

       Permission is hereby granted, free of charge, 
       to any person obtaining a copy of this software and 
       associated documentation files (the "Software"), to 
       deal in the Software without restriction, including 
       without limitation the rights to use, copy, modify, 
       merge, publish, distribute, sublicense, and/or sell 
       copies of the Software, and to permit persons to whom 
       the Software is furnished to do so, 
       subject to the following conditions:

       The above copyright notice and this permission notice 
       shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 
       OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR 
       ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> http-deceiver-1.2.7

       Copyright Fedor Indutny, 2015.

       

       Permission is hereby granted, free of charge, to any person obtaining a

       copy of this software and associated documentation files (the

       "Software"), to deal in the Software without restriction, including

       without limitation the rights to use, copy, modify, merge, publish,

       distribute, sublicense, and/or sell copies of the Software, and to permit

       persons to whom the Software is furnished to do so, subject to the

       following conditions:

       

       The above copyright notice and this permission notice shall be included

       in all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS

       OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN

       NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,

       DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR

       OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE

       USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> hpack.js-2.1.6

       This software is licensed under the MIT License.

       

       Copyright Fedor Indutny, 2015.

       

       Permission is hereby granted, free of charge, to any person obtaining a

       copy of this software and associated documentation files (the

       "Software"), to deal in the Software without restriction, including

       without limitation the rights to use, copy, modify, merge, publish,

       distribute, sublicense, and/or sell copies of the Software, and to permit

       persons to whom the Software is furnished to do so, subject to the

       following conditions:

       

       The above copyright notice and this permission notice shall be included

       in all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS

       OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN

       NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,

       DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR

       OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE

       USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> select-hose-2.0.0

       Copyright Fedor Indutny, 2015.

       

       Permission is hereby granted, free of charge, to any person obtaining a

       copy of this software and associated documentation files (the

       "Software"), to deal in the Software without restriction, including

       without limitation the rights to use, copy, modify, merge, publish,

       distribute, sublicense, and/or sell copies of the Software, and to permit

       persons to whom the Software is furnished to do so, subject to the

       following conditions:

       

       The above copyright notice and this permission notice shall be included

       in all copies or substantial portions of the Software.

       

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS

       OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN

       NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,

       DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR

       OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE

       USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> asynckit-0.4.0

       The MIT License (MIT)

       Copyright (c) 2016 Alex Indigo

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> boolbase-1.0.0

       "license": "ISC"


   >>> dashdash-1.14.1

       This is the MIT license

       Copyright (c) 2013 Trent Mick. All rights reserved.
       Copyright (c) 2013 Joyent Inc. All rights reserved.

       Permission is hereby granted, free of charge, to any person obtaining a
       copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be included
       in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
       OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> tweetnacl-0.14.5

       This is free and unencumbered software released into the public domain.

       Anyone is free to copy, modify, publish, use, compile, sell, or
       distribute this software, either in source code form or as a compiled
       binary, for any purpose, commercial or non-commercial, and by any
       means.

       In jurisdictions that recognize copyright laws, the author or authors
       of this software dedicate any and all copyright interest in the
       software to the public domain. We make this dedication for the benefit
       of the public at large and to the detriment of our heirs and
       successors. We intend this dedication to be an overt act of
       relinquishment in perpetuity of all present and future rights to this
       software under copyright law.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
       OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
       ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       OTHER DEALINGS IN THE SOFTWARE.

       For more information, please refer to <http://unlicense.org>


   >>> wcwidth-1.0.1

       Copyright (C) 2012 by Jun Woong.

       This package is a JavaScript porting of `wcwidth()` implementation
       [by Markus Kuhn](http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c).

       Permission is hereby granted, free of charge, to any person obtaining a copy of
       this software and associated documentation files (the "Software"), to deal in
       the Software without restriction, including without limitation the rights to
       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
       of the Software, and to permit persons to whom the Software is furnished to do
       so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.


       THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
       INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
       FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
       OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
       EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
       PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
       BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
       IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
       ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
       POSSIBILITY OF SUCH DAMAGE.


   >>> glob-parent-3.1.0

       The ISC License

       Copyright (c) 2015 Elan Shanker

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> is-extglob-2.1.1

       Copyright (c) 2014-2016, Jon Schlinkert

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> jsbn-0.1.1

       Copyright (c) 2003-2005  Tom Wu
       All Rights Reserved.

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
       EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
       WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

       IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
       INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
       RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF
       THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT
       OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

       In addition, the following condition applies:

       All redistributions must retain an intact copy of this copyright notice
       and disclaimer.


   >>> isexe-2.0.0

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.



   >>> event-emitter-0.3.5

       Copyright (C) 2012-2015 Mariusz Nowak (www.medikoo.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> es6-map-0.1.5

       Copyright (C) 2013 Mariusz Nowak (www.medikoo.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> ms-2.0.0

       The MIT License (MIT)

       Copyright (c) 2016 Zeit, Inc.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> jsonparse-1.3.1

       The MIT License

       Copyright (c) 2012 Tim Caswell

       Permission is hereby granted, free of charge, 
       to any person obtaining a copy of this software and 
       associated documentation files (the "Software"), to 
       deal in the Software without restriction, including 
       without limitation the rights to use, copy, modify, 
       merge, publish, distribute, sublicense, and/or sell 
       copies of the Software, and to permit persons to whom 
       the Software is furnished to do so, 
       subject to the following conditions:

       The above copyright notice and this permission notice 
       shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 
       OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR 
       ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> getpass-0.1.7

       Copyright Joyent, Inc. All rights reserved.
       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to
       deal in the Software without restriction, including without limitation the
       rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
       sell copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
       IN THE SOFTWARE.


   >>> batch-0.6.1

       (The MIT License)

       Copyright (c) 2013 TJ Holowaychuk <tj@vision-media.ca>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> sax-1.2.4

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

       ====

       `String.fromCodePoint` by Mathias Bynens used according to terms of MIT
       License, as follows:

       Copyright Mathias Bynens <https://mathiasbynens.be/>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> image-size-0.5.5

       The MIT License (MIT)

       Copyright © 2017 Aditya Yadav, http://netroy.in

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> verror-1.10.0

       Copyright (c) 2016, Joyent, Inc. All rights reserved.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE


   >>> color-name-1.1.3

       The MIT License (MIT)
       Copyright (c) 2015 Dmitry Ivanov

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> is-plain-object-2.0.4

       The MIT License (MIT)

       Copyright (c) 2014-2017, Jon Schlinkert.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> remove-trailing-separator-1.1.0

       Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

       ADDITIONAL LICENSE INFORMATION:

       > ISC License (MIT STYLE)

       remove-trailing-separator-1.1.0.tgz.gz\remove-trailing-separator-1.1.0.tgz\package\package.json

       License: "ISC"


   >>> function-bind-1.1.1

       Copyright (c) 2013 Raynos.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> bytes-3.0.0

       (The MIT License)

       Copyright (c) 2012-2014 TJ Holowaychuk <tj@vision-media.ca>
       Copyright (c) 2015 Jed Watson <jed.watson@me.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> etag-1.8.1

       (The MIT License)

       Copyright (c) 2014-2016 Douglas Christopher Wilson

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> isobject-3.0.1

       The MIT License (MIT)

       Copyright (c) 2014-2017, Jon Schlinkert.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> dns-equal-1.0.0

       The MIT License (MIT)

       Copyright (c) 2016 Thomas Watson Steen

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> tmp-0.0.33

       The MIT License (MIT)

       Copyright (c) 2014 KARASZI IstvÃ¡n

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.

       ADDITIONAL LICENSE INFORMATION:

       > Apache 2.0

       node-tmp-0.0.33.tar.gz\node-tmp-0.0.33.tar\node-tmp-0.0.33\docs\scripts\prettify\ Apache-License-2.0.txt

       License: Apache 2.0


   >>> fresh-0.5.2

       (The MIT License)

       Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>
       Copyright (c) 2016-2017 Douglas Christopher Wilson <doug@somethingdoug.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> utils-merge-1.0.1

       The MIT License (MIT)

       Copyright (c) 2013-2017 Jared Hanson

       Permission is hereby granted, free of charge, to any person obtaining a copy of
       this software and associated documentation files (the "Software"), to deal in
       the Software without restriction, including without limitation the rights to
       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
       the Software, and to permit persons to whom the Software is furnished to do so,
       subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
       FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
       COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
       IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
       CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> vary-1.1.2

       (The MIT License)

       Copyright (c) 2014-2017 Douglas Christopher Wilson

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> debug-2.6.9

       (The MIT License)

       Copyright (c) 2014 TJ Holowaychuk <tj@vision-media.ca>

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software
       and associated documentation files (the 'Software'), to deal in the Software without restriction,
       including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
       and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
       subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial
       portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
       LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> http-signature-1.2.0

       Copyright Joyent, Inc. All rights reserved.
       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to
       deal in the Software without restriction, including without limitation the
       rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
       sell copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
       IN THE SOFTWARE.


   >>> har-schema-2.0.0

       Copyright (c) 2015, Ahmad Nassri <ahmad@ahmadnassri.com>

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
       OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> performance-now-2.1.0

       Copyright (c) 2013 Braveg1rl

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> promise-inflight-1.0.1

       Copyright (c) 2017, Rebecca Turner <me@re-becca.org>

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
       OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> humanize-ms-1.2.1

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> abbrev-1.1.1

       [PLEASE NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS COMPONENT UNDER THE TERMS OF THE MIT LICENSE.  THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       This software is dual-licensed under the ISC and MIT licenses.
       You may use this software under EITHER of the following licenses.

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


       Copyright Isaac Z. Schlueter and Contributors
       All rights reserved.

       Permission is hereby granted, free of charge, to any person
       obtaining a copy of this software and associated documentation
       files (the "Software"), to deal in the Software without
       restriction, including without limitation the rights to use,
       copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the
       Software is furnished to do so, subject to the following
       conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
       OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       OTHER DEALINGS IN THE SOFTWARE.


       ADDITIONAL LICENSE INFORMATION:

       > ISC LICENSE (MIT STYLE)

       abbrev-js-1.1.1.tar.gz\abbrev-js-1.1.1.tar\abbrev-js-1.1.1\package.json

       LICENSE : ISC


   >>> source-map-0.6.1

       Copyright (c) 2009-2011, Mozilla Foundation and contributors
       All rights reserved.

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:

       * Redistributions of source code must retain the above copyright notice, this
       list of conditions and the following disclaimer.

       * Redistributions in binary form must reproduce the above copyright notice,
       this list of conditions and the following disclaimer in the documentation
       and/or other materials provided with the distribution.

       * Neither the names of the Mozilla Foundation nor the names of project
       contributors may be used to endorse or promote products derived from this
       software without specific prior written permission.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
       ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
       WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
       DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
       FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
       DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
       SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
       CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
       OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
       OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> es6-iterator-2.0.3

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> serve-index-1.9.1

       (The MIT License)

       Copyright (c) 2010 Sencha Inc.
       Copyright (c) 2011 LearnBoost
       Copyright (c) 2011 TJ Holowaychuk
       Copyright (c) 2014-2015 Douglas Christopher Wilson

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> setprototypeof-1.1.0

       Copyright (c) 2015, Wes Todd

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
       SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
       OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
       CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> systemjs-0.20.19

       MIT License
       -----------

       Copyright (C) 2013-2016 Guy Bedford

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       [VMware does not distribute these components]
       systemjs-0.20.19.tar.gz\systemjs-0.20.19.tar\systemjs-0.20.19\bench\cjs-sample\cjs.js


   >>> ultron-1.1.1

       The MIT License (MIT)

       Copyright (c) 2015 Unshift.io, Arnout Kazemier,  the Contributors.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> mime-1.6.0

       The MIT License (MIT)

       Copyright (c) 2010 Benjamin Thomas, Robert Kieffer

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> prr-1.0.1

       The MIT License (MIT)
       =====================

       Copyright (c) 2014 Rod Vagg
       ---------------------------

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> ws-3.3.3

       The MIT License (MIT)

       Copyright (c) 2011 Einar Otto Stangvik <einaros@gmail.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> color-support-1.1.3

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> is-relative-1.0.0

       The MIT License (MIT)

       Copyright (c) 2014-2017, Jon Schlinkert.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> is-absolute-1.0.0

       The MIT License (MIT)

       Copyright (c) 2014-2017, Jon Schlinkert.
       Copyright (c) 2009-2014, TJ Holowaychuk

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> is-unc-path-1.0.0

       The MIT License (MIT)

       Copyright (c) 2015-2017, Jon Schlinkert.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> depd-1.1.2

       (The MIT License)

       Copyright (c) 2014-2017 Douglas Christopher Wilson

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> encodeurl-1.0.2

       (The MIT License)

       Copyright (c) 2016 Douglas Christopher Wilson

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> pump-2.0.1

       The MIT License (MIT)

       Copyright (c) 2014 Mathias Buus

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> resolve-from-4.0.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> has-flag-3.0.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> brace-expansion-1.1.11

       MIT License

       Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> lodash.includes-4.3.0

       Copyright jQuery Foundation and other contributors <https://jquery.org/>

       Based on Underscore.js, copyright Jeremy Ashkenas,
       DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>

       This software consists of voluntary contributions made by many
       individuals. For exact contribution history, see the revision history
       available at https://github.com/lodash/lodash

       The following license applies to all parts of this software except as
       documented below:

       ====

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ====

       Copyright and related rights for sample code are waived via CC0. Sample
       code is defined as all source code displayed within the prose of the
       documentation.

       CC0: http://creativecommons.org/publicdomain/zero/1.0/

       ====

       Files located in the node_modules and vendor directories are externally
       maintained libraries used by this software which have their own
       licenses; we recommend you read them, as their terms may differ from the
       terms above.


   >>> is-windows-1.0.2

       The MIT License (MIT)

       Copyright (c) 2015-2018, Jon Schlinkert.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> json-stable-stringify-without-jsonify-1.0.1

       This software is released under the MIT license:

       Permission is hereby granted, free of charge, to any person obtaining a copy of
       this software and associated documentation files (the "Software"), to deal in
       the Software without restriction, including without limitation the rights to
       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
       the Software, and to permit persons to whom the Software is furnished to do so,
       subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
       FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
       COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
       IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
       CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> lodash.isnumber-3.0.3

       Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
       Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas,
       DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> argparse-1.0.10

       (The MIT License)

       Copyright (C) 2012 by Vitaly Puzrin

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> lodash.isinteger-4.0.4

       Copyright jQuery Foundation and other contributors <https://jquery.org/>

       Based on Underscore.js, copyright Jeremy Ashkenas,
       DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>

       This software consists of voluntary contributions made by many
       individuals. For exact contribution history, see the revision history
       available at https://github.com/lodash/lodash

       The following license applies to all parts of this software except as
       documented below:

       ====

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ====

       Copyright and related rights for sample code are waived via CC0. Sample
       code is defined as all source code displayed within the prose of the
       documentation.

       CC0: http://creativecommons.org/publicdomain/zero/1.0/

       ====

       Files located in the node_modules and vendor directories are externally
       maintained libraries used by this software which have their own
       licenses; we recommend you read them, as their terms may differ from the
       terms above.


   >>> lodash.isboolean-3.0.3

       Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
       Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas,
       DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> string_decoder-1.1.1

       Node.js is licensed for use as follows:

       """
       Copyright Node.js contributors. All rights reserved.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to
       deal in the Software without restriction, including without limitation the
       rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
       sell copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
       IN THE SOFTWARE.
       """

       This license applies to parts of Node.js originating from the
       https://github.com/joyent/node repository:

       """
       Copyright Joyent, Inc. and other Node contributors. All rights reserved.
       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to
       deal in the Software without restriction, including without limitation the
       rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
       sell copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
       IN THE SOFTWARE.
       """


   >>> statuses-1.5.0

       The MIT License (MIT)

       Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
       Copyright (c) 2016 Douglas Christopher Wilson <doug@somethingdoug.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> http-errors-1.6.3

       The MIT License (MIT)

       Copyright (c) 2014 Jonathan Ong me@jongleberry.com
       Copyright (c) 2016 Douglas Christopher Wilson doug@somethingdoug.com

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> concat-stream-1.6.2

       The MIT License

       Copyright (c) 2013 Max Ogden

       Permission is hereby granted, free of charge, 
       to any person obtaining a copy of this software and 
       associated documentation files (the "Software"), to 
       deal in the Software without restriction, including 
       without limitation the rights to use, copy, modify, 
       merge, publish, distribute, sublicense, and/or sell 
       copies of the Software, and to permit persons to whom 
       the Software is furnished to do so, 
       subject to the following conditions:

       The above copyright notice and this permission notice 
       shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 
       OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR 
       ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> pump-3.0.0

       The MIT License (MIT)

       Copyright (c) 2014 Mathias Buus

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> minimalistic-assert-1.0.1

       Copyright 2015 Calvin Metcalf

       Permission to use, copy, modify, and/or distribute this software for any purpose
       with or without fee is hereby granted, provided that the above copyright notice
       and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
       REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
       FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
       INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
       LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
       OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
       PERFORMANCE OF THIS SOFTWARE.


   >>> obuf-1.1.2

       Copyright Fedor Indutny, 2015.

       Permission is hereby granted, free of charge, to any person obtaining a
       copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to permit
       persons to whom the Software is furnished to do so, subject to the
       following conditions:

       The above copyright notice and this permission notice shall be included
       in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
       OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
       NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
       DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
       OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
       USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> safe-buffer-5.1.2

       The MIT License (MIT)

       Copyright (c) Feross Aboukhadijeh

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> wbuf-1.7.3

       wbuf

       #### LICENSE

       This software is licensed under the MIT License.

       Copyright Fedor Indutny, 2014.

       Permission is hereby granted, free of charge, to any person obtaining a
       copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to permit
       persons to whom the Software is furnished to do so, subject to the
       following conditions:

       The above copyright notice and this permission notice shall be included
       in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
       OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
       NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
       DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
       OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
       USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> ansi-styles-3.2.1

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> clone-1.0.4

       Copyright Â© 2011-2015 Paul Vorbach <paul@vorba.ch>

       Permission is hereby granted, free of charge, to any person obtaining a copy of
       this software and associated documentation files (the â€œSoftwareâ€), to deal in
       the Software without restriction, including without limitation the rights to
       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
       the Software, and to permit persons to whom the Software is furnished to do so,
       subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED â€œAS ISâ€, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
       FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
       COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
       IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> safer-buffer-2.1.2

       MIT License

       Copyright (c) 2018 Nikita Skovoroda <chalkerx@gmail.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright (c) 2018 Nikita Skovoroda <chalkerx@gmail.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> pumpify-1.5.1

       The MIT License (MIT)

       Copyright (c) 2014 Mathias Buus

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> has-1.0.3

       Copyright (c) 2013 Thiago de Arruda

       Permission is hereby granted, free of charge, to any person
       obtaining a copy of this software and associated documentation
       files (the "Software"), to deal in the Software without
       restriction, including without limitation the rights to use,
       copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the
       Software is furnished to do so, subject to the following
       conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
       OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       OTHER DEALINGS IN THE SOFTWARE.


   >>> json-schema-traverse-0.4.1

       MIT License

       Copyright (c) 2017 Evgeny Poberezkin

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> error-ex-1.3.2

       The MIT License (MIT)

       Copyright (c) 2015 JD Ballard

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> extend-3.0.2

       The MIT License (MIT)

       Copyright (c) 2014 Stefan Thomas

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> bcrypt-pbkdf-1.0.2

       The Blowfish portions are under the following license:

       Blowfish block cipher for OpenBSD
       Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
       All rights reserved.

       Implementation advice by David Mazieres <dm@lcs.mit.edu>.

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions
       are met:
       1. Redistributions of source code must retain the above copyright
          notice, this list of conditions and the following disclaimer.
       2. Redistributions in binary form must reproduce the above copyright
          notice, this list of conditions and the following disclaimer in the
          documentation and/or other materials provided with the distribution.
       3. The name of the author may not be used to endorse or promote products
          derived from this software without specific prior written permission.

       THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
       IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
       OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
       IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
       INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
       NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
       DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
       THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
       (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
       THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



       The bcrypt_pbkdf portions are under the following license:

       Copyright (c) 2013 Ted Unangst <tedu@openbsd.org>

       Permission to use, copy, modify, and distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
       OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.



       Performance improvements (Javascript-specific):

       Copyright 2016, Joyent Inc
       Author: Alex Wilson <alex.wilson@joyent.com>

       Permission to use, copy, modify, and distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
       OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> esprima-4.0.1

       Copyright JS Foundation and other contributors, https://js.foundation/

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:

         * Redistributions of source code must retain the above copyright
           notice, this list of conditions and the following disclaimer.
         * Redistributions in binary form must reproduce the above copyright
           notice, this list of conditions and the following disclaimer in the
           documentation and/or other materials provided with the distribution.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
       AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
       IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
       ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
       DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
       (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
       LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
       ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
       (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
       THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> lodash.debounce-4.0.8

       Copyright jQuery Foundation and other contributors <https://jquery.org/>

       Based on Underscore.js, copyright Jeremy Ashkenas,
       DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>

       This software consists of voluntary contributions made by many
       individuals. For exact contribution history, see the revision history
       available at https://github.com/lodash/lodash

       The following license applies to all parts of this software except as
       documented below:

       ====

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ====

       Copyright and related rights for sample code are waived via CC0. Sample
       code is defined as all source code displayed within the prose of the
       documentation.

       CC0: http://creativecommons.org/publicdomain/zero/1.0/

       ====

       Files located in the node_modules and vendor directories are externally
       maintained libraries used by this software which have their own
       licenses; we recommend you read them, as their terms may differ from the
       terms above.


   >>> require-from-string-2.0.2

       The MIT License (MIT)

       Copyright (c) Vsevolod Strukchinsky <floatdrop@gmail.com> (github.com/floatdrop)

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> to-absolute-glob-2.0.2

       The MIT License (MIT)

       Copyright (c) 2015-2016, Jon Schlinkert

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> glob-stream-6.1.0

       The MIT License (MIT)

       Copyright (c) 2015-2017 Blaine Bublitz <blaine.bublitz@gmail.com>, Eric Schoffstall <yo@contra.io> and other contributors

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> ecc-jsbn-0.1.2

       The MIT License (MIT)

       Copyright (c) 2014 Jeremie Miller

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> leven-2.1.0

       The MIT License (MIT)

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> ordered-read-streams-1.0.1

       The MIT License (MIT)

       Copyright (c) 2014 Artem Medeusheyev

       Permission is hereby granted, free of charge, to any person obtaining a copy of
       this software and associated documentation files (the "Software"), to deal in
       the Software without restriction, including without limitation the rights to
       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
       the Software, and to permit persons to whom the Software is furnished to do so,
       subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
       FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
       COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
       IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
       CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> is-negated-glob-1.0.0

       The MIT License (MIT)

       Copyright (c) 2016 Jon Schlinkert

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> supports-color-5.5.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> to-fast-properties-2.0.0

       MIT License

       Copyright (c) 2014 Petka Antonov
                     2015 Sindre Sorhus

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> color-convert-1.9.3

       Copyright (c) 2011-2016 Heather Arthur <fayearthur@gmail.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> js-tokens-4.0.0

       The MIT License (MIT)

       Copyright (c) 2014, 2015, 2016, 2017, 2018 Simon Lydell

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> form-data-2.3.3

       Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors

        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:

        The above copyright notice and this permission notice shall be included in
        all copies or substantial portions of the Software.

        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
        THE SOFTWARE.


   >>> through2-2.0.5

       The MIT License (MIT)

       **Copyright (c) Rod Vagg (the "Original Author") and additional contributors**

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> array-flatten-2.1.2

       The MIT License (MIT)

       Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> @xtuc/ieee754-1.2.0

       Copyright (c) 2008, Fair Oaks Labs, Inc.
       All rights reserved.

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:

       * Redistributions of source code must retain the above copyright notice,
       this list of conditions and the following disclaimer.

       * Redistributions in binary form must reproduce the above copyright notice,
       this list of conditions and the following disclaimer in the documentation
       and/or other materials provided with the distribution.

       * Neither the name of Fair Oaks Labs, Inc. nor the names of its contributors
       may be used to endorse or promote products derived from this software
       without specific prior written permission.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
       AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
       IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
       ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
       LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
       CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
       SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
       INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
       CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
       ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
       POSSIBILITY OF SUCH DAMAGE.


   >>> color-name-1.1.4

       The MIT License (MIT)
       Copyright (c) 2015 Dmitry Ivanov

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> big.js-5.2.2

       Copyright (c) 2012 Daniel Trebbien and other contributors
       Portions Copyright (c) 2003 STZ-IDA and PTV AG, Karlsruhe, Germany
       Portions Copyright (c) 1995-2001 International Business Machines Corporation and others

       All rights reserved.

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

       Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder.



       ICU4J license - ICU4J 1.3.1 and later
       COPYRIGHT AND PERMISSION NOTICE

       Copyright (c) 1995-2001 International Business Machines Corporation and others 

       All rights reserved. 

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. 

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 

       Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. 


       --------------------------------------------------------------------------------
       All trademarks and registered trademarks mentioned herein are the property of their respective owners.

       > Apache 2.0

       big.js-5.2.2.tar.gz\big.js-5.2.2.tar\big.js-5.2.2\perf\lib\bigdecimal_GWT\LICENCE.txt

       License: Apache 2.0


   >>> @yarnpkg/lockfile-1.1.0

       License: BSD-2 Clause


   >>> lru-cache-5.1.1

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> spdy-transport-3.0.0

       This software is licensed under the MIT License.

       Copyright Fedor Indutny, 2015.

       Permission is hereby granted, free of charge, to any person obtaining a
       copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to permit
       persons to whom the Software is furnished to do so, subject to the
       following conditions:

       The above copyright notice and this permission notice shall be included
       in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
       OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
       NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
       DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
       OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
       USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> chalk-2.4.2

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> parse-node-version-1.0.1

       The MIT License (MIT)

       Copyright (c) 2018 Blaine Bublitz <blaine.bublitz@gmail.com> and Eric Schoffstall <yo@contra.io>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> aproba-2.0.0

       Copyright (c) 2015, Rebecca Turner <me@re-becca.org>

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
       OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> duplexify-3.7.1

       The MIT License (MIT)

       Copyright (c) 2014 Mathias Buus

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> normalize-path-3.0.0

       The MIT License (MIT)

       Copyright (c) 2014-2018, Jon Schlinkert.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> randombytes-2.1.0

       MIT License

       Copyright (c) 2017 crypto-browserify

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> on-headers-1.0.2

       (The MIT License)

       Copyright (c) 2014 Douglas Christopher Wilson

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> p-try-2.2.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> pify-4.0.1

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> mimic-fn-2.1.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> make-dir-2.1.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> compression-1.7.4

       (The MIT License)

       Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
       Copyright (c) 2014-2015 Douglas Christopher Wilson <doug@somethingdoug.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> camelcase-5.3.1

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> get-caller-file-2.0.5

       ISC License (ISC)
       Copyright 2018 Stefan Penner

       Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> parseurl-1.3.3

       (The MIT License)

       Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
       Copyright (c) 2014-2017 Douglas Christopher Wilson <doug@somethingdoug.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @types/caseless-0.12.2

       This project is licensed under the MIT license.
       Copyrights are respective of each contributor listed at the beginning of each definition file.

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> type-is-1.6.18

       (The MIT License)

       Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
       Copyright (c) 2014-2015 Douglas Christopher Wilson <doug@somethingdoug.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> karma-source-map-support-1.4.0

       The MIT License (MIT)

       Copyright 2018 Tim Schaub

       Permission is hereby granted, free of charge, to any person obtaining a copy of
       this software and associated documentation files (the "Software"), to deal in
       the Software without restriction, including without limitation the rights to
       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
       the Software, and to permit persons to whom the Software is furnished to do so,
       subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
       FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
       COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
       IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
       CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> combined-stream-1.0.8

       Copyright (c) 2011 Debuggable Limited <felix@debuggable.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> ms-2.1.2

       The MIT License (MIT)

       Copyright (c) 2016 Zeit, Inc.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> mute-stream-0.0.8

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> p-locate-4.1.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> external-editor-3.1.0

       The MIT License (MIT)

       Copyright (c) 2016 Kevin Gravier

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> xtend-4.0.2

       The MIT License (MIT)
       Copyright (c) 2012-2014 Raynos.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> globals-11.12.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> callsites-3.1.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> esutils-2.0.3

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:

         * Redistributions of source code must retain the above copyright
           notice, this list of conditions and the following disclaimer.
         * Redistributions in binary form must reproduce the above copyright
           notice, this list of conditions and the following disclaimer in the
           documentation and/or other materials provided with the distribution.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
       AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
       IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
       ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
       DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
       (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
       LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
       ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
       (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
       THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> parent-module-1.0.1

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> jws-3.2.2

       Copyright (c) 2013 Brian J. Brennan

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal in
       the Software without restriction, including without limitation the rights to use,
       copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
       Software, and to permit persons to whom the Software is furnished to do so,
       subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
       INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
       PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
       FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
       ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> form-data-2.5.1

       Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors

        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:

        The above copyright notice and this permission notice shall be included in
        all copies or substantial portions of the Software.

        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
        THE SOFTWARE.


   >>> type-1.2.0

       ISC License

       Copyright (c) 2019, Mariusz Nowak, @medikoo, medikoo.com

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
       REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
       AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
       INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
       LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
       OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
       PERFORMANCE OF THIS SOFTWARE.


   >>> end-of-stream-1.4.4

       The MIT License (MIT)

       Copyright (c) 2014 Mathias Buus

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> yallist-3.1.1

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> through2-filter-3.0.0

       Copyright (c) Bryce B. Baril <bryce@ravenwall.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> unique-stream-2.3.1

       Copyright 2014 Eugene Ware

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> reusify-1.0.4

       Copyright (c) 2015 Matteo Collina

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> fill-range-7.0.1

       The MIT License (MIT)

       Copyright (c) 2014-present, Jon Schlinkert.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> path-type-4.0.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> to-regex-range-5.0.1

       The MIT License (MIT)

       Copyright (c) 2015-present, Jon Schlinkert.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> is-number-7.0.0

       The MIT License (MIT)

       Copyright (c) 2014-present, Jon Schlinkert.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> string_decoder-1.3.0

       Node.js is licensed for use as follows:

       """
       Copyright Node.js contributors. All rights reserved.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to
       deal in the Software without restriction, including without limitation the
       rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
       sell copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
       IN THE SOFTWARE.
       """

       This license applies to parts of Node.js originating from the
       https://github.com/joyent/node repository:

       """
       Copyright Joyent, Inc. and other Node contributors. All rights reserved.
       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to
       deal in the Software without restriction, including without limitation the
       rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
       sell copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
       IN THE SOFTWARE.
       """


   >>> dir-glob-3.0.1

       MIT License

       Copyright (c) Kevin Mårtensson <kevinmartensson@gmail.com> (github.com/kevva)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> clean-stack-2.2.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> braces-3.0.2

       The MIT License (MIT)

       Copyright (c) 2014-2018, Jon Schlinkert.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> thunky-1.1.0

       The MIT License (MIT)

       Copyright (c) 2018 Mathias Buus

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> is-fullwidth-code-point-3.0.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> color-convert-2.0.1

       Copyright (c) 2011-2016 Heather Arthur <fayearthur@gmail.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> merge-stream-2.0.0

       The MIT License (MIT)

       Copyright (c) Stephen Sugden <me@stephensugden.com> (stephensugden.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> path-exists-4.0.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> resolve-from-5.0.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> shallow-clone-3.0.1

       The MIT License (MIT)

       Copyright (c) 2015-present, Jon Schlinkert.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> pkg-dir-4.2.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> clone-deep-4.0.1

       The MIT License (MIT)

       Copyright (c) 2014-2018, Jon Schlinkert.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> depd-2.0.0

       (The MIT License)

       Copyright (c) 2014-2018 Douglas Christopher Wilson

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> stream-shift-1.0.1

       The MIT License (MIT)

       Copyright (c) 2016 Mathias Buus

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> fast-json-stable-stringify-2.1.0

       This software is released under the MIT license:

       Copyright (c) 2017 Evgeny Poberezkin
       Copyright (c) 2013 James Halliday

       Permission is hereby granted, free of charge, to any person obtaining a copy of
       this software and associated documentation files (the "Software"), to deal in
       the Software without restriction, including without limitation the rights to
       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
       the Software, and to permit persons to whom the Software is furnished to do so,
       subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
       FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
       COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
       IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
       CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> jsonwebtoken-8.5.1

       The MIT License (MIT)
        
       Copyright (c) 2015 Auth0, Inc. <support@auth0.com> (http://auth0.com)
        
       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:
        
       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.
        
       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> uuid-3.4.0

       The MIT License (MIT)

       Copyright (c) 2010-2016 Robert Kieffer and other contributors

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > BSD

       uuid-3.4.0.tgz\uuid-3.4.0.tar\package\lib\md5-browser.js

       Based on
        A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
         Digest Algorithm, as defined in RFC 1321.
         Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
         Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
        Distributed under the BSD License
         See http://pajhome.org.uk/crypt/md5 for more info.


   >>> kind-of-6.0.3

       The MIT License (MIT)

       Copyright (c) 2014-2017, Jon Schlinkert.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> compressible-2.0.18

       (The MIT License)

       Copyright (c) 2013 Jonathan Ong <me@jongleberry.com>
       Copyright (c) 2014 Jeremiah Senkpiel <fishrock123@rocketmail.com>
       Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> pako-1.0.11

       (The MIT License)

       Copyright (C) 2014-2017 by Vitaly Puzrin and Andrei Tuputcyn

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       pako-1.0.11.tgz\pako-1.0.11.tar\package\lib\zlib\zstream.js

       (C) 1995-2013 Jean-loup Gailly and Mark Adler
       (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin

       This software is provided 'as-is', without any express or implied
       warranty. In no event will the authors be held liable for any damages
       arising from the use of this software.

       Permission is granted to anyone to use this software for any purpose,
       including commercial applications, and to alter it and redistribute it
       freely, subject to the following restrictions:

       1. The origin of this software must not be misrepresented; you must not
       claim that you wrote the original software. If you use this software
       in a product, an acknowledgment in the product documentation would be
       appreciated but is not required.
       2. Altered source versions must be plainly marked as such, and must not be
       misrepresented as being the original software.
       3. This notice may not be removed or altered from any source distribution.


   >>> @babel/plugin-syntax-object-rest-spread-7.8.3

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/plugin-syntax-json-strings-7.8.3

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/plugin-syntax-dynamic-import-7.8.3

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/plugin-syntax-optional-catch-binding-7.8.3

       License : MIT


   >>> @babel/plugin-syntax-nullish-coalescing-operator-7.8.3

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/plugin-syntax-optional-chaining-7.8.3

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> figures-3.2.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> emojis-list-3.0.0

       The MIT License (MIT)

       Copyright © 2015 Kiko Beats

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> rimraf-3.0.2

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> @types/parse-json-4.0.0

       MIT License

           Copyright (c) Microsoft Corporation. All rights reserved.

           Permission is hereby granted, free of charge, to any person obtaining a copy
           of this software and associated documentation files (the "Software"), to deal
           in the Software without restriction, including without limitation the rights
           to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
           copies of the Software, and to permit persons to whom the Software is
           furnished to do so, subject to the following conditions:

           The above copyright notice and this permission notice shall be included in all
           copies or substantial portions of the Software.

           THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
           IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
           FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
           AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
           LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
           OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
           SOFTWARE


   >>> yallist-4.0.0

       License: MIT


   >>> handle-thing-v2.0.1



   >>> process-nextick-args-v2.0.1

       # Copyright (c) 2015 Calvin Metcalf

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       **THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.**


   >>> indent-string-v4.0.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> locate-path-v5.0.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> find-up-v4.1.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> fs-minipass-v2.1.0



   >>> has-flag-4.0.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> async-limiter-v1.0.1

       The MIT License (MIT)
       [Copyright] ([c]) [2017] [Samuel] [Reed] <[samuel].[trace].[reed]@[gmail].[com]>

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       async-limiter-1.0.1/LICENSE

       Copyright (c) 2017 Samuel Reed <samuel.trace.reed@gmail.com>


   >>> restore-cursor-v3.1.0

       The MIT License (MIT)

       Copyright (c) 2016 Zeit, Inc.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> estraverse-v4.3.0



   >>> cssesc-3.0.0

       Copyright Mathias Bynens <https://mathiasbynens.be/>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> cli-cursor-v3.1.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> tree-kill-v1.2.2



   >>> emoji-regex-v8.0.0

       Copyright Mathias Bynens <https://mathiasbynens.be/>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> is-interactive-1.0.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> minipass-collect-1.0.2

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> jsesc-v2.5.2



   >>> minipass-flush-1.0.5

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> iconv-lite-v0.4.24



   >>> tough-cookie-v2.5.0



   >>> inherits-v2.0.4

       License : MIT


   >>> range-parser-v1.2.1

       (The MIT License)

       Copyright (c) 2012-2014 TJ Holowaychuk <tj@vision-media.ca>
       Copyright (c) 2015-2016 Douglas Christopher Wilson <doug@somethingdoug.com

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> spdy-4.0.2

       This software is licensed under the MIT License.

       Copyright Fedor Indutny, 2015.

       Permission is hereby granted, free of charge, to any person obtaining a
       copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to permit
       persons to whom the Software is furnished to do so, subject to the
       following conditions:

       The above copyright notice and this permission notice shall be included
       in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
       OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
       NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
       DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
       OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
       USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> p-limit-2.3.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> is-binary-path-v2.1.0

       MIT License

       Copyright (c) 2019 Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com), Paul Miller (https://paulmillr.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> run-async-2.4.1

       The MIT License (MIT)

       Copyright (c) 2014 Simon Boudrias

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> spdx-expression-parse-3.0.1

       The MIT License

       Copyright (c) 2015 Kyle E. Mitchell & other authors listed in AUTHORS

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be included
       in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> http-proxy-1.18.1

       node-http-proxy

         Copyright (c) 2010-2016 Charlie Robbins, Jarrett Cruger & the Contributors.

         Permission is hereby granted, free of charge, to any person obtaining
         a copy of this software and associated documentation files (the
         "Software"), to deal in the Software without restriction, including
         without limitation the rights to use, copy, modify, merge, publish,
         distribute, sublicense, and/or sell copies of the Software, and to
         permit persons to whom the Software is furnished to do so, subject to
         the following conditions:

         The above copyright notice and this permission notice shall be
         included in all copies or substantial portions of the Software.

         THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> which-2.0.2

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.



   >>> merge2-1.4.1

       The MIT License (MIT)

       Copyright (c) 2014-2020 Teambition

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> mkdirp-1.0.4

       Copyright James Halliday (mail@substack.net) and Isaac Z. Schlueter (i@izs.me)

       This project is free software released under the MIT license:

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright James Halliday (mail@substack.net) and Isaac Z. Schlueter (i@izs.me)


   >>> shebang-regex-3.0.0

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> shebang-command-2.0.0

       MIT License

       Copyright ([c]) [Kevin] [Mårtensson] <[kevinmartensson]@[gmail].[com]> ([github].[com]/[kevva])

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/license

       Copyright (c) Kevin Martensson <kevinmartensson@gmail.com>


   >>> path-key-3.1.1

       MIT License

       Copyright ([c]) [Sindre] [Sorhus] <[sindresorhus]@[gmail].[com]> ([sindresorhus].[com])

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)


   >>> paho-mqtt-1.1.0

       [PLEASE NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS COMPONENT UNDER THE TERMS OF THE MIT LICENSE.THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE]

       Copyright (c) 2013 IBM Corp.

       All rights reserved. This program and the accompanying materials
       are made available under the terms of the Eclipse Public License v1.0
       and Eclipse Distribution License v1.0 which accompany this distribution.

       The Eclipse Public License is available at
       http://www.eclipse.org/legal/epl-v10.html
       and the Eclipse Distribution License is available at
       http://www.eclipse.org/org/documents/edl-v10.php.

       Contributors:
       Andrew Banks - initial API and implementation and initial documentation

       ADDITIONAL LICENSE INFORMATION

       > EPL1.0

       package/paho-mqtt.js

       Copyright (c) 2013 IBM Corp.
        *
        * All rights reserved. This program and the accompanying materials
        * are made available under the terms of the Eclipse Public License v1.0
        * and Eclipse Distribution License v1.0 which accompany this distribution.


       package/paho-mqtt-min.js

       Copyright (c) 2013, 2016 IBM Corp.
        *
        * All rights reserved. This program and the accompanying materials
        * are made available under the terms of the Eclipse Public License v1.0
        * and Eclipse Distribution License v1.0 which accompany this distribution.



   >>> is-wsl-2.2.0

       MIT License

       Copyright ([c]) [Sindre] [Sorhus] <[sindresorhus]@[gmail].[com]> ([sindresorhus].[com])

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)


   >>> make-dir-3.1.0

       MIT License

       Copyright ([c]) [Sindre] [Sorhus] <[sindresorhus]@[gmail].[com]> ([sindresorhus].[com])

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)


   >>> chownr-2.0.0

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> p-map-4.0.0

       License
       MIT


   >>> neo-async-2.6.2

       License MIT


   >>> lru-cache-6.0.0

       The ISC License

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> test-exclude-6.0.0

       Found in: package/LICENSE.txt

       Copyright (c) 2016, Contributors

       Permission to use, copy, modify, and/or distribute this software
       for any purpose with or without fee is hereby granted, provided
       that the above copyright notice and this permission notice
       appear in all copies.





   >>> @istanbuljs/load-nyc-config-1.1.0

       License: MIT

       ADDITIONAL LICENSE INFORMATION

       > ISC License

       package/LICENSE

       Copyright (c) 2019


   >>> get-package-type-0.1.0

       License: MIT


   >>> strip-final-newline-2.0.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       strip-final-newline-2.0.0/readme.md

       (c) Sindre Sorhus (https://sindresorhus.com)


   >>> ajv-keywords-3.5.2

       Found in: package/LICENSE

       Copyright (c) 2016 Evgeny Poberezkin

       The MIT License (MIT)

       [Copyright] ([c]) [2016] [Evgeny] [Poberezkin]

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> har-validator-5.1.5

       Found in: node-har-validator-master/LICENSE

       Copyright (c) 2018 Ahmad Nassri <ahmad@ahmadnassri.com>

       MIT License

       Copyright ([c]) [2018] [Ahmad] [Nassri] <[ahmad]@[ahmadnassri].[com]>

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> npm-run-path-4.0.1

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> eventemitter3-4.0.7

       The MIT License (MIT)

       Copyright (c) 2014 Arnout Kazemier

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> cli-width-3.0.0

       Copyright (c) 2015, Ilya Radchenko <ilya@burstcreations.com>

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
       OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > ISC License

       cli-width-master/LICENSE

       Copyright (c) 2015, Ilya Radchenko <ilya@burstcreations.com>


   >>> cross-spawn-7.0.3

       Found in: node-cross-spawn-master/LICENSE

       Copyright (c) 2018 Made With MOXY Lda

       The MIT License (MIT)

       [Copyright] ([c]) [2018] [Made] [With] [MOXY] [Lda] <[hello]@[moxy].[studio]>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> aggregate-error-3.1.0

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       MIT License

       Copyright ([c]) [Sindre] [Sorhus] <[sindresorhus]@[gmail].[com]> ([sindresorhus].[com])

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> next-tick-1.1.0



   >>> minipass-pipeline-1.2.4

       License: MIT

       ADDITIONAL LICENSE INFORMATION

       > ISC License

       package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors


   >>> json-parse-even-better-errors-2.3.1

       Found in: package/LICENSE.md

       Copyright npm, Inc.

       Permission is hereby granted, free of charge, to any person obtaining a
       copy of this software and associated documentation files (the "Software"),
       to deal in the Software without restriction, including without limitation
       the rights to use, copy, modify, merge, publish, distribute, sublicense,
       and/or sell copies of the Software, and to permit persons to whom the
       Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       DEALINGS IN THE SOFTWARE.


   >>> eastasianwidth-0.2.0

       License : MIT


   >>> parse5-6.0.1

       Found in: package/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> ajv-6.12.6

       Found in: ajv-master/LICENSE

       Copyright (c) 2015-2017 Evgeny Poberezkin

       The MIT License (MIT)

       [Copyright] ([c]) [2015]-[2017] [Evgeny] [Poberezkin]

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> tslib-1.14.1

       Found in: package/tslib.js

       Copyright (c) Microsoft Corporation.

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
       REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
       AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
       INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
       LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
       OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
       PERFORMANCE OF THIS SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > 0BSD

       package/CopyrightNotice.txt

       Copyright (c) Microsoft Corporation.

       package/LICENSE.txt

       Copyright (c) Microsoft Corporation.

       package/tslib.d.ts

       Copyright (c) Microsoft Corporation.

       package/tslib.es6.js

       Copyright (c) Microsoft Corporation.


   >>> escalade-3.1.1

       Found in: package/license

       Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)

       MIT License

       Copyright ([c]) [Luke] [Edwards] <[luke].[edwards05]@[gmail].[com]> ([lukeed].[com])

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/readme.md

       (c) Luke Edwards (https://lukeed.com)


   >>> regex-parser-2.2.11



   >>> agent-base-6.0.2

       Found in: package/README.md

       Copyright (c) 2013 Nathan Rajlich <nathan@tootallnate.net>

       MIT License)

       [Copyright] ([c]) [2013] [Nathan] [Rajlich] &[lt];[nathan]@[tootallnate].[net]&[gt];

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> regenerate-1.4.2

       Found in: regenerate-1.4.2/LICENSE-MIT.txt

       Copyright Mathias Bynens <https://mathiasbynens.be/>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> base64-js-1.5.1

       Found in: base64-js-master/LICENSE

       Copyright (c) 2014 Jameson Little

       The MIT License (MIT)

       [Copyright] ([c]) [2014] [Jameson] [Little]

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> setprototypeof-1.2.0

       Found in: package/LICENSE

       Copyright (c) 2015, Wes Todd

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.





   >>> debug-3.2.7

       (The MIT License)

       Copyright (c) 2014 TJ Holowaychuk <tj@vision-media.ca>

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software 
       and associated documentation files (the 'Software'), to deal in the Software without restriction, 
       including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 
       and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
       subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial 
       portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 
       LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
       WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> gensync-1.0.0-beta.2

       Found in: package/LICENSE

       Copyright 2018 Logan Smyth <loganfsmyth@gmail.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/plugin-syntax-async-generators-7.8.4

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> uuid-8.3.2

       Found in: package/dist/md5-browser.js

       Copyright 2011, Sebastian Tschan https://blueimp.net

       Licensed under the MIT license:

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/dist/esm-browser/md5.js

       Copyright 2011, Sebastian Tschan https://blueimp.net


   >>> errno-0.1.8

       Found in: package/README.md

       Copyright (c) 2012-2015

       Made available under the MIT licence:

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal





   >>> ms-2.1.3

       The MIT License (MIT)

       Copyright (c) 2020 Vercel, Inc.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> js-yaml-3.14.1

       Found in: package/LICENSE

       Copyright (c) 2011-2015 by Vitaly Puzrin

       The MIT License)

       Copyright ([C]) [2011]-[2015] [by] [Vitaly] [Puzrin]

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> @ngrx/effects-10.1.2



   >>> @ngrx/store-10.1.2

       Found in: platform-10.1.2/LICENSE

       Copyright (c) 2017 Brandon Roberts, Mike Ryan, Victor Savkin, Rob Wormald

       The MIT License (MIT)

       [Copyright] ([c]) [2017] [Brandon] [Roberts], [Mike] [Ryan], [Victor] [Savkin], [Rob] [Wormald]

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       platform-10.1.2/projects/ngrx.io/src/assets/js/prettify.js

       Copyright (c) 2006 Google Inc.

       > MIT

       platform-10.1.2/modules/component/schematics-core/utility/ast-utils.ts

       Copyright Google Inc.

       platform-10.1.2/modules/component/schematics-core/utility/change.ts

       Copyright Google Inc.

       platform-10.1.2/modules/component/schematics-core/utility/find-module.ts

       Copyright Google Inc.

       platform-10.1.2/modules/component/schematics-core/utility/strings.ts

       Copyright Google Inc.

       platform-10.1.2/modules/component-store/schematics-core/utility/ast-utils.ts

       Copyright Google Inc.

       platform-10.1.2/modules/component-store/schematics-core/utility/change.ts

       Copyright Google Inc.

       platform-10.1.2/modules/component-store/schematics-core/utility/find-module.ts

       Copyright Google Inc.

       platform-10.1.2/modules/component-store/schematics-core/utility/strings.ts

       Copyright Google Inc.

       platform-10.1.2/modules/data/schematics-core/utility/ast-utils.ts

       Copyright Google Inc.

       platform-10.1.2/modules/data/schematics-core/utility/change.ts

       Copyright Google Inc.

       platform-10.1.2/modules/data/schematics-core/utility/find-module.ts

       Copyright Google Inc.

       platform-10.1.2/modules/data/schematics-core/utility/strings.ts

       Copyright Google Inc.

       platform-10.1.2/modules/effects/schematics-core/utility/ast-utils.ts

       Copyright Google Inc.

       platform-10.1.2/modules/effects/schematics-core/utility/change.ts

       Copyright Google Inc.

       platform-10.1.2/modules/effects/schematics-core/utility/find-module.ts

       Copyright Google Inc.

       platform-10.1.2/modules/effects/schematics-core/utility/strings.ts

       Copyright Google Inc.

       platform-10.1.2/modules/entity/schematics-core/utility/ast-utils.ts

       Copyright Google Inc.

       platform-10.1.2/modules/entity/schematics-core/utility/change.ts

       Copyright Google Inc.

       platform-10.1.2/modules/entity/schematics-core/utility/find-module.ts

       Copyright Google Inc.

       platform-10.1.2/modules/entity/schematics-core/utility/strings.ts

       Copyright Google Inc.

       platform-10.1.2/modules/router-store/schematics-core/utility/ast-utils.ts

       Copyright Google Inc.

       platform-10.1.2/modules/router-store/schematics-core/utility/change.ts

       Copyright Google Inc.

       platform-10.1.2/modules/router-store/schematics-core/utility/find-module.ts

       Copyright Google Inc.

       platform-10.1.2/modules/router-store/schematics-core/utility/strings.ts

       Copyright Google Inc.

       platform-10.1.2/modules/schematics-core/utility/ast-utils.ts

       Copyright Google Inc.

       platform-10.1.2/modules/schematics-core/utility/change.ts

       Copyright Google Inc.

       platform-10.1.2/modules/schematics-core/utility/find-module.ts

       Copyright Google Inc.

       platform-10.1.2/modules/schematics-core/utility/strings.ts

       Copyright Google Inc.

       platform-10.1.2/modules/schematics/schematics-core/utility/ast-utils.ts

       Copyright Google Inc.

       platform-10.1.2/modules/schematics/schematics-core/utility/change.ts

       Copyright Google Inc.

       platform-10.1.2/modules/schematics/schematics-core/utility/find-module.ts

       Copyright Google Inc.

       platform-10.1.2/modules/schematics/schematics-core/utility/strings.ts

       Copyright Google Inc.

       platform-10.1.2/modules/store-devtools/schematics-core/utility/ast-utils.ts

       Copyright Google Inc.

       platform-10.1.2/modules/store-devtools/schematics-core/utility/change.ts

       Copyright Google Inc.

       platform-10.1.2/modules/store-devtools/schematics-core/utility/find-module.ts

       Copyright Google Inc.

       platform-10.1.2/modules/store-devtools/schematics-core/utility/strings.ts

       Copyright Google Inc.

       platform-10.1.2/modules/store/schematics-core/utility/ast-utils.ts

       Copyright Google Inc.

       platform-10.1.2/modules/store/schematics-core/utility/change.ts

       Copyright Google Inc.

       platform-10.1.2/modules/store/schematics-core/utility/find-module.ts

       Copyright Google Inc.

       platform-10.1.2/modules/store/schematics-core/utility/strings.ts

       Copyright Google Inc.

       platform-10.1.2/projects/ngrx.io/content/license.md

       Copyright (c) 2015-2018 NgRx.

       platform-10.1.2/projects/ngrx.io/src/app/search/search.service.ts

       Copyright 2016 Google Inc.

       platform-10.1.2/projects/ngrx.io/src/app/shared/web-worker.ts

       Copyright 2016 Google Inc.

       platform-10.1.2/projects/ngrx.io/tools/examples/shared/boilerplate/systemjs/src/systemjs.config.web.build.js

       Copyright 2016 Google Inc.

       platform-10.1.2/projects/ngrx.io/tools/examples/shared/boilerplate/systemjs/src/systemjs.config.web.js

       Copyright 2016 Google Inc.

       platform-10.1.2/projects/ngrx.io/tools/transforms/angular-api-package/index.js

       Copyright Google Inc.

       platform-10.1.2/projects/ngrx.io/tools/transforms/angular-api-package/mocks/importedSrc.ts

       Copyright Google Inc.

       platform-10.1.2/projects/ngrx.io/tools/transforms/angular-api-package/mocks/testSrc.ts

       Copyright Google Inc.

       platform-10.1.2/projects/ngrx.io/tools/transforms/angular-base-package/index.js

       Copyright Google Inc.

       platform-10.1.2/projects/ngrx.io/tools/transforms/angular-content-package/index.js

       Copyright Google Inc.

       platform-10.1.2/projects/ngrx.io/tools/transforms/angular.io-package/index.js

       Copyright Google Inc.

       platform-10.1.2/projects/ngrx.io/tools/transforms/authors-package/api-package.js

       Copyright Google Inc.

       platform-10.1.2/projects/ngrx.io/tools/transforms/authors-package/guide-package.js

       Copyright Google Inc.

       platform-10.1.2/projects/ngrx.io/tools/transforms/authors-package/index.js

       Copyright Google Inc.

       platform-10.1.2/projects/ngrx.io/tools/transforms/authors-package/marketing-package.js

       Copyright Google Inc.

       platform-10.1.2/projects/ngrx.io/tools/transforms/authors-package/tutorial-package.js

       Copyright Google Inc.

       platform-10.1.2/projects/ngrx.io/tools/transforms/helpers/test-package.js

       Copyright Google Inc.

       platform-10.1.2/projects/ngrx.io/tools/transforms/remark-package/services/renderMarkdown.js

       (c) 2007 Steven Levithan


   >>> encoding-v0.1.13

         "repository": "git://github.com/andris9/encoding.git",
         "author": "Andris Reinman",
         "license": "MIT",
         "dependencies":{
           "iconv-lite": "*"


   >>> es6-symbol-v3.1.3

       ISC License

       Copyright (c) 2013-2019, Mariusz Nowak, @medikoo, medikoo.com

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
       REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
       AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
       INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
       LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
       OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
       PERFORMANCE OF THIS SOFTWARE.


   >>> esrecurse-v4.3.0

       > BSD-2

       package/esrecurse.js

       Copyright (C) 2014 Yusuke Suzuki <utatane.tea@gmail.com>

         Redistribution and use in source and binary forms, with or without
         modification, are permitted provided that the following conditions are met:

           * Redistributions of source code must retain the above copyright
             notice, this list of conditions and the following disclaimer.
           * Redistributions in binary form must reproduce the above copyright
             notice, this list of conditions and the following disclaimer in the
             documentation and/or other materials provided with the distribution.



       package/gulpfile.babel.js

       Copyright (C) 2014 Yusuke Suzuki <utatane.tea@gmail.com>
       //
       // Redistribution and use in source and binary forms, with or without
       // modification, are permitted provided that the following conditions are met:
       //
       //   * Redistributions of source code must retain the above copyright
       //     notice, this list of conditions and the following disclaimer.
       //   * Redistributions in binary form must reproduce the above copyright
       //     notice, this list of conditions and the following disclaimer in the
       //     documentation and/or other materials provided with the distribution.
       //


       package/README.md

       Copyright (C) 2014
        (twitter: [@Constellation](https://twitter.com/Constellation)) and other contributors.

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:

         * Redistributions of source code must retain the above copyright
           notice, this list of conditions and the following disclaimer.

         * Redistributions in binary form must reproduce the above copyright
           notice, this list of conditions and the following disclaimer in the
           documentation and/or other materials provided with the distribution.




   >>> ansi-styles-v4.3.0

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> minizlib-v2.1.2

       Found in: package/LICENSE

       Copyright Joyent, Inc. and other Node contributors. All rights reserved.

       Permission is hereby granted, free of charge, to any person obtaining a
       copy of this software and associated documentation files (the "Software"),
       to deal in the Software without restriction, including without limitation
       the rights to use, copy, modify, merge, publish, distribute, sublicense,
       and/or sell copies of the Software, and to permit persons to whom the
       Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> eslint-scope-v5.1.1

       Found in: package/LICENSE

       Copyright (C) 2012-2013 Yusuke Suzuki (twitter: @Constellation) and other contributors.

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:

         * Redistributions of source code must retain the above copyright
           notice, this list of conditions and the following disclaimer.
         * Redistributions in binary form must reproduce the above copyright
           notice, this list of conditions and the following disclaimer in the
           documentation and/or other materials provided with the distribution.





       ADDITIONAL LICENSE INFORMATION

       > BSD-2

       package/lib/definition.js

       Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>

         Redistribution and use in source and binary forms, with or without
         modification, are permitted provided that the following conditions are met:

           * Redistributions of source code must retain the above copyright
             notice, this list of conditions and the following disclaimer.
           * Redistributions in binary form must reproduce the above copyright
             notice, this list of conditions and the following disclaimer in the
             documentation and/or other materials provided with the distribution.



       package/lib/index.js

       Copyright (C) 2014 Thiago de Arruda <tpadilha84@gmail.com>

         Redistribution and use in source and binary forms, with or without
         modification, are permitted provided that the following conditions are met:

           * Redistributions of source code must retain the above copyright
             notice, this list of conditions and the following disclaimer.
           * Redistributions in binary form must reproduce the above copyright
             notice, this list of conditions and the following disclaimer in the
             documentation and/or other materials provided with the distribution.



       package/lib/pattern-visitor.js

       Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>

         Redistribution and use in source and binary forms, with or without
         modification, are permitted provided that the following conditions are met:

           * Redistributions of source code must retain the above copyright
             notice, this list of conditions and the following disclaimer.
           * Redistributions in binary form must reproduce the above copyright
             notice, this list of conditions and the following disclaimer in the
             documentation and/or other materials provided with the distribution.



       package/lib/reference.js

       Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>

         Redistribution and use in source and binary forms, with or without
         modification, are permitted provided that the following conditions are met:

           * Redistributions of source code must retain the above copyright
             notice, this list of conditions and the following disclaimer.
           * Redistributions in binary form must reproduce the above copyright
             notice, this list of conditions and the following disclaimer in the
             documentation and/or other materials provided with the distribution.



       package/lib/referencer.js

       Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>

         Redistribution and use in source and binary forms, with or without
         modification, are permitted provided that the following conditions are met:

           * Redistributions of source code must retain the above copyright
             notice, this list of conditions and the following disclaimer.
           * Redistributions in binary form must reproduce the above copyright
             notice, this list of conditions and the following disclaimer in the
             documentation and/or other materials provided with the distribution.



       package/lib/scope-manager.js

       Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>

         Redistribution and use in source and binary forms, with or without
         modification, are permitted provided that the following conditions are met:

           * Redistributions of source code must retain the above copyright
             notice, this list of conditions and the following disclaimer.
           * Redistributions in binary form must reproduce the above copyright
             notice, this list of conditions and the following disclaimer in the
             documentation and/or other materials provided with the distribution.




   >>> @babel/plugin-syntax-export-namespace-from-7.8.3

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> safe-buffer-v5.2.1

       Found in: package/LICENSE

       Copyright (c) Feross Aboukhadijeh

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> @babel/plugin-syntax-numeric-separator-7.10.4

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT License

       Copyright ([c]) [2014]-[present] [Sebastian] [McKenzie] [and] [other] [contributors]

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> fast-deep-equal-v3.1.3

       Found in: package/LICENSE

       Copyright (c) 2017 Evgeny Poberezkin

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> @babel/plugin-syntax-logical-assignment-operators-7.10.4

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT License

       Copyright ([c]) [2014]-[present] [Sebastian] [McKenzie] [and] [other] [contributors]

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> parse5-htmlparser2-tree-adapter-6.0.1



   >>> import-fresh-3.3.0



   >>> uri-js-4.4.1

       > BSD-2-Clause-FreeBSD License

       package/dist/es5/uri.all.js

       Copyright 2011 Gary Court.

       package/dist/es5/uri.all.js.map

       Copyright 2011 Gary Court.

       package/dist/es5/uri.all.min.js.map

       Copyright 2011 Gary Court.

       package/dist/esnext/uri.js

       Copyright 2011 Gary Court.

       package/LICENSE

       Copyright 2011 Gary Court.


   >>> call-bind-1.0.2



   >>> @istanbuljs/schema-0.1.3

       Found in: package/LICENSE

       Copyright (c) 2019 CFWare, LLC

       MIT License

       Copyright ([c]) [2019] [CFWare], [LLC]

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> entities-2.2.0

       Found in: package/LICENSE

       Copyright (c) Felix Bohm

       Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

       Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

       Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

       THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
       EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> lodash-4.17.21

       Found in: package/LICENSE

       copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>

       below:

       ====

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> json-schema-traverse-1.0.0

       Found in: package/LICENSE

       Copyright (c) 2017 Evgeny Poberezkin

       MIT License

       Copyright ([c]) [2017] [Evgeny] [Poberezkin]

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> @vcd/bindings-9.1.1



   >>> @types/mime-1.3.2

       Found in: mime v1.3/LICENSE

       Copyright (c) Microsoft Corporation

           MIT License


   >>> events-3.3.0

       Found in: package/LICENSE

       Copyright Joyent, Inc. and other Node contributors

       Permission is hereby granted, free of charge, to any person obtaining a
       copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to permit
       persons to whom the Software is furnished to do so, subject to the
       following conditions:

       The above copyright notice and this permission notice shall be included
       in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
       OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
       NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
       DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
       OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
       USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/events.js

       Copyright Joyent, Inc. and other Node contributors

       package/tests/add-listeners.js

       Copyright Joyent, Inc. and other Node contributors

       package/tests/check-listener-leaks.js

       Copyright Joyent, Inc. and other Node contributors

       package/tests/common.js

       Copyright Joyent, Inc. and other Node contributors

       package/tests/listener-count.js

       Copyright Joyent, Inc. and other Node contributors

       package/tests/listeners.js

       Copyright Joyent, Inc. and other Node contributors

       package/tests/listeners-side-effects.js

       Copyright Joyent, Inc. and other Node contributors

       package/tests/max-listeners.js

       Copyright Joyent, Inc. and other Node contributors

       package/tests/method-names.js

       Copyright Joyent, Inc. and other Node contributors

       package/tests/modify-in-emit.js

       Copyright Joyent, Inc. and other Node contributors

       package/tests/num-args.js

       Copyright Joyent, Inc. and other Node contributors

       package/tests/once.js

       Copyright Joyent, Inc. and other Node contributors

       package/tests/remove-all-listeners.js

       Copyright Joyent, Inc. and other Node contributors

       package/tests/remove-listeners.js

       Copyright Joyent, Inc. and other Node contributors

       package/tests/set-max-listeners-side-effects.js

       Copyright Joyent, Inc. and other Node contributors

       package/tests/subclass.js

       Copyright Joyent, Inc. and other Node contributors


   >>> is-what-3.14.1

       Found in: package/LICENSE

       Copyright (c) 2018 Luca Ban

       MIT License


   >>> is-lambda-1.0.1

       Found in: package/LICENSE

       Copyright (c) 2016-2017 Thomas Watson Steen

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> split2-3.2.2

       > MIT

       split2-3.2.2/LICENSE

       Copyright (c) 2014-2018, Matteo Collina <hello@matteocollina.com>

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.



   >>> minipass-sized-1.0.3

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.





   >>> minipass-json-stream-1.0.1

       Found in: package/LICENSE

       Copyright (c) 2011 Dominic Tarr

       redistributed according to the terms of the MIT license above.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors


   >>> fsevents-2.3.2

       Found in: package/LICENSE

       Copyright (c) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/fsevents.js

       (c) 2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller

       package/README.md

       Copyright (c) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller


   >>> is-unicode-supported-0.1.0

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       MIT License


   >>> log-symbols-4.1.0

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> @babel/plugin-syntax-class-properties-7.12.13

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT License


   >>> glob-parent-5.1.2

       The ISC License

       Copyright (c) 2015, 2019 Elan Shanker

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
       IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > ISC License

       package/LICENSE

       Copyright (c) 2015, 2019 Elan Shanker


   >>> bl-4.1.0

       > MIT

       package/LICENSE.md

       Copyright (c) 2013-2019 bl contributors
       ----------------------------------


       package/README.md

       copyright

       Copyright (c) 2013-2019 bl contributors (listed above).




   >>> env-paths-2.2.1

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> side-channel-1.0.4

       Found in: package/LICENSE

       Copyright (c) 2019 Jordan Harband

       MIT License


   >>> binary-extensions-v2.2.0



   >>> y18n-5.0.8

       Found in: package/LICENSE

       Copyright (c) 2015, Contributors

       Permission to use, copy, modify, and/or distribute this software for any purpose
       with or without fee is hereby granted, provided that the above copyright notice
       and this permission notice appear in all copies.





   >>> pretty-bytes-5.6.0

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       MIT License


   >>> yaml-1.10.2

       > ISC License

       package/LICENSE

       Copyright 2018 Eemeli Aro <eemeli@gmail.com>


   >>> postcss-modules-scope-3.0.0

       > ISC License

       package/LICENSE

       Copyright (c) 2015, Glen Maddern


   >>> type-fest-0.21.3

       > MIT

       package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https:/sindresorhus.com)


   >>> postcss-modules-extract-imports-3.0.0

       > ISC License

       package/LICENSE

       Copyright 2015 Glen Maddern


   >>> Buffer-v5.7.1

       > MIT

       package/LICENSE

       Copyright (c) Feross Aboukhadijeh, and other contributors.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> ansi-escapes-4.3.2

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       MIT License


   >>> wrap-ansi-v7.0.0

       > MIT

       package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> parse-json-v5.2.0



   >>> ieee754-v1.2.1

       > BSD-3

       package/LICENSE

       Copyright 2008 Fair Oaks Labs, Inc.

       Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

       1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

       2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

       3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.


       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> queue-microtask-1.2.3

       Found in: package/LICENSE

       Copyright (c) Feross Aboukhadijeh

       The MIT License (MIT)

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/README.md

       Copyright (c) Feross Aboukhadijeh (https://feross.org)


   >>> run-parallel-v1.2.0



   >>> promise-retry-2.0.1

       Found in: package/LICENSE

       Copyright (c) 2014 IndigoUnited

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is furnished
       to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> err-code-2.0.3



   >>> balanced-match-1.0.2

       Found in: package/README.md

       Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>

       ## License

       (MIT)

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE.md

       Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>


   >>> icss-utils-5.1.0

       Found in: package/LICENSE.md

       Copyright 2018 Glen Maddern

       Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.





   >>> postcss-modules-values-4.0.0

       > ISC License

       package/LICENSE

       Copyright (c) 2015, Glen Maddern


   >>> get-stream-6.0.1

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> readdirp-3.6.0

       Found in: package/LICENSE

       Copyright (c) 2012-2019 Thorsten Lorenz, Paul Miller (https://paulmillr.com)

       MIT.LICENSE

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/README.md

       Copyright (c) 2012-2019 Thorsten Lorenz, Paul Miller <https://paulmillr.com>

       See SECTION 79 in 'LICENSE TEXT REFERENCE TABLE'


   >>> chrome-trace-event-1.0.3

       Found in: chrome-trace-event-1.0.3/LICENSE.txt

       Copyright (c) 2015 Joyent Inc.

       # This is the MIT license


   >>> is-docker-2.2.1

       MIT License

       Copyright (c) Sindre Sorhus  (https://sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       is-docker-2.2.1/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'


   >>> detect-node-2.1.0

       Found in: package/LICENSE

       Copyright (c) 2017 Ilya Kantor

       MIT.LICENSE


   >>> iconv-lite-0.6.3

       Found in: iconv-lite-master/LICENSE

       Copyright (c) 2011 Alexander Shtuchkin

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       iconv-lite-master/lib/index.d.ts

       Copyright (c) Microsoft Corporation

       See SECTION 27 in 'LICENSE TEXT REFERENCE TABLE'


   >>> path-parse-1.0.7

       Found in: package/LICENSE

       Copyright (c) 2015 Javier Blanco

       The MIT License (MIT)

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/README.md

       (c) Javier Blanco (http://jbgutierrez.info)

       See SECTION 32 in 'LICENSE TEXT REFERENCE TABLE'


   >>> node-addon-api-3.2.1

       Found in: package/LICENSE.md

       Copyright (c) 2017 Node.js

       The MIT License (MIT)


   >>> execa-5.1.1

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> forwarded-0.2.0

       Found in: package/LICENSE

       Copyright (c) 2014-2017 Douglas Christopher Wilson

       (The MIT License)

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/index.js

       Copyright (c) 2014-2017 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'


   >>> proxy-addr-2.0.7

       Found in: package/LICENSE

       Copyright (c) 2014-2016 Douglas Christopher Wilson

       (The MIT License)

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/index.js

       Copyright (c) 2014-2016 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'


   >>> tslib-2.3.0

       Copyright (c) Microsoft Corporation.

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
       REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
       AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
       INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
       LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
       OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
       PERFORMANCE OF THIS SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > 0BSD

       package/CopyrightNotice.txt

       Copyright (c) Microsoft Corporation

       See SECTION 84 in 'LICENSE TEXT REFERENCE TABLE'

       package/LICENSE.txt

       Copyright (c) Microsoft Corporation

       See SECTION 84 in 'LICENSE TEXT REFERENCE TABLE'

       package/tslib.d.ts

       Copyright (c) Microsoft Corporation

       See SECTION 84 in 'LICENSE TEXT REFERENCE TABLE'

       package/tslib.es6.js

       Copyright (c) Microsoft Corporation

       See SECTION 84 in 'LICENSE TEXT REFERENCE TABLE'

       package/tslib.js

       Copyright (c) Microsoft Corporation

       See SECTION 84 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @babel/plugin-syntax-top-level-await-7.14.5

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/plugin-syntax-class-static-block-7.14.5

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/plugin-syntax-private-property-in-object-7.14.5

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> webpack-merge-5.8.0

       Found in: webpack-merge-master/LICENSE

       Copyright (c) 2015 Juho Vepsalainen

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> emoji-regex-9.2.2

       Found in: package/LICENSE-MIT.txt

       Copyright Mathias Bynens <https://mathiasbynens.be/>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @nodelib/fs.scandir-2.1.5

       License- MIT


   >>> adjust-sourcemap-loader-4.0.0

       License- MIT


   >>> @nodelib/fs.stat-2.0.5

       License: MIT


   >>> @nodelib/fs.walk-1.2.8

       Found in: package/LICENSE

       Copyright (c) Denis Malinochkin

       The MIT License (MIT)


   >>> @types/qs-6.9.7

       This project is licensed under the MIT license.
       Copyrights are respective of each contributor listed at the beginning of each definition file.

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> ora-5.4.1

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       MIT.LICENSE


   >>> modern-normalize-1.1.0

       Found in: modern-normalize-1.1.0/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       modern-normalize-1.1.0/license

       Copyright (c) Nicolas Gallagher

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'


   >>> chalk-4.1.2

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       MIT.LICENSE


   >>> buffer-from-1.1.2

       Found in: package/LICENSE

       Copyright (c) 2016, 2018 Linus Unneback

       MIT.LICENSE


   >>> is-stream-2.0.1

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       MIT.LICENSE


   >>> supports-color-8.1.1

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       MIT.LICENSE


   >>> d-v1.0.1

       > MIT

       package/LICENSE

       Copyright (c) 2013-2019, Mariusz Nowak, @medikoo, medikoo.com

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.



   >>> onetime-v5.1.2

       > MIT

       package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> retry-v0.12.0

       License : MIT


   >>> commander-v2.20.3

       > MIT

       package/LICENSE

       Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> chardet-v0.7.0

       > MIT

       package/LICENSE

       Copyright (C) 2018 Dmitry Shirokov

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> supports-color-v7.2.0

       > MIT

       supports-color-c5edf46896d1fc1826cb1183a60d61eecb65d749/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> ipaddr.js-v1.9.1

       > MIT

       package/LICENSE

       Copyright (C) 2011-2017 whitequark <whitequark@whitequark.org>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> core-util-is-1.0.3

       Found in: package/lib/util.js

       Copyright Joyent, Inc. and other Node contributors

        * Permission is hereby granted, free of charge, to any person obtaining a
        * copy of this software and associated documentation files (the
        * "Software"), to deal in the Software without restriction, including
        * without limitation the rights to use, copy, modify, merge, publish,
        * distribute, sublicense, and/or sell copies of the Software, and to permit
        * persons to whom the Software is furnished to do so, subject to the
        * following conditions:
        *
        * The above copyright notice and this permission notice shall be included
        * in all copies or substantial portions of the Software.
        *
        * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
        * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
        * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
        * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
        * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
        * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
        * USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> find-cache-dir-3.3.2

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       MIT.LICENSE


   >>> ansi-regex-5.0.1

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       MIT.LICENSE


   >>> unicode-canonical-property-names-ecmascript-2.0.0

       Found in: package/LICENSE-MIT.txt

       Copyright Mathias Bynens <https://mathiasbynens.be/>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> unicode-match-property-ecmascript-2.0.0

       Found in: package/LICENSE-MIT.txt

       Copyright Mathias Bynens <https://mathiasbynens.be/>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> tapable-2.2.1

       Found in: package/LICENSE

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> domutils-2.8.0

       Found in: package/LICENSE

       Copyright (c) Felix Bohm

       Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

       Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

       Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

       THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
       EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> strip-ansi-6.0.1

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> string-width-4.2.3

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> is-glob-4.0.3

       Found in: is-glob-master/LICENSE

       Copyright (c) 2014-2017, Jon Schlinkert

       The MIT License (MIT)

       ADDITIONAL LICENSE INFORMATION

       > MIT

       is-glob-master/index.js

       Copyright (c) 2014-2017, Jon Schlinkert

       See SECTION 22 in 'LICENSE TEXT REFERENCE TABLE'

       is-glob-master/README.md

       Copyright (c) 2019, Jon Schlinkert (https://github.com/jonschlinkert)

       See SECTION 37 in 'LICENSE TEXT REFERENCE TABLE'

       is-glob-master/test.js

       Copyright (c) 2014-2015, Jon Schlinkert

       See SECTION 39 in 'LICENSE TEXT REFERENCE TABLE'


   >>> dependency-graph-0.11.0

       Copyright (C) 2013-2020 by Jim Riecken

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.
       Close


   >>> @webassemblyjs/wasm-edit-1.11.1

       MIT License

       Copyright (c) 2018 Sven Sauleau 

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.
       Close


   >>> @webassemblyjs/ast-1.11.1

       Found in: package/LICENSE

       Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>

       MIT.LICENSE


   >>> symbol-observable-4.0.0

       Found in: package/license

       Copyright (c) 2021 Ben Lesh <ben@benlesh.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/license

       Copyright (c) 2021 Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'

       package/README.md

       (c) Sindre Sorhus (https://sindresorhus.com) and Ben Lesh (https://github.com/benlesh)

       See SECTION 30 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @webassemblyjs/helper-wasm-bytecode-1.11.1

       Found in: webassemblyjs-1.11.1/LICENSE

       Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>

       MIT.LICENSE

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright 2012 The Obvious Corporation. http://obvious.com

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/packages/leb128/LICENSE.txt

       Copyright 2012 The Obvious Corporation. http://obvious.com

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright (c) 2017 Mauro Bringolf

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/packages/floating-point-hex-parser/LICENSE

       Copyright (c) 2017 Mauro Bringolf

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/core.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/intl.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/node.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       > Free unknown license detected but not recognized

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright (c) 2008, Fair Oaks Labs, Inc.

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @webassemblyjs/helper-api-error-1.11.1

       Found in: webassemblyjs-1.11.1/LICENSE

       Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>

       MIT.LICENSE

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright 2012 The Obvious Corporation. http://obvious.com

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/packages/leb128/LICENSE.txt

       Copyright 2012 The Obvious Corporation. http://obvious.com

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright (c) 2017 Mauro Bringolf

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/packages/floating-point-hex-parser/LICENSE

       Copyright (c) 2017 Mauro Bringolf

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/core.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/intl.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/node.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       > Free unknown license detected but not recognized

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright (c) 2008, Fair Oaks Labs, Inc.

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @webassemblyjs/wasm-opt-1.11.1

       Found in: webassemblyjs-1.11.1/LICENSE

       Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>

       MIT.LICENSE

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright 2012 The Obvious Corporation. http://obvious.com

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/packages/leb128/LICENSE.txt

       Copyright 2012 The Obvious Corporation. http://obvious.com

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright (c) 2017 Mauro Bringolf

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/packages/floating-point-hex-parser/LICENSE

       Copyright (c) 2017 Mauro Bringolf

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/core.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/intl.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/node.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       > Free unknown license detected but not recognized

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright (c) 2008, Fair Oaks Labs, Inc.

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @webassemblyjs/helper-buffer-1.11.1

       Found in: webassemblyjs-1.11.1/LICENSE

       Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>

       MIT.LICENSE

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright 2012 The Obvious Corporation. http://obvious.com

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/packages/leb128/LICENSE.txt

       Copyright 2012 The Obvious Corporation. http://obvious.com

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright (c) 2017 Mauro Bringolf

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/packages/floating-point-hex-parser/LICENSE

       Copyright (c) 2017 Mauro Bringolf

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/core.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/intl.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/node.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       > Free unknown license detected but not recognized

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright (c) 2008, Fair Oaks Labs, Inc.

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'


   >>> hdr-histogram-percentiles-obj-3.0.0

       Found in: hdr-histogram-percentiles-obj-3.0.0/LICENSE

       Copyright (c) 2016 Glen Keane

       The MIT License (MIT)


   >>> @webassemblyjs/wast-printer-1.11.1

       Found in: webassemblyjs-1.11.1/LICENSE

       Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>

       MIT.LICENSE

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright 2012 The Obvious Corporation. http://obvious.com

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/packages/leb128/LICENSE.txt

       Copyright 2012 The Obvious Corporation. http://obvious.com

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright (c) 2017 Mauro Bringolf

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/packages/floating-point-hex-parser/LICENSE

       Copyright (c) 2017 Mauro Bringolf

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/core.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/intl.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/node.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       > Free unknown license detected but not recognized

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright (c) 2008, Fair Oaks Labs, Inc.

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'


   >>> define-lazy-prop-2.0.0

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> eventemitter-asyncresource-1.0.0

       The MIT License (MIT)

       Copyright (c) 2020 Anna Henningsen

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.
       Close


   >>> @webassemblyjs/wasm-gen-1.11.1

       MIT License

       Copyright (c) 2018 Sven Sauleau 

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.
       Close


   >>> @webassemblyjs/utf8-1.11.1

       MIT License

       Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> @webassemblyjs/helper-wasm-section-1.11.1

       MIT License

       Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> @webassemblyjs/floating-point-hex-parser-1.11.1

       MIT License

       Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> @webassemblyjs/wasm-parser-1.11.1

       MIT License

       Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> @webassemblyjs/helper-numbers-1.11.1

       Found in: webassemblyjs-1.11.1/LICENSE

       Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>

       MIT.LICENSE

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright 2012 The Obvious Corporation. http://obvious.com

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/packages/leb128/LICENSE.txt

       Copyright 2012 The Obvious Corporation. http://obvious.com

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright (c) 2017 Mauro Bringolf

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/packages/floating-point-hex-parser/LICENSE

       Copyright (c) 2017 Mauro Bringolf

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/core.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/intl.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/node.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       > Free unknown license detected but not recognized

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright (c) 2008, Fair Oaks Labs, Inc.

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'


   >>> smart-buffer-4.2.0

       Found in: package/LICENSE

       Copyright (c) 2013-2017 Josh Glazebrook

       The MIT License (MIT)


   >>> @webassemblyjs/leb128-1.11.1

       Found in: webassemblyjs-1.11.1/LICENSE

       Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>

       MIT.LICENSE

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright 2012 The Obvious Corporation. http://obvious.com

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/packages/leb128/LICENSE.txt

       Copyright 2012 The Obvious Corporation. http://obvious.com

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright (c) 2017 Mauro Bringolf

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/packages/floating-point-hex-parser/LICENSE

       Copyright (c) 2017 Mauro Bringolf

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/core.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/intl.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       webassemblyjs-1.11.1/types/lib/node.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       > Free unknown license detected but not recognized

       webassemblyjs-1.11.1/docs/contrib-thirdparty-licenses.md

       Copyright (c) 2008, Fair Oaks Labs, Inc.

       See SECTION 50 in 'LICENSE TEXT REFERENCE TABLE'


   >>> glob-to-regexp-0.4.1

       Found in: glob-to-regexp-0.4.1/README.md

       Copyright (c) 2013, Nick Fitzgerald

       Redistribution and use in source and binary forms, with or without modification,
       are permitted provided that the following conditions are met:

       * Redistributions of source code must retain the above copyright notice, this
         list of conditions and the following disclaimer.

       * Redistributions in binary form must reproduce the above copyright notice, this
         list of conditions and the following disclaimer in the documentation and/or
         other materials provided with the distribution.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
       ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
       WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
       DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
       ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
       (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
       LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
       ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
       (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
       SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> nice-napi-1.0.2

       The MIT License (MIT)

       Copyright (c) 2020 Anna Henningsen

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.



   >>> @webassemblyjs/ieee754-1.11.1

       Found in: package/LICENSE

       Copyright (c) 2018 Sven Sauleau <sven@sauleau.com>

       MIT.LICENSE


   >>> @tootallnate/once-2.0.0

       Found in: package/LICENSE

       Copyright (c) 2020 Nathan Rajlich

       MIT.LICENSE


   >>> http-proxy-agent-5.0.0

       Found in: package/README.md

       Copyright (c) 2013 Nathan Rajlich

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> istanbul-lib-coverage-3.2.0

       Found in: package/LICENSE

       Copyright 2012-2015 Yahoo
       All rights reserved.

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:
           * Redistributions of source code must retain the above copyright
             notice, this list of conditions and the following disclaimer.
           * Redistributions in binary form must reproduce the above copyright
             notice, this list of conditions and the following disclaimer in the
             documentation and/or other materials provided with the distribution.
           * Neither the name of the Yahoo! Inc. nor the
             names of its contributors may be used to endorse or promote products
             derived from this software without specific prior written permission.


       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.




   >>> picocolors-1.0.0

       Found in: package/LICENSE

       Copyright (c) 2021 Alexey Raspopov, Kostiantyn Denysov, Anton Verinov

       ISC License


   >>> wide-align-1.1.5

       Found in: package/LICENSE

       Copyright (c) 2015, Rebecca Turner <me@re-becca.org>

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
       OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> @types/connect-3.4.35

       Found in: connect/LICENSE

       Copyright (c) Microsoft Corporation

           MIT License


   >>> @types/range-parser-1.2.4

       Found in: range-parser/LICENSE

       Copyright (c) Microsoft Corporation

           MIT License


   >>> glob-parent-6.0.2

       Found in: package/LICENSE

       Copyright (c) 2015, 2019 Elan Shanker, 2021 Blaine Bublitz <blaine.bublitz@gmail.com> , Eric Schoffstall <yo@contra.io> and other contributors

       The ISC License


   >>> babel-plugin-istanbul-6.1.1

       Found in: package/LICENSE

       Copyright (c) 2016, Istanbul Code Coverage
       All rights reserved.

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:

       * Redistributions of source code must retain the above copyright notice, this
         list of conditions and the following disclaimer.

       * Redistributions in binary form must reproduce the above copyright notice,
         this list of conditions and the following disclaimer in the documentation
         and/or other materials provided with the distribution.

       * Neither the name of babel-plugin-istanbul nor the names of its
         contributors may be used to endorse or promote products derived from
         this software without specific prior written permission.


       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.




   >>> default-gateway-6.0.3

       Found in: package/LICENSE

       Copyright (c) silverwind
       All rights reserved.

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:

       1. Redistributions of source code must retain the above copyright notice, this
          list of conditions and the following disclaimer.
       2. Redistributions in binary form must reproduce the above copyright notice,
          this list of conditions and the following disclaimer in the documentation
          and/or other materials provided with the distribution.


       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.




   >>> is-plain-obj-3.0.0

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> ajv-formats-2.1.1

       Found in: package/LICENSE

       Copyright (c) 2020 Evgeny Poberezkin

       MIT.LICENSE


   >>> safe-identifier-0.4.2

       Found in: package/LICENSE

       Copyright (c) 2019 by Eemeli Aro <eemeli@gmail.com>

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.





   >>> ansi-regex-6.0.1



   >>> retry-0.13.1

       License- MIT


   >>> statuses-2.0.1

       Found in: package/LICENSE

       Copyright (c) 2016 Douglas Christopher Wilson <doug@somethingdoug.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.


       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




   >>> estraverse-5.3.0

       > BSD-2

       package/estraverse.js

       Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>

         Redistribution and use in source and binary forms, with or without
         modification, are permitted provided that the following conditions are met:

           * Redistributions of source code must retain the above copyright
             notice, this list of conditions and the following disclaimer.
           * Redistributions in binary form must reproduce the above copyright
             notice, this list of conditions and the following disclaimer in the
             documentation and/or other materials provided with the distribution.



       package/gulpfile.js

       Copyright (C) 2014 Yusuke Suzuki <utatane.tea@gmail.com>

         Redistribution and use in source and binary forms, with or without
         modification, are permitted provided that the following conditions are met:

           * Redistributions of source code must retain the above copyright
             notice, this list of conditions and the following disclaimer.
           * Redistributions in binary form must reproduce the above copyright
             notice, this list of conditions and the following disclaimer in the
             documentation and/or other materials provided with the distribution.




   >>> @babel/preset-modules-0.1.5

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors





   >>> asn1-0.2.6

       Found in: package/LICENSE

       Copyright (c) 2011 Mark Cavage

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE


   >>> json-schema-0.4.0

       [PLEASE NOTE: VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS COMPONENT UNDER THE TERMS OF THE BSD-3 LICENSE.] 

       Dojo is available under *either* the terms of the BSD 3-Clause "New" License *or* the
       Academic Free License version 2.1. As a recipient of Dojo, you may choose which
       license to receive this code under (except as noted in per-module LICENSE
       files). Some modules may not be the copyright of the Dojo Foundation. These
       modules contain explicit declarations of copyright in both the LICENSE files in
       the directories in which they reside and in the code itself. No external
       contributions are allowed under licenses which are fundamentally incompatible
       with the AFL-2.1 OR and BSD-3-Clause licenses that Dojo is distributed under.

       The text of the AFL-2.1 and BSD-3-Clause licenses is reproduced below. 

       -------------------------------------------------------------------------------
       BSD 3-Clause "New" License:
       **********************

       Copyright (c) 2005-2015, The Dojo Foundation
       All rights reserved.

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:

         * Redistributions of source code must retain the above copyright notice, this
           list of conditions and the following disclaimer.
         * Redistributions in binary form must reproduce the above copyright notice,
           this list of conditions and the following disclaimer in the documentation
           and/or other materials provided with the distribution.
         * Neither the name of the Dojo Foundation nor the names of its contributors
           may be used to endorse or promote products derived from this software
           without specific prior written permission.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
       ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
       WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
       DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
       FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
       DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
       SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
       CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
       OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
       OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

       -------------------------------------------------------------------------------



   >>> lines-and-columns-1.2.4

       Found in: package/LICENSE

       Copyright (c) 2015 Brian Donovan

       The MIT License (MIT)


   >>> source-map-support-0.5.21

       Found in: package/LICENSE.md

       Copyright (c) 2014 Evan Wallace

       The MIT License (MIT)


   >>> postcss-value-parser-4.2.0

       Found in: package/LICENSE

       Copyright (c) Bogdan Chadkin <trysound@yandex.ru>





   >>> jsprim-1.4.2

       Found in: package/LICENSE

       Copyright (c) 2012, Joyent, Inc. All rights reserved.





   >>> toidentifier-1.0.1

       Found in: package/LICENSE

       Copyright (c) 2016 Douglas Christopher Wilson <doug@somethingdoug.com>

       MIT.LICENSE

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/index.js

       Copyright (c) 2016 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'


   >>> sshpk-1.17.0

       Found in: package/LICENSE

       Copyright Joyent, Inc.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to
       deal in the Software without restriction, including without limitation the
       rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
       sell copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
       IN THE SOFTWARE.


   >>> qs-6.5.3

       Found in: package/LICENSE.md

       Copyright (c) 2014, Nathan LaFreniere and other contributors (https://github.com/ljharb/qs/graphs/contributors)

       BSD 3-Clause License


   >>> chokidar-3.5.3

       Found in: package/LICENSE

       Copyright (c) 2012-2019 Paul Miller (https://paulmillr.com), Elan Shanker

       The MIT License (MIT)

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/README.md

       (c) Paul Miller <https://paulmillr.com>

       See SECTION 87 in 'LICENSE TEXT REFERENCE TABLE'


   >>> supports-preserve-symlinks-flag-1.0.0

       Found in: package/LICENSE

       Copyright (c) 2022 Inspect JS

       MIT.LICENSE


   >>> copy-anything-2.0.6



   >>> hdr-histogram-js-2.0.3



   >>> content-disposition-0.5.4



   >>> sockjs-0.3.24



   >>> negotiator-0.6.3

       Found in: negotiator-0.6.3/LICENSE

       Copyright (c) 2014-2015 Douglas Christopher Wilson

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       negotiator-0.6.3/index.js

       Copyright (c) 2012 Federico Romero

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       negotiator-0.6.3/lib/charset.js

       Copyright (c) 2012 Isaac Z. Schlueter

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       negotiator-0.6.3/lib/encoding.js

       Copyright (c) 2012 Isaac Z. Schlueter

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       negotiator-0.6.3/lib/language.js

       Copyright (c) 2012 Isaac Z. Schlueter

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       negotiator-0.6.3/lib/mediaType.js

       Copyright (c) 2012 Isaac Z. Schlueter

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       negotiator-0.6.3/LICENSE

       Copyright (c) 2012-2014 Federico Romero

       See SECTION 26 in 'LICENSE TEXT REFERENCE TABLE'


   >>> picomatch-2.3.1

       Found in: picomatch-2.3.1/LICENSE

       Copyright (c) 2017-present, Jon Schlinkert

       The MIT License (MIT)

       ADDITIONAL LICENSE INFORMATION

       > MIT

       picomatch-2.3.1/README.md

       Copyright (c) 2017-present, Jon Schlinkert (https://github.com/jonschlinkert)

       See SECTION 37 in 'LICENSE TEXT REFERENCE TABLE'

       picomatch-2.3.1/.verb.md

       Copyright (c) 2017-present, Jon Schlinkert (https://github.com/jonschlinkert)

       See SECTION 37 in 'LICENSE TEXT REFERENCE TABLE'


   >>> source-map-js-1.0.2

       
       Copyright (c) 2009-2011, Mozilla Foundation and contributors
       All rights reserved.

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:

       * Redistributions of source code must retain the above copyright notice, this
         list of conditions and the following disclaimer.

       * Redistributions in binary form must reproduce the above copyright notice,
         this list of conditions and the following disclaimer in the documentation
         and/or other materials provided with the distribution.

       * Neither the names of the Mozilla Foundation nor the names of project
         contributors may be used to endorse or promote products derived from this
         software without specific prior written permission.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
       ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
       WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
       DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
       FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
       DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
       SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
       CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
       OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
       OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


       ADDITIONAL LICENSE INFORMATION

       > BSD-3

       source-map-js-1.0.2/lib/array-set.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/lib/base64.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/lib/base64-vlq.js

       Copyright 2011 The Closure Compiler Authors

       See SECTION 45 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/lib/base64-vlq.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/lib/binary-search.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/lib/mapping-list.js

       Copyright 2014 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/lib/quick-sort.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/lib/source-map-consumer.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/lib/source-map-generator.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/lib/source-node.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/lib/util.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/source-map.js

       Copyright 2009-2011 Mozilla Foundation and contributors

       See SECTION 38 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/test/run-tests.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/test/test-api.js

       Copyright 2012 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/test/test-array-set.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/test/test-base64.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/test/test-base64-vlq.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/test/test-binary-search.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/test/test-dog-fooding.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/test/test-quick-sort.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/test/test-source-map-consumer.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/test/test-source-map-generator.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/test/test-source-node.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/test/test-util.js

       Copyright 2014 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-js-1.0.2/test/util.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       > Unknown License file reference

       source-map-js-1.0.2/bench-js/self-source-map.js

       Copyright 2009-2011 Mozilla Foundation and contributors

       See SECTION 46 in 'LICENSE TEXT REFERENCE TABLE'


   >>> signal-exit-3.0.7

       Found in: signal-exit-3.0.7/LICENSE.txt

       Copyright (c) 2015

       The ISC License


   >>> accepts-1.3.8

       Found in: accepts-1.3.8/LICENSE

       Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       accepts-1.3.8/index.js

       Copyright (c) 2014 Jonathan Ong

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       accepts-1.3.8/LICENSE

       Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>

       See SECTION 26 in 'LICENSE TEXT REFERENCE TABLE'


   >>> jest-worker-27.5.1

       Found in: jest-27.5.1/LICENSE

       Copyright (c) Facebook, Inc. and its affiliates

       MIT License

       Copyright (c) Facebook, Inc. and its affiliates.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       jest-27.5.1/packages/jest-diff/src/cleanupSemantic.ts

       Copyright 2018

       See SECTION 13 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-3

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/sourcemaps/out/throwing-mapped-fn.js.map

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 82 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       jest-27.5.1/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/benchmarks/test-file-overhead/0.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/async-regenerator/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/async-regenerator/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/auto-clear-mocks/with-auto-clear/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/auto-clear-mocks/with-auto-clear/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/auto-clear-mocks/without-auto-clear/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/auto-clear-mocks/without-auto-clear/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/auto-reset-mocks/with-auto-reset/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/auto-reset-mocks/with-auto-reset/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/auto-reset-mocks/without-auto-reset/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/auto-reset-mocks/without-auto-reset/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/auto-restore-mocks/with-auto-restore/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/auto-restore-mocks/with-auto-restore/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/auto-restore-mocks/without-auto-restore/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/auto-restore-mocks/without-auto-restore/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/banana.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/entry.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/mockFile.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/__test_modules__/a.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/__test_modules__/b.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/__test_modules__/c.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/__test_modules__/d.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/__test_modules__/e.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/__test_modules__/f.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/__test_modules__/g.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/__test_modules__/jestBackticks.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/__test_modules__/Mocked.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/__test_modules__/__mocks__/jestBackticks.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/__test_modules__/Unmocked.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/__tests__/importJest.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/__tests__/integrationAutomockOff.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/__tests__/integration.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/__tests__/typescript.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/babel-plugin-jest-hoist/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/bad-source-map/__tests__/badSourceMap.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/before-all-filtered/__tests__/beforeAllFiltered.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/before-all-skipped/__tests__/beforeAllFiltered.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/before-each-queue/__tests__/beforeEachQueue.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/browser-resolver/fake-pkg/main.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/browser-resolver/resolver.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/browser-resolver/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/call-done-twice/__tests__/index.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/chai-assertion-library-errors/__tests__/chai_assertion.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/circus-concurrent/__tests__/concurrent-each.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/circus-concurrent/__tests__/concurrent-only-each.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/circus-declaration-errors/__tests__/asyncDefinition.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/clear-cache/__tests__/clearCache.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/compare-dom-nodes/__tests__/failedAssertion.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/config-override/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/console-after-teardown/__tests__/console.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/console-debugging/jest.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/console-debugging/stdout-spy.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/console-debugging/__tests__/console-debugging.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/console-jsdom/__tests__/console.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/console/__tests__/console.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/console-winston/__tests__/console.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-handlebars/greet.hbs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-handlebars/__tests__/greet.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-handlebars/transform-handlebars.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/cjs-native-without-sourcemap/module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/cjs-native-without-sourcemap/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/cjs-native-without-sourcemap/uncovered.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/cjs-with-babel-transformer/module.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/cjs-with-babel-transformer/__tests__/test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/cjs-with-babel-transformer/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/cjs-with-babel-transformer/uncovered.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/empty-sourcemap/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/empty-sourcemap/__tests__/test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/empty-sourcemap/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/esm-native-without-sourcemap/module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/esm-native-without-sourcemap/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/esm-native-without-sourcemap/uncovered.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/esm-with-custom-transformer/module.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/esm-with-custom-transformer/__tests__/test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/esm-with-custom-transformer/typescriptPreprocessor.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/esm-with-custom-transformer/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/esm-with-custom-transformer/uncovered.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/no-sourcemap/cssTransform.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/no-sourcemap/__tests__/Thing.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-provider-v8/no-sourcemap/Thing.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-remapping/covered.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-remapping/__tests__/coveredTest.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-remapping/typescriptPreprocessor.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-report/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-report/cached-duplicates/a/identical.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-report/cached-duplicates/a/__tests__/identical.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-report/cached-duplicates/b/identical.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-report/cached-duplicates/b/__tests__/identical.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-report/file.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-report/__mocks__/sumDependency.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-report/notRequiredInTestSuite.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-report/otherFile.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-report/setup.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-report/sumDependency.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-report/sum.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-report/__tests__/sum.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-transform-instrumented/covered.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-transform-instrumented/preprocessor.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-transform-instrumented/__tests__/coveredTest.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-without-transform/some-random-file.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/coverage-without-transform/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/create-process-object/setup.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/create-process-object/__tests__/createProcessObject.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-esm-test-sequencer/a.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-esm-test-sequencer/b.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-esm-test-sequencer/c.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-esm-test-sequencer/d.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-esm-test-sequencer/e.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-esm-test-sequencer/testSequencer.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-haste-map/hasteMap.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-haste-map/__tests__/hasteExampleHelper.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-haste-map/__tests__/hasteExample.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-inline-snapshot-matchers/__tests__/asynchronous.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-inline-snapshot-matchers/__tests__/bail.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-jsdom-html/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-jsdom-html/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-matcher-stack-trace/__tests__/asynchronous.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-matcher-stack-trace/__tests__/sync.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-reporters/add.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-reporters/reporters/DefaultExportReporter.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-reporters/reporters/IncompleteReporter.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-reporters/reporters/TestReporter.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-reporters/__tests__/addFail.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-reporters/__tests__/add.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-resolver/bar.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-resolver/foo.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-resolver/manualMock.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-resolver/__mocks__/manualMock.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-resolver/resolver.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-resolver/__tests__/customResolver.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-test-sequencer/a.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-test-sequencer/b.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-test-sequencer/c.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-test-sequencer/d.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-test-sequencer/e.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-test-sequencer/testSequencerAsync.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/custom-test-sequencer/testSequencer.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/declaration-errors/__tests__/describeReturnPromise.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/declaration-errors/__tests__/describeReturnSomething.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/declaration-errors/__tests__/describeThrow.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/detect-open-handles/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/detect-open-handles/server.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/detect-open-handles/__tests__/crypto.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/detect-open-handles/__tests__/histogram.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/detect-open-handles/__tests__/in-done-function.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/detect-open-handles/__tests__/in-done-lifecycle.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/detect-open-handles/__tests__/inside.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/detect-open-handles/__tests__/notify.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/detect-open-handles/__tests__/outside.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/detect-open-handles/__tests__/promise.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/detect-open-handles/__tests__/recently-closed.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/detect-open-handles/__tests__/unref.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/dom-diffing/__tests__/dom.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/done-in-hooks/__tests__/index.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/dynamic-require-dependencies/dynamicRequire.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/dynamic-require-dependencies/source.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/dynamic-require-dependencies/__tests__/dynamicRequire.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/each/__tests__/describeOnly.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/each/__tests__/eachException.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/each/__tests__/eachOnly.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/each/__tests__/eachSkip.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/each/__tests__/failure.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/each/__tests__/pretty.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/each/__tests__/success.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/empty-describe-with-hooks/__tests__/hookInDescribeWithSkippedTest.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/empty-describe-with-hooks/__tests__/hookInEmptyDescribe.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/empty-describe-with-hooks/__tests__/hookInEmptyNestedDescribe.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/empty-describe-with-hooks/__tests__/multipleHooksInEmptyDescribe.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/empty-suite-error/__tests__/emptySuite.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/environment-after-teardown/__tests__/afterTeardown.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/environmentOptions/__tests__/environmentOptions.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/env-test/__tests__/env.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/env-test/__tests__/equivalent.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/error-on-deprecated/__tests__/defaultTimeoutInterval.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/error-on-deprecated/__tests__/fail.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/error-on-deprecated/__tests__/jasmine.addMatchers.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/error-on-deprecated/__tests__/jasmine.any.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/error-on-deprecated/__tests__/jasmine.anything.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/error-on-deprecated/__tests__/jasmine.arrayContaining.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/error-on-deprecated/__tests__/jasmine.createSpy.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/error-on-deprecated/__tests__/jasmine.objectContaining.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/error-on-deprecated/__tests__/jasmine.stringMatching.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/error-on-deprecated/__tests__/pending.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/error-on-deprecated/__tests__/spyOnProperty.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/error-on-deprecated/__tests__/spyOn.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/esm-config/cjs/jest.config.cjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/esm-config/cjs/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/esm-config/js/jest.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/esm-config/js/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/esm-config/mjs/jest.config.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/esm-config/mjs/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/expect-async-matcher/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/expect-async-matcher/matchers.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/expect-async-matcher/__tests__/failure.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/expect-async-matcher/__tests__/success.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/expect-in-vm/__tests__/expect-in-vm.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failureDetails-property/myreporter.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failureDetails-property/__tests__/tests.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failures/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failures/macros.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failures/__tests__/assertionCount.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failures/__tests__/assertionError.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failures/__tests__/asyncFailures.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failures/__tests__/duringTests.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failures/__tests__/errorAfterTestComplete.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failures/__tests__/snapshot.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failures/__tests__/snapshotWithHint.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failures/__tests__/testMacro.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failures/__tests__/throwNumber.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failures/__tests__/throwObject.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failures/__tests__/throwObjectWithStackProp.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/failures/__tests__/throwString.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/fake-promises/asap/fake-promises.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/fake-promises/asap/__tests__/generator.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/fake-promises/immediate/fake-promises.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/fake-promises/immediate/__tests__/generator.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/fake-time/legacy/from-config/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/fake-time/legacy/from-jest-object/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/fake-time/legacy/requestAnimationFrame/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/fake-time/modern/from-config/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/fake-time/modern/from-jest-object/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/fake-time/modern/requestAnimationFrame/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/filter/my-broken-filter.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/filter/my-broken-setup-filter.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/filter/my-clowny-filter.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/filter/my-filter.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/filter/my-secondary-filter.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/filter/my-setup-filter.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/filter/__tests__/bar.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/filter/__tests__/foo.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/focused-tests/__tests__/tests.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/generator-mock/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/generator-mock/__tests__/generatorMock.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup/custom-tests-dir/pass.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup-custom-transform/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup-custom-transform/setup.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup-custom-transform/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup-custom-transform/transformer.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup-esm/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup-esm/setup.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup-esm/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup/invalidSetup.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup/invalidSetupWithNamedExport.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup-node-modules/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup-node-modules/node_modules/example/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup-node-modules/setup.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup-node-modules/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup/project-1/setup.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup/project-1/setup.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup/project-2/setup.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup/project-2/setup.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup/projects.jest.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup/setup.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup/setupWithConfig.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup/setupWithDefaultExport.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup/__tests__/setup1.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup/__tests__/setup2.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-setup/__tests__/setup3.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown/custom-tests-dir/pass.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown-esm/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown-esm/teardown.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown-esm/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown/invalidTeardown.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown/invalidTeardownWithNamedExport.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown/project-1/teardown.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown/project-1/teardown.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown/project-2/teardown.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown/project-2/teardown.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown/projects.jest.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown/teardown.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown/teardownWithConfig.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown/teardownWithDefaultExport.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown/__tests__/teardown1.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown/__tests__/teardown2.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/global-teardown/__tests__/teardown3.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/imported-globals/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/imported-globals/__tests__/env.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/asyncTestFails.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/concurrent-each.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/concurrent-many.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/concurrent-only-each.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/concurrent-parallel-failure.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/concurrent.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/concurrentWithinDescribe.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/generator.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/pendingInPromise.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/promiseAfterAll.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/promiseAfterEach.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/promiseBeforeAll.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/promiseBeforeEach.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/promiseFit.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/promiseIt.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/promiseXit.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/jasmine-async/__tests__/returningValues.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/json-reporter/sum.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/json-reporter/__tests__/sum.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/lifecycles/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/lifecycles/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/list-tests/__tests__/dummy.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/list-tests/__tests__/other.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/location-in-results/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-json/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-json/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-empty-mock-name/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-empty-mock-name-not-called/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-empty-mock-name-not-called/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-empty-mock-name/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-mock-name-call-times-fail/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-mock-name-call-times-fail/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-mock-name-call-times-pass/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-mock-name-call-times-pass/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-mock-name/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-mock-name-not-called-fail/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-mock-name-not-called-fail/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-mock-name-not-called/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-mock-name-not-called-pass/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-mock-name-not-called-pass/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-mock-name-not-called/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/with-mock-name/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/without-mock-name/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/without-mock-name-not-called/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/without-mock-name-not-called/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/mock-names/without-mock-name/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/MockStdinWatchPlugin.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/modern-fake-timers/from-config/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/modern-fake-timers/from-jest-object/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/module-name-mapper-correct-config/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/module-name-mapper-correct-config/__mocks__/styleMock.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/module-name-mapper-correct-config/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/module-name-mapper-correct-mock-absolute-path/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/module-name-mapper-correct-mock-absolute-path/src/components/Button.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/module-name-mapper-correct-mock-absolute-path/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/module-name-mapper-mock/src/storage/track/Track.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/module-name-mapper-mock/__tests__/storage/track/TrackExpected.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/module-name-mapper-mock/__tests__/storage/track/Track.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/module-name-mapper-wrong-array-config/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/module-name-mapper-wrong-array-config/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/module-name-mapper-wrong-config/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/module-name-mapper-wrong-config/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/module-parent-null-in-test/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/multiple-configs/jest.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/multiple-configs/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/multi-project-config-root/bar/__tests__/boggusBar.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/multi-project-config-root/foo/__tests__/boggusFoo.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-async-mock/Native.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-async-mock/__tests__/nativeAsyncMock.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm/anotherDynamicImport.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm/circularDependentA.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm/circularDependentB.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm/commonjs.cjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm/commonjsNamed.cjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm/dynamicImport.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm/fromCjs.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm/fromEsm.cjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm/namedExport.cjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm/namespaceExport.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm/stateful.cjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm/stateful.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm/__tests__/native-esm.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm/__tests__/native-esm-tla.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm-typescript/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm-typescript/double.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/native-esm-typescript/__tests__/double.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/nested-event-loop/__tests__/nestedEventLoop.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/nested-test-definitions/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/nested-test-definitions/__tests__/nestedDescribeInTest.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/nested-test-definitions/__tests__/nestedHookInTest.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/nested-test-definitions/__tests__/nestedTestOutsideDescribe.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/nested-test-definitions/__tests__/nestedTestWithinDescribe.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/node-path/src/path/file.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/node-path/__tests__/nodePath.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/override-globals/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/override-globals/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/override-globals/setup.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/override-globals/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/pnp/lib/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/pnp/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/pnp/__tests__/undeclared-dependency.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/pnp/undeclared-dependency/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/presets/cjs/node_modules/jest-preset-cjs/jest-preset.cjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/presets/cjs/node_modules/jest-preset-cjs/mapper.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/presets/cjs/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/presets/js/node_modules/jest-preset-js/jest-preset.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/presets/js/node_modules/jest-preset-js/mapper.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/presets/json/node_modules/jest-preset-json/mapper.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/presets/json/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/presets/js/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/presets/js-type-module/node_modules/jest-preset-js-type-module/jest-preset.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/presets/js-type-module/node_modules/jest-preset-js-type-module/mapper.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/presets/js-type-module/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/presets/mjs/node_modules/jest-preset-mjs/jest-preset.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/presets/mjs/node_modules/jest-preset-mjs/mapper.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/presets/mjs/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/process-exit/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/process-exit/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/promise-and-callback/__tests__/promise-and-callback.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/regex-(char-in-path/__tests__/regexCharInPath.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-after-teardown/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-after-teardown/__tests__/lateRequire.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main-after-create-require/child.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main-after-create-require/empty.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main-after-create-require/__tests__/parent.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main/example.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main-isolate-modules/child.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main-isolate-modules/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main-isolate-modules/__tests__/index.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main/loader.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main-reset-modules/direct.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main-reset-modules/indirect.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main-reset-modules/__tests__/resetModulesCallDirectly.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main-reset-modules/__tests__/resetModulesCallIndirectly.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main-reset-modules/__tests__/resetModulesFlagDirectly.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main-reset-modules/__tests__/resetModulesFlagIndirectly.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/require-main/__tests__/loader.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/reset-modules/__tests__/resetModules.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-conditions/browser-env.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-conditions/node-env.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-conditions/node_modules/fake-dep/module.cjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-conditions/node_modules/fake-dep/module.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-conditions/node_modules/fake-dual-dep/browser.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-conditions/node_modules/fake-dual-dep/node.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-conditions/__tests__/browser.test.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-conditions/__tests__/node.test.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-conditions/__tests__/resolveCjs.test.cjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-conditions/__tests__/resolveEsm.test.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-get-paths/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-get-paths/__tests__/resolveGetPaths.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve/hasteImpl.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve/__mocks__/Test5.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve/__mocks__/Test6.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-node-module/__mocks__/mock-jsx-module/index.jsx

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-node-module/__mocks__/mock-module-alt/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-node-module/__mocks__/mock-module/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-node-module/__mocks__/mock-module-without-pkg/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-node-module/__tests__/resolve-node-module.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-no-extensions/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-no-extensions/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-no-extensions/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve/requiresUnexistingModule.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve/test1.android.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve/test1.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve/test1.native.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve/test2.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve/test2mapper.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve/test2mapper.native.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve/test2.native.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve/test3.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve/Test5.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve/Test7.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve/__tests__/resolve.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-with-paths/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-with-paths/dir/mod.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/resolve-with-paths/__tests__/resolveWithPaths.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/runJest.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/run-programmatically/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/run-programmatically/cjs.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/run-programmatically/esm.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/run-programmatically/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/run-programmatically-multiple-projects/client/client.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/run-programmatically-multiple-projects/run-jest.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/run-programmatically-multiple-projects/server/server.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/runtime-internal-module-registry/__mocks__/fs.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/runtime-internal-module-registry/__tests__/runtimeInternalModuleRegistry.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/select-projects-missing-name/__tests__/first-project.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/select-projects-missing-name/__tests__/second-project.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/select-projects/__tests__/first-project.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/select-projects/__tests__/second-project.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/set-immediate/__tests__/setImmediate.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/setup-files-after-env-config/setup1.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/setup-files-after-env-config/setup2.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/setup-files-after-env-config/setupHooksIntoRunner.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/setup-files-after-env-config/__tests__/runnerPatch.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/setup-files-after-env-config/__tests__/test1.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/setup-files-after-env-config/__tests__/test2.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/snapshot-escape/__tests__/snapshotEscapeRegex.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/snapshot-escape/__tests__/snapshotEscapeSubstitution.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/snapshot-escape/__tests__/snapshot.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/snapshot-formatting-changes/__tests__/snapshot.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/snapshot-mock-fs/__tests__/snapshot.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/snapshot-resolver/customSnapshotResolver.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/snapshot-resolver/__tests__/snapshot.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/snapshot-serializers/plugins/bar.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/snapshot-serializers/plugins/foo/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/snapshot-serializers/__tests__/snapshot.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/snapshot-serializers/transformer.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/snapshot-serializers/utils.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/snapshot/__tests__/secondSnapshot.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/snapshot/__tests__/snapshot.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/snapshot-unknown/__tests__/works.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/stack-trace-no-capture-stack-trace/__tests__/runtimeError.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/stack-trace-source-maps/preprocessor.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/stack-trace-source-maps/__tests__/fails.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/stack-trace-source-maps-with-coverage/lib.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/stack-trace-source-maps-with-coverage/preprocessor.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/stack-trace-source-maps-with-coverage/__tests__/fails.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/stack-trace/__tests__/runtimeError.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/stack-trace/__tests__/stackTrace.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/stack-trace/__tests__/stackTraceWithoutMessage.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/stack-trace/__tests__/testError.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-environment-async/TestEnvironment.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-environment-async/__tests__/custom.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-environment-circus-async/CircusAsyncHandleTestEventEnvironment.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-environment-circus-async/__tests__/circusHandleTestEvent.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-environment-circus/CircusHandleTestEventEnvironment.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-environment-circus/__tests__/circusHandleTestEvent.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-environment/DocblockPragmasEnvironment.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-environment/EsmDefaultEnvironment.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-environment-esm/EnvESM.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-environment-esm/__tests__/testUsingESMTestEnv.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-environment-run-script/EnvUsingRunScript.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-environment-run-script/__tests__/envUsingRunScript.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-environment/__tests__/docblockPragmas.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-environment/__tests__/env.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-environment/__tests__/esmDefault.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-in-root/foo.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-in-root/footest.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-in-root/spec.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-in-root/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-name-pattern-skipped/__tests__/testNamePatternSkipped.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-name-pattern/__tests__/testNamePattern.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-results-processor/processor.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-results-processor/processor.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-results-processor/__tests__/processor.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-retries/reporters/RetryReporter.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-retries/__tests__/beforeAllFailure.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-retries/__tests__/control.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-retries/__tests__/e2e.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-retries/__tests__/retry.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/asyncAndCallback.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/asyncRegenerator.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/autoClearMocks.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/autoResetMocks.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/autoRestoreMocks.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/babelPluginJestHoist.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/badSourceMap.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/beforeAllFiltered.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/beforeEachQueue.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/browserResolve.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/callDoneTwice.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/chaiAssertionLibrary.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/circularInequality.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/circusConcurrentEach.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/circusDeclarationErrors.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/clearCache.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/cliHandlesExactFilenames.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/compareDomNodes.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/configOverride.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/config.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/consoleAfterTeardown.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/consoleDebugging.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/consoleLogOutputWhenRunInBand.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/console.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/coverageHandlebars.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/coverageProviderV8.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/coverageRemapping.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/coverageReport.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/coverageThreshold.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/coverageTransformInstrumented.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/coverageWithoutTransform.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/crawlSymlinks.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/createProcessObject.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/customEsmTestSequencers.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/customHaste.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/customInlineSnapshotMatchers.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/customMatcherStackTrace.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/customReporters.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/customResolver.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/customTestSequencers.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/debug.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/declarationErrors.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/dependencyClash.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/detectOpenHandles.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/domDiffing.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/doneInHooks.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/dynamicRequireDependencies.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/each.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/emptyDescribeWithHooks.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/emptySuiteError.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/environmentAfterTeardown.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/env.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/errorOnDeprecated.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/esmConfigFile.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/executeTestsOnceInMpr.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/existentRoots.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/expectAsyncMatcher.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/expectInVm.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/extraGlobals.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/failureDetailsProperty.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/failures.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/fakePromises.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/fakeTime.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/fatalWorkerError.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/filter.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/findRelatedFiles.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/focusedTests.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/forceExit.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/generatorMock.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/global-mutation.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/globalSetup.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/globals.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/globalTeardown.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/global.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/hasteMapMockChanged.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/hasteMapSha1.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/hasteMapSize.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/importedGlobals.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/injectGlobals.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/isolateModules.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/iterator-to-null-test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/jasmineAsync.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/jasmineAsyncWithPendingDuringTest.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/jestChangedFiles.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/jest.config.js.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/jest.config.ts.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/jestEnvironmentJsdom.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/jestRequireActual.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/jestRequireMock.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/jsonReporter.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/json.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/lifecycles.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/listTests.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/locationInResults.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/logHeapUsage.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/mockNames.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/modernFakeTimers.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/moduleNameMapper.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/moduleParentNullInTest.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/multipleConfigs.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/multiProjectRunner.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/nativeAsyncMock.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/nativeEsm.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/nativeEsmTypescript.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/nestedEventLoop.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/nestedTestDefinitions.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/nodePath.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/noTestFound.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/noTestsFound.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/onlyChanged.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/onlyFailuresNonWatch.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/overrideGlobals.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/pnp.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/presets.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/processExit.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/promiseReject.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/regexCharInPath.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/requireAfterTeardown.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/requireMainAfterCreateRequire.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/requireMainIsolateModules.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/requireMainResetModules.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/requireMain.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/requireV8Module.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/resetModules.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/resolveConditions.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/resolveGetPaths.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/resolveNodeModule.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/resolveNoFileExtensions.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/resolve.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/resolveWithPaths.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/runProgrammaticallyMultipleProjects.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/runProgrammatically.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/runTestsByPath.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/runtimeInternalModuleRegistry.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/selectProjects.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/setImmediate.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/setupFilesAfterEnvConfig.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/showConfig.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/skipBeforeAfterAll.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/snapshotMockFs.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/snapshotResolver.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/snapshotSerializers.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/snapshot.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/snapshot-unknown.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/stackTraceNoCaptureStackTrace.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/stackTraceSourceMaps.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/stackTraceSourceMapsWithCoverage.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/stackTrace.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/supportsDashedArgs.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/symbol.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/testEnvironmentAsync.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/testEnvironmentCircusAsync.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/testEnvironmentCircus.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/testEnvironmentEsm.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/testEnvironmentRunScript.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/testEnvironment.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/testFailureExitCode.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/testInRoot.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/testNamePatternSkipped.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/testNamePattern.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/testPathPatternReporterMessage.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/testResultsProcessor.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/testRetries.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/testTodo.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/timeoutsLegacy.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/timeouts.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/timerResetMocks.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/timerUseRealTimers.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/toMatchInlineSnapshot.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/toMatchInlineSnapshotWithRetries.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/toMatchSnapshot.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/toMatchSnapshotWithRetries.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/toMatchSnapshotWithStringSerializer.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/toThrowErrorMatchingInlineSnapshot.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/toThrowErrorMatchingSnapshot.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/transformLinkedModules.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/transform.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/typescriptCoverage.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/unexpectedToken.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/useStderr.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/verbose.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/version.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/watchModeNoAccess.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/watchModeOnlyFailed.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/watchModePatterns.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/watchModeUpdateSnapshot.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/watch-plugins.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/workerForceExit.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/__tests__/wrongEnv.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-todo/__tests__/statuses.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-todo/__tests__/todoMultipleArgs.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-todo/__tests__/todoNoArgs.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-todo/__tests__/todoNonString.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/test-todo/__tests__/verbose.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/timer-reset-mocks/after-reset-all-mocks/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/timer-reset-mocks/after-reset-all-mocks/timerAndMock.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/timer-reset-mocks/with-reset-mocks/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/timer-reset-mocks/with-reset-mocks/timerWithMock.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/timer-use-real-timers/__tests__/useRealTimers.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/to-match-inline-snapshot/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/to-match-snapshot-with-string-serializer/serializers/string.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/to-throw-error-matching-inline-snapshot/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/async-transformer/module-under-test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/async-transformer/my-transform.cjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/async-transformer/some-symbol.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/async-transformer/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/babel-jest-async/only-file-to-transform.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/babel-jest-async/__tests__/babelJest.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/babel-jest-async/transformer.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/babel-jest/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/babel-jest-ignored/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/babel-jest-ignored/__tests__/ignoredFile.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/babel-jest-manual/foo.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/babel-jest-manual/__tests__/babelJest.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/babel-jest-manual/transformer.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/babel-jest/notCovered.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/babel-jest/__tests__/babelJest.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/babel-jest/__tests__/changedCwd.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/babel-jest/this-directory-is-covered/covered.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/babel-jest/this-directory-is-covered/excludedFromCoverage.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/cache/common-file.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/cache/__tests__/aTests.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/cache/__tests__/bTests.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/cache/__tests__/cTests.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/cache/__tests__/dTests.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/cache/transformer.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/custom-instrumenting-preprocessor/preprocessor.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/custom-instrumenting-preprocessor/src/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/custom-instrumenting-preprocessor/src/someOtherFile.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/custom-instrumenting-preprocessor/__tests__/customPreprocessor.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/ecmascript-modules-support/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/ecmascript-modules-support/src/index.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/ecmascript-modules-support/src/module.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/ecmascript-modules-support/__tests__/ecmascriptModulesSupport.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/esm-transformer/module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/esm-transformer/my-transform.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/esm-transformer/__tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform-linked-modules/ignored/normal.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform-linked-modules/package/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform-linked-modules/preprocessor.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform-linked-modules/__tests__/linkedModules.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/multiple-transformers/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/multiple-transformers/cssPreprocessor.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/multiple-transformers/filePreprocessor.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/multiple-transformers/jsPreprocessor.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/multiple-transformers/src/App.css

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/multiple-transformers/src/App.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/multiple-transformers/__tests__/multipleTransformers.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/no-babel-jest/__tests__/failsWithSyntaxError.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/no-babel-jest/__tests__/passesWithNoBabelJest.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/no-babel-jest/this-directory-is-covered/covered.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/no-babel-jest/this-directory-is-covered/excludedFromCoverage.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-environment/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-environment/environment.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-environment/__tests__/add.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transformer-config/NotCovered.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transformer-config/__tests__/transformer-config.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transformer-config/this-directory-is-covered/Covered.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transformer-config/this-directory-is-covered/ExcludedFromCoverage.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-esm-runner/runner.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-esm-runner/__tests__/add.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-esm-testrunner/test-runner.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-esm-testrunner/__tests__/add.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-runner/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-runner/runner.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-runner/__tests__/add.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-snapshotResolver/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-snapshotResolver/customSnapshotResolver.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-snapshotResolver/__tests__/snapshot.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-testrunner/babel.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-testrunner/test-runner.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/transform/transform-testrunner/__tests__/add.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/typescript-coverage/covered.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/typescript-coverage/__tests__/coveredTest.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/typescript-coverage/typescriptPreprocessor.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/Utils.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/verbose-reporter/__tests__/verbose.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/watch-plugins/cjs/my-watch-plugin.cjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/watch-plugins/cjs/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/watch-plugins/js/my-watch-plugin.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/watch-plugins/js/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/watch-plugins/js-type-module/my-watch-plugin.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/watch-plugins/js-type-module/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/watch-plugins/mjs/my-watch-plugin.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/watch-plugins/mjs/__tests__/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/wrong-env/__tests__/beforeTest.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/wrong-env/__tests__/jsdom.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/e2e/wrong-env/__tests__/node.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/.eslintplugin/index.js

       Copyright (c) 2016-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/.eslintrc.js

       Copyright (c) 2016-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/examples/angular/.babelrc.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/jest

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 88 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/jest.config.ci.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/jest.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/jest.config.tsd.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/babel-jest/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/babel-jest/src/loadBabelConfig.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/babel-jest/src/__tests__/getCacheKey.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/babel-jest/src/__tests__/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/babel-plugin-jest-hoist/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/babel-preset-jest/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/diff-sequences/perf/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/diff-sequences/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/diff-sequences/src/__tests__/index.property.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/diff-sequences/src/__tests__/index.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/asymmetricMatchers.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/extractExpectedAssertionsErrors.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/jasmineUtils.ts

       Copyright (c) 2008-2016 Pivotal Labs

       See SECTION 4 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/jestMatchersObject.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/matchers.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/print.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/spyMatchers.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/__arbitraries__/sharedSettings.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/assertionCounts.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/asymmetricMatchers.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/extend.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/isError.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/matchers.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/matchers-toContainEqual.property.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/matchers-toContain.property.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/matchers-toEqual.property.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/matchers-toStrictEqual.property.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/spyMatchers.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/stacktrace.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/symbolInObjects.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/toEqual-dom.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/toThrowMatchers.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/__tests__/utils.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/toThrowMatchers.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/src/utils.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/expect/__typetests__/expect.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest/bin/jest.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-changed-files/src/git.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-changed-files/src/hg.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-changed-files/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-changed-files/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/runner.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/eventHandler.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/formatNodeAssertErrors.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/globalErrorHandlers.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapter.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/legacy-code-todo-rewrite/jestExpect.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/__mocks__/testEventHandler.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/__mocks__/testUtils.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/run.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/state.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/testCaseReportHandler.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/__tests__/afterAll.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/__tests__/baseTest.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/__tests__/circusItTestError.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/__tests__/circusItTodoTestError.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/__tests__/hooksError.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/__tests__/hooks.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-circus/src/utils.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/bin/jest.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/cli/args.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/cli/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/init/errors.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/init/generateConfigFile.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/init/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/init/modifyPackageJson.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/init/questions.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/init/__tests__/fixtures/has-jest-config-file-cjs/jest.config.cjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/init/__tests__/fixtures/has-jest-config-file-js/jest.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/init/__tests__/fixtures/has-jest-config-file-mjs/jest.config.mjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/init/__tests__/fixtures/has-jest-config-file-ts/jest.config.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/init/__tests__/init.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/init/__tests__/modifyPackageJson.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/init/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-cli/src/__tests__/cli/args.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/color.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/constants.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/Defaults.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/Deprecated.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/Descriptions.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/getCacheDirectory.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/getMaxWorkers.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/__mocks__/fs.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/__mocks__/os.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/__mocks__/read-pkg.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/normalize.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/readConfigFileAndSetRootDir.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/ReporterValidationErrors.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/resolveConfigPath.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/setFromArgv.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/__tests__/Defaults.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/__tests__/getMaxWorkers.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/__tests__/normalize.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/__tests__/readConfigs.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/__tests__/readConfig.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/__tests__/resolveConfigPath.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/__tests__/setFromArgv.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/__tests__/validatePattern.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/utils.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/validatePattern.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-config/src/ValidConfig.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-console/src/BufferedConsole.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-console/src/CustomConsole.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-console/src/getConsoleOutput.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-console/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-console/src/NullConsole.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-console/src/__tests__/bufferedConsole.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-console/src/__tests__/CustomConsole.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-console/src/__tests__/getConsoleOutput.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-console/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/cli/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/collectHandles.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/FailedTestsCache.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/FailedTestsInteractiveMode.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/getChangedFilesPromise.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/getConfigsOfProjectsToRun.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/getNoTestFoundFailed.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/getNoTestFoundPassWithNoTests.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/getNoTestFoundRelatedToChangedFiles.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/getNoTestFound.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/getNoTestFoundVerbose.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/getNoTestsFoundMessage.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/getProjectDisplayName.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/getProjectNamesMissingWarning.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/getSelectProjectsMessage.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/jest.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/lib/activeFiltersMessage.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/lib/createContext.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/lib/handleDeprecationWarnings.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/lib/isValidPath.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/lib/logDebugMessages.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/lib/__tests__/isValidPath.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/lib/__tests__/logDebugMessages.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/lib/updateGlobalConfig.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/lib/watchPluginsHelpers.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/plugins/FailedTestsInteractive.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/plugins/Quit.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/plugins/TestNamePattern.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/plugins/TestPathPattern.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/plugins/__tests__/FailedTestsInteractive.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/plugins/UpdateSnapshotsInteractive.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/plugins/UpdateSnapshots.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/pluralize.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/ReporterDispatcher.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/runGlobalHook.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/runJest.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/SearchSource.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/SnapshotInteractiveMode.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/TestNamePatternPrompt.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/TestPathPatternPrompt.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/testSchedulerHelper.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/TestScheduler.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/collectHandles.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/FailedTestsCache.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/FailedTestsInteractiveMode.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/__fixtures__/watchPluginThrows.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/getNoTestsFoundMessage.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/globals.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/runJest.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/SearchSource.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/SnapshotInteractiveMode.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/test_root/module.foobar

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/test_root/module.jsx

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/test_root/noTests.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/test_root/__testtests__/test.foobar

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/test_root/__testtests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/test_root/__testtests__/test.jsx

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/test_root_with_(parentheses)/module.jsx

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/test_root_with_(parentheses)/__testtests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/testSchedulerHelper.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/TestScheduler.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/watchFileChanges.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/watchFilenamePatternMode.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/watch.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/__tests__/watchTestNamePatternMode.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/TestWatcher.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/version.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-core/src/watch.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-create-cache-key-function/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-create-cache-key-function/src/__tests__/index.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-diff/src/constants.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-diff/src/diffLines.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-diff/src/diffStrings.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-diff/src/getAlignedDiffs.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-diff/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-diff/src/joinAlignedDiffs.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-diff/src/normalizeDiffOptions.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-diff/src/printDiffs.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-diff/src/__tests__/diffStringsRaw.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-diff/src/__tests__/diff.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-diff/src/__tests__/getAlignedDiffs.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-diff/src/__tests__/joinAlignedDiffs.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-diff/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-docblock/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-docblock/src/__tests__/index.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-each/src/bind.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-each/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-each/src/table/array.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-each/src/table/interpolation.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-each/src/table/template.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-each/src/__tests__/array.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-each/src/__tests__/index.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-each/src/__tests__/template.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-each/src/validation.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-environment-jsdom/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-environment-jsdom/src/__mocks__/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-environment-jsdom/src/__tests__/jsdom_environment.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-environment-node/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-environment-node/src/__tests__/node_environment.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-environment/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-fake-timers/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-fake-timers/src/legacyFakeTimers.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-fake-timers/src/modernFakeTimers.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-fake-timers/src/__tests__/legacyFakeTimers.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-fake-timers/src/__tests__/modernFakeTimers.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-get-type/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-get-type/src/__tests__/getType.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-get-type/src/__tests__/isPrimitive.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-globals/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-globals/src/__tests__/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/blacklist.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/constants.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/crawlers/node.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/crawlers/__tests__/node.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/crawlers/__tests__/watchman.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/crawlers/watchman.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/getMockName.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/HasteFS.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/lib/dependencyExtractor.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/lib/fast_path.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/lib/getPlatformExtension.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/lib/isRegExpSupported.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/lib/normalizePathSep.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/lib/__tests__/dependencyExtractor.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/lib/__tests__/fast_path.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/lib/__tests__/getPlatformExtension.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/lib/__tests__/isRegExpSupported.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/lib/__tests__/normalizePathSep.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/ModuleMap.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/__tests__/dependencyExtractor.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/__tests__/get_mock_name.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/__tests__/haste_impl.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/__tests__/includes_dotfiles.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/__tests__/index.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/__tests__/test_dotfiles_root/.eslintrc.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/__tests__/test_dotfiles_root/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/__tests__/worker.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/watchers/FSEventsWatcher.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/watchers/WatchmanWatcher.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-haste-map/src/worker.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/assertionErrorMessage.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/each.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/errorOnPrivate.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/ExpectationFailed.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/expectationResultFactory.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/isError.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/jasmineAsyncInstall.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/jasmine/CallTracker.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/jasmine/createSpy.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/jasmine/Env.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/jasmine/jasmineLight.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/jasmine/JsApiReporter.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/jasmine/ReportDispatcher.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/jasmine/Spec.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/jasmine/spyRegistry.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/jasmine/SpyStrategy.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/jasmine/Suite.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/jasmine/Timer.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/jestExpect.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/PCancelable.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/pTimeout.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/queueRunner.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/reporter.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/setup_jest_globals.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/__tests__/concurrent.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/__tests__/expectationResultFactory.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/__tests__/hooksError.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/__tests__/iterators.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/__tests__/itTestError.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/__tests__/itToTestAlias.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/__tests__/pTimeout.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/__tests__/queueRunner.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/__tests__/reporter.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/__tests__/Suite.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/__tests__/todoError.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/treeProcessor.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-jasmine2/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-leak-detector/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-leak-detector/src/__tests__/index.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-matcher-utils/src/deepCyclicCopyReplaceable.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-matcher-utils/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-matcher-utils/src/Replaceable.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceableDom.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceable.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-matcher-utils/src/__tests__/index.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-matcher-utils/src/__tests__/printDiffOrStringify.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-matcher-utils/src/__tests__/Replaceable.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-message-util/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-message-util/src/__tests__/messages.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-message-util/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-mock/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-mock/src/__tests__/index.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-phabricator/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-regex-util/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-regex-util/src/__tests__/index.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-repl/bin/jest-repl.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-repl/bin/jest-runtime-cli.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-repl/src/cli/args.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-repl/src/cli/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-repl/src/cli/repl.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-repl/src/cli/runtime-cli.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-repl/src/cli/version.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-repl/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-repl/src/__tests__/jest_repl.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-repl/src/__tests__/runtime_cli.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-repl/src/__tests__/test_root/logging.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-repl/src/__tests__/test_root/throwing.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/BaseReporter.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/CoverageReporter.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/CoverageWorker.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/DefaultReporter.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/generateEmptyCoverage.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/getResultHeader.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/getSnapshotStatus.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/getSnapshotSummary.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/getWatermarks.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/NotifyReporter.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/Status.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/SummaryReporter.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/__tests__/CoverageReporter.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/__tests__/CoverageWorker.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/__tests__/DefaultReporter.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/__tests__/generateEmptyCoverage.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/__tests__/getResultHeader.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/__tests__/getSnapshotStatus.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/__tests__/getSnapshotSummary.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/__tests__/getWatermarks.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/__tests__/NotifyReporter.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/__tests__/SummaryReporter.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/__tests__/utils.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/__tests__/VerboseReporter.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/utils.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-reporters/src/VerboseReporter.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve-dependencies/__mocks__/fake-node-module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve-dependencies/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve-dependencies/src/__tests__/dependency_resolver.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve-dependencies/src/__tests__/__fixtures__/file.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve-dependencies/src/__tests__/__fixtures__/file.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve-dependencies/src/__tests__/__fixtures__/hasMocked/file.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve-dependencies/src/__tests__/__fixtures__/hasMocked/file.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve-dependencies/src/__tests__/__fixtures__/hasMocked/__mocks__/file.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve-dependencies/src/__tests__/__fixtures__/node_modules/@myorg/pkg/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve-dependencies/src/__tests__/__fixtures__/related.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve-dependencies/src/__tests__/__fixtures__/scoped.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve/src/defaultResolver.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve/src/fileWalkers.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve/src/isBuiltinModule.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve/src/__mocks__/foo/foo.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve/src/__mocks__/userResolver.d.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve/src/__mocks__/userResolver.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve/src/ModuleNotFoundError.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve/src/nodeModulesPaths.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve/src/resolver.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve/src/shouldLoadAsEsm.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve/src/__tests__/isBuiltinModule.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve/src/__tests__/resolve.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-resolve/src/utils.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runner/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runner/src/runTest.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runner/src/__tests__/testRunner.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runner/src/testWorker.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runner/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/helpers.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__mocks__/createRuntime.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/defaultResolver.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/instrumentation.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/module_dir/module_directory_file.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/module_dir/to_be_instrumented.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/NODE_PATH_dir/regular_module_in_node_path.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_create_mock_from_module.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_environment.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_internal_module.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_jest_fn.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_jest_spy_on.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_mock.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_module_directories.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_node_path.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_require_actual.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_require_cache.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_require_mock.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_require_module_no_ext.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_require_module_or_mock.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_require_module_or_mock_transitive_deps.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_require_module.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_require_resolve.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/Runtime-sourceMaps.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/Runtime-statics.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/runtime_wrap.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/create_require_module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/dep_on_mapped_module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/global_image_stub.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/haste-modules/FooContainer.react.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/haste-modules/Foo.react.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/haste-modules/FooRenderUtil.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/haste-package/core/module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/inner_parent_module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/internal-module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/internal-root.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/ManuallyMocked.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/mapped_dir/moduleInMapped.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/mapped_module_createMockFromModule.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/mapped_module_test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/__mocks__/ExclusivelyManualMock.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/__mocks__/ManuallyMocked.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/__mocks__/mocked-node-module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/__mocks__/nested1/nested2/nested3.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/module_dir/module_dir_module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/module_dir/my-module/core.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/modules_with_main/export_main.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/modules_with_main/re_export_main.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/ModuleWithSideEffects.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/ModuleWithState.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/MyDirectoryModule/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/nested1/nested2/nested3.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/node_modules/jest-resolve-test/browser.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/node_modules/jest-resolve-test/node.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/node_modules/mocked-node-module/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/node_modules/module-needing-parent/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/node_modules/module-needing-parent/node_modules/parent-module/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/node_modules/not-a-haste-package/core.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/node_modules/npm3-main-dep/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/node_modules/npm3-transitive-dep/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/node_modules/npm3-transitive-dep/internal-code.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/node_modules/parent-module/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/OnlyRequiredFromMock.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/platform/Platform.android.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/platform/Platform.ios.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/platform/Platform.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/platform/Platform.native.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/RegularModule.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/RelativeImageStub.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/require-by-name.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/RequireRegularModule.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/resolve_and_require_outside.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/resolve_mapped.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/resolve_self.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/root.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/sourcemaps/out/throwing-mapped-fn.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/sourcemaps/throwing-mapped-fn.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/subdir2/module_dir/module_dir_module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/subdir2/module_dir/my-module/core.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/test_json_preprocessor.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/TestModuleNameMapperResolution.jsx

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/test_preprocessor.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/throwing_fn.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/throwing.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root/utf8_with_bom.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root_with_dup_mocks/subdir1/__mocks__/my_module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root_with_dup_mocks/subdir1/my_module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root_with_dup_mocks/subdir2/__mocks__/my_module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root_with_dup_mocks/subdir2/module_dir/module_dir_module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/__tests__/test_root_with_dup_mocks/subdir2/my_module.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-runtime/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-serializer/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-serializer/src/__tests__/index.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-serializer/v8.d.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/colors.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/dedentLines.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/InlineSnapshots.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/mockSerializer.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__mocks__/prettier.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/plugins.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/printSnapshot.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/SnapshotResolver.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/State.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/dedentLines.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/fixtures/customSnapshotResolver-inconsistent-fns.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/fixtures/customSnapshotResolver.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/fixtures/customSnapshotResolver-missing-resolveSnapshotPath.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/fixtures/customSnapshotResolver-missing-resolveTestPath.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/fixtures/customSnapshotResolver-missing-test-path-for-consistency-check.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/InlineSnapshots.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/matcher.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/mockSerializer.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/plugins/bar.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/plugins/foo.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/plugins.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/printSnapshot.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/SnapshotResolver.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/throwMatcher.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/__tests__/utils.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-snapshot/src/utils.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-source-map/src/getCallsite.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-source-map/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-source-map/src/__tests__/getCallsite.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-source-map/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest/src/jest.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-test-result/src/formatTestResults.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-test-result/src/helpers.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-test-result/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-test-result/src/__tests__/formatTestResults.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-test-result/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-test-sequencer/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-test-sequencer/src/__tests__/test_sequencer.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-transform/src/enhanceUnexpectedTokenMessage.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-transform/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-transform/src/runtimeErrorsAndWarnings.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-transform/src/ScriptTransformer.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-transform/src/shouldInstrument.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-transform/src/__tests__/shouldInstrument.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-transform/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-types/src/Circus.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-types/src/Config.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-types/src/Global.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-types/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-types/src/TestResult.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-types/src/Transform.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-types/__typetests__/config.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-types/__typetests__/expect.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-types/__typetests__/globals.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-types/__typetests__/jest.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/clearLine.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/convertDescriptorToString.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/createDirectory.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/createProcessObject.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/deepCyclicCopy.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/ErrorWithStack.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/formatTime.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/globsToMatcher.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/installCommonGlobals.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/interopRequireDefault.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/isInteractive.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/isPromise.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/pluralize.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/preRunMessage.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/replacePathSepForGlob.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/requireOrImportModule.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/setGlobal.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/specialChars.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/testPathPatternToRegExp.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/__tests__/createProcessObject.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/__tests__/deepCyclicCopy.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/__tests__/errorWithStack.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/__tests__/formatTime.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/__tests__/globsToMatcher.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/__tests__/installCommonGlobals.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/__tests__/isInteractive.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/__tests__/isPromise.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-util/src/tryRealpath.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-validate/src/condition.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-validate/src/defaultConfig.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-validate/src/deprecated.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-validate/src/errors.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-validate/src/exampleConfig.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-validate/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-validate/src/__tests__/fixtures/jestConfig.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-validate/src/__tests__/validateCLIOptions.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-validate/src/__tests__/validate.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-validate/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-validate/src/utils.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-validate/src/validateCLIOptions.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-validate/src/validate.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-validate/src/warnings.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-watcher/src/BaseWatchPlugin.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-watcher/src/constants.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-watcher/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-watcher/src/JestHooks.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-watcher/src/lib/colorize.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-watcher/src/lib/formatTestNameByPattern.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-watcher/src/lib/patternModeHelpers.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-watcher/src/lib/Prompt.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-watcher/src/lib/scroll.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-watcher/src/lib/__tests__/formatTestNameByPattern.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-watcher/src/lib/__tests__/prompt.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-watcher/src/lib/__tests__/scroll.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-watcher/src/PatternPrompt.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-watcher/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/base/BaseWorkerPool.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/base/__tests__/BaseWorkerPool.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/Farm.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/FifoQueue.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/__performance_tests__/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/__performance_tests__/workers/jest_worker.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/__performance_tests__/workers/pi.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/__performance_tests__/workers/worker_farm.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/PriorityQueue.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/__tests__/Farm.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/__tests__/FifoQueue.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/__tests__/index.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/__tests__/leak-integration.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/__tests__/PriorityQueue.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/__tests__/process-integration.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/__tests__/thread-integration.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/__tests__/WorkerPool.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/WorkerPool.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/workers/ChildProcessWorker.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/workers/messageParent.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/workers/NodeThreadsWorker.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/workers/processChild.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/workers/__tests__/ChildProcessWorker.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/workers/__tests__/NodeThreadsWorker.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/workers/__tests__/processChild.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/workers/__tests__/threadChild.test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/jest-worker/src/workers/threadChild.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/perf/test.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/collections.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/plugins/AsymmetricMatcher.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/plugins/ConvertAnsi.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/plugins/DOMCollection.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/plugins/DOMElement.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/plugins/Immutable.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/plugins/lib/escapeHTML.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/plugins/lib/markup.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/plugins/ReactElement.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/plugins/ReactTestComponent.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/__tests__/AsymmetricMatcher.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/__tests__/ConvertAnsi.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/__tests__/DOMCollection.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/__tests__/DOMElement.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/__tests__/Immutable.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/__tests__/prettyFormat.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/__tests__/ReactElement.test.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/__tests__/react.test.tsx

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 21 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/__tests__/setPrettyPrint.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/pretty-format/src/types.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/test-utils/src/alignedAnsiStyleSerializer.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/test-utils/src/ConditionalTest.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/test-utils/src/config.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/packages/test-utils/src/index.ts

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/scripts/babel-plugin-jest-native-globals.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/scripts/babel-plugin-jest-replace-ts-require-assignment.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/scripts/babel-plugin-jest-require-outside-vm.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/scripts/build.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/scripts/buildTs.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/scripts/buildUtils.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/scripts/checkCopyrightHeaders.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/scripts/cleanE2e.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/scripts/mapCoverage.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/scripts/remove-examples.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/scripts/verifyOldTs.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/scripts/verifyPnP.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/scripts/watch.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/testSetupFile.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/docusaurus.config.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/fetchSupporters.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/i18n.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/src/components/v1/Container.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/src/components/v1/GridBlock.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/src/components/v1/legacyCSS.css

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/src/components/v1/MarkdownBlock.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/src/css/algoliaDocSearchTheme.css

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/src/css/docusaurusTheme.css

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 21 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/src/pages/animations/_landingAnimation.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/src/pages/help.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/src/pages/index.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/src/pages/index.module.css

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 21 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/src/pages/versions.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/src/pages/videos.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/src/pages/videos.module.css

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/src/prism/themeDark.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/src/prism/themeLight.js

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/static/css/custom.css

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/website/static/css/jest.css

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs

       Copyright OpenJS Foundation and other contributors <https://openjsf.org/>

       See SECTION 40 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs

       Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors

       See SECTION 41 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs

       Copyright (c) Facebook, Inc. and its affiliates

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs

       (c) Sindre Sorhus

       See SECTION 31 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/.yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs

       Copyright (c) 2014-present, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       jest-27.5.1/.yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs

       Copyright (c) 2015-present, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'


   >>> webpack-sources-3.2.3

       MIT License

       Copyright (c) 2017 JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       webpack-sources-3.2.3/test/fixtures/es6-promise.js

       Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors

       See SECTION 51 in 'LICENSE TEXT REFERENCE TABLE'

       webpack-sources-3.2.3/test/fixtures/es6-promise.map

       Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors

       See SECTION 73 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @types/estree-0.0.51

       This project is licensed under the MIT license.
       Copyrights are respective of each contributor listed at the beginning of each definition file.

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> ramda-0.28.0

       The MIT License (MIT)

       Copyright (c) 2013-2020 Scott Sauyet and Michael Hurley

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


       ADDITIONAL LICENSE INFORMATION

       > MIT

       ramda-0.28.0/dist/ramda.js

       (c) 2013-2022 Scott Sauyet, Michael Hurley, and David Chambers Ramda

       See SECTION 76 in 'LICENSE TEXT REFERENCE TABLE'

       ramda-0.28.0/LICENSE.txt

       Copyright (c) 2013-2020 Scott Sauyet and Michael Hurley

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'

       ramda-0.28.0/rollup.config.js

       (c) 2013

       See SECTION 127 in 'LICENSE TEXT REFERENCE TABLE'

       > Creative Commons Attribution Non-Commercial 3.0

       ramda-0.28.0/README.md

       (c) 2014 J. C. Phillipps

       See SECTION 91 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @types/request-2.48.8

       License : MIT


   >>> @types/body-parser-1.19.2

       Found in: body-parser/LICENSE

       Copyright (c) Microsoft Corporation

           MIT License


   >>> bytes-3.1.2

       Found in: package/LICENSE

       Copyright (c) 2015 Jed Watson <jed.watson@me.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/index.js

       Copyright (c) 2012-2014 TJ Holowaychuk

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       package/LICENSE

       Copyright (c) 2012-2014 TJ Holowaychuk <tj@vision-media.ca>

       See SECTION 26 in 'LICENSE TEXT REFERENCE TABLE'


   >>> minimatch-3.1.2

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       The ISC License


   >>> has-symbols-1.0.3

       License- MIT


   >>> @clr/icons-13.0.2

       Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.

         This software is released under MIT license.
         The full license information can be found in LICENSE in the root directory of this project.



   >>> debug-4.3.4

       Found in: package/LICENSE

       Copyright (c) 2014 TJ Holowaychuk <tj@vision-media.ca>





   >>> domhandler-4.3.1

       Copyright (c) Felix Böhm
       All rights reserved.

       Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

       Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

       Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

       THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
       EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



   >>> mime-types-2.1.35

       (The MIT License)

       Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
       Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> mime-db-1.52.0

       (The MIT License)

       Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
       Copyright (c) 2015-2022 Douglas Christopher Wilson <doug@somethingdoug.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> es-module-lexer-0.9.3

       License- MIT

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/lexer.js

       Copyright (C) 2012-2020 by various contributors (see AUTHORS)



       package/LICENSE

       Copyright (C) 2018-2021 Guy Bedford




   >>> http-errors-2.0.0

       
       The MIT License (MIT)

       Copyright (c) 2014 Jonathan Ong me@jongleberry.com
       Copyright (c) 2016 Douglas Christopher Wilson doug@somethingdoug.com

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.



   >>> micromatch-4.0.5



   >>> fraction.js-4.2.0



   >>> @discoveryjs/json-ext-0.5.7

       Found in: package/LICENSE

       Copyright (c) 2020 Roman Dvornov <rdvornov@gmail.com>

       MIT.LICENSE


   >>> brace-expansion-2.0.1

       Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.



   >>> node-forge-1.3.1

       Found in: package/LICENSE

       Copyright (c) 2010, Digital Bazaar, Inc.

       New BSD License (3-clause)
       Copyright (c) 2010, Digital Bazaar, Inc.
       All rights reserved.

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:
           * Redistributions of source code must retain the above copyright
             notice, this list of conditions and the following disclaimer.
           * Redistributions in binary form must reproduce the above copyright
             notice, this list of conditions and the following disclaimer in the
             documentation and/or other materials provided with the distribution.
           * Neither the name of Digital Bazaar, Inc. nor the
             names of its contributors may be used to endorse or promote products
             derived from this software without specific prior written permission.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
       ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
       WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
       DISCLAIMED. IN NO EVENT SHALL DIGITAL BAZAAR BE LIABLE FOR ANY
       DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
       (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
       LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
       ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
       (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
       SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

       ADDITIONAL LICENSE INFORMATION

       > BSD-3

       package/lib/pkcs1.js

       Copyright (c) 2013-2014 Digital Bazaar, Inc.

       See SECTION 69 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/pkcs1.js

       Copyright (c) 2012 Kenji Urushima

       See SECTION 68 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       package/lib/baseN.js

       (c) 2016 Permission

       See SECTION 133 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/pkcs1.js

       Copyright (c) Ellis Pritchard, Guardian Unlimited 2003

       See SECTION 23 in 'LICENSE TEXT REFERENCE TABLE'

       > Public Domain

       package/lib/aes.js

       Copyright (c) 2010-2014 Digital Bazaar, Inc.

       See SECTION 132 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/ed25519.js

       Copyright (c) 2017-2019 Digital Bazaar, Inc.

       See SECTION 72 in 'LICENSE TEXT REFERENCE TABLE'

       > Generic Bare Warranty Disclaimer

       package/lib/des.js

       Copyright (c) 2012 Stefan Siegl <stesie@brokenpipe.de>

       See SECTION 70 in 'LICENSE TEXT REFERENCE TABLE'

       > Unknown License file reference

       package/lib/jsbn.js

       Copyright (c) 2003-2005 Tom Wu

       See SECTION 130 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/jsbn.js

       Copyright (c) 2005 Tom Wu

       See SECTION 129 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/jsbn.js

       Copyright (c) 2005-2009 Tom Wu

       See SECTION 131 in 'LICENSE TEXT REFERENCE TABLE'


   >>> gauge-4.0.4

       Found in: package/LICENSE.md

       Copyright npm, Inc.

       ISC License


   >>> npmlog-6.0.2

       Found in: package/LICENSE.md

       Copyright npm, Inc.

       ISC License


   >>> typed-assert-1.0.9

       License- MIT


   >>> slash-4.0.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> ajv-keywords-5.1.0

       Found in: package/LICENSE

       Copyright (c) 2016 Evgeny Poberezkin

       The MIT License (MIT)


   >>> webpack-subresource-integrity-5.1.0

       (The MIT License)

       Copyright (c) 2015-present Waysact Pty Ltd

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH T

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/index.js

       Copyright (c) 2015-present, Waysact Pty Ltd


       package/plugin.js

       Copyright (c) 2015-present, Waysact Pty Ltd


       package/reporter.js

       Copyright (c) 2015-present, Waysact Pty Ltd


       package/util.js

       Copyright (c) 2015-present, Waysact Pty Ltd



   >>> css-what-6.1.0

       Found in: package/LICENSE

       Copyright (c) Felix Bohm

       Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

       Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

       Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

       THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
        WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
       EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> css-select-4.3.0

       Found in: package/LICENSE

       Copyright (c) Felix Bohm

       Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

       Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

       Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

       THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
        WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
       EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/lib/attributes.js

       (c) 2007-2020 Steven Levithan

       See SECTION 111 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @types/serve-index-1.9.1

       Found in: serve-index/LICENSE

       Copyright (c) Microsoft Corporation.





   >>> piscina-3.2.0

       The MIT License (MIT)

       Copyright (c) 2020 James M Snell and the Piscina contributors

       Piscina contributors listed at https://github.com/jasnell/piscina#the-team and
       in the README file.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.



   >>> license-webpack-plugin-4.0.2

       ISC License

       Copyright (c) 2016, S K (xz64)

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
       OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.



   >>> @types/bonjour-3.5.10

           MIT License

           Copyright (c) Microsoft Corporation.

           Permission is hereby granted, free of charge, to any person obtaining a copy
           of this software and associated documentation files (the "Software"), to deal
           in the Software without restriction, including without limitation the rights
           to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
           copies of the Software, and to permit persons to whom the Software is
           furnished to do so, subject to the following conditions:

           The above copyright notice and this permission notice shall be included in all
           copies or substantial portions of the Software.

           THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
           IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
           FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
           AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
           LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
           OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
           SOFTWARE



   >>> resolve-url-loader-5.0.0

       The MIT License (MIT)

       Copyright (c) 2016 Ben Holloway

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> http-proxy-middleware-2.0.6

       The MIT License (MIT)

       Copyright (c) 2015 Steven Chim

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.



       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/README.md

       Copyright (c) 2015-2022 Steven Chim

       See SECTION 29 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @types/sockjs-0.3.33

           MIT License

           Copyright (c) Microsoft Corporation.

           Permission is hereby granted, free of charge, to any person obtaining a copy
           of this software and associated documentation files (the "Software"), to deal
           in the Software without restriction, including without limitation the rights
           to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
           copies of the Software, and to permit persons to whom the Software is
           furnished to do so, subject to the following conditions:

           The above copyright notice and this permission notice shall be included in all
           copies or substantial portions of the Software.

           THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
           IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
           FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
           AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
           LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
           OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
           SOFTWARE



   >>> @jridgewell/gen-mapping-0.1.1

       Copyright 2022 Justin Ridgewell <justin@ridgewell.name>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> glob-7.2.3

       
       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARIS


   >>> cookie-0.5.0

       Found in: package/LICENSE

       Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/index.js

       Copyright (c) 2015 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       package/LICENSE

       Copyright (c) 2012-2014 Roman Shtylman <shtylman@gmail.com>

       See SECTION 26 in 'LICENSE TEXT REFERENCE TABLE'


   >>> jwa-v1.4.1

       > MIT

       node-jwa-5b3bceef80a1eeb21405d5ea4cdf0725277746e1/LICENSE

       Copyright (c) 2013 Brian J. Brennan



   >>> destroy-1.2.0

       Found in: package/LICENSE

       Copyright (c) 2015-2022 Douglas Christopher Wilson doug@somethingdoug.com

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/index.js

       Copyright (c) 2015-2022 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       package/LICENSE

       Copyright (c) 2014 Jonathan Ong me@jongleberry.com

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'


   >>> on-finished-2.4.1

       Found in: package/LICENSE

       Copyright (c) 2014 Douglas Christopher Wilson <doug@somethingdoug.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/index.js

       Copyright (c) 2014 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       package/LICENSE

       Copyright (c) 2013 Jonathan Ong <me@jongleberry.com>

       See SECTION 26 in 'LICENSE TEXT REFERENCE TABLE'


   >>> raw-body-2.5.1

       Found in: package/LICENSE

       Copyright (c) 2014-2022 Douglas Christopher Wilson <doug@somethingdoug.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/index.js

       Copyright (c) 2014-2022 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       package/LICENSE

       Copyright (c) 2013-2014 Jonathan Ong <me@jongleberry.com>

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'


   >>> watchpack-2.4.0

       Found in: package/LICENSE

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> https-proxy-agent-5.0.1

       Found in: package/README.md

       Copyright (c) 2013 Nathan Rajlich <nathan@tootallnate.net>

       License
       -------

       (The MIT License)


   >>> nth-check-2.1.1

       Found in: nth-check-master/LICENSE

       Copyright (c) Felix Bohm

       Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

       Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

       Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

       THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
        WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
       EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> abab-2.0.6

       Copyright © 2019 W3C and Jeff Carpenter \<jeffcarp@chromium.org\>

       Both the original source code and new contributions in this repository are released under the [3-Clause BSD license](https://opensource.org/licenses/BSD-3-Clause).

       # The 3-Clause BSD License

       Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

       1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
       2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
       3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



   >>> domelementtype-2.3.0

       Found in: package/LICENSE

       Copyright (c) Felix Bohm

       Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

       Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

       Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

       THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
        WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
       EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> dom-serializer-1.4.1

       Found in: package/LICENSE

       Copyright (c) 2014 The cheeriojs contributors

       License

       (The MIT License)


   >>> @types/tough-cookie-4.0.2

       Found in: tough-cookie/LICENSE

       Copyright (c) Microsoft Corporation

           MIT License


   >>> finalhandler-1.2.0

       Found in: package/LICENSE

       Copyright (c) 2014-2022 Douglas Christopher Wilson <doug@somethingdoug.com>

       (The MIT License)

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/index.js

       Copyright (c) 2014-2022 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'


   >>> send-0.18.0

       Found in: package/LICENSE

       Copyright (c) 2014-2022 Douglas Christopher Wilson

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/index.js

       Copyright (c) 2014-2022 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       package/LICENSE

       Copyright (c) 2012 TJ Holowaychuk

       See SECTION 26 in 'LICENSE TEXT REFERENCE TABLE'


   >>> serve-static-1.15.0

       Found in: package/LICENSE

       Copyright (c) 2014-2016 Douglas Christopher Wilson

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/index.js

       Copyright (c) 2014-2016 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       package/LICENSE

       Copyright (c) 2010 Sencha Inc.

       See SECTION 26 in 'LICENSE TEXT REFERENCE TABLE'


   >>> loader-runner-4.3.0

       Found in: package/LICENSE

       Copyright (c) Tobias Koppers

       the MIT License


   >>> @messageformat/runtime-3.0.1

       Found in: package/LICENSE

       Copyright OpenJS Foundation and contributors, https://openjsf.org

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @types/retry-0.12.0

       License : MIT


   >>> p-retry-4.6.2

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> ip-2.0.0

       Found in: package/README.md

       Copyright Fedor Indutny, 2012

       Permission is hereby granted, free of charge, to any person obtaining a
       copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to permit
       persons to whom the Software is furnished to do so, subject to the
       following conditions:

       The above copyright notice and this permission notice shall be included
       in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
       OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
       NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
       DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
       OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
       USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> resolve-1.22.1

       Found in: package/LICENSE

       Copyright (c) 2012 James Halliday

       MIT.LICENSE


   >>> qs-6.11.0

       Found in: package/LICENSE.md

       Copyright (c) 2014, Nathan LaFreniere and other contributors (https://github.com/ljharb/qs/graphs/contributors)

       BSD 3-Clause License


   >>> socks-proxy-agent-7.0.0

       Found in: package/README.md

       Copyright (c) 2013 Nathan Rajlich <nathan@tootallnate.net>

       License
       -------

       (The MIT License)


   >>> @babel/helper-split-export-declaration-7.18.6

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @jridgewell/sourcemap-codec-1.4.14

       Found in: package/LICENSE

       Copyright (c) 2015 Rich Harris

       the MIT License


   >>> @types/eslint-scope-3.7.4

       Found in: eslint-scope/LICENSE

       Copyright (c) Microsoft Corporation

           MIT License


   >>> @babel/helper-annotate-as-pure-7.18.6

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @jridgewell/resolve-uri-3.1.0

       Found in: package/LICENSE

       Copyright 2019 Justin Ridgewell <jridgewell@google.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> @babel/plugin-proposal-numeric-separator-7.18.6

       License : MIT


   >>> psl-1.9.0

       License

       The MIT License (MIT)

       Copyright (c) 2017 Lupo Montero lupomontero@gmail.com

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/plugin-proposal-unicode-property-regex-7.18.6

       Found in: babel-7.18.6/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE

       ADDITIONAL LICENSE INFORMATION

       > BSD-2

       babel-7.18.6/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-line-comment/input.js

       Copyright (c) 2012 Yusuke Suzuki <utatane.tea@gmail.com>

       See SECTION 117 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-line-comment/output.js

       Copyright (c) 2012 Yusuke Suzuki <utatane.tea@gmail.com>

       See SECTION 117 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-multi-comment/input.js

       Copyright (c) 2012 Yusuke Suzuki <utatane.tea@gmail.com>

       See SECTION 116 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-multi-comment/output.js

       Copyright (c) 2012 Yusuke Suzuki <utatane.tea@gmail.com>

       See SECTION 116 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-parser/test/expressions/esprima/LICENSE

       Copyright (c) jQuery Foundation, Inc. and Contributors

       See SECTION 47 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-parser/test/fixtures/esprima/LICENSE

       Copyright (c) jQuery Foundation, Inc. and Contributors

       See SECTION 47 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-3

       babel-7.18.6/packages/babel-standalone/src/transformScriptTags.ts

       Copyright 2013-2015, Facebook, Inc.

       See SECTION 115 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       babel-7.18.6/benchmark/babel-generator/real-case/jquery-3.6.txt

       Copyright OpenJS Foundation and other contributors

       See SECTION 74 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/benchmark/babel-generator/real-case/jquery-3.6.txt

       Copyright JS Foundation and other contributors

       See SECTION 126 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/eslint/babel-eslint-plugin/LICENSE

       Copyright (c) 2014-2015 Jason Quense <jason@quense.me>

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-helpers/scripts/generate-regenerator-runtime.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 142 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-helpers/src/helpers-generated.ts

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-helpers/src/helpers/regeneratorRuntime.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 145 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-parser/LICENSE

       Copyright (c) 2012-2014 by various contributors

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-plugin-proposal-async-generator-functions/test/fixtures/regression/13801/output.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-plugin-proposal-record-and-tuple/src/index.ts

       Copyright 2020 Bloomberg Finance L.P.

       See SECTION 125 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-plugin-transform-object-assign/LICENSE

       Copyright (c) 2015 Jed Watson

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-plugin-transform-regenerator/test/fixtures/misc/no-external-helpers/output.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs2-babel-7/usage-regenerator-used-async/output.mjs

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs2-babel-7/usage-regenerator-used-generator/output.mjs

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs2-babel-7/usage-shippedProposals/output.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs2/usage-shippedProposals/output.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs3-babel-7/usage-regenerator-used-async/output.mjs

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs3-babel-7/usage-regenerator-used-generator/output.mjs

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/.yarn/plugins/@yarnpkg/plugin-babel-release-tool.cjs

       Copyright (c) 2011-2017 KARASZI Istvan <github@spam.raszi.hu>

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       > Ecma no patent notice

       babel-7.18.6/packages/babel-plugin-proposal-class-properties/test/fixtures/private/declaration-order/LICENSE

       Copyright (c) 2012-2013 Ecma International

       See SECTION 144 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/declaration-order/LICENSE

       Copyright (c) 2012-2013 Ecma International

       See SECTION 144 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @babel/plugin-proposal-dynamic-import-7.18.6

       Found in: babel-7.18.6/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE

       ADDITIONAL LICENSE INFORMATION

       > BSD-2

       babel-7.18.6/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-line-comment/input.js

       Copyright (c) 2012 Yusuke Suzuki <utatane.tea@gmail.com>

       See SECTION 117 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-line-comment/output.js

       Copyright (c) 2012 Yusuke Suzuki <utatane.tea@gmail.com>

       See SECTION 117 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-multi-comment/input.js

       Copyright (c) 2012 Yusuke Suzuki <utatane.tea@gmail.com>

       See SECTION 116 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-multi-comment/output.js

       Copyright (c) 2012 Yusuke Suzuki <utatane.tea@gmail.com>

       See SECTION 116 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-parser/test/expressions/esprima/LICENSE

       Copyright (c) jQuery Foundation, Inc. and Contributors

       See SECTION 47 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-parser/test/fixtures/esprima/LICENSE

       Copyright (c) jQuery Foundation, Inc. and Contributors

       See SECTION 47 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-3

       babel-7.18.6/packages/babel-standalone/src/transformScriptTags.ts

       Copyright 2013-2015, Facebook, Inc.

       See SECTION 115 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       babel-7.18.6/benchmark/babel-generator/real-case/jquery-3.6.txt

       Copyright JS Foundation and other contributors

       See SECTION 126 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/benchmark/babel-generator/real-case/jquery-3.6.txt

       Copyright OpenJS Foundation and other contributors

       See SECTION 74 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/eslint/babel-eslint-plugin/LICENSE

       Copyright (c) 2014-2015 Jason Quense <jason@quense.me>

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-helpers/scripts/generate-regenerator-runtime.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 142 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-helpers/src/helpers-generated.ts

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-helpers/src/helpers/regeneratorRuntime.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 145 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-parser/LICENSE

       Copyright (c) 2012-2014 by various contributors

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-plugin-proposal-async-generator-functions/test/fixtures/regression/13801/output.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-plugin-proposal-record-and-tuple/src/index.ts

       Copyright 2020 Bloomberg Finance L.P.

       See SECTION 125 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-plugin-transform-object-assign/LICENSE

       Copyright (c) 2015 Jed Watson

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-plugin-transform-regenerator/test/fixtures/misc/no-external-helpers/output.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs2-babel-7/usage-regenerator-used-async/output.mjs

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs2-babel-7/usage-regenerator-used-generator/output.mjs

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs2-babel-7/usage-shippedProposals/output.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs2/usage-shippedProposals/output.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs3-babel-7/usage-regenerator-used-async/output.mjs

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs3-babel-7/usage-regenerator-used-generator/output.mjs

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/.yarn/plugins/@yarnpkg/plugin-babel-release-tool.cjs

       Copyright (c) 2011-2017 KARASZI Istvan <github@spam.raszi.hu>

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       > Ecma no patent notice

       babel-7.18.6/packages/babel-plugin-proposal-class-properties/test/fixtures/private/declaration-order/LICENSE

       Copyright (c) 2012-2013 Ecma International

       See SECTION 144 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/declaration-order/LICENSE

       Copyright (c) 2012-2013 Ecma International

       See SECTION 144 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @babel/plugin-proposal-json-strings-7.18.6

       Found in: babel-7.18.6/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE

       ADDITIONAL LICENSE INFORMATION

       > BSD-2

       babel-7.18.6/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-line-comment/input.js

       Copyright (c) 2012 Yusuke Suzuki <utatane.tea@gmail.com>

       See SECTION 117 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-line-comment/output.js

       Copyright (c) 2012 Yusuke Suzuki <utatane.tea@gmail.com>

       See SECTION 117 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-multi-comment/input.js

       Copyright (c) 2012 Yusuke Suzuki <utatane.tea@gmail.com>

       See SECTION 116 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-multi-comment/output.js

       Copyright (c) 2012 Yusuke Suzuki <utatane.tea@gmail.com>

       See SECTION 116 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-parser/test/expressions/esprima/LICENSE

       Copyright (c) jQuery Foundation, Inc. and Contributors

       See SECTION 47 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-parser/test/fixtures/esprima/LICENSE

       Copyright (c) jQuery Foundation, Inc. and Contributors

       See SECTION 47 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-3

       babel-7.18.6/packages/babel-standalone/src/transformScriptTags.ts

       Copyright 2013-2015, Facebook, Inc.

       See SECTION 115 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       babel-7.18.6/benchmark/babel-generator/real-case/jquery-3.6.txt

       Copyright OpenJS Foundation and other contributors

       See SECTION 74 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/benchmark/babel-generator/real-case/jquery-3.6.txt

       Copyright JS Foundation and other contributors

       See SECTION 126 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/eslint/babel-eslint-plugin/LICENSE

       Copyright (c) 2014-2015 Jason Quense <jason@quense.me>

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-helpers/scripts/generate-regenerator-runtime.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 142 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-helpers/src/helpers-generated.ts

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-helpers/src/helpers/regeneratorRuntime.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 145 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-parser/LICENSE

       Copyright (c) 2012-2014 by various contributors

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-plugin-proposal-async-generator-functions/test/fixtures/regression/13801/output.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-plugin-proposal-record-and-tuple/src/index.ts

       Copyright 2020 Bloomberg Finance L.P.

       See SECTION 125 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-plugin-transform-object-assign/LICENSE

       Copyright (c) 2015 Jed Watson

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-plugin-transform-regenerator/test/fixtures/misc/no-external-helpers/output.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs2-babel-7/usage-regenerator-used-async/output.mjs

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs2-babel-7/usage-regenerator-used-generator/output.mjs

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs2-babel-7/usage-shippedProposals/output.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs2/usage-shippedProposals/output.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs3-babel-7/usage-regenerator-used-async/output.mjs

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-preset-env/test/fixtures/corejs3-babel-7/usage-regenerator-used-generator/output.mjs

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 83 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/.yarn/plugins/@yarnpkg/plugin-babel-release-tool.cjs

       Copyright (c) 2011-2017 KARASZI Istvan <github@spam.raszi.hu>

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       > Ecma no patent notice

       babel-7.18.6/packages/babel-plugin-proposal-class-properties/test/fixtures/private/declaration-order/LICENSE

       Copyright (c) 2012-2013 Ecma International

       See SECTION 144 in 'LICENSE TEXT REFERENCE TABLE'

       babel-7.18.6/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/declaration-order/LICENSE

       Copyright (c) 2012-2013 Ecma International

       See SECTION 144 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @babel/plugin-proposal-optional-catch-binding-7.18.6



   >>> @babel/plugin-proposal-class-properties-7.18.6



   >>> ansi-colors-4.1.3

       Found in: package/LICENSE

       Copyright (c) 2015-present, Brian Woodward

       The MIT License (MIT)


   >>> http-parser-js-0.5.8

       License - MIT

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE.md

       Copyright (c) 2015 Tim Caswell (https://github.com/creationix) and other contributors

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       package/LICENSE.md

       Copyright Joyent, Inc. and other Node contributors

       See SECTION 67 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @babel/plugin-proposal-private-methods-7.18.6



   >>> jsonc-parser-3.2.0

       The MIT License (MIT)

       Copyright (c) Microsoft

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


       ADDITIONAL LICENSE INFORMATION

       > MIT

       node-jsonc-parser-3.2.0/build/post-publish.js

       Copyright (c) Microsoft Corporation

       See SECTION 86 in 'LICENSE TEXT REFERENCE TABLE'

       node-jsonc-parser-3.2.0/build/remove-sourcemap-refs.js

       Copyright (c) Microsoft Corporation

       See SECTION 86 in 'LICENSE TEXT REFERENCE TABLE'

       node-jsonc-parser-3.2.0/LICENSE.md

       Copyright (c) Microsoft

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'

       node-jsonc-parser-3.2.0/README.md

       Copyright 2018, Microsoft

       See SECTION 66 in 'LICENSE TEXT REFERENCE TABLE'

       node-jsonc-parser-3.2.0/src/impl/edit.ts

       Copyright (c) Microsoft Corporation

       See SECTION 86 in 'LICENSE TEXT REFERENCE TABLE'

       node-jsonc-parser-3.2.0/src/impl/format.ts

       Copyright (c) Microsoft Corporation

       See SECTION 86 in 'LICENSE TEXT REFERENCE TABLE'

       node-jsonc-parser-3.2.0/src/impl/parser.ts

       Copyright (c) Microsoft Corporation

       See SECTION 86 in 'LICENSE TEXT REFERENCE TABLE'

       node-jsonc-parser-3.2.0/src/impl/scanner.ts

       Copyright (c) Microsoft Corporation

       See SECTION 86 in 'LICENSE TEXT REFERENCE TABLE'

       node-jsonc-parser-3.2.0/src/main.ts

       Copyright (c) Microsoft Corporation

       See SECTION 86 in 'LICENSE TEXT REFERENCE TABLE'

       node-jsonc-parser-3.2.0/src/test/edit.test.ts

       Copyright (c) Microsoft Corporation

       See SECTION 86 in 'LICENSE TEXT REFERENCE TABLE'

       node-jsonc-parser-3.2.0/src/test/format.test.ts

       Copyright (c) Microsoft Corporation

       See SECTION 86 in 'LICENSE TEXT REFERENCE TABLE'

       node-jsonc-parser-3.2.0/src/test/json.test.ts

       Copyright (c) Microsoft Corporation

       See SECTION 86 in 'LICENSE TEXT REFERENCE TABLE'


   >>> are-we-there-yet-3.0.1

       ISC License

       Copyright npm, Inc.

       Permission to use, copy, modify, and/or distribute this
       software for any purpose with or without fee is hereby
       granted, provided that the above copyright notice and this
       permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND NPM DISCLAIMS ALL
       WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
       IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
       EVENT SHALL NPM BE LIABLE FOR ANY SPECIAL, DIRECT,
       INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
       WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
       TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
       USE OR PERFORMANCE OF THIS SOFTWARE.



   >>> webpack-dev-middleware-5.3.3

       Found in: webpack-dev-middleware-5.3.3/LICENSE

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/plugin-proposal-nullish-coalescing-operator-7.18.6

       License : MIT


   >>> @babel/plugin-proposal-export-namespace-from-7.18.9



   >>> yargs-parser-21.1.1

       License : MIT


   >>> source-map-0.7.4

       
       Copyright (c) 2009-2011, Mozilla Foundation and contributors
       All rights reserved.

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:

       * Redistributions of source code must retain the above copyright notice, this
         list of conditions and the following disclaimer.

       * Redistributions in binary form must reproduce the above copyright notice,
         this list of conditions and the following disclaimer in the documentation
         and/or other materials provided with the distribution.

       * Neither the names of the Mozilla Foundation nor the names of project
         contributors may be used to endorse or promote products derived from this
         software without specific prior written permission.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
       ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
       WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
       DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
       FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
       DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
       SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
       CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
       OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
       OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


       ADDITIONAL LICENSE INFORMATION

       > BSD-3

       source-map-0.7.4/lib/array-set.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/lib/base64.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/lib/base64-vlq.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/lib/base64-vlq.js

       Copyright 2011 The Closure Compiler Authors

       See SECTION 45 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/lib/binary-search.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/lib/mapping-list.js

       Copyright 2014 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/lib/source-map-consumer.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/lib/source-map-generator.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/lib/source-node.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/lib/util.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/test/run-tests.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/test/test-api.js

       Copyright 2012 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/test/test-array-set.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/test/test-base64.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/test/test-base64-vlq.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/test/test-binary-search.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/test/test-dog-fooding.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/test/test-source-map-consumer.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/test/test-source-map-generator.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/test/test-source-node.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/test/test-util.js

       Copyright 2014 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/test/util.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 42 in 'LICENSE TEXT REFERENCE TABLE'

       > Unknown License file reference

       source-map-0.7.4/bench/self-source-map.js

       Copyright 2009-2011 Mozilla Foundation and contributors

       See SECTION 46 in 'LICENSE TEXT REFERENCE TABLE'

       source-map-0.7.4/source-map.js

       Copyright 2009-2011 Mozilla Foundation and contributors

       See SECTION 123 in 'LICENSE TEXT REFERENCE TABLE'


   >>> es5-ext-0.10.62

       Found in: package/LICENSE

       Copyright (c) 2011-2022, Mariusz Nowak, medikoo, medikoo.com

       ISC License

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/string/#/normalize/shim.js
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright (c) 2008 Matsuza

       See SECTION 119 in 'LICENSE TEXT REFERENCE TABLE'


   >>> ext-1.7.0

       Found in: package/LICENSE

       Copyright (c) 2011-2022, Mariusz Nowak, medikoo, medikoo.com

       ISC License


   >>> nopt-6.0.0

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       The ISC License


   >>> type-2.7.2

       Found in: package/LICENSE

       Copyright (c) 2019-2022, Mariusz Nowak, medikoo, medikoo.com

       ISC License


   >>> es6-set-0.1.6



   >>> follow-redirects-1.15.2

       Found in: package/LICENSE

       Copyright 2014-present Olivier Lalonde <olalonde@gmail.com> , James Talmage <james@talmage.io> , Ruben Verborgh

       Permission is hereby granted, free of charge, to any person obtaining a copy of
       this software and associated documentation files (the "Software"), to deal in
       the Software without restriction, including without limitation the rights to
       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
       of the Software, and to permit persons to whom the Software is furnished to do
       so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
       IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> multicast-dns-7.2.5

       Found in: package/LICENSE

       Copyright (c) 2015 Mathias Buus

       The MIT License (MIT)


   >>> inquirer-8.2.4

       Found in: package/LICENSE

       Copyright (c) 2022 Simon Boudrias

       Permission is hereby granted, free of charge, to any person
       obtaining a copy of this software and associated documentation
       files (the "Software"), to deal in the Software without
       restriction, including without limitation the rights to use,
       copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the
       Software is furnished to do so, subject to the following
       conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
       OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/README.md

       Copyright (c) 2022 Simon Boudrias (twitter vaxilart (https://twitter.com/Vaxilart))

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @leichtgewicht/ip-codec-2.0.4

       Found in: package/LICENSE

       Copyright (c) 2021 Martin Heidegger

       MIT.LICENSE


   >>> unicode-property-aliases-ecmascript-2.1.0

       Found in: unicode-property-aliases-ecmascript-2.1.0/LICENSE-MIT.txt

       Copyright Mathias Bynens <https://mathiasbynens.be/>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> cliui-8.0.1

       Found in: cliui-8.0.1/LICENSE.txt

       Copyright (c) 2015, Contributors

       Permission to use, copy, modify, and/or distribute this software
       for any purpose with or without fee is hereby granted, provided
       that the above copyright notice and this permission notice
       appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
       OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE
       LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
       OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
       WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
       ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> selfsigned-2.1.1



   >>> convert-source-map-1.9.0

       Found in: convert-source-map-1.9.0/LICENSE

       Copyright 2013 Thorsten Lorenz

       Permission is hereby granted, free of charge, to any person
       obtaining a copy of this software and associated documentation
       files (the "Software"), to deal in the Software without
       restriction, including without limitation the rights to use,
       copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the
       Software is furnished to do so, subject to the following
       conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
       OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/helper-define-polyfill-provider-0.3.3

       MIT License

       Copyright (c) 2020-present Nicolò Ribaudo and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


       ADDITIONAL LICENSE INFORMATION

       > MIT

       babel-polyfills--babel-helper-define-polyfill-provider-0.3.3/packages/babel-helper-define-polyfill-provider/LICENSE

       Copyright (c) 2014-present Nicolo Ribaudo and other contributors

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       babel-polyfills--babel-helper-define-polyfill-provider-0.3.3/packages/babel-plugin-polyfill-corejs2/LICENSE

       Copyright (c) 2014-present Nicolo Ribaudo and other contributors

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       babel-polyfills--babel-helper-define-polyfill-provider-0.3.3/packages/babel-plugin-polyfill-corejs3/LICENSE

       Copyright (c) 2014-present Nicolo Ribaudo and other contributors

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       babel-polyfills--babel-helper-define-polyfill-provider-0.3.3/packages/babel-plugin-polyfill-es-shims/LICENSE

       Copyright (c) 2014-present Nicolo Ribaudo and other contributors

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       babel-polyfills--babel-helper-define-polyfill-provider-0.3.3/packages/babel-plugin-polyfill-regenerator/LICENSE

       Copyright (c) 2014-present Nicolo Ribaudo and other contributors

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'


   >>> babel-plugin-polyfill-regenerator-0.4.1

       Found in: babel-polyfills-babel-plugin-polyfill-regenerator-0.4.1/LICENSE

       Copyright (c) 2020-present Nicolo Ribaudo and other contributors

       MIT.LICENSE

       ADDITIONAL LICENSE INFORMATION

       > MIT

       babel-polyfills-babel-plugin-polyfill-regenerator-0.4.1/packages/babel-helper-define-polyfill-provider/LICENSE

       Copyright (c) 2014-present Nicolo Ribaudo and other contributors

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       babel-polyfills-babel-plugin-polyfill-regenerator-0.4.1/packages/babel-plugin-polyfill-corejs2/LICENSE

       Copyright (c) 2014-present Nicolo Ribaudo and other contributors

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       babel-polyfills-babel-plugin-polyfill-regenerator-0.4.1/packages/babel-plugin-polyfill-corejs3/LICENSE

       Copyright (c) 2014-present Nicolo Ribaudo and other contributors

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       babel-polyfills-babel-plugin-polyfill-regenerator-0.4.1/packages/babel-plugin-polyfill-es-shims/LICENSE

       Copyright (c) 2014-present Nicolo Ribaudo and other contributors

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       babel-polyfills-babel-plugin-polyfill-regenerator-0.4.1/packages/babel-plugin-polyfill-regenerator/LICENSE

       Copyright (c) 2014-present Nicolo Ribaudo and other contributors

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'


   >>> connect-history-api-fallback-2.0.0

       Found in: connect-history-api-fallback-2.0.0/LICENSE

       Copyright (c) 2022 Ben Blackmore and contributors

       the MIT License

       ADDITIONAL LICENSE INFORMATION

       > MIT

       connect-history-api-fallback-2.0.0/examples/ignore-rules/assets/css/bootstrap.min.css

       Copyright 2011-2016 Twitter, Inc.

       See SECTION 17 in 'LICENSE TEXT REFERENCE TABLE'

       connect-history-api-fallback-2.0.0/examples/ignore-rules/assets/css/bootstrap-theme.min.css

       Copyright 2011-2016 Twitter, Inc.

       See SECTION 17 in 'LICENSE TEXT REFERENCE TABLE'

       connect-history-api-fallback-2.0.0/examples/static-files-and-index-rewrite/assets/css/bootstrap.min.css

       Copyright 2011-2016 Twitter, Inc.

       See SECTION 17 in 'LICENSE TEXT REFERENCE TABLE'

       connect-history-api-fallback-2.0.0/examples/static-files-and-index-rewrite/assets/css/bootstrap-theme.min.css

       Copyright 2011-2016 Twitter, Inc.

       See SECTION 17 in 'LICENSE TEXT REFERENCE TABLE'


   >>> copy-webpack-plugin-11.0.0

       Found in: copy-webpack-plugin-11.0.0/LICENSE

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> regenerate-unicode-properties-10.1.0

       Found in: regenerate-unicode-properties-10.1.0/LICENSE-MIT.txt

       Copyright Mathias Bynens <https://mathiasbynens.be/>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/core-7.19.3

       License - MIT


   >>> regjsparser-0.9.1

       Found in: regjsparser-0.9.1/LICENSE.BSD

       Copyright (c) Julian Viereck and Contributors

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:

         * Redistributions of source code must retain the above copyright
           notice, this list of conditions and the following disclaimer.
         * Redistributions in binary form must reproduce the above copyright
           notice, this list of conditions and the following disclaimer in the
           documentation and/or other materials provided with the distribution.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
       AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
       IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
       ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
       DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
       (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
       LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
       ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
       (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
       THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> body-parser-1.20.1

       Found in: body-parser-1.20.1/LICENSE

       Copyright (c) 2014-2015 Douglas Christopher Wilson <doug@somethingdoug.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       body-parser-1.20.1/index.js

       Copyright (c) 2014-2015 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       body-parser-1.20.1/lib/read.js

       Copyright (c) 2014-2015 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       body-parser-1.20.1/lib/types/json.js

       Copyright (c) 2014-2015 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       body-parser-1.20.1/lib/types/raw.js

       Copyright (c) 2014-2015 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       body-parser-1.20.1/lib/types/text.js

       Copyright (c) 2014-2015 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       body-parser-1.20.1/lib/types/urlencoded.js

       Copyright (c) 2014-2015 Douglas Christopher Wilson

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       body-parser-1.20.1/LICENSE

       Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>

       See SECTION 26 in 'LICENSE TEXT REFERENCE TABLE'


   >>> defaults-1.0.4

       Found in: node-defaults-1.0.4/LICENSE

       Copyright (c) 2015 Elijah Insua

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       node-defaults-1.0.4/LICENSE

       Copyright (c) 2022 Sindre Sorhus

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'


   >>> babel-plugin-polyfill-corejs2-0.3.3

       License : MIT


   >>> istanbul-lib-instrument-5.2.1



   >>> builtins-5.0.1

       Found in: builtins-5.0.1/License

       Copyright (c) 2015 Julian Gruber <julian@juliangruber.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> socks-2.7.1

       Found in: socks-2.7.1/LICENSE

       Copyright (c) 2013 Josh Glazebrook

       The MIT License (MIT)


   >>> semver-7.3.8



   >>> express-4.18.2



   >>> @messageformat/date-skeleton-1.0.1

       Found in: package/LICENSE

       Copyright OpenJS Foundation and contributors, https://openjsf.org

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @vcd/angular-client-0.0.2-alpha.9

       > Apache2.0

       package/bundles/vcd-angular-client.umd.js

       Copyright (c) Microsoft Corporation

       See SECTION 78 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/vcd-angular-client.umd.js.map

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/vcd-angular-client.umd.min.js

       Copyright (c) Microsoft Corporation

       See SECTION 71 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/vcd-angular-client.umd.min.js.map

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'


   >>> loader-utils-2.0.4

       Found in: package/LICENSE

       Copyright JS Foundation and other contributors





   >>> zone.js-0.12.0

       License : MIT


   >>> loader-utils-3.2.1

       Found in: package/LICENSE

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> anymatch-3.1.3

       Found in: package/LICENSE

       Copyright (c) 2019 Elan Shanker, Paul Miller (https://paulmillr.com)

       The ISC License


   >>> regenerator-runtime-0.13.11

       Found in: package/LICENSE

       Copyright (c) 2014-present, Facebook, Inc.

       MIT.LICENSE


   >>> yargs-17.6.2

       Found in: package/LICENSE

       Copyright 2014 Contributors (ben@npmjs.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright 2010 James Halliday (mail@substack.net)

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'


   >>> websocket-stream-5.5.2

       Found in: package/LICENSE

       Copyright (c) 2013, Max Ogden

       Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

       Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
       Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
        WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> hosted-git-info-6.1.1

       Found in: package/LICENSE

       Copyright (c) 2015, Rebecca Turner

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
       REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
       FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
       INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
       LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
       OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
       PERFORMANCE OF THIS SOFTWARE.


   >>> regenerator-transform-0.15.1

       License : MIT

       ADDITIONAL LICENSE INFORMATION

       > 0BSD

       regenerator-regenerator-transform-0.15.1/docs/bundle.js

       Copyright (c) Microsoft Corporation

       See SECTION 84 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-2

       regenerator-regenerator-transform-0.15.1/docs/bundle.js

       Copyright JS Foundation and other contributors, https://js.foundation

       See SECTION 65 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-3

       regenerator-regenerator-transform-0.15.1/docs/bundle.js

       Copyright 2009-2011 Mozilla Foundation and contributors

       See SECTION 140 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/docs/bundle.js

       Copyright 2011 The Closure Compiler Authors

       See SECTION 53 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/docs/bundle.js

       Copyright 2011 Mozilla Foundation and contributors

       See SECTION 52 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/docs/bundle.js

       Copyright 2014 Mozilla Foundation and contributors

       See SECTION 52 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       regenerator-regenerator-transform-0.15.1/docs/bundle.js

       Copyright Joyent, Inc. and other Node contributors

       See SECTION 77 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/docs/bundle.js

       (c) Sindre Sorhus

       See SECTION 34 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/docs/bundle.js

       Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell

       See SECTION 12 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/docs/bundle.js

       Copyright (c) 2009 Thomas Robinson <280north.com>

       See SECTION 12 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/docs/bundle.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 21 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/lib/util.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/lib/visit.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/main.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/packages/preset/index.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/packages/preset/LICENSE

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/packages/runtime/LICENSE

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/packages/runtime/path.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/packages/runtime/runtime.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/packages/transform/LICENSE

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 5 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/packages/transform/src/emit.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/packages/transform/src/hoist.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/packages/transform/src/index.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/packages/transform/src/leap.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/packages/transform/src/meta.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/packages/transform/src/replaceShorthandObjectMethod.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/packages/transform/src/util.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/packages/transform/src/visit.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/runtime.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'

       regenerator-regenerator-transform-0.15.1/runtime-module.js

       Copyright (c) 2014-present, Facebook, Inc.

       See SECTION 20 in 'LICENSE TEXT REFERENCE TABLE'


   >>> needle-3.2.0

       License : MIT

       ADDITIONAL LICENSE INFORMATION

       > MIT

       needle-3.2.0/lib/needle.js

       (c) 2012-2020 - Fork Ltd.

       See SECTION 16 in 'LICENSE TEXT REFERENCE TABLE'

       needle-3.2.0/license.txt

       Copyright (c) Fork, Ltd.

       See SECTION 18 in 'LICENSE TEXT REFERENCE TABLE'

       needle-3.2.0/README.md

       Copyright (c) Fork Ltd.

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'


   >>> unicode-match-property-value-ecmascript-2.1.0

       Copyright Mathias Bynens <https://mathiasbynens.be/>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> babel-plugin-polyfill-corejs3-0.6.0

       Found in: package/LICENSE

       Copyright (c) 2014-present Nicolo Ribaudo and other contributors

       MIT.LICENSE


   >>> autoprefixer-10.4.13

       Found in: package/LICENSE

       Copyright 2013 Andrey Sitnik <andrey@sitnik.ru>

       The MIT License (MIT)


   >>> @babel/preset-env-7.20.2

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> ajv-8.12.0

       Found in: package/LICENSE

       Copyright (c) 2015-2021 Evgeny Poberezkin

       The MIT License (MIT)


   >>> fastq-1.15.0

       Found in: package/LICENSE

       Copyright (c) 2015-2020, Matteo Collina <matteo.collina@gmail.com>

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
       OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> ignore-5.2.4

       Found in: package/LICENSE-MIT

       Copyright (c) 2013 Kael Zhang <i@kael.me>, contributors





   >>> ini-3.0.1

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       The ISC License


   >>> cosmiconfig-7.1.0

       Found in: package/LICENSE

       Copyright (c) 2015 David Clark

       The MIT License (MIT)


   >>> string-width-5.1.2

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       MIT.LICENSE


   >>> less-loader-11.1.0

       Found in: package/LICENSE

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/plugin-transform-runtime-7.19.6

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> has-proto-1.0.1

       MIT License

       Copyright (c) 2022 Inspect JS

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> json5-2.2.3

       MIT License

       Copyright (c) 2012-2018 Aseem Kishore, and [others].

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.

       [others]: https://github.com/json5/json5/contributors


   >>> babel-loader-9.1.2

       Copyright (c) 2014-2019 Luís Couto <hello@luiscouto.pt>

       MIT License

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> object-inspect-1.12.3

       MIT License

       Copyright (c) 2013 James Halliday

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> glob-8.1.0

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.





   >>> postcss-8.4.21

       Found in: package/LICENSE

       Copyright 2013 Andrey Sitnik <andrey@sitnik.ru>

       The MIT License (MIT)


   >>> tslib-2.5.0

       Found in: package/LICENSE.txt

       Copyright (c) Microsoft Corporation

       Permission to use, copy, modify, and/or distribute this software for any

       purpose with or without fee is hereby granted.

       

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH

       REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY

       AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,

       INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM

       LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR

       OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR

       PERFORMANCE OF THIS SOFTWARE.


   >>> punycode-2.3.0

       Found in: package/LICENSE-MIT.txt

       Copyright Mathias Bynens <https://mathiasbynens.be/>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> parse5-7.1.2

       Found in: package/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> browserslist-4.21.5

       Found in: package/LICENSE

       Copyright 2014 Andrey Sitnik <andrey@sitnik.ru> and other contributors

       The MIT License (MIT)


   >>> @babel/template-7.20.7

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/runtime-7.20.13

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/generator-7.20.14

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/core-7.20.12

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> minimist-1.2.8



   >>> content-type-1.0.5

       Found in: package/LICENSE

       Copyright (c) 2015 Douglas Christopher Wilson

       (The MIT License)


   >>> http-cache-semantics-4.1.1

       Found in: package/LICENSE

       Copyright 2016-2018 Kornel Lesinski

       Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

       1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

       2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
        WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> @types/trusted-types-2.0.3

       Found in: trusted-types/LICENSE

       Copyright (c) Microsoft Corporation

           MIT License


   >>> validate-npm-package-name-5.0.0

       Found in: package/LICENSE

       Copyright (c) 2015, npm, Inc

       Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> npm-bundled-3.0.0

       Found in: package/LICENSE

       Copyright (c) npm, Inc. and Contributors

       The ISC License


   >>> minimatch-5.1.6

       Found in: package/LICENSE

       Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors

       The ISC License


   >>> read-package-json-fast-3.0.2

       Found in: package/LICENSE

       Copyright (c) npm, Inc. and Contributors

       The ISC License


   >>> unique-slug-4.0.0

       Found in: package/LICENSE

       Copyright npm, Inc

       The ISC License


   >>> magic-string-0.27.0

       Found in: package/LICENSE

       Copyright 2018 Rich Harris

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
        subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> npm-pick-manifest-8.0.1

       Found in: package/LICENSE.md

       Copyright (c) npm, Inc.

       ISC License


   >>> npm-packlist-7.0.4

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       The ISC License


   >>> normalize-package-data-5.0.0

       Found in: package/README.md

       Copyright (c) 2013 Meryn Stol

       BSD 2-Clause License](https://opensource.org/licenses/BSD-2-Clause).

       ADDITIONAL LICENSE INFORMATION

       > Unknown License file reference

       package/LICENSE

       Copyright (c) Meryn Stol 'Author

       See SECTION 33 in 'LICENSE TEXT REFERENCE TABLE'


   >>> json-parse-even-better-errors-3.0.0

       Found in: package/LICENSE.md

       Copyright npm, Inc.

       Permission is hereby granted, free of charge, to any person obtaining a
       copy of this software and associated documentation files (the "Software"),
       to deal in the Software without restriction, including without limitation
       the rights to use, copy, modify, merge, publish, distribute, sublicense,
       and/or sell copies of the Software, and to permit persons to whom the
       Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
       DEALINGS IN THE SOFTWARE.


   >>> npm-package-arg-10.1.0

       Found in: package/LICENSE

       Copyright (c) npm, Inc.

       The ISC License


   >>> @npmcli/promise-spawn-6.0.2

       Found in: package/LICENSE

       Copyright (c) npm, Inc.

       The ISC License


   >>> proc-log-3.0.0

       Found in: package/LICENSE

       Copyright (c) GitHub, Inc.

       The ISC License


   >>> @npmcli/node-gyp-3.0.0



   >>> @npmcli/fs-3.1.0

       Found in: package/lib/cp/LICENSE

       Copyright (c) 2011-2017 JP Richardson

       (The MIT License)

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE.md

       Copyright npm, Inc.

       See SECTION 7 in 'LICENSE TEXT REFERENCE TABLE'


   >>> cacache-17.0.4

       Found in: package/LICENSE.md

       Copyright (c) npm, Inc.

       ISC License


   >>> unique-filename-3.0.0

       Found in: package/LICENSE

       Copyright npm, Inc

       Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> serialize-javascript-6.0.1

       Found in: package/LICENSE

       Copyright 2014 Yahoo! Inc.

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:

           * Redistributions of source code must retain the above copyright
             notice, this list of conditions and the following disclaimer.

           * Redistributions in binary form must reproduce the above copyright
             notice, this list of conditions and the following disclaimer in the
             documentation and/or other materials provided with the distribution.

           * Neither the name of the Yahoo! Inc. nor the
             names of its contributors may be used to endorse or promote products
             derived from this software without specific prior written permission.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
       ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
       WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
       DISCLAIMED. IN NO EVENT SHALL YAHOO! INC. BE LIABLE FOR ANY
       DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
       (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
       LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
       ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
       (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
       SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> terser-5.16.3



   >>> minipass-3.3.6

       Found in: package/LICENSE

       Copyright (c) 2017-2022 npm, Inc., Isaac Z. Schlueter, and Contributors

       The ISC License


   >>> klona-2.0.6

       Found in: package/license

       Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)

       MIT.LICENSE


   >>> aws4-1.12.0

       Found in: package/LICENSE

       Copyright 2013 Michael Hart (michael.hart.au@gmail.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of
       this software and associated documentation files (the "Software"), to deal in
       the Software without restriction, including without limitation the rights to
       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
       of the Software, and to permit persons to whom the Software is furnished to do
       so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> @babel/plugin-transform-async-to-generator-7.20.7

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/plugin-proposal-logical-assignment-operators-7.20.7

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/plugin-proposal-object-rest-spread-7.20.7

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/plugin-proposal-async-generator-functions-7.20.7

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> readable-stream-2.3.8

       Found in: package/LICENSE

       Copyright Joyent, Inc. and other Node contributors

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to
       deal in the Software without restriction, including without limitation the
       rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
       sell copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
       IN THE SOFTWARE.


   >>> graceful-fs-4.2.11

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter, Ben Noordhuis, and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.





   >>> readable-stream-3.6.2

       Found in: package/LICENSE

       Copyright Joyent, Inc. and other Node contributors

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to
       deal in the Software without restriction, including without limitation the
       rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
       sell copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
       IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/lib/_stream_duplex.js

       Copyright Joyent, Inc. and other Node contributors

       See SECTION 24 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/_stream_passthrough.js

       Copyright Joyent, Inc. and other Node contributors

       See SECTION 24 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/_stream_readable.js

       Copyright Joyent, Inc. and other Node contributors

       See SECTION 24 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/_stream_transform.js

       Copyright Joyent, Inc. and other Node contributors

       See SECTION 24 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/_stream_writable.js

       Copyright Joyent, Inc. and other Node contributors

       See SECTION 24 in 'LICENSE TEXT REFERENCE TABLE'


   >>> ws-8.13.0

       Found in: package/LICENSE

       Copyright (c) 2016 Luigi Pinca and contributors

       Permission is hereby granted, free of charge, to any person obtaining a copy of
       this software and associated documentation files (the "Software"), to deal in
       the Software without restriction, including without limitation the rights to
       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
       the Software, and to permit persons to whom the Software is furnished to do so,
       subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
       FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
       COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
       IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
       CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/plugin-proposal-class-static-block-7.21.0

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/plugin-proposal-optional-chaining-7.21.0

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/regjsgen-0.8.0

       Found in: package/LICENSE-MIT.txt

       Copyright 2014-2020 Benjamin Tan <https://ofcr.se/>

       The MIT License (MIT)

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/regjsgen.js
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright 2014-2020 Benjamin Tan <https://ofcr.se/>

       See SECTION 120 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @cds/core-6.3.1

       Found in: package/icon/shapes/replay-all.js.map

       Copyright (c) 2016-2023 VMware, Inc.

        * This software is released under MIT license.
        * The full license information can be found in LICENSE in the root directory of this project.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/accordion/accordion-content.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/accordion/accordion.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/accordion/accordion-header.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/accordion/accordion-panel.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/accordion/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/alert/alert-actions.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/alert/alert.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/alert/alert-group.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/alert/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/badge/badge.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/badge/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/breadcrumb/breadcrumb.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/breadcrumb/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/button-action/button-action.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/button-action/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/button/button.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/button-expand/button-expand.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/button-expand/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/button-handle/button-handle.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/button-handle/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/button/icon-button.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/button-inline/button-inline.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/button-inline/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/button/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/button-sort/button-sort.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/button-sort/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/button-sort/utils.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/card/card.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/card/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/checkbox/checkbox.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/checkbox/checkbox-group.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/checkbox/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/datalist/datalist.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/datalist/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/date/date.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/date/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/demo/data/demo.service.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/demo/data/food.data.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/demo/data/infrastructure.data.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/demo/data/system.data.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/demo/index.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/demo/utils.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/divider/divider.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/divider/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/dropdown/dropdown.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/dropdown/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/file/file.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/file/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/forms/control-action/control-action.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/forms/control/control.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/forms/control-group/control-group.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/forms/control-inline/control-inline.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/forms/control-label/control-label.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/forms/control-message/control-message.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/forms/form-group/form-group.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/forms/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/forms/utils/utils.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/forms/utils/validate.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/global.css

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/grid/cell/grid-cell.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/grid/column/grid-column.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/grid/column/grid-column-position.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/grid/column/grid-column-size.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/grid/detail/grid-detail.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/grid/footer/grid-footer.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/grid/grid/grid.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/grid/grid/grid-layout.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/grid/pagination/grid-pagination.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/grid/placeholder/grid-placeholder.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/grid/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/grid/row/grid-row.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/grid/row/grid-row-position.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/collections/chart.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/collections/commerce.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/collections/core.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/collections/essential.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/collections/media.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/collections/mini.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/collections/social.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/collections/technology.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/collections/text-edit.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/collections/travel.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/icon.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/icon.renderer.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/icon.service.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/accessibility-1.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/accessibility-2.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/add-text.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/administrator.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/airplane.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/alarm-clock.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/alarm-off.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/align-bottom.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/align-center.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/align-left.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/align-left-text.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/align-middle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/align-right.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/align-right-text.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/align-top.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/angle-double.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/angle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/animation.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/announcement.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/application.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/applications.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/archive.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/arrow.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/arrow-mini.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/assign-user.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/asterisk.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/atom.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/axis-chart.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/backup.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/backup-restore.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/ban.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bank.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bar-chart.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bar-code.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bars.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/battery.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bell-curve.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bell.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/beta.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bicycle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/birthday-cake.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bitcoin.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/block.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/block-quote.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/blocks-group.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bluetooth.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bluetooth-off.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/boat.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bold.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bolt.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/book.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bookmark.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/box-plot.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/briefcase.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bubble-chart.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bubble-exclamation.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bug.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/building.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bullet-list.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bullseye.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/bundle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/calculator.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/calendar.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/calendar-mini.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/camera.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/campervan.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/capacitor.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/caravan.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/car.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/cd-dvd.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/center-text.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/certificate.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/chat-bubble.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/checkbox-list.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/check-circle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/check-circle-mini.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/check.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/check-mini.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/child-arrow.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/ci-cd.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/circle-arrow.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/circle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/clipboard.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/clock.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/clone.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/cloud-chart.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/cloud.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/cloud-network.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/cloud-scale.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/cloud-traffic.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/cluster.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/code.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/cog.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/coin-bag.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/collapse-card.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/color-palette.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/color-picker.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/compass.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/computer.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/connect.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/container.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/container-volume.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/contract.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/control-lun.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/copy.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/copy-to-clipboard.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/cpu.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/credit-card.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/crosshairs.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/crown.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/cursor-arrow.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/cursor-hand-click.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/cursor-hand-grab.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/cursor-hand.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/cursor-hand-open.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/cursor-move.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/curve-chart.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/dashboard.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/data-cluster.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/deploy.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/detail-collapse.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/detail-expand.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/details.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/devices.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/digital-signature.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/disconnect.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/display.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/dollar-bill.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/dollar.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/dot-circle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/download-cloud.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/download.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/drag-handle-corner.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/drag-handle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/e-check.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/ellipsis-horizontal.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/ellipsis-vertical.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/employee-group.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/employee.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/envelope.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/eraser.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/error-mini.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/error-standard.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/euro.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/event.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/event-mini.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/exclamation-circle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/exclamation-triangle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/expand-card.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/export.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/eye-hide.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/eye.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/factory.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/fast-forward.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/ferry.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/file-group.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/file.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/file-settings.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/file-share-2.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/file-share.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/file-zip.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/film-strip.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/filter-2.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/filter-grid-circle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/filter-grid-circle-mini.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/filter-grid.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/filter-grid-mini.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/filter.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/filter-off.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/firewall.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/first-aid.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/fish.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/flag.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/flame.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/flask.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/floppy.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/folder.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/folder-open.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/font-size.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/forking.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/form.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/fuel.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/gavel.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/grid-chart.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/grid-view.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/half-star.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/happy-face.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/hard-disk.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/hard-drive-disks.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/hard-drive.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/hashtag.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/headphones.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/heart-broken.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/heart.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/heat-map.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/helix.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/help-info.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/help.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/highlighter.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/history.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/home.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/host-group.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/host.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/hourglass.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/id-badge.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/image-gallery.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/image.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/import.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/inbox.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/indent.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/inductor.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/info-circle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/info-circle-mini.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/info-standard.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/install.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/internet-of-things.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/italic.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/justify-text.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/keyboard.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/key.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/landscape.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/language.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/launchpad.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/layers.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/library.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/lightbulb.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/line-chart.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/link.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/list.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/lock.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/login.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/logout.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/map.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/map-marker.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/media-changer.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/memory.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/microphone.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/microphone-mute.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/minus-circle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/minus.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/mobile.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/moon.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/mouse.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/music-note.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/namespace.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/network-globe.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/network-settings.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/network-switch.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/neutral-face.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/new.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/no-access.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/node-group.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/node.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/nodes.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/note.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/no-wifi.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/number-list.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/nvme.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/objects.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/on-holiday.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/organization.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/outdent.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/paint-roller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/paperclip.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/paste.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/pause.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/pdf-file.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/pencil.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/peso.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/phone-handset.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/picture.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/pie-chart.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/piggy-bank.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/pinboard.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/pin.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/play.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/plugin.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/plus-circle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/plus.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/pod.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/pop-out.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/portrait.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/pound.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/power.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/printer.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/process-on-vm.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/qr-code.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/rack-server.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/radar.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/recycle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/redo.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/refresh.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/repeat.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/replay-one.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/resistor.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/resize.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/resource-pool.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/rewind.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/router.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/ruble.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/ruler-pencil.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/rupee.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/sad-face.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/scatter-plot.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/scissors.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/script-execute.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/script-schedule.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/scroll.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/search.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/share.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/shield-check.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/shield.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/shield-x.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/shopping-bag.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/shopping-cart.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/shrink.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/shuffle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/slider.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/snowflake.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/sort-by.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/squid.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/ssd.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/star.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/step-forward-2.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/step-forward.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/stop.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/storage-adapter.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/storage.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/store.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/strikethrough.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/subscript.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/success-standard.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/sun.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/superscript.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/switch.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/sync.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/table.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/tablet.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/tag.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/tags.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/talk-bubbles.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/tape-drive.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/target.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/tasks.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/terminal.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/text-color.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/text.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/thermometer.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/thin-client.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/thumbs-down.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/thumbs-up.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/tick-chart.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/timeline.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/times-circle.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/times.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/times-mini.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/tools.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/trailer.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/trash.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/tree.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/tree-view.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/truck.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/two-way-arrows.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/unarchive.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/underline.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/undo.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/uninstall.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/unknown.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/unknown-status.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/unlink.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/unlock.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/unpin.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/update.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/upload-cloud.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/upload.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/usb.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/user.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/users.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/video-camera.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/video-gallery.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/view-cards.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/view-columns.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/view-list.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/vm-bug-inverse.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/vm-bug.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/vm.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/vmw-app.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/volume-down.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/volume.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/volume-mute.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/volume-up.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/wallet.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/wand.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/warning-mini.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/warning-standard.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/wifi.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/window-close.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/window-max.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/window-min.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/window-restore.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/won.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/world.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/wrench.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/xls-file.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/yen.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/zoom-in.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/shapes/zoom-out.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/utils/icon.classnames.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/icon/utils/icon.svg-helpers.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/input/index.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/input/input.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/input/input-group.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/input/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/base/button.base.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/base/focus-trap.base.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal-components/close-button/close-button.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal-components/close-button/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal-components/overlay/overlay.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal-components/overlay/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal-components/panel/panel.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal-components/panel/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal-components/popup/pointer.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal-components/popup/popup.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal-components/popup/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal-components/popup/utils/pointer.utils.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal-components/split-handle/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal-components/split-handle/split-handle.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal-components/visual-checkbox/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal-components/visual-checkbox/visual-checkbox.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/active.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/aria-button.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/aria-disabled.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/aria-expanded.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/aria-grid.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/aria-modal.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/aria-multiselectable.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/aria-popup.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/aria-popup-trigger.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/aria-pressed.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/aria-selected.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/button-anchor.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/button-submit.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/closable.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/draggable-list.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/first-focus.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/grid-range-selection.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/inline-focus-trap.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/key-navigation-grid.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/key-navigation-list.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/key-navigation.utils.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/layer.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/responsive.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/scrollable-list-visibility.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/touch.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/controllers/trigger.controller.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/decorators/animate.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/decorators/element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/decorators/event.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/decorators/global-style.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/decorators/i18n.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/decorators/id.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/decorators/property.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/decorators/query-slot.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/decorators/utils.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/directives/spread-props.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/i18n/utils.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/index.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/motion/animations/cds-accordion-panel-open.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/motion/animations/cds-component-shake.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/motion/animations/cds-dropdown-open.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/motion/animations/cds-modal-enter.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/motion/animations/cds-navigation-group-open.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/motion/animations/cds-navigation-open.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/motion/animations/cds-overlay-hinge-example.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/motion/animations/cds-tree-item-expand.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/motion/animations/keyframes/fade-in-and-slide-down.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/motion/animations/keyframes/fade-in.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/motion/animations/keyframes/hinge.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/motion/animations/keyframes/shake.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/motion/interfaces.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/motion/motion.service.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/motion/utils.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/positioning/interfaces.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/positioning/utils.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/services/focus-trap-tracker.service.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/services/global.service.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/services/i18n.service.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/services/keycodes.service.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/services/log.service.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/a11y.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/array.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/async.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/browser.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/color.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/conditional.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/css.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/dom.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/enum.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/environment.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/events.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/event-subject.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/exists.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/focus.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/framework.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/global.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/identity.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/__.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/keycodes.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/lit.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/math.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/metadata.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/registration.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/responsive.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/size.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/string.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/supports.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/internal/utils/traversal.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/list/list.css

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/modal/modal-actions.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/modal/modal-content.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/modal/modal.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/modal/modal-header-actions.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/modal/modal-header.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/modal/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/navigation/navigation.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/navigation/navigation-group.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/navigation/navigation-item.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/navigation/navigation-start.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/navigation/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/navigation/utils/utils.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/pagination/pagination-button.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/pagination/pagination.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/pagination/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/pagination/utils.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/password/password.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/password/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/polyfills/aria-reflect.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/polyfills/at.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/progress-circle/progress-circle.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/progress-circle/progress-circle.utils.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/progress-circle/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/radio/radio.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/radio/radio-group.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/radio/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/range/range.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/range/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/search/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/search/search.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/selection-panels/checkbox/checkbox-panel.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/selection-panels/checkbox/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/selection-panels/radio/radio-panel.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/selection-panels/radio/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/select/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/select/select.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/signpost/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/signpost/signpost.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/styles/module.layout.css

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/styles/module.reset.css

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/styles/module.typography.css

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/styles/theme.dark.css

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/styles/theme.high-contrast.css

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/styles/theme.low-motion.css

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/table/table.css

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/tag/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/tag/tag.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/test-dropdown/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/textarea/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/textarea/textarea.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/time/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/time/time.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/toggle/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/toggle/toggle.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/toggle/toggle-group.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/tree-view/register.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/tree-view/tree.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/tree-view/tree-item.element.js.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @types/express-4.17.17

       Found in: express/LICENSE

       Copyright (c) Microsoft Corporation

           MIT License


   >>> node-gyp-build-4.6.0

       Found in: package/LICENSE

       Copyright (c) 2017 Mathias Buus

       The MIT License (MIT)


   >>> css-loader-6.7.3

       Found in: package/LICENSE

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> mini-css-extract-plugin-2.7.2

       Found in: package/LICENSE

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> webpack-dev-server-4.11.1

       Found in: package/LICENSE

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> resolve-1.22.2

       Found in: package/LICENSE

       Copyright (c) 2012 James Halliday

       MIT.LICENSE


   >>> @webcomponents/webcomponentsjs-2.8.0

       # License

       Everything in this repo is BSD style license unless otherwise specified.

       Copyright (c) 2015 The Polymer Authors. All rights reserved.

       Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

       * Redistributions of source code must retain the above copyright
       notice, this list of conditions and the following disclaimer.
       * Redistributions in binary form must reproduce the above
       copyright notice, this list of conditions and the following disclaimer
       in the documentation and/or other materials provided with the
       distribution.
       * Neither the name of Google Inc. nor the names of its
       contributors may be used to endorse or promote products derived from
       this software without specific prior written permission.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> entities-4.5.0

       Copyright (c) Felix Böhm
       All rights reserved.

       Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

       Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

       Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

       THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
       EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


   >>> minipass-4.2.8

       The ISC License

       Copyright (c) 2017-2023 npm, Inc., Isaac Z. Schlueter, and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> @lit-labs/ssr-dom-shim-1.1.1

       > BSD-3

       package/index.js

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/index.js.map

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/element-internals.js

       Copyright 2023 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/element-internals.js.map

       Copyright 2023 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'


   >>> lit-element-3.3.2

       > BSD-3

       package/decorators/custom-element.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/event-options.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/property.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/query-all.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/query-assigned-elements.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/query-assigned-nodes.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/query-async.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/query.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/state.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/custom-element.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/custom-element.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/custom-element.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/event-options.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/event-options.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/event-options.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/property.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/property.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/property.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-all.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-all.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-all.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-assigned-elements.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-assigned-elements.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-assigned-elements.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-assigned-nodes.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-assigned-nodes.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-assigned-nodes.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-async.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-async.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-async.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/state.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/state.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/state.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/experimental-hydrate-support.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/experimental-hydrate-support.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/experimental-hydrate-support.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/index.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/index.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/index.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/lit-element.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/lit-element.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/lit-element.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/polyfill-support.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/polyfill-support.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/polyfill-support.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/private-ssr-support.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/private-ssr-support.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/private-ssr-support.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/experimental-hydrate-support.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/experimental-hydrate-support.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/experimental-hydrate-support.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/index.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/index.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/index.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/lit-element.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/lit-element.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/lit-element.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/polyfill-support.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/polyfill-support.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/polyfill-support.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/private-ssr-support.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/private-ssr-support.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/private-ssr-support.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @jridgewell/gen-mapping-0.3.3

       Copyright 2022 Justin Ridgewell <jridgewell@google.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> @jridgewell/sourcemap-codec-1.4.15

       The MIT License

       Copyright (c) 2015 Rich Harris

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> @jridgewell/trace-mapping-0.3.18

       Copyright 2022 Justin Ridgewell <justin@ridgewell.name>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> nanoid-3.3.6

       Found in: package/LICENSE

       Copyright 2017 Andrey Sitnik <andrey@sitnik.ru>

       The MIT License (MIT)


   >>> update-browserslist-db-1.0.11

       Found in: package/LICENSE

       Copyright 2022 Andrey Sitnik <andrey@sitnik.ru> and other contributors

       The MIT License (MIT)


   >>> minipass-5.0.0

       Found in: package/LICENSE

       Copyright (c) 2017-2023 npm, Inc., Isaac Z. Schlueter, and Contributors

       The ISC License


   >>> spdx-license-ids-3.0.13

       License : CC0-1.0


   >>> colorette-2.0.20

       Found in: package/LICENSE.md

       Copyright (c) Jorge Bucaran <https://jorgebucaran.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
        subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @angular-devkit/build-angular-15.2.8

       Found in: angular-cli-main/LICENSE

       Copyright (c) 2017 Google, Inc.

       the MIT License

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       angular-cli-main/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.d.ts

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.js

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015, Salesforce.com, Inc.

       See SECTION 80 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Kyle E. Mitchell

       See SECTION 11 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2010 LearnBoost <dev@learnboost.com>

       See SECTION 2 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-2

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Joyent, Inc.

       See SECTION 95 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright JS Foundation and other contributors, https://js.foundation

       See SECTION 65 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-3

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2013, Yahoo! Inc.

       See SECTION 107 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015, Salesforce.com, Inc.

       See SECTION 122 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       angular-cli-main/bin/architect

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/benchmark

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/devkit-admin

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/ng

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/schematics

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.eslintrc.json

       Copyright Google LLC

       See SECTION 109 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/lib/bootstrap-local.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/lib/packages.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/bin/bootstrap.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/bin/ng.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/lib/cli/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/lib/init.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/analytics/analytics-collector.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/analytics/analytics-parameters.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/analytics/analytics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/architect-base-command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/architect-command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/command-runner.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/schematics-command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/command.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/json-help.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/json-schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/normalize-options-middleware.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/schematic-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/schematic-workflow.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/add/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/analytics/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/analytics/info/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/analytics/settings/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/build/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/clean/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/info/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/settings/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/utilities.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/command-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/completion/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/config/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/deploy/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/doc/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/e2e/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/extract-i18n/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/generate/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/lint/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/make-this-awesome/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/new/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/run/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/serve/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/update/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/update/schematic/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/update/schematic/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/version/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/typings-bazel.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/typings.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/color.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/completion.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/environment-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/error.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/find-up.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/json-file.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/log-file.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/memoize_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/memoize.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/package-manager.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/package-metadata.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/package-tree.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/project.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/prompt.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/spinner.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/tty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/version.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/create/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/create/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/all-of.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/concat.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/false.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/true.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect_cli/bin/architect.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect_cli/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect_cli/src/progress.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/jobs/job-registry_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/jobs/job-registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/node-modules-architect-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/api_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/api.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/architect.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/create-builder.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/internal.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/api.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/create-job-handler.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/dispatcher_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/dispatcher.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/exception.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/fallback-registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-registry_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-scheduler_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-scheduler.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/strategy_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/strategy.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/types.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/schedule-by-name.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/testing/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/testing/testing-architect-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/benchmark/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/benchmark/src/command.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/benchmark/src/default-reporter.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/benchmark/src/default-stats-capture_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/benchmark/src/default-stats-capture.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/benchmark/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/benchmark/src/interfaces.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/benchmark/src/main_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/benchmark/src/main.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/benchmark/src/monitored-process_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/benchmark/src/monitored-process.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/benchmark/src/run-benchmark.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/benchmark/src/run-benchmark-watch.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/benchmark/src/utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/plugins/karma.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel/babel-loader.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel-bazel.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel/plugins/adjust-static-class-members_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel/plugins/adjust-static-class-members.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel/plugins/adjust-typescript-enums_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel/plugins/adjust-typescript-enums.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel/plugins/elide-angular-metadata_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel/plugins/elide-angular-metadata.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel/plugins/pure-toplevel-functions_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel/plugins/pure-toplevel-functions.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel/presets/application.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel/webpack-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/app-shell/app-shell_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/app-shell/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/app-shell/render-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/angular/angular-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/angular/angular-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/angular/aot-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/angular/compiler-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/angular/diagnostics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/angular/jit-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/angular/jit-plugin-callbacks.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/angular/jit-resource-transformer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/angular/uri.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/builder-status-warnings.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/commonjs-checker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/esbuild.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/global-scripts.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/global-styles.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/javascript-transformer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/javascript-transformer-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/license-extractor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/load-result-cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/profiling.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/sourcemap-ignorelist-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/stylesheets/bundle-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/stylesheets/css-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/stylesheets/css-resource-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/stylesheets/less-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/stylesheets/sass-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/watcher.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/allow-js_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/aot_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/base-href_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/build-optimizer_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/cross-origin_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/deploy-url_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/errors_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/font-optimization_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/lazy-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/no-entry-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/optimization-level_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/output-path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/poll_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/rebuild_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/replacements_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/resolve-json-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/resources-output-path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/scripts-array_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/service-worker_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/source-map_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/stats-json_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/styles_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/svg_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/tsconfig-paths_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/unused-files-warning_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/vendor-chunk_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/vendor-source-map_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/web-worker_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/builder.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/load-proxy-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/hmr_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/vite-server.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/empty-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/ivy-extract-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/jest/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/jest/jest-global.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/jest/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/karma/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/ng-packagr/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/ng-packagr/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/protractor/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/protractor/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/server/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/server/platform-server-exports-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/sass/rebasing-importer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/sass/sass-service-legacy.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/sass/sass-service.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/sass/worker-legacy.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/sass/worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/builder-harness_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/builder-harness.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/file-watching.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/jasmine-helpers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/transforms.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/typings.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/action-executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/build-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/bundle-calculator_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/bundle-calculator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/bundle-inline-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/check-port.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/color.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/copy-assets.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/default-progress.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/delete-output-dir.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/environment-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/error.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/esbuild-targets.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/i18n-inlining.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/i18n-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/augment-index-html_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/augment-index-html.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/html-rewriting-stream.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/index-html-generator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-critical-css_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-critical-css.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-fonts_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-fonts.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/style-nonce_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/style-nonce.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/load-esm.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/load-translations.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-asset-patterns.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-builder-schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-file-replacements.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-optimization.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-polyfills.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-source-maps.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/output-paths.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/package-chunk-sort.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/package-version.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/process-bundle.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/purge-cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/read-tsconfig.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/run-module-as-observable-fork.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/run-module-worker.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/service-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/spinner.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/strip-bom.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/supported-browsers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/tailwind.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/tty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/url_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/url.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/version.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/webpack-browser-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/webpack-diagnostics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/configs/common.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/configs/dev-server.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/configs/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/configs/styles.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/any-component-style-budget-checker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/builder-watch-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/common-js-usage-warn-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/css-optimizer-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/dedupe-module-resolve-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/devtools-ignore-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/esbuild-executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/hmr/hmr-accept.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/hmr/hmr-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/index-html-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/javascript-optimizer-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/javascript-optimizer-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/json-stats-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/karma/karma.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/named-chunks-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/occurrences-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/postcss-cli-resources.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/progress-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/remove-hash-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/scripts-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/service-worker-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/styles-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/suppress-entry-chunks-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/transfer-size-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/typescript.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/plugins/watch-files-logs-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/utils/async-chunks.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/utils/helpers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/webpack/utils/stats.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack-dev-server/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack-dev-server/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/cli-logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/testing/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/exception.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/pointer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/prompt_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/registry_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/transforms_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/transforms.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/utility.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/visitor_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/visitor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/indent_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/indent.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/level.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/logger_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/null-logger_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/null-logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/transform-logger_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/transform-logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/lang.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/literals_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/literals.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/object_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/object.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/partially-ordered-set_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/partially-ordered-set.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/priority-queue_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/priority-queue.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/strings.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/template.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/alias_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/alias.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/buffer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/create.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/empty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/memory_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/memory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/pattern_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/pattern.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/record_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/record.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/resolver.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/safe.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/scoped.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/sync.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/path.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/core_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/core.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/definitions_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/definitions.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/metadata.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/reader_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/reader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/utilities.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/writer_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/writer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/bin/schematics_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/bin/schematics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/blank/factory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/schematic/factory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/engine.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/schematic_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/schematic.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/exception/exception.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/format-validator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/html-selector_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/html-selector.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/path.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/base_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/base.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/call_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/call.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/move_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/move.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/random.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/schematic.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/template_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/template.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/url.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/dryrun_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/dryrun.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/sink.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/action_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/action.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/common_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/delegate.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/empty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/entry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/host-tree_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/host-tree.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/null.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/recorder_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/recorder.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/scoped_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/scoped.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/static.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/utility/update-buffer_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/utility/update-buffer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/workflow/base.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/workflow/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/workflow/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/node/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/node/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/install-task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/link-task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/repo-init/executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/repo-init/init-task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/repo-init/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/run-schematic/executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/run-schematic/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/run-schematic/task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/testing/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/description.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/export-ref_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/export-ref.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/fallback-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-engine-host-base.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-engine-host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-utility.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/node-module-engine-host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/node-module-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/schema-option-transform.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/workflow/node-workflow_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/workflow/node-workflow.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/pwa/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/pwa/pwa/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/pwa/pwa/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/benchmark.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/diagnostics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/paths.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/symbol.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/system.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/transformation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/loaders/inline-resource.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/paths-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/resource_loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/elide_imports_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/elide_imports.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/remove-ivy-jit-support-calls_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/remove-ivy-jit-support-calls.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/replace_resources_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/replace_resources.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/spec_helpers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/application/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/application/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/app-shell/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/app-shell/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/class/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/class/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/component/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/component/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/config/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/config/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/directive/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/directive/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/e2e/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/e2e/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/enum/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/enum/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/environments/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/environments/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/guard/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/guard/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interceptor/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interceptor/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interface/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interface/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/library/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/library/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/remove-default-project-option_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/remove-default-project-option.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/replace-default-collection-option_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/replace-default-collection-option.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/update-server-builder-config_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/update-server-builder-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/module/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/module/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/ng-new/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/ng-new/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/no_typescript_runtime_dep_spec.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/pipe/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/pipe/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/private/components.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/private/standalone_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/private/standalone.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/resolver/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/resolver/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service-worker/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service-worker/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/universal/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/universal/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/add-declaration-to-ng-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/ast-utils_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/ast-utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/change.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependencies_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependencies.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependency_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependency.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/find-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/find-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/generate-from-files.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/json-file.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/latest-versions.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/ng-ast-utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/parse-name_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/parse-name.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/paths_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/paths.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/project-targets.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/validation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/workspace-models.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/workspace_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/workspace.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/web-worker/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/web-worker/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/workspace/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/workspace/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/build-packages-dist.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/build-schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/build.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/create.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/json-help.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/release-checks/dependency-ranges/index.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/release-checks/dependency-ranges/latest-versions-check.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/release-checks/dependency-ranges/peer-deps-check.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/snapshots.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/templates.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate-build-files.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate-licenses.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate-user-analytics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/link_package_json_to_tarballs.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/ng_cli_schema_generator.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/ng_cli_schema_generator.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/package_json_release_filter.jq

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/quicktype_runner.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/snapshot_repo_filter.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/ts_json_schema.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015-2016, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2013-present, Facebook, Inc.

       See SECTION 21 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright jQuery Foundation and other contributors <https://jquery.org/>

       See SECTION 43 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2007 Kris Zyp SitePen (www.sitepen.com)

       See SECTION 93 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright Joyent, Inc. and other Node contributors

       See SECTION 56 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014 Jonathan Ong

       See SECTION 64 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       (c) Sindre Sorhus

       See SECTION 34 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2011-2017 KARASZI Istvan <github@spam.raszi.hu>

       See SECTION 62 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2016, Joyent Inc

       See SECTION 8 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright JS Foundation and other contributors <https://js.foundation/>

       See SECTION 43 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors

       See SECTION 44 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>

       See SECTION 44 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors

       See SECTION 54 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014 Jon Schlinkert

       See SECTION 19 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015-2018, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) Marak Squires

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015 Jed Watson

       See SECTION 62 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014-2017, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015 Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015 Douglas Christopher Wilson

       See SECTION 62 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014-2015, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015-2017, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Joyent, Inc.

       See SECTION 12 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2010-2012 Mikeal Rogers

       See SECTION 108 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014-2018, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       > Unlicense

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2012-2014 TJ Holowaychuk

       See SECTION 139 in 'LICENSE TEXT REFERENCE TABLE'

       > Unknown License file reference

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2005 Tom Wu

       See SECTION 129 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2005-2009 Tom Wu

       See SECTION 129 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>

       See SECTION 137 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2013 Ted Unangst <tedu@openbsd.org>

       See SECTION 137 in 'LICENSE TEXT REFERENCE TABLE'

       > Public Domain

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Joyent, Inc.

       See SECTION 136 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @angular/cli-15.2.8

       Found in: package/LICENSE

       Copyright (c) 2017 Google, Inc.

       the MIT License

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/bin/bootstrap.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bin/ng.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/cli/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/cli/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/init.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/init.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/analytics/analytics-collector.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/analytics/analytics-collector.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/analytics/analytics.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/analytics/analytics.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/analytics/analytics-parameters.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/analytics/analytics-parameters.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/architect-base-command-module.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/architect-base-command-module.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/architect-command-module.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/architect-command-module.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/command-module.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/command-module.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/command-runner.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/command-runner.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/schematics-command-module.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/schematics-command-module.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/utilities/command.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/utilities/command.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/utilities/json-help.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/utilities/json-help.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/utilities/json-schema.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/utilities/json-schema.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/utilities/normalize-options-middleware.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/utilities/normalize-options-middleware.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/utilities/schematic-engine-host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/utilities/schematic-engine-host.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/utilities/schematic-workflow.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/command-builder/utilities/schematic-workflow.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/add/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/add/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/analytics/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/analytics/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/analytics/info/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/analytics/info/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/analytics/settings/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/analytics/settings/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/build/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/build/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/cache/clean/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/cache/clean/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/cache/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/cache/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/cache/info/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/cache/info/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/cache/settings/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/cache/settings/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/cache/utilities.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/cache/utilities.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/command-config.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/command-config.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/completion/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/completion/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/config/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/config/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/deploy/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/deploy/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/doc/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/doc/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/e2e/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/e2e/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/extract-i18n/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/extract-i18n/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/generate/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/generate/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/lint/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/lint/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/make-this-awesome/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/make-this-awesome/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/new/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/new/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/run/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/run/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/serve/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/serve/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/update/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/update/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/update/schematic/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/update/schematic/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/version/cli.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/commands/version/cli.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/typings-bazel.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/typings.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/typings.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/color.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/color.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/completion.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/completion.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/config.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/config.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/environment-options.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/environment-options.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/error.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/error.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/find-up.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/find-up.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/json-file.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/json-file.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/log-file.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/log-file.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/memoize.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/memoize.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/package-manager.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/package-manager.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/package-metadata.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/package-metadata.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/package-tree.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/package-tree.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/project.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/project.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/prompt.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/prompt.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/spinner.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/spinner.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/tty.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/tty.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/version.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utilities/version.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'


   >>> get-intrinsic-1.2.1

       Found in: package/LICENSE

       Copyright (c) 2020 Jordan Harband

       MIT.LICENSE


   >>> is-core-module-2.12.1

       Found in: package/LICENSE

       Copyright (c) 2014 Dave Justice

       The MIT License (MIT)


   >>> tar-6.1.15

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       The ISC License


   >>> acorn-import-assertions-1.9.0



   >>> moo-0.5.2

       Found in: package/LICENSE

       Copyright (c) 2017, Tim Radvan (tjvr)

       BSD 3-Clause License


   >>> postcss-selector-parser-6.0.13

       Found in: package/LICENSE-MIT

       Copyright (c) Ben Briggs <beneb.info@gmail.com> (http://beneb.info)

       Permission is hereby granted, free of charge, to any person
       obtaining a copy of this software and associated documentation
       files (the "Software"), to deal in the Software without
       restriction, including without limitation the rights to use,
       copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the
       Software is furnished to do so, subject to the following
       conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
       OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
       HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       OTHER DEALINGS IN THE SOFTWARE.


   >>> regexpu-core-5.3.2

       Found in: package/LICENSE-MIT.txt

       Copyright Mathias Bynens <https://mathiasbynens.be/>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> terser-webpack-plugin-5.3.9

       Found in: package/LICENSE

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> wildcard-2.0.1

       Found in: package/LICENSE

       Copyright (c) 2023 Damon Oehlman <damon.oehlman@gmail.com>

       The MIT License (MIT)

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/README.md

       Copyright (c) 2023 Damon Oehlman

       See SECTION 96 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @types/json-schema-7.0.12

       Found in: json-schema/LICENSE

       Copyright (c) Microsoft Corporation

           MIT License


   >>> lru-cache-7.18.3

       Found in: package/LICENSE

       Copyright (c) 2010-2023 Isaac Z. Schlueter and Contributors

       The ISC License

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/index.d.ts

       Copyright (c) Microsoft Corporation

       See SECTION 146 in 'LICENSE TEXT REFERENCE TABLE'


   >>> which-3.0.1

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       The ISC License


   >>> @types/express-serve-static-core-4.17.35

       Found in: express-serve-static-core/LICENSE

       Copyright (c) Microsoft Corporation

           MIT License


   >>> @lit/reactive-element-1.6.2

       Found in: package/LICENSE

       Copyright (c) 2017 Google LLC.

       BSD 3-Clause License


   >>> @babel/helper-module-imports-7.22.5

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/helper-string-parser-7.22.5

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/helper-validator-identifier-7.22.5

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/types-7.22.5

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @isaacs/cliui-8.0.2

       Found in: package/LICENSE.txt

       Copyright (c) 2015, Contributors

       Permission to use, copy, modify, and/or distribute this software
       for any purpose with or without fee is hereby granted, provided
       that the above copyright notice and this permission notice
       appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
       OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE
       LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
       OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
       WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
       ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> @npmcli/installed-package-contents-2.0.2

       Found in: package/LICENSE

       Copyright (c) npm, Inc.

       The ISC License


   >>> @npmcli/run-script-6.0.2

       Found in: package/LICENSE

       Copyright (c) npm, Inc.

       The ISC License


   >>> @tufjs/canonical-json-1.0.0

       Found in: package/LICENSE

       Copyright (c) 2022 GitHub and the TUF Contributors

       MIT.LICENSE


   >>> agentkeepalive-4.3.0

       Found in: package/LICENSE

       Copyright (c) 2012 - 2015 fengmk2 <fengmk2@gmail.com>

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright (c) node-modules and other contributors

       See SECTION 9 in 'LICENSE TEXT REFERENCE TABLE'


   >>> ansi-styles-6.2.1

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       MIT.LICENSE


   >>> bonjour-service-1.1.1

       Found in: package/LICENSE

       (c) 2015-2016 Thomas Watson Steen

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright (https://github.com/onlxltd/bonjour-service)

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'


   >>> dns-packet-5.6.0

       Found in: package/LICENSE

       Copyright (c) 2016 Mathias Buus

       The MIT License (MIT)


   >>> foreground-child-3.1.1

       Found in: package/LICENSE

       Copyright (c) 2015-2023 Isaac Z. Schlueter and Contributors

       The ISC License


   >>> fs-minipass-3.0.2

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       The ISC License


   >>> make-fetch-happen-11.1.1

       Found in: package/LICENSE

       Copyright 2017-2022 (c) npm, Inc.

       ISC License

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       package/lib/fetch.js

       Copyright (c) 2010-2012 Mikeal Rogers

       See SECTION 124 in 'LICENSE TEXT REFERENCE TABLE'


   >>> npm-install-checks-6.1.1

       Copyright (c) Robert Kowalski and Isaac Z. Schlueter ("Authors")
       All rights reserved.

       The BSD License

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions
       are met:

       1. Redistributions of source code must retain the above copyright
          notice, this list of conditions and the following disclaimer.

       2. Redistributions in binary form must reproduce the above copyright
          notice, this list of conditions and the following disclaimer in the
          documentation and/or other materials provided with the distribution.

       THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
       ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
       IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
       PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS
       BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
       CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
       SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
       BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
       WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
       OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
       IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



   >>> npm-normalize-package-bin-3.0.1

       Found in: package/LICENSE

       Copyright (c) npm, Inc.

       The ISC License


   >>> npm-registry-fetch-14.0.5

       Found in: package/LICENSE.md

       Copyright npm, Inc.

       ISC License


   >>> signal-exit-4.0.2

       The ISC License

       Copyright (c) 2015-2023 Benjamin Coe, Isaac Z. Schlueter, and Contributors

       Permission to use, copy, modify, and/or distribute this software
       for any purpose with or without fee is hereby granted, provided
       that the above copyright notice and this permission notice
       appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
       OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE
       LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
       OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
       WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
       ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.



   >>> ssri-10.0.4

       ISC License

       Copyright 2021 (c) npm, Inc.

       Permission to use, copy, modify, and/or distribute this software for
       any purpose with or without fee is hereby granted, provided that the
       above copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE COPYRIGHT HOLDER DISCLAIMS
       ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
       WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
       COPYRIGHT HOLDER BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
       CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
       OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
       OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
       USE OR PERFORMANCE OF THIS SOFTWARE.



   >>> wrap-ansi-8.1.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/code-frame-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/helper-annotate-as-pure-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/helper-builder-binary-assignment-operator-visitor-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/helper-environment-visitor-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/helper-function-name-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/helper-hoist-variables-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/helper-member-expression-to-functions-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/helper-module-transforms-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/helper-optimise-call-expression-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/helper-plugin-utils-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/helper-remap-async-to-generator-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/helper-replace-supers-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/helper-simple-access-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/helper-skip-transparent-expression-wrappers-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/helper-validator-option-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/helper-wrap-function-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/highlight-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/plugin-syntax-import-assertions-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/plugin-transform-arrow-functions-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @babel/plugin-transform-block-scoped-functions-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-block-scoping-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-computed-properties-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-destructuring-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-dotall-regex-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-duplicate-keys-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-exponentiation-operator-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-for-of-7.22.5

       MIT License

       Copyright (c) 2014-present Nicolò Ribaudo and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-function-name-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-literals-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-member-expression-literals-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-modules-amd-7.22.5

       MIT License

       Copyright (c) 2014-present Nicolò Ribaudo and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-modules-commonjs-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-modules-systemjs-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-modules-umd-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-named-capturing-groups-regex-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-new-target-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-object-super-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-parameters-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-property-literals-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-regenerator-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-reserved-words-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-shorthand-properties-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-spread-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-sticky-regex-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-template-literals-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-typeof-symbol-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-unicode-escapes-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/plugin-transform-unicode-regex-7.22.5

       MIT License

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> @babel/template-7.22.5

       Copyright (c) Microsoft Corporation.

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.



   >>> @types/connect-history-api-fallback-1.5.0

       MIT License

       Copyright (c) 2019 typescript-eslint and other contributors

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.



   >>> @types/http-errors-2.0.1

       MIT License

       Copyright (c) 2019 typescript-eslint and other contributors

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.



   >>> @types/http-proxy-1.17.11

       MIT License

       Copyright (c) 2019 typescript-eslint and other contributors

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.



   >>> @types/send-0.17.1

       MIT License

       Copyright (c) 2019 typescript-eslint and other contributors

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.



   >>> @types/serve-static-1.15.2

       MIT License

       Copyright (c) 2019 typescript-eslint and other contributors

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.



   >>> @types/ws-8.5.5

       MIT License

       Copyright (c) 2019 typescript-eslint and other contributors

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.



   >>> browserslist-4.21.9

       The MIT License (MIT)

       Copyright 2014 Andrey Sitnik <andrey@sitnik.ru> and other contributors

       Permission is hereby granted, free of charge, to any person obtaining a copy of
       this software and associated documentation files (the "Software"), to deal in
       the Software without restriction, including without limitation the rights to
       use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
       the Software, and to permit persons to whom the Software is furnished to do so,
       subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
       FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
       COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
       IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
       CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> enhanced-resolve-5.15.0

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/README.md

       Copyright (c) 2012-2019 JS Foundation and other contributors

       See SECTION 113 in 'LICENSE TEXT REFERENCE TABLE'


   >>> fs-monkey-1.0.4

       This is free and unencumbered software released into the public domain.

       Anyone is free to copy, modify, publish, use, compile, sell, or
       distribute this software, either in source code form or as a compiled
       binary, for any purpose, commercial or non-commercial, and by any
       means.

       In jurisdictions that recognize copyright laws, the author or authors
       of this software dedicate any and all copyright interest in the
       software to the public domain. We make this dedication for the benefit
       of the public at large and to the detriment of our heirs and
       successors. We intend this dedication to be an overt act of
       relinquishment in perpetuity of all present and future rights to this
       software under copyright law.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
       OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
       ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       OTHER DEALINGS IN THE SOFTWARE.

       For more information, please refer to <https://unlicense.org>



   >>> html-entities-2.4.0

       Copyright (c) 2021 Dulin Marat

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> ipaddr.js-2.1.0

       Copyright (C) 2011-2017 whitequark <whitequark@whitequark.org>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.



   >>> memfs-3.5.3

       This is free and unencumbered software released into the public domain.

       Anyone is free to copy, modify, publish, use, compile, sell, or
       distribute this software, either in source code form or as a compiled
       binary, for any purpose, commercial or non-commercial, and by any
       means.

       In jurisdictions that recognize copyright laws, the author or authors
       of this software dedicate any and all copyright interest in the
       software to the public domain. We make this dedication for the benefit
       of the public at large and to the detriment of our heirs and
       successors. We intend this dedication to be an overt act of
       relinquishment in perpetuity of all present and future rights to this
       software under copyright law.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
       OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
       ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       OTHER DEALINGS IN THE SOFTWARE.

       For more information, please refer to <https://unlicense.org>



   >>> schema-utils-3.3.0

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> schema-utils-4.2.0

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       'Software'), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> strip-ansi-7.1.0

       MIT License

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



   >>> tslib-2.6.0

       Copyright (c) Microsoft Corporation.

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
       REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
       AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
       INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
       LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
       OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
       PERFORMANCE OF THIS SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > 0BSD

       package/CopyrightNotice.txt

       Copyright (c) Microsoft Corporation

       See SECTION 84 in 'LICENSE TEXT REFERENCE TABLE'

       package/LICENSE.txt

       Copyright (c) Microsoft Corporation

       See SECTION 84 in 'LICENSE TEXT REFERENCE TABLE'

       package/tslib.d.ts

       Copyright (c) Microsoft Corporation

       See SECTION 84 in 'LICENSE TEXT REFERENCE TABLE'

       package/tslib.es6.js

       Copyright (c) Microsoft Corporation

       See SECTION 84 in 'LICENSE TEXT REFERENCE TABLE'

       package/tslib.es6.mjs

       Copyright (c) Microsoft Corporation

       See SECTION 85 in 'LICENSE TEXT REFERENCE TABLE'

       package/tslib.js

       Copyright (c) Microsoft Corporation

       See SECTION 84 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @angular-devkit/core-15.2.8

       Found in: angular-cli-main/LICENSE

       Copyright (c) 2017 Google, Inc.

       the MIT License

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       angular-cli-main/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.d.ts

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.js

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Kyle E. Mitchell

       See SECTION 11 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2010 LearnBoost <dev@learnboost.com>

       See SECTION 2 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015, Salesforce.com, Inc.

       See SECTION 80 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-2

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright JS Foundation and other contributors, https://js.foundation

       See SECTION 65 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Joyent, Inc.

       See SECTION 95 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-3

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2013, Yahoo! Inc.

       See SECTION 107 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015, Salesforce.com, Inc.

       See SECTION 122 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       angular-cli-main/bin/architect

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/devkit-admin

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/ng

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/schematics

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.eslintrc.json

       Copyright Google LLC

       See SECTION 109 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/lib/bootstrap-local.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/lib/packages.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/bin/bootstrap.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/bin/ng.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/lib/cli/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/lib/init.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/analytics/analytics-collector.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/analytics/analytics-parameters.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/analytics/analytics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/architect-base-command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/architect-command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/command-runner.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/schematics-command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/command.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/json-help.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/json-schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/normalize-options-middleware.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/schematic-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/schematic-workflow.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/add/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/analytics/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/analytics/info/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/analytics/settings/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/build/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/clean/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/info/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/settings/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/utilities.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/command-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/completion/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/config/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/deploy/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/doc/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/e2e/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/extract-i18n/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/generate/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/lint/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/make-this-awesome/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/new/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/run/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/serve/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/update/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/update/schematic/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/update/schematic/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/version/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/typings-bazel.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/typings.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/color.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/completion.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/environment-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/error.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/find-up.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/json-file.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/log-file.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/memoize_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/memoize.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/package-manager.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/package-metadata.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/package-tree.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/project.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/prompt.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/spinner.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/tty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/version.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/create/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/create/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/all-of.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/concat.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/false.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/true.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect_cli/bin/architect.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect_cli/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect_cli/src/progress.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/jobs/job-registry_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/jobs/job-registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/node-modules-architect-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/api_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/api.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/architect.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/create-builder.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/internal.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/api.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/create-job-handler.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/dispatcher_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/dispatcher.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/exception.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/fallback-registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-registry_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-scheduler_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-scheduler.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/strategy_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/strategy.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/types.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/schedule-by-name.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/testing/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/testing/testing-architect-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/plugins/karma.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel-bazel.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/build-action.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/execute-build.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/app-shell/app-shell_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/app-shell/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/app-shell/render-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/builder-status-warnings.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/allow-js_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/aot_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/base-href_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/build-optimizer_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/cross-origin_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/deploy-url_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/errors_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/font-optimization_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/lazy-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/no-entry-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/optimization-level_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/output-path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/poll_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/rebuild_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/replacements_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/resolve-json-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/resources-output-path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/scripts-array_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/service-worker_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/source-map_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/stats-json_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/styles_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/svg_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/tsconfig-paths_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/unused-files-warning_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/vendor-chunk_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/vendor-source-map_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/web-worker_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/builder.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/load-proxy-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/hmr_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/vite-server.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/empty-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/ivy-extract-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/jest/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/jest/jest-global.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/jest/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/karma/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/ng-packagr/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/ng-packagr/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/protractor/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/protractor/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/server/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/server/platform-server-exports-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/builder-harness_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/builder-harness.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/file-watching.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/jasmine-helpers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/babel-loader.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-static-class-members_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-static-class-members.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-typescript-enums_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-typescript-enums.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/elide-angular-metadata_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/elide-angular-metadata.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/pure-toplevel-functions_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/pure-toplevel-functions.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/presets/application.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/angular-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/angular-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/aot-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/compiler-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/diagnostics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/jit-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/jit-plugin-callbacks.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/jit-resource-transformer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/uri.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/application-code-bundle.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/bundler-context.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/bundler-execution-result.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/commonjs-checker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/external-packages-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/global-scripts.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/global-styles.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/index-html-generator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/javascript-transformer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/javascript-transformer-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/license-extractor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/load-result-cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/profiling.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/sourcemap-ignorelist-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/bundle-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/css-language.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/css-resource-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/less-language.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/sass-language.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/virtual-module-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/watcher.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/rebasing-importer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/sass-service-legacy.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/sass-service.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/worker-legacy.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/common.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/dev-server.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/styles.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/any-component-style-budget-checker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/builder-watch-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/common-js-usage-warn-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/css-optimizer-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/dedupe-module-resolve-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/devtools-ignore-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/esbuild-executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/hmr/hmr-accept.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/hmr/hmr-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/index-html-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/javascript-optimizer-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/javascript-optimizer-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/json-stats-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/named-chunks-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/occurrences-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/postcss-cli-resources.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/progress-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/remove-hash-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/scripts-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/service-worker-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/styles-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/suppress-entry-chunks-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/transfer-size-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/typescript.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/watch-files-logs-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/utils/async-chunks.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/utils/helpers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/utils/stats.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/transforms.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/typings.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/action-executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/build-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/bundle-calculator_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/bundle-calculator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/bundle-inline-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/check-port.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/color.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/copy-assets.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/default-progress.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/delete-output-dir.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/environment-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/error.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/i18n-inlining.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/i18n-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/augment-index-html_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/augment-index-html.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/html-rewriting-stream.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/index-html-generator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-critical-css_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-critical-css.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-fonts_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-fonts.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/style-nonce_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/style-nonce.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/load-esm.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/load-translations.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-asset-patterns.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-builder-schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-file-replacements.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-optimization.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-polyfills.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-source-maps.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/output-paths.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/package-chunk-sort.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/package-version.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/process-bundle.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/purge-cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/read-tsconfig.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/run-module-as-observable-fork.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/run-module-worker.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/service-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/spinner.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/strip-bom.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/supported-browsers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/tailwind.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/tty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/url_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/url.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/version.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/webpack-browser-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/webpack-diagnostics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack-dev-server/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack-dev-server/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/cli-logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/testing/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/exception.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/pointer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/prompt_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/registry_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/transforms_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/transforms.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/utility.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/visitor_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/visitor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/indent_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/indent.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/level.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/logger_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/null-logger_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/null-logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/transform-logger_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/transform-logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/lang.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/literals_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/literals.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/object_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/object.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/partially-ordered-set_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/partially-ordered-set.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/priority-queue_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/priority-queue.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/strings.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/template.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/alias_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/alias.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/buffer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/create.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/empty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/memory_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/memory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/pattern_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/pattern.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/record_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/record.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/resolver.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/safe.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/scoped.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/sync.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/path.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/core_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/core.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/definitions_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/definitions.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/metadata.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/reader_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/reader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/utilities.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/writer_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/writer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/bin/schematics_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/bin/schematics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/blank/factory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/schematic/factory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/engine.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/schematic_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/schematic.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/exception/exception.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/format-validator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/html-selector_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/html-selector.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/path.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/base_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/base.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/call_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/call.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/move_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/move.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/random.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/schematic.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/template_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/template.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/url.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/dryrun_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/dryrun.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/sink.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/action_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/action.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/common_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/delegate.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/empty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/entry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/host-tree_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/host-tree.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/null.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/recorder_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/recorder.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/scoped_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/scoped.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/static.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/utility/update-buffer_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/utility/update-buffer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/workflow/base.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/workflow/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/workflow/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/node/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/node/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/install-task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/link-task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/repo-init/executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/repo-init/init-task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/repo-init/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/run-schematic/executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/run-schematic/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/run-schematic/task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/testing/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/description.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/export-ref_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/export-ref.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/fallback-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-engine-host-base.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-engine-host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-utility.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/node-module-engine-host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/node-module-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/schema-option-transform.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/workflow/node-workflow_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/workflow/node-workflow.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/pwa/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/pwa/pwa/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/pwa/pwa/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/benchmark.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/diagnostics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/paths.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/symbol.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/system.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/transformation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/loaders/inline-resource.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/paths-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/resource_loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/elide_imports_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/elide_imports.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/remove-ivy-jit-support-calls_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/remove-ivy-jit-support-calls.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/replace_resources_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/replace_resources.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/spec_helpers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/application/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/application/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/app-shell/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/app-shell/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/class/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/class/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/component/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/component/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/config/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/config/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/directive/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/directive/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/e2e/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/e2e/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/enum/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/enum/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/environments/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/environments/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/guard/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/guard/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interceptor/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interceptor/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interface/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interface/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/library/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/library/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/remove-default-project-option_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/remove-default-project-option.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/replace-default-collection-option_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/replace-default-collection-option.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/update-server-builder-config_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/update-server-builder-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/module/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/module/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/ng-new/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/ng-new/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/no_typescript_runtime_dep_spec.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/pipe/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/pipe/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/private/components.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/private/standalone_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/private/standalone.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/resolver/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/resolver/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service-worker/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service-worker/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/universal/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/universal/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/add-declaration-to-ng-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/ast-utils_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/ast-utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/change.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependencies_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependencies.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependency_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependency.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/find-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/find-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/generate-from-files.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/json-file.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/latest-versions.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/ng-ast-utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/parse-name_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/parse-name.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/paths_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/paths.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/project-targets.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/app_config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/code_block.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/rules_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/rules.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/util.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/validation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/workspace-models.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/workspace_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/workspace.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/web-worker/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/web-worker/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/workspace/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/workspace/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/build-packages-dist.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/build-schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/build.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/create.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/json-help.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/release-checks/dependency-ranges/index.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/release-checks/dependency-ranges/latest-versions-check.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/release-checks/dependency-ranges/peer-deps-check.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/snapshots.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/templates.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate-build-files.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate-licenses.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate-user-analytics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/link_package_json_to_tarballs.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/ng_cli_schema_generator.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/ng_cli_schema_generator.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/package_json_release_filter.jq

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/quicktype_runner.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/snapshot_repo_filter.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/ts_json_schema.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014-2018, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014-2015, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2010-2012 Mikeal Rogers

       See SECTION 108 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Joyent, Inc.

       See SECTION 12 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015 Douglas Christopher Wilson

       See SECTION 62 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2016, Joyent Inc

       See SECTION 8 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       (c) Sindre Sorhus

       See SECTION 34 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright Joyent, Inc. and other Node contributors

       See SECTION 56 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2013-present, Facebook, Inc.

       See SECTION 21 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015 Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014 Jon Schlinkert

       See SECTION 19 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors

       See SECTION 54 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>

       See SECTION 44 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors

       See SECTION 44 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014-2017, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2011-2017 KARASZI Istvan <github@spam.raszi.hu>

       See SECTION 62 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015 Jed Watson

       See SECTION 62 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright jQuery Foundation and other contributors <https://jquery.org/>

       See SECTION 43 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2007 Kris Zyp SitePen (www.sitepen.com)

       See SECTION 93 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) Marak Squires

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014 Jonathan Ong

       See SECTION 64 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright JS Foundation and other contributors <https://js.foundation/>

       See SECTION 43 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015-2018, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015-2016, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015-2017, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       > Unlicense

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2012-2014 TJ Holowaychuk

       See SECTION 139 in 'LICENSE TEXT REFERENCE TABLE'

       > Unknown License file reference

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>

       See SECTION 137 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2005 Tom Wu

       See SECTION 129 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2005-2009 Tom Wu

       See SECTION 129 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2013 Ted Unangst <tedu@openbsd.org>

       See SECTION 137 in 'LICENSE TEXT REFERENCE TABLE'

       > Public Domain

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Joyent, Inc.

       See SECTION 136 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @angular-devkit/schematics-15.2.8

       Found in: angular-cli-main/LICENSE

       Copyright (c) 2017 Google, Inc.

       the MIT License

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       angular-cli-main/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.d.ts

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.js

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Kyle E. Mitchell

       See SECTION 11 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015, Salesforce.com, Inc.

       See SECTION 80 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2010 LearnBoost <dev@learnboost.com>

       See SECTION 2 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-2

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Joyent, Inc.

       See SECTION 95 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright JS Foundation and other contributors, https://js.foundation

       See SECTION 65 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-3

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2013, Yahoo! Inc.

       See SECTION 107 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015, Salesforce.com, Inc.

       See SECTION 122 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       angular-cli-main/bin/architect

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/devkit-admin

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/ng

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/schematics

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.eslintrc.json

       Copyright Google LLC

       See SECTION 109 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/lib/bootstrap-local.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/lib/packages.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/bin/bootstrap.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/bin/ng.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/lib/cli/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/lib/init.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/analytics/analytics-collector.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/analytics/analytics-parameters.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/analytics/analytics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/architect-base-command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/architect-command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/command-runner.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/schematics-command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/command.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/json-help.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/json-schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/normalize-options-middleware.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/schematic-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/schematic-workflow.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/add/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/analytics/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/analytics/info/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/analytics/settings/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/build/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/clean/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/info/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/settings/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/utilities.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/command-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/completion/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/config/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/deploy/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/doc/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/e2e/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/extract-i18n/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/generate/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/lint/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/make-this-awesome/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/new/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/run/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/serve/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/update/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/update/schematic/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/update/schematic/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/version/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/typings-bazel.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/typings.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/color.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/completion.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/environment-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/error.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/find-up.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/json-file.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/log-file.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/memoize_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/memoize.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/package-manager.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/package-metadata.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/package-tree.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/project.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/prompt.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/spinner.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/tty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/version.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/create/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/create/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/all-of.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/concat.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/false.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/true.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect_cli/bin/architect.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect_cli/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect_cli/src/progress.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/jobs/job-registry_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/jobs/job-registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/node-modules-architect-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/api_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/api.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/architect.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/create-builder.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/internal.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/api.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/create-job-handler.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/dispatcher_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/dispatcher.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/exception.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/fallback-registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-registry_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-scheduler_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-scheduler.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/strategy_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/strategy.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/types.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/schedule-by-name.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/testing/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/testing/testing-architect-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/plugins/karma.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel-bazel.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/build-action.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/execute-build.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/app-shell/app-shell_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/app-shell/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/app-shell/render-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/builder-status-warnings.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/allow-js_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/aot_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/base-href_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/build-optimizer_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/cross-origin_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/deploy-url_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/errors_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/font-optimization_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/lazy-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/no-entry-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/optimization-level_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/output-path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/poll_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/rebuild_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/replacements_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/resolve-json-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/resources-output-path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/scripts-array_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/service-worker_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/source-map_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/stats-json_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/styles_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/svg_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/tsconfig-paths_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/unused-files-warning_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/vendor-chunk_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/vendor-source-map_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/web-worker_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/builder.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/load-proxy-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/hmr_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/vite-server.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/empty-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/ivy-extract-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/jest/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/jest/jest-global.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/jest/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/karma/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/ng-packagr/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/ng-packagr/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/protractor/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/protractor/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/server/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/server/platform-server-exports-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/builder-harness_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/builder-harness.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/file-watching.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/jasmine-helpers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/babel-loader.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-static-class-members_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-static-class-members.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-typescript-enums_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-typescript-enums.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/elide-angular-metadata_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/elide-angular-metadata.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/pure-toplevel-functions_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/pure-toplevel-functions.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/presets/application.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/angular-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/angular-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/aot-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/compiler-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/diagnostics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/jit-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/jit-plugin-callbacks.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/jit-resource-transformer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/uri.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/application-code-bundle.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/bundler-context.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/bundler-execution-result.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/commonjs-checker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/external-packages-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/global-scripts.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/global-styles.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/index-html-generator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/javascript-transformer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/javascript-transformer-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/license-extractor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/load-result-cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/profiling.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/sourcemap-ignorelist-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/bundle-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/css-language.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/css-resource-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/less-language.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/sass-language.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/virtual-module-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/watcher.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/rebasing-importer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/sass-service-legacy.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/sass-service.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/worker-legacy.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/common.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/dev-server.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/styles.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/any-component-style-budget-checker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/builder-watch-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/common-js-usage-warn-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/css-optimizer-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/dedupe-module-resolve-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/devtools-ignore-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/esbuild-executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/hmr/hmr-accept.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/hmr/hmr-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/index-html-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/javascript-optimizer-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/javascript-optimizer-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/json-stats-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/named-chunks-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/occurrences-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/postcss-cli-resources.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/progress-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/remove-hash-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/scripts-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/service-worker-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/styles-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/suppress-entry-chunks-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/transfer-size-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/typescript.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/watch-files-logs-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/utils/async-chunks.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/utils/helpers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/utils/stats.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/transforms.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/typings.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/action-executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/build-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/bundle-calculator_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/bundle-calculator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/bundle-inline-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/check-port.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/color.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/copy-assets.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/default-progress.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/delete-output-dir.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/environment-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/error.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/i18n-inlining.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/i18n-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/augment-index-html_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/augment-index-html.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/html-rewriting-stream.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/index-html-generator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-critical-css_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-critical-css.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-fonts_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-fonts.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/style-nonce_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/style-nonce.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/load-esm.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/load-translations.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-asset-patterns.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-builder-schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-file-replacements.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-optimization.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-polyfills.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-source-maps.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/output-paths.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/package-chunk-sort.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/package-version.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/process-bundle.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/purge-cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/read-tsconfig.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/run-module-as-observable-fork.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/run-module-worker.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/service-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/spinner.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/strip-bom.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/supported-browsers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/tailwind.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/tty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/url_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/url.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/version.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/webpack-browser-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/webpack-diagnostics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack-dev-server/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack-dev-server/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/cli-logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/testing/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/exception.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/pointer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/prompt_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/registry_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/transforms_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/transforms.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/utility.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/visitor_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/visitor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/indent_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/indent.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/level.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/logger_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/null-logger_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/null-logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/transform-logger_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/transform-logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/lang.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/literals_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/literals.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/object_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/object.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/partially-ordered-set_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/partially-ordered-set.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/priority-queue_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/priority-queue.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/strings.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/template.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/alias_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/alias.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/buffer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/create.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/empty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/memory_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/memory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/pattern_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/pattern.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/record_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/record.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/resolver.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/safe.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/scoped.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/sync.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/path.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/core_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/core.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/definitions_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/definitions.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/metadata.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/reader_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/reader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/utilities.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/writer_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/writer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/bin/schematics_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/bin/schematics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/blank/factory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/schematic/factory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/engine.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/schematic_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/schematic.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/exception/exception.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/format-validator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/html-selector_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/html-selector.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/path.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/base_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/base.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/call_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/call.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/move_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/move.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/random.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/schematic.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/template_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/template.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/url.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/dryrun_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/dryrun.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/sink.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/action_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/action.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/common_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/delegate.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/empty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/entry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/host-tree_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/host-tree.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/null.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/recorder_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/recorder.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/scoped_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/scoped.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/static.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/utility/update-buffer_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/utility/update-buffer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/workflow/base.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/workflow/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/workflow/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/node/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/node/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/install-task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/link-task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/repo-init/executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/repo-init/init-task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/repo-init/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/run-schematic/executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/run-schematic/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/run-schematic/task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/testing/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/description.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/export-ref_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/export-ref.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/fallback-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-engine-host-base.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-engine-host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-utility.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/node-module-engine-host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/node-module-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/schema-option-transform.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/workflow/node-workflow_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/workflow/node-workflow.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/pwa/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/pwa/pwa/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/pwa/pwa/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/benchmark.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/diagnostics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/paths.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/symbol.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/system.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/transformation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/loaders/inline-resource.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/paths-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/resource_loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/elide_imports_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/elide_imports.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/remove-ivy-jit-support-calls_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/remove-ivy-jit-support-calls.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/replace_resources_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/replace_resources.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/spec_helpers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/application/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/application/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/app-shell/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/app-shell/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/class/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/class/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/component/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/component/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/config/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/config/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/directive/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/directive/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/e2e/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/e2e/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/enum/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/enum/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/environments/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/environments/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/guard/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/guard/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interceptor/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interceptor/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interface/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interface/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/library/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/library/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/remove-default-project-option_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/remove-default-project-option.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/replace-default-collection-option_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/replace-default-collection-option.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/update-server-builder-config_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/update-server-builder-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/module/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/module/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/ng-new/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/ng-new/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/no_typescript_runtime_dep_spec.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/pipe/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/pipe/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/private/components.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/private/standalone_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/private/standalone.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/resolver/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/resolver/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service-worker/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service-worker/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/universal/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/universal/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/add-declaration-to-ng-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/ast-utils_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/ast-utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/change.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependencies_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependencies.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependency_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependency.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/find-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/find-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/generate-from-files.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/json-file.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/latest-versions.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/ng-ast-utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/parse-name_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/parse-name.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/paths_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/paths.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/project-targets.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/app_config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/code_block.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/rules_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/rules.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/util.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/validation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/workspace-models.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/workspace_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/workspace.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/web-worker/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/web-worker/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/workspace/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/workspace/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/build-packages-dist.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/build-schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/build.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/create.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/json-help.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/release-checks/dependency-ranges/index.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/release-checks/dependency-ranges/latest-versions-check.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/release-checks/dependency-ranges/peer-deps-check.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/snapshots.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/templates.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate-build-files.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate-licenses.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate-user-analytics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/link_package_json_to_tarballs.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/ng_cli_schema_generator.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/ng_cli_schema_generator.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/package_json_release_filter.jq

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/quicktype_runner.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/snapshot_repo_filter.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/ts_json_schema.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015 Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014-2017, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015 Jed Watson

       See SECTION 62 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright JS Foundation and other contributors <https://js.foundation/>

       See SECTION 43 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2010-2012 Mikeal Rogers

       See SECTION 108 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2016, Joyent Inc

       See SECTION 8 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       (c) Sindre Sorhus

       See SECTION 34 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright Joyent, Inc. and other Node contributors

       See SECTION 56 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2013-present, Facebook, Inc.

       See SECTION 21 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014 Jon Schlinkert

       See SECTION 19 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors

       See SECTION 54 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>

       See SECTION 44 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors

       See SECTION 44 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) Marak Squires

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014-2018, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015-2017, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015-2016, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015-2018, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2011-2017 KARASZI Istvan <github@spam.raszi.hu>

       See SECTION 62 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014-2015, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright jQuery Foundation and other contributors <https://jquery.org/>

       See SECTION 43 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2007 Kris Zyp SitePen (www.sitepen.com)

       See SECTION 93 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015 Douglas Christopher Wilson

       See SECTION 62 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014 Jonathan Ong

       See SECTION 64 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Joyent, Inc.

       See SECTION 12 in 'LICENSE TEXT REFERENCE TABLE'

       > Unlicense

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2012-2014 TJ Holowaychuk

       See SECTION 139 in 'LICENSE TEXT REFERENCE TABLE'

       > Unknown License file reference

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2013 Ted Unangst <tedu@openbsd.org>

       See SECTION 137 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>

       See SECTION 137 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2005-2009 Tom Wu

       See SECTION 129 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2005 Tom Wu

       See SECTION 129 in 'LICENSE TEXT REFERENCE TABLE'

       > Public Domain

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Joyent, Inc.

       See SECTION 136 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @vcd/i18n-15.0.1

       Copyright 2020 VMware, Inc.

       SPDX-License-Identifier: BSD-2-Clause


   >>> cli-spinners-2.9.0

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       MIT.LICENSE


   >>> magic-string-0.29.0

       Found in: package/LICENSE

       Copyright 2018 Rich Harris

       Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
        subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> make-plural-7.3.0

       Copyright © Eemeli Aro <eemeli@gmail.com>
       Copyright © 1991-2020 Unicode, Inc. All rights reserved.
       Distributed under the Terms of Use in https://www.unicode.org/copyright.html.

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of the Unicode data files and any associated documentation
       (the "Data Files") or Unicode software and any associated documentation
       (the "Software") to deal in the Data Files or Software
       without restriction, including without limitation the rights to use,
       copy, modify, merge, publish, distribute, and/or sell copies of
       the Data Files or Software, and to permit persons to whom the Data Files
       or Software are furnished to do so, provided that either
       (a) this copyright and permission notice appear with all copies
       of the Data Files or Software, or
       (b) this copyright and permission notice appear in associated
       Documentation.

       THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
       ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
       WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT OF THIRD PARTY RIGHTS.
       IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
       NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
       DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
       DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
       TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
       PERFORMANCE OF THE DATA FILES OR SOFTWARE.

       Except as contained in this notice, the name of a copyright holder
       shall not be used in advertising or otherwise to promote the sale,
       use or other dealings in these Data Files or Software without prior
       written authorization of the copyright holder.



   >>> @clr/angular-15.0.3

       Found in: package/esm2020/data/datagrid/providers/global-expandable-rows.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       This software is released under MIT license.
        * The full license information can be found in LICENSE in the root directory of this project.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/esm2020/accordion/accordion-content.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/accordion-description.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/accordion.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/accordion.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/accordion-panel.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/accordion-title.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/chocolate/accordion-oompa-loompa.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/chocolate/accordion-willy-wonka.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/enums/accordion-status.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/enums/accordion-strategy.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/models/accordion.model.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/providers/accordion.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/stepper/chocolate/stepper-oompa-loompa.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/stepper/chocolate/stepper-willy-wonka.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/stepper/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/stepper/models/stepper.model.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/stepper/providers/stepper.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/stepper/step-button.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/stepper/stepper.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/stepper/stepper.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/stepper/stepper-panel.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/utils/animation.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/button/button-group/button-group.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/button/button-group/button-group.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/button/button-group/button.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/button/button-group/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/button/button-loading/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/button/button-loading/loading-button.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/button/button-loading/loading-button.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/button/button.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/button/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/button/providers/button-in-group.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/clr-angular.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/built-in/comparators/datagrid-property-comparator.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/built-in/filters/datagrid-property-numeric-filter.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/built-in/filters/datagrid-property-string-filter.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter-impl.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/built-in/nested-property.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/chocolate/actionable-oompa-loompa.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/chocolate/datagrid-willy-wonka.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/chocolate/expandable-oompa-loompa.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-action-bar.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-action-overflow.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-cell.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-column.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-column-separator.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-column-toggle-button.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-column-toggle.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-column-toggle-trackby.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-detail-body.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-detail-header.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-detail.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-detail-registerer.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-filter.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-footer.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-hideable-column.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-if-detail.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-items.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-items-trackby.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-page-size.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-pagination.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-placeholder.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-row-detail.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-row.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/datagrid-selection-cell.directive.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/enums/column-changes.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/enums/display-mode.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/enums/render-step.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/enums/selection-type.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/enums/sort-order.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/interfaces/column-state.interface.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/interfaces/comparator.interface.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/interfaces/filter.interface.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/interfaces/numeric-filter.interface.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/interfaces/state.interface.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/interfaces/string-filter.interface.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/providers/column-resizer.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/providers/columns.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/providers/column-state.provider.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/providers/custom-filter.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/providers/detail.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/providers/display-mode.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/providers/filters.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/providers/items.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/providers/page.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/providers/row-action-service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/providers/selection.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/providers/sort.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/providers/state-debouncer.provider.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/providers/state.provider.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/providers/table-size.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/render/cell-renderer.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/render/constants.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/render/header-renderer.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/render/main-renderer.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/render/noop-dom-adapter.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/render/render-organizer.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/render/row-renderer.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/utils/key-navigation-grid.controller.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/wrapped-cell.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/wrapped-column.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/datagrid/wrapped-row.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/data.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/stack-view/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/stack-view/stack-block.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/stack-view/stack-content-input.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/stack-view/stack-header.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/stack-view/stack-view-custom-tags.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/stack-view/stack-view.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/stack-view/stack-view.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/tree-view/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/tree-view/models/async-array.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/tree-view/models/declarative-tree-node.model.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/tree-view/models/recursive-tree-node.model.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/tree-view/models/selected-state.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/tree-view/models/tree-node.model.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/tree-view/recursive-children.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/tree-view/recursive-for-of.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/tree-view/tree-features.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/tree-view/tree-focus-manager.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/tree-view/tree.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/tree-view/tree-node-link.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/tree-view/tree-node.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/data/tree-view/tree-view.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/emphasis/alert/alert-item.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/emphasis/alert/alert.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/emphasis/alert/alert.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/emphasis/alert/alerts.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/emphasis/alert/alerts-pager.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/emphasis/alert/alert-text.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/emphasis/alert/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/emphasis/alert/providers/multi-alert.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/emphasis/alert/utils/alert-info-object.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/emphasis/alert/utils/alert-types.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/emphasis/emphasis.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/emphasis/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/checkbox/checkbox-container.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/checkbox/checkbox.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/checkbox/checkbox.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/checkbox/checkbox-wrapper.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/checkbox/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/combobox/combobox-container.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/combobox/combobox.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/combobox/combobox.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/combobox/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/combobox/model/combobox.model.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/combobox/model/multi-select-combobox.model.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/combobox/model/pseudo-focus.model.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/combobox/model/single-select-combobox.model.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/combobox/option-items.directive.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/combobox/option.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/combobox/option-selected.directive.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/combobox/options.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/combobox/providers/combobox-container.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/combobox/providers/option-selection.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/abstract-container.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/abstract-control.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/common.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/control-container.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/control.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/error.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/form.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/helper.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/if-control-state/abstract-if-state.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/if-control-state/if-control-state.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/if-control-state/if-error.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/if-control-state/if-success.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/label.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/layout.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/providers/container-id.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/providers/control-class.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/providers/control-id.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/providers/focus.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/providers/layout.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/providers/mark-control.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/providers/ng-control.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/success.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/common/wrapped-control.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datalist/datalist-container.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datalist/datalist-input.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datalist/datalist.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datalist/datalist.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datalist/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datalist/providers/datalist-id.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/calendar.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/date-container.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/date-input.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/date-input.validator.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/datepicker.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/datepicker-view-manager.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/day.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/daypicker.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/interfaces/date-range.interface.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/interfaces/day-of-week.interface.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/model/calendar.model.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/model/calendar-view.model.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/model/day.model.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/model/day-view.model.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/model/year-range.model.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/monthpicker.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/providers/date-form-control.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/providers/date-io.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/providers/date-navigation.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/providers/datepicker-enabled.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/providers/datepicker-focus.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/providers/locale-helper.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/providers/view-manager.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/utils/constants.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/utils/date-utils.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/datepicker/yearpicker.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/forms.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/input/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/input/input-container.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/input/input.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/input/input.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/password/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/password/password-container.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/password/password.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/password/password.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/radio/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/radio/radio-container.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/radio/radio.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/radio/radio.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/radio/radio-wrapper.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/range/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/range/range-container.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/range/range.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/range/range.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/select/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/select/select-container.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/select/select.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/select/select.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/textarea/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/textarea/textarea-container.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/textarea/textarea.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/forms/textarea/textarea.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/icon/icon.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/icon/icon.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/icon/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/layout.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/main-container/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/main-container/main-container.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/main-container/main-container.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/nav/aria-current-link.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/nav/chocolate/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/nav/chocolate/main-container-willy-wonka.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/nav/chocolate/nav-detection-oompa-loompa.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/nav/header.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/nav/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/nav/navigation.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/nav/nav-level.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/nav/providers/responsive-navigation.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/nav/responsive-nav-codes.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/nav/responsive-nav-control-message.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/tabs/chocolate/active-oompa-loompa.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/tabs/chocolate/tabs-willy-wonka.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/tabs/enums/tabs-layout.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/tabs/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/tabs/providers/tabs.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/tabs/tab-content.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/tabs/tab-link.directive.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/tabs/tab.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/tabs/tab-overflow-content.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/tabs/tabs-id.provider.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/tabs/tabs.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/tabs/tabs.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/vertical-nav/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/vertical-nav/providers/vertical-nav-group-registration.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/vertical-nav/providers/vertical-nav-group.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/vertical-nav/providers/vertical-nav-icon.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/vertical-nav/providers/vertical-nav.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/vertical-nav/vertical-nav-group-children.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/vertical-nav/vertical-nav-group.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/vertical-nav/vertical-nav-icon.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/vertical-nav/vertical-nav-link.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/vertical-nav/vertical-nav.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/vertical-nav/vertical-nav.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/modal/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/modal/modal-body.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/modal/modal.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/modal/modal.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/modal/modal-stack.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/common/abstract-popover.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/common/popover-host-anchor.token.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/common/popover.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/common/popover-options.interface.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/dropdown/dropdown-item.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/dropdown/dropdown-menu.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/dropdown/dropdown.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/dropdown/dropdown.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/dropdown/dropdown-trigger.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/dropdown/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/dropdown/menu-positions.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/dropdown/providers/dropdown.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/popover.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/signpost/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/signpost/providers/signpost-focus-manager.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/signpost/providers/signpost-id.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/signpost/signpost-content.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/signpost/signpost.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/signpost/signpost.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/signpost/signpost-positions.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/signpost/signpost-trigger.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/tooltip/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/tooltip/providers/tooltip-id.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/tooltip/providers/tooltip-mouse.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/tooltip/tooltip-content.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/tooltip/tooltip.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/tooltip/tooltip.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/popover/tooltip/tooltip-trigger.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/progress/progress-bars/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/progress/progress-bars/progress-bar.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/progress/progress-bars/progress-bar.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/progress/spinner/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/progress/spinner/spinner.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/progress/spinner/spinner.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/timeline/enums/timeline-layout.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/timeline/enums/timeline-step-state.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/timeline/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/timeline/interface/icon-attribute.interface.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/timeline/providers/timeline-icon-attribute.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/timeline/timeline.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/timeline/timeline.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/timeline/timeline-step-description.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/timeline/timeline-step-header.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/timeline/timeline-step.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/timeline/timeline-step-title.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/animations/collapse/collapse.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/animations/collapse/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/animations/constants.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/animations/expandable-animation/expandable-animation.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/animations/expandable-animation/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/animations/fade/fade.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/animations/fade/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/animations/fade-slide/fade-slide.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/animations/fade-slide/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/animations/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/animations/slide/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/animations/slide/slide.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/assert/assert.helpers.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/breakpoints/breakpoints.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/cdk/cdk-drag.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/cdk/cdk-trap-focus.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/chocolate/oompa-loompa.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/chocolate/willy-wonka.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/component/is-boolean-attribute-set.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/conditional/conditional.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/conditional/if-active.directive.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/conditional/if-active.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/conditional/if-expanded.directive.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/conditional/if-expanded.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/conditional/if-open.directive.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/conditional/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/destroy/destroy.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/destroy/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/dom-adapter/dom-adapter.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/enums/keys.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/arrow-key-direction.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/focusable-item/custom-focusable-item-provider.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/focusable-item/focusable-item.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/focusable-item/linkers.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.provider.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/focus-on-view-init/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/focus.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/key-focus/enums/focus-direction.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/key-focus/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/key-focus/interfaces.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/key-focus/key-focus-item.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/key-focus/key-focus.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/key-focus/key-focus.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/key-focus/roving-tabindex.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/key-focus/util.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/focus/wrap-observable.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/forms/validation.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/host-wrapping/dynamic-wrapper.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/host-wrapping/empty-anchor.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/host-wrapping/host-wrapper.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/host-wrapping/host-wrapping.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/i18n/common-strings.default.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/i18n/common-strings.interface.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/i18n/common-strings.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/i18n/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/id-generator/id-generator.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/loading/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/loading/loading-listener.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/loading/loading.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/loading/loading.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/outside-click/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/outside-click/outside-click.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/outside-click/outside-click.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/enums/alignment.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/enums/axis.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/enums/positions.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/enums/side.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/enums/viewport-violation.enum.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/interfaces/popover-content-offset.interface.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/interfaces/popover-position.interface.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/interfaces/visibility-coords.interface.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/popover-anchor.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/popover-close-button.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/popover-content.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/popover-host.directive.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/popover.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/popover-open-close-button.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/position-operators.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/providers/popover-events.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/providers/popover-position.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/providers/popover-toggle.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/popover/stop-escape-propagation.directive.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/scrolling/scrolling-service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/template-ref/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/template-ref/template-ref-container.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/utils/template-ref/template-ref.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/index.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/providers/button-hub.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/providers/header-actions.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/providers/page-collection.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/providers/wizard-navigation.service.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/wizard-button.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/wizard-custom-tags.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/wizard-header-action.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/wizard.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/wizard.module.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/wizard-page-buttons.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/wizard-page-header-actions.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/wizard-page.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/wizard-page-navtitle.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/wizard-page-title.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/wizard-stepnav-item.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/wizard/wizard-stepnav.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/clr-angular.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/clr-angular.mjs.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 150 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/clr-angular.mjs

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/clr-angular.mjs.map

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 150 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @clr/ui-15.0.3

       Found in: package/clr-ui.min.css.map

       Copyright (c) 2016-2023 VMware, Inc.

       This software is released under MIT license.  * The full license information can be found in LICENSE in the root directory of this project.  */ /*  *

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/clr-ui.css

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/clr-ui-dark.css

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/clr-ui-dark.min.css.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 226 in 'LICENSE TEXT REFERENCE TABLE'

       package/shim.cds-core.css

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/accordion/_accordion.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/accordion/_properties.accordion.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/accordion/_variables.accordion.dark.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/accordion/_variables.accordion.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/button/button-group/_button-group.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/button/_buttons.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/button/_properties.buttons.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/button/_properties.toggles.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/button/_variables.buttons.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/button/_variables.toggles.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/color/_properties.color.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/dark-theme.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/data/datagrid/_datagrid.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/data/datagrid/_properties.datagrid.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/data/datagrid/_variables.datagrid.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/data/_properties.tables.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/data/stack-view/_properties.stack-view.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/data/stack-view/_stack-view.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/data/stack-view/_variables.stack-view.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/data/_tables.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/data/tree-view/_properties.tree-view.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/data/tree-view/_tree-view.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/data/tree-view/_variables.tree-view.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/data/_variables.tables.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/emphasis/alert/_alert.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/emphasis/alert/_properties.alert.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/emphasis/alert/_variables.alert.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/emphasis/_badges.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/emphasis/_labels.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/emphasis/_properties.badges.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/emphasis/_properties.label.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/emphasis/_variables.badges.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/emphasis/_variables.label.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/combobox/_combobox.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/combobox/_properties.combobox.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/combobox/_variables.combobox.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/datepicker/_datepicker.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/datepicker/_properties.datepicker.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/datepicker/_variables.datepicker.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/styles/_checkbox.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/styles/_containers.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/styles/_datalist.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/styles/_file.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/styles/_form.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/styles/_input.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/styles/_input-group.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/styles/_mixins.forms.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/styles/_properties.forms.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/styles/_radio.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/styles/_range.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/styles/_select.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/styles/_textarea.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/styles/_toggles.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/forms/styles/_variables.forms.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/image/_icons.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/image/_images.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/_card.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/grid/grid/_grid.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/grid/_grid.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/grid/mixins/_breakpoint.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/grid/mixins/_grid-framework.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/grid/mixins/_grid.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/grid/utilities/_align.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/grid/utilities/_clearfix.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/grid/utilities/_display.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/grid/utilities/_flex.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/grid/utilities/_float.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/grid/utilities/_visibility.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/_login.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/main-container/_layout.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/main-container/_properties.header.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/main-container/_variables.header.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/nav/_header.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/nav/_links.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/nav/_nav.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/nav/_properties.nav.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/nav/_properties.responsive-nav.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/nav/_properties.subnav.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/nav/_responsive-nav.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/nav/_subnav.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/nav/_variables.nav.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/nav/_variables.responsive-nav.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/nav/_variables.subnav.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/_properties.card.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/_properties.login.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/tabs/_properties.tabs.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/tabs/_tabs.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/tabs/_variables.tabs.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/_variables.card.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/_variables.login.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/vertical-nav/_properties.vertical-nav.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/vertical-nav/_variables.vertical-nav.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/layout/vertical-nav/_vertical-nav.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/main.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/modal/_modal.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/modal/_properties.modal.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/modal/_variables.modal.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/popover/common/_popover.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/popover/dropdown/_dropdown.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/popover/dropdown/_menu-mixins.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/popover/dropdown/_properties.dropdown.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/popover/dropdown/_variables.dropdown.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/popover/signpost/_properties.signpost.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/popover/signpost/_signposts.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/popover/signpost/_variables.signpost.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/popover/tooltip/_properties.tooltip.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/popover/tooltip/_tooltips.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/popover/tooltip/_variables.tooltip.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/progress/progress-bars/_progress-bars.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/progress/progress-bars/_properties.progress-bars.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/progress/progress-bars/utils/_mixins.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/progress/progress-bars/_variables.progress-bars.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/progress/spinner/_spinner.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/progress/spinner/_variables.spinner.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/timeline/_properties.timeline.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/timeline/_timeline.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/timeline/_variables.timeline.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/typography/_code.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/typography/_font-metropolis.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/typography/_lists.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/typography/_typography.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/_a11y.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/animations/_animations.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/_close.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/_components.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/_mixins.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/_normalize.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/_overwrites.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/popover/_popover-popover.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/_reboot.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/_theme.dark.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 134 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/_theme.dark.icons.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/_variables.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/variables/_properties.color.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/variables/_properties.global.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/variables/_properties.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/variables/_properties.typography.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/variables/_variables.color.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/variables/_variables.global.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/variables/_variables.layout.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/variables/_variables.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/utils/variables/_variables.typography.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/wizard/_properties.wizard.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/wizard/_variables.wizard.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/wizard/_wizard.clarity.scss

       Copyright (c) 2016-2023 VMware, Inc.

       See SECTION 135 in 'LICENSE TEXT REFERENCE TABLE'


   >>> fast-glob-3.3.0

       The MIT License (MIT)

       Copyright (c) Denis Malinochkin

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> postcss-modules-local-by-default-4.0.3

       Found in: package/LICENSE

       Copyright 2015 Mark Dalgleish <mark.john.dalgleish@gmail.com>

       The MIT License (MIT)


   >>> acorn-8.10.0

       MIT License

       Copyright (C) 2012-2022 by various contributors (see AUTHORS)

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> lit-html-2.7.5

       BSD 3-Clause License

       Copyright (c) 2017 Google LLC. All rights reserved.

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:

       1. Redistributions of source code must retain the above copyright notice, this
          list of conditions and the following disclaimer.

       2. Redistributions in binary form must reproduce the above copyright notice,
          this list of conditions and the following disclaimer in the documentation
          and/or other materials provided with the distribution.

       3. Neither the name of the copyright holder nor the names of its
          contributors may be used to endorse or promote products derived from
          this software without specific prior written permission.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
       AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
       IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
       DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
       FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
       DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
       SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
       CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
       OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
       OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

       ADDITIONAL LICENSE INFORMATION

       > BSD-3

       package/async-directive.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/async-directive.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/async-directive.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/async-directive.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/async-directive.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/async-directive.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directive.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directive-helpers.d.ts

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directive-helpers.js

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directive-helpers.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directive.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directive.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/async-append.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/async-append.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/async-append.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/async-replace.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/async-replace.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/async-replace.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/cache.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/cache.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/cache.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/choose.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/choose.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/choose.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/class-map.d.ts

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/class-map.js

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/class-map.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/guard.d.ts

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/guard.js

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/guard.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/if-defined.d.ts

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/if-defined.js

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/if-defined.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/join.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/join.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/join.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/keyed.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/keyed.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/keyed.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/live.d.ts

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/live.js

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/live.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/map.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/map.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/map.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/private-async-helpers.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/private-async-helpers.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/private-async-helpers.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/range.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/range.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/range.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/ref.d.ts

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/ref.js

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/ref.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/repeat.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/repeat.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/repeat.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/style-map.d.ts

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/style-map.js

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/style-map.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/template-content.d.ts

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/template-content.js

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/template-content.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/unsafe-html.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/unsafe-html.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/unsafe-html.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/unsafe-svg.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/unsafe-svg.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/unsafe-svg.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/until.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/until.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/until.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/when.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/when.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/when.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/experimental-hydrate.d.ts

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/experimental-hydrate.js

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/experimental-hydrate.js.map

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/is-server.d.ts

       Copyright 2022 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/is-server.js

       Copyright 2022 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/is-server.js.map

       Copyright 2022 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/lit-html.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/lit-html.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/lit-html.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/polyfill-support.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/polyfill-support.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/polyfill-support.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/private-ssr-support.d.ts

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/private-ssr-support.js

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/private-ssr-support.js.map

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/static.d.ts

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/static.js

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/static.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directive.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directive-helpers.d.ts

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directive-helpers.js

       Copyright 2020 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/directive-helpers.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directive.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/directive.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/async-append.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/async-append.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/async-append.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/async-replace.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/async-replace.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/async-replace.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/cache.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/cache.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/cache.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/choose.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/choose.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/choose.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/class-map.d.ts

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/class-map.js

       Copyright 2018 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/class-map.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/guard.d.ts

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/guard.js

       Copyright 2018 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/guard.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/if-defined.d.ts

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/if-defined.js

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/if-defined.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/join.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/join.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/join.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/keyed.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/keyed.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/keyed.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/live.d.ts

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/live.js

       Copyright 2020 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/live.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/map.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/map.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/map.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/private-async-helpers.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/private-async-helpers.js

       Copyright 2021 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/private-async-helpers.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/range.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/range.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/range.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/ref.d.ts

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/ref.js

       Copyright 2020 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/ref.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/repeat.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/repeat.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/repeat.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/style-map.d.ts

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/style-map.js

       Copyright 2018 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/style-map.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/template-content.d.ts

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/template-content.js

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/template-content.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/unsafe-html.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/unsafe-html.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/unsafe-html.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/unsafe-svg.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/unsafe-svg.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/unsafe-svg.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/until.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/until.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/until.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/when.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/when.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/when.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/experimental-hydrate.d.ts

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/experimental-hydrate.js

       Copyright 2019 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/experimental-hydrate.js.map

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/is-server.d.ts

       Copyright 2022 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/is-server.js

       Copyright 2022 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/is-server.js.map

       Copyright 2022 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/lit-html.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/lit-html.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/lit-html.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/async-directive.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/async-directive.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/async-directive.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/async-directive.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directive-helpers.js

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directive-helpers.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directive.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directive.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/async-append.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/async-append.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/async-replace.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/async-replace.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/cache.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/cache.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/choose.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/choose.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/class-map.js

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/class-map.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/guard.js

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/guard.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/if-defined.js

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/if-defined.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/join.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/join.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/keyed.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/keyed.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/live.js

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/live.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/map.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/map.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/private-async-helpers.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/private-async-helpers.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/range.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/range.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/ref.js

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/ref.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/repeat.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/repeat.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/style-map.js

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/style-map.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/template-content.js

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/template-content.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/unsafe-html.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/unsafe-html.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/unsafe-svg.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/unsafe-svg.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/until.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/until.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/when.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/directives/when.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/experimental-hydrate.js.map

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/is-server.js

       Copyright 2022 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/is-server.js.map

       Copyright 2022 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/lit-html.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/lit-html.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/polyfill-support.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/polyfill-support.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/private-ssr-support.js

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/private-ssr-support.js.map

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/static.js

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/development/static.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directive-helpers.js

       Copyright 2020 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directive-helpers.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directive.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directive.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/async-append.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/async-append.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/async-replace.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/async-replace.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/cache.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/cache.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/choose.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/choose.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/class-map.js

       Copyright 2018 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/class-map.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/guard.js

       Copyright 2018 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/guard.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/if-defined.js

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/if-defined.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/join.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/join.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/keyed.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/keyed.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/live.js

       Copyright 2020 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/live.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/map.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/map.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/private-async-helpers.js

       Copyright 2021 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/private-async-helpers.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/range.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/range.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/ref.js

       Copyright 2020 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/ref.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/repeat.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/repeat.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/style-map.js

       Copyright 2018 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/style-map.js.map

       Copyright 2018 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/template-content.js

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/template-content.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/unsafe-html.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/unsafe-html.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/unsafe-svg.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/unsafe-svg.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/until.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/until.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/when.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/directives/when.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/experimental-hydrate.js.map

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/is-server.js

       Copyright 2022 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/is-server.js.map

       Copyright 2022 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/lit-html.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/lit-html.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/polyfill-support.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/polyfill-support.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/private-ssr-support.js

       Copyright 2019 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/private-ssr-support.js.map

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/static.js

       Copyright 2020 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/node/static.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/polyfill-support.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/polyfill-support.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/polyfill-support.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/private-ssr-support.d.ts

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/private-ssr-support.js

       Copyright 2019 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/private-ssr-support.js.map

       Copyright 2019 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/static.d.ts

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/static.js

       Copyright 2020 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/static.js.map

       Copyright 2020 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'


   >>> lit-2.7.6

       BSD 3-Clause License

       Copyright (c) 2017 Google LLC. All rights reserved.

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions are met:

       1. Redistributions of source code must retain the above copyright notice, this
          list of conditions and the following disclaimer.

       2. Redistributions in binary form must reproduce the above copyright notice,
          this list of conditions and the following disclaimer in the documentation
          and/or other materials provided with the distribution.

       3. Neither the name of the copyright holder nor the names of its
          contributors may be used to endorse or promote products derived from
          this software without specific prior written permission.

       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
       AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
       IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
       DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
       FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
       DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
       SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
       CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
       OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
       OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

       ADDITIONAL LICENSE INFORMATION

       > BSD-3

       package/async-directive.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/custom-element.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/event-options.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/property.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/query-all.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/query-assigned-elements.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/query-assigned-nodes.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/query-async.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/query.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/decorators/state.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/async-directive.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/async-directive.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/async-directive.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/custom-element.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/custom-element.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/custom-element.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/event-options.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/event-options.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/event-options.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/property.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/property.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/property.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-all.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-all.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-all.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-assigned-elements.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-assigned-elements.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-assigned-elements.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-assigned-nodes.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-assigned-nodes.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-assigned-nodes.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-async.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-async.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query-async.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/query.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/state.d.ts

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/state.js

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/decorators/state.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directive.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directive-helpers.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directive-helpers.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directive-helpers.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directive.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directive.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/async-append.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/async-append.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/async-append.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/async-replace.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/async-replace.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/async-replace.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/cache.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/cache.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/cache.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/choose.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/choose.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/choose.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/class-map.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/class-map.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/class-map.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/guard.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/guard.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/guard.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/if-defined.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/if-defined.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/if-defined.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/join.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/join.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/join.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/keyed.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/keyed.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/keyed.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/live.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/live.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/live.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/map.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/map.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/map.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/range.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/range.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/range.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/ref.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/ref.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/ref.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/repeat.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/repeat.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/repeat.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/style-map.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/style-map.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/style-map.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/template-content.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/template-content.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/template-content.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/unsafe-html.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/unsafe-html.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/unsafe-html.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/unsafe-svg.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/unsafe-svg.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/unsafe-svg.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/until.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/until.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/until.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/when.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/when.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/directives/when.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/experimental-hydrate.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/experimental-hydrate.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/experimental-hydrate.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/experimental-hydrate-support.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/experimental-hydrate-support.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/experimental-hydrate-support.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/html.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/html.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/html.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/index.all.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/index.all.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/index.all.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/index.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/index.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/index.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/polyfill-support.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/polyfill-support.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/polyfill-support.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/static-html.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/static-html.js

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/development/static-html.js.map

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directive.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directive-helpers.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/async-append.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/async-replace.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/cache.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/choose.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/class-map.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/guard.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/if-defined.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/join.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/keyed.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/live.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/map.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/range.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/ref.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/repeat.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/style-map.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/template-content.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/unsafe-html.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/unsafe-svg.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/until.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/directives/when.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/experimental-hydrate.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/experimental-hydrate-support.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/html.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/index.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/polyfill-support.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/polyfill-support.js

       Copyright 2017 Google LLC

       See SECTION 114 in 'LICENSE TEXT REFERENCE TABLE'

       package/polyfill-support.js.map

       Copyright 2017 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       package/static-html.d.ts

       Copyright 2021 Google LLC

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @esbuild/linux-s390x-0.17.8



   >>> @esbuild/android-arm64-0.17.8



   >>> @esbuild/openbsd-x64-0.17.8



   >>> @esbuild/netbsd-x64-0.17.8



   >>> esbuild-0.17.8

       Found in: package/LICENSE.md

       Copyright (c) 2020 Evan Wallace

       MIT.LICENSE


   >>> @esbuild/linux-ia32-0.17.8



   >>> webpack-5.76.1

       Found in: package/LICENSE

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> minipass-fetch-3.0.3

       Found in: package/LICENSE

       Copyright (c) 2016 David Frank

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in all
       copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'


   >>> parse5-html-rewriting-stream-7.0.0

       Found in: parse5-master/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       parse5-master/packages/parse5-htmlparser2-tree-adapter/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       parse5-master/packages/parse5-html-rewriting-stream/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       parse5-master/packages/parse5/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       parse5-master/packages/parse5-parser-stream/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       parse5-master/packages/parse5-plain-text-conversion-stream/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       parse5-master/packages/parse5-sax-parser/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @esbuild/android-arm-0.17.8

       > BSD-3

       package/wasm_exec.js

       Copyright 2018 The Go Authors

       See SECTION 10 in 'LICENSE TEXT REFERENCE TABLE'

       package/wasm_exec_node.js

       Copyright 2021 The Go Authors

       See SECTION 10 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @esbuild/linux-arm64-0.17.8



   >>> esbuild-wasm-0.17.8

       Found in: package/LICENSE.md

       Copyright (c) 2020 Evan Wallace

       MIT.LICENSE

       ADDITIONAL LICENSE INFORMATION

       > BSD-3

       package/esm/browser.js

       Copyright 2018 The Go Authors

       See SECTION 149 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm/browser.min.js

       Copyright 2018 The Go Authors

       See SECTION 121 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/browser.js

       Copyright 2018 The Go Authors

       See SECTION 149 in 'LICENSE TEXT REFERENCE TABLE'

       package/lib/browser.min.js

       Copyright 2018 The Go Authors

       See SECTION 121 in 'LICENSE TEXT REFERENCE TABLE'

       package/wasm_exec.js

       Copyright 2018 The Go Authors

       See SECTION 10 in 'LICENSE TEXT REFERENCE TABLE'

       package/wasm_exec_node.js

       Copyright 2021 The Go Authors

       See SECTION 10 in 'LICENSE TEXT REFERENCE TABLE'


   >>> parse5-sax-parser-7.0.0

       Found in: parse5-master/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       parse5-master/packages/parse5-htmlparser2-tree-adapter/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       parse5-master/packages/parse5-html-rewriting-stream/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       parse5-master/packages/parse5/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       parse5-master/packages/parse5-parser-stream/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       parse5-master/packages/parse5-plain-text-conversion-stream/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       parse5-master/packages/parse5-sax-parser/LICENSE

       Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'


   >>> open-8.4.1

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       MIT.LICENSE

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/xdg-open

       Copyright 2006, Jeremy White <jwhite@codeweavers.com>

       See SECTION 25 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @esbuild/linux-mips64el-0.17.8



   >>> @esbuild/win32-arm64-0.17.8



   >>> @esbuild/win32-ia32-0.17.8



   >>> @esbuild/linux-arm-0.17.8



   >>> @esbuild/darwin-x64-0.17.8



   >>> webpack-dev-middleware-6.0.1

       Found in: webpack-dev-middleware-master/LICENSE

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @angular-devkit/build-webpack-0.1502.8

       License : MIT


   >>> @ngtools/webpack-15.2.8

       Found in: angular-cli-main/LICENSE

       Copyright (c) 2017 Google, Inc.

       the MIT License

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       angular-cli-main/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.d.ts

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.js

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015, Salesforce.com, Inc.

       See SECTION 80 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2010 LearnBoost <dev@learnboost.com>

       See SECTION 2 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Kyle E. Mitchell

       See SECTION 11 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-2

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright JS Foundation and other contributors, https://js.foundation

       See SECTION 65 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Joyent, Inc.

       See SECTION 95 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-3

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2013, Yahoo! Inc.

       See SECTION 107 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015, Salesforce.com, Inc.

       See SECTION 122 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       angular-cli-main/bin/architect

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/devkit-admin

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/ng

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/schematics

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.eslintrc.json

       Copyright Google LLC

       See SECTION 109 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/lib/bootstrap-local.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/lib/packages.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/bin/bootstrap.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/bin/ng.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/lib/cli/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/lib/init.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/analytics/analytics-collector.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/analytics/analytics-parameters.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/analytics/analytics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/architect-base-command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/architect-command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/command-runner.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/schematics-command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/command.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/json-help.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/json-schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/normalize-options-middleware.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/schematic-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/schematic-workflow.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/add/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/analytics/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/analytics/info/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/analytics/settings/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/build/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/clean/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/info/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/settings/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/utilities.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/command-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/completion/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/config/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/deploy/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/doc/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/e2e/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/extract-i18n/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/generate/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/lint/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/make-this-awesome/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/new/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/run/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/serve/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/update/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/update/schematic/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/update/schematic/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/version/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/typings-bazel.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/typings.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/color.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/completion.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/environment-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/error.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/find-up.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/json-file.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/log-file.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/memoize_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/memoize.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/package-manager.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/package-metadata.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/package-tree.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/project.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/prompt.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/spinner.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/tty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/version.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/create/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/create/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/all-of.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/concat.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/false.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/true.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect_cli/bin/architect.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect_cli/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect_cli/src/progress.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/jobs/job-registry_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/jobs/job-registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/node-modules-architect-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/api_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/api.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/architect.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/create-builder.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/internal.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/api.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/create-job-handler.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/dispatcher_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/dispatcher.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/exception.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/fallback-registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-registry_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-scheduler_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-scheduler.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/strategy_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/strategy.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/types.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/schedule-by-name.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/testing/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/testing/testing-architect-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/plugins/karma.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel-bazel.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/build-action.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/execute-build.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/app-shell/app-shell_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/app-shell/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/app-shell/render-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/builder-status-warnings.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/allow-js_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/aot_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/base-href_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/build-optimizer_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/cross-origin_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/deploy-url_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/errors_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/font-optimization_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/lazy-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/no-entry-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/optimization-level_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/output-path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/poll_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/rebuild_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/replacements_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/resolve-json-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/resources-output-path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/scripts-array_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/service-worker_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/source-map_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/stats-json_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/styles_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/svg_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/tsconfig-paths_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/unused-files-warning_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/vendor-chunk_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/vendor-source-map_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/web-worker_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/builder.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/load-proxy-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/hmr_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/vite-server.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/empty-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/ivy-extract-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/jest/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/jest/jest-global.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/jest/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/karma/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/ng-packagr/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/ng-packagr/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/protractor/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/protractor/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/server/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/server/platform-server-exports-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/builder-harness_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/builder-harness.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/file-watching.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/jasmine-helpers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/babel-loader.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-static-class-members_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-static-class-members.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-typescript-enums_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-typescript-enums.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/elide-angular-metadata_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/elide-angular-metadata.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/pure-toplevel-functions_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/pure-toplevel-functions.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/presets/application.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/angular-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/compilation/angular-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/compilation/aot-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/compilation/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/compilation/jit-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/compilation/noop-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/compiler-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/diagnostics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/jit-plugin-callbacks.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/jit-resource-transformer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/uri.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/application-code-bundle.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/bundler-context.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/bundler-execution-result.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/commonjs-checker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/compiler-plugin-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/external-packages-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/global-scripts.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/global-styles.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/index-html-generator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/javascript-transformer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/javascript-transformer-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/license-extractor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/load-result-cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/profiling.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/rxjs-esm-resolution-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/sourcemap-ignorelist-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/bundle-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/css-language.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/css-resource-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/less-language.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/sass-language.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/virtual-module-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/watcher.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/rebasing-importer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/sass-service-legacy.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/sass-service.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/worker-legacy.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/common.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/dev-server.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/styles.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/any-component-style-budget-checker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/builder-watch-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/common-js-usage-warn-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/css-optimizer-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/dedupe-module-resolve-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/devtools-ignore-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/esbuild-executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/hmr/hmr-accept.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/hmr/hmr-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/index-html-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/javascript-optimizer-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/javascript-optimizer-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/json-stats-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/named-chunks-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/occurrences-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/postcss-cli-resources.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/progress-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/remove-hash-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/scripts-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/service-worker-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/styles-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/suppress-entry-chunks-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/transfer-size-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/typescript.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/watch-files-logs-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/utils/async-chunks.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/utils/helpers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/utils/stats.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/transforms.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/typings.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/action-executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/build-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/bundle-calculator_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/bundle-calculator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/bundle-inline-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/check-port.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/color.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/copy-assets.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/default-progress.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/delete-output-dir.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/environment-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/error.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/i18n-inlining.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/i18n-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/augment-index-html_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/augment-index-html.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/html-rewriting-stream.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/index-html-generator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-critical-css_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-critical-css.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-fonts_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-fonts.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/style-nonce_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/style-nonce.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/load-esm.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/load-translations.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-asset-patterns.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-builder-schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-file-replacements.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-optimization.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-polyfills.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-source-maps.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/output-paths.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/package-chunk-sort.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/package-version.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/process-bundle.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/purge-cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/read-tsconfig.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/run-module-as-observable-fork.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/run-module-worker.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/server-rendering/esm-in-memory-file-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/server-rendering/prerender.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/server-rendering/render-page.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/server-rendering/render-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/service-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/spinner.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/strip-bom.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/supported-browsers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/tailwind.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/tty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/url_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/url.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/version.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/webpack-browser-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/webpack-diagnostics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack-dev-server/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack-dev-server/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/cli-logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/testing/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/exception.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/pointer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/prompt_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/registry_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/transforms_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/transforms.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/utility.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/visitor_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/visitor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/indent_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/indent.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/level.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/logger_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/null-logger_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/null-logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/transform-logger_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/transform-logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/lang.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/literals_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/literals.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/object_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/object.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/partially-ordered-set_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/partially-ordered-set.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/priority-queue_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/priority-queue.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/strings.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/template.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/alias_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/alias.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/buffer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/create.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/empty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/memory_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/memory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/pattern_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/pattern.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/record_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/record.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/resolver.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/safe.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/scoped.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/sync.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/path.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/core_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/core.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/definitions_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/definitions.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/metadata.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/reader_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/reader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/utilities.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/writer_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/writer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/bin/schematics_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/bin/schematics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/blank/factory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/schematic/factory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/engine.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/schematic_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/schematic.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/exception/exception.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/format-validator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/html-selector_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/html-selector.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/path.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/base_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/base.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/call_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/call.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/move_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/move.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/random.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/schematic.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/template_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/template.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/url.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/dryrun_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/dryrun.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/sink.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/action_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/action.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/common_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/delegate.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/empty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/entry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/host-tree_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/host-tree.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/null.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/recorder_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/recorder.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/scoped_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/scoped.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/static.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/utility/update-buffer_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/utility/update-buffer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/workflow/base.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/workflow/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/workflow/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/node/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/node/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/install-task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/link-task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/repo-init/executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/repo-init/init-task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/repo-init/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/run-schematic/executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/run-schematic/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/run-schematic/task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/testing/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/description.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/export-ref_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/export-ref.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/fallback-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-engine-host-base.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-engine-host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-utility.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/node-module-engine-host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/node-module-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/schema-option-transform.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/workflow/node-workflow_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/workflow/node-workflow.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/pwa/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/pwa/pwa/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/pwa/pwa/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/benchmark.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/diagnostics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/paths.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/symbol.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/system.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/transformation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/loaders/inline-resource.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/paths-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/resource_loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/elide_imports_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/elide_imports.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/remove-ivy-jit-support-calls_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/remove-ivy-jit-support-calls.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/replace_resources_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/replace_resources.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/spec_helpers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/application/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/application/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/app-shell/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/app-shell/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/class/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/class/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/component/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/component/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/config/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/config/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/directive/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/directive/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/e2e/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/e2e/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/enum/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/enum/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/environments/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/environments/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/guard/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/guard/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interceptor/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interceptor/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interface/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interface/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/library/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/library/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/remove-default-project-option_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/remove-default-project-option.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/replace-default-collection-option_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/replace-default-collection-option.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/update-server-builder-config_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/update-server-builder-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/module/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/module/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/ng-new/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/ng-new/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/no_typescript_runtime_dep_spec.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/pipe/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/pipe/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/private/components.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/private/standalone_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/private/standalone.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/resolver/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/resolver/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service-worker/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service-worker/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/universal/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/universal/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/add-declaration-to-ng-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/ast-utils_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/ast-utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/change.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependencies_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependencies.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependency_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependency.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/find-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/find-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/generate-from-files.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/json-file.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/latest-versions.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/ng-ast-utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/parse-name_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/parse-name.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/paths_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/paths.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/project-targets.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/app_config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/code_block.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/rules_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/rules.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/util.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/validation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/workspace-models.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/workspace_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/workspace.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/web-worker/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/web-worker/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/workspace/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/workspace/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/build-packages-dist.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/build-schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/build.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/create.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/json-help.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/release-checks/dependency-ranges/index.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/release-checks/dependency-ranges/latest-versions-check.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/release-checks/dependency-ranges/peer-deps-check.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/snapshots.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/templates.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate-build-files.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate-licenses.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate-user-analytics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/link_package_json_to_tarballs.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/ng_cli_schema_generator.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/ng_cli_schema_generator.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/package_json_release_filter.jq

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/quicktype_runner.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/snapshot_repo_filter.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/ts_json_schema.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) Marak Squires

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014-2018, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors

       See SECTION 44 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015-2016, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>

       See SECTION 44 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015 Jed Watson

       See SECTION 62 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors

       See SECTION 54 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014-2017, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014 Jon Schlinkert

       See SECTION 19 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2011-2017 KARASZI Istvan <github@spam.raszi.hu>

       See SECTION 62 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015 Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015-2018, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2013-present, Facebook, Inc.

       See SECTION 21 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015 Douglas Christopher Wilson

       See SECTION 62 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014-2015, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright Joyent, Inc. and other Node contributors

       See SECTION 56 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright jQuery Foundation and other contributors <https://jquery.org/>

       See SECTION 43 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2007 Kris Zyp SitePen (www.sitepen.com)

       See SECTION 93 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       (c) Sindre Sorhus

       See SECTION 34 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2016, Joyent Inc

       See SECTION 8 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014 Jonathan Ong

       See SECTION 64 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2010-2012 Mikeal Rogers

       See SECTION 108 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015-2017, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright JS Foundation and other contributors <https://js.foundation/>

       See SECTION 43 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Joyent, Inc.

       See SECTION 12 in 'LICENSE TEXT REFERENCE TABLE'

       > Unlicense

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2012-2014 TJ Holowaychuk

       See SECTION 139 in 'LICENSE TEXT REFERENCE TABLE'

       > Unknown License file reference

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2005-2009 Tom Wu

       See SECTION 129 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2005 Tom Wu

       See SECTION 129 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2013 Ted Unangst <tedu@openbsd.org>

       See SECTION 137 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>

       See SECTION 137 in 'LICENSE TEXT REFERENCE TABLE'

       > Public Domain

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Joyent, Inc.

       See SECTION 136 in 'LICENSE TEXT REFERENCE TABLE'


   >>> ignore-walk-6.0.3

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       The ISC License


   >>> sass-loader-13.2.0

       Found in: sass-loader-master/LICENSE

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @esbuild/darwin-arm64-0.17.8



   >>> @esbuild/linux-loong64-0.17.8



   >>> @schematics/angular-15.2.8

       Found in: package/LICENSE

       Copyright (c) 2017 Google, Inc.

       the MIT License

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       package/third_party/github.com/Microsoft/TypeScript/lib/typescript.d.ts

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       package/third_party/github.com/Microsoft/TypeScript/lib/typescript.js

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       package/application/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/application/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/app-shell/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/app-shell/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/class/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/class/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/component/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/component/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/config/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/config/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/directive/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/directive/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/e2e/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/e2e/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/enum/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/enum/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/environments/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/environments/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/guard/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/guard/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/interceptor/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/interceptor/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/interface/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/interface/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/library/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/library/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/migrations/update-15/remove-browserslist-config.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/migrations/update-15/remove-browserslist-config.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/migrations/update-15/remove-platform-server-exports.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/migrations/update-15/remove-platform-server-exports.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/migrations/update-15/update-karma-main-file.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/migrations/update-15/update-karma-main-file.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/migrations/update-15/update-typescript-target.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/migrations/update-15/update-typescript-target.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/migrations/update-15/update-workspace-config.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/migrations/update-15/update-workspace-config.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/module/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/module/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/ng-new/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ng-new/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/pipe/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/pipe/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/private/components.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/private/components.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/private/standalone.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/private/standalone.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/resolver/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/resolver/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/service/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/service/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/service-worker/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/service-worker/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/universal/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/universal/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/add-declaration-to-ng-module.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/add-declaration-to-ng-module.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/ast-utils.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/ast-utils.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/change.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/change.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/dependencies.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/dependencies.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/dependency.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/dependency.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/find-module.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/find-module.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/generate-from-files.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/generate-from-files.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/json-file.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/json-file.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/latest-versions.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/latest-versions.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/ng-ast-utils.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/ng-ast-utils.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/parse-name.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/parse-name.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/paths.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/paths.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/project-targets.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/project-targets.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/validation.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/validation.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/workspace.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/workspace.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/workspace-models.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/utility/workspace-models.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/web-worker/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/web-worker/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/workspace/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/workspace/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @esbuild/linux-riscv64-0.17.8



   >>> source-map-loader-4.0.1

       Found in: source-map-loader-master/LICENSE

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> sass-1.58.1

       Found in: dart-sass-main/LICENSE

       Copyright (c) 2016, Google Inc.

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > MIT

       dart-sass-main/bin/sass.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/CONTRIBUTING.md

       Copyright 2021 Google LLC.

       See SECTION 105 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/sass.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/at_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/comment.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/declaration.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/import.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/keyframe_block.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/media_query.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/media_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/modifiable/at_rule.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/modifiable/comment.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/modifiable.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/modifiable/declaration.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/modifiable/import.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/modifiable/keyframe_block.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/modifiable/media_rule.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/modifiable/node.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/modifiable/style_rule.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/modifiable/stylesheet.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/modifiable/supports_rule.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/node.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/style_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/stylesheet.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/supports_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/css/value.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/node.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/argument.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/argument_declaration.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/argument_invocation.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/at_root_query.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/callable_invocation.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/configured_variable.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/declaration.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/dependency.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/binary_operation.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/boolean.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/calculation.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/color.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/function.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/if.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/interpolated_function.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/list.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/map.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/null.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/number.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/parenthesized.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/selector.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/string.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/supports.dart

       Copyright 2022 Google Inc.

       See SECTION 141 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/unary_operation.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/value.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/expression/variable.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/import.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/import/dynamic.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/import/static.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/interpolation.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/node.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/reference.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/at_root_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/at_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/callable_declaration.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/content_block.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/content_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/debug_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/declaration.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/each_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/error_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/extend_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/for_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/forward_rule.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/function_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/if_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/import_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/include_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/loud_comment.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/media_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/mixin_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/parent.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/return_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/silent_comment.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/style_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/stylesheet.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/supports_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/use_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/variable_declaration.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/warn_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/statement/while_rule.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/supports_condition/anything.dart

       Copyright 2020 Google Inc.

       See SECTION 101 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/supports_condition.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/supports_condition/declaration.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/supports_condition/function.dart

       Copyright 2020 Google Inc.

       See SECTION 101 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/supports_condition/interpolation.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/supports_condition/negation.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/sass/supports_condition/operation.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector/attribute.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector/class.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector/combinator.dart

       Copyright 2022 Google Inc.

       See SECTION 141 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector/complex_component.dart

       Copyright 2022 Google Inc.

       See SECTION 141 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector/complex.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector/compound.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector/id.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector/list.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector/parent.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector/placeholder.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector/pseudo.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector/qualified_name.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector/simple.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector/type.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/ast/selector/universal.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/async_compile.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/async_environment.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/async_import_cache.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/callable/async_built_in.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/callable/async.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/callable/built_in.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/callable.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/callable/plain_css.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/callable/user_defined.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/color_names.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/compile.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/compile_result.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/configuration.dart

       Copyright 2019 Google LLC.

       See SECTION 103 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/configured_value.dart

       Copyright 2019 Google LLC.

       See SECTION 103 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/deprecation.dart

       Copyright 2022 Google LLC.

       See SECTION 168 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/dispatcher.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/executable.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/function_registry.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/host_callable.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/importer/base.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/importer/file.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/importer/host.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/isolate_dispatcher.dart

       Copyright 2023 Google Inc.

       See SECTION 166 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/logger.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/protofier.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/unavailable.dart

       Copyright 2023 Google Inc.

       See SECTION 166 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/util/explicit_close_transformer.dart

       Copyright 2023 Google Inc.

       See SECTION 166 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/util/length_delimited_transformer.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/util/proto_extensions.dart

       Copyright 2023 Google Inc.

       See SECTION 166 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/utils.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/util/varint_builder.dart

       Copyright 2023 Google Inc.

       See SECTION 166 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/embedded/value.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/environment.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/evaluation_context.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/exception.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/executable/compile_stylesheet.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/executable/options.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/executable/repl.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/executable/watch.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/extend/empty_extension_store.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/extend/extension.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/extend/extension_store.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/extend/functions.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/extend/merged_extension.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/extend/mode.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/functions/color.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/functions.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/functions/list.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/functions/map.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/functions/math.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/functions/meta.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/functions/selector.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/functions/string.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/import_cache.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/importer/async.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/importer.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/importer/filesystem.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/importer/legacy_node.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/importer/legacy_node/implementation.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/importer/legacy_node/interface.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/importer/node_to_dart/async.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/importer/node_to_dart/async_file.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/importer/node_to_dart/file.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/importer/node_to_dart/sync.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/importer/no_op.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/importer/package.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/importer/result.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/importer/utils.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/interpolation_buffer.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/interpolation_map.dart

       Copyright 2023 Google Inc.

       See SECTION 166 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/io.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/io/interface.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/io/node.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/io/vm.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/logger.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/logger/deprecation_handling.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/logger/node_to_dart.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/logger/stderr.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/logger/tracking.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/module/built_in.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/module.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/module/forwarded_view.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/module/shadowed_view.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/array.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/chokidar.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/compile.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/compile_options.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/compile_result.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/exception.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/exports.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/function.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/immutable.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/importer.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/legacy.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/legacy/fiber.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/legacy/importer_result.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/legacy/render_context.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/legacy/render_options.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/legacy/render_result.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/legacy/types.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/legacy/value/boolean.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/legacy/value/color.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/legacy/value.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/legacy/value/list.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/legacy/value/map.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/legacy/value/null.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/legacy/value/number.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/legacy/value/string.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/logger.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/reflection.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/source_span.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/url.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/utils.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/value/argument_list.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/value/boolean.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/value/color.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/value.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/value/function.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/value/list.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/value/map.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/value/number.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/node/value/string.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/parse/at_root_query.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/parse/css.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/parse/keyframe_selector.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/parse/media_query.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/parse/parser.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/parse/sass.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/parse/scss.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/parse/selector.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/parse/stylesheet.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/stylesheet_graph.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/syntax.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/util/box.dart

       Copyright 2023 Google Inc.

       See SECTION 166 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/util/character.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/util/lazy_file_span.dart

       Copyright 2023 Google LLC.

       See SECTION 169 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/util/limited_map_view.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/util/merged_map_view.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/util/multi_dir_watcher.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/util/multi_span.dart

       Copyright 2022 Google Inc.

       See SECTION 141 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/util/no_source_map_buffer.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/util/nullable.dart

       Copyright 2020 Google Inc.

       See SECTION 101 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/util/number.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/util/prefixed_map_view.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/util/public_member_map_view.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/utils.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/util/source_map_buffer.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/util/span.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/util/unprefixed_map_view.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/value/argument_list.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/value/boolean.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/value/calculation.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/value/color.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/value.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/value/function.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/value/list.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/value/map.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/value/null.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/value/number/complex.dart

       Copyright 2020 Google Inc.

       See SECTION 101 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/value/number.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/value/number/single_unit.dart

       Copyright 2020 Google Inc.

       See SECTION 101 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/value/number/unitless.dart

       Copyright 2020 Google Inc.

       See SECTION 101 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/value/string.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/any_selector.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/async_evaluate.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/clone_css.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/evaluate.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/every_css.dart

       Copyright 2022 Google Inc.

       See SECTION 141 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/expression_to_calc.dart

       Copyright 2023 Google Inc.

       See SECTION 166 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/find_dependencies.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/interface/css.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/interface/expression.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/interface/modifiable_css.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/interface/selector.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/interface/statement.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/interface/value.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/recursive_ast.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/recursive_selector.dart

       Copyright 2022 Google Inc.

       See SECTION 141 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/recursive_statement.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/replace_expression.dart

       Copyright 2023 Google Inc.

       See SECTION 166 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/selector_search.dart

       Copyright 2023 Google Inc.

       See SECTION 166 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/serialize.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/lib/src/visitor/statement_search.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/pkg/sass_api/lib/sass_api.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/tool/assert-formatted.sh

       Copyright 2016 Google Inc.

       See SECTION 102 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/tool/grind/bazel.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/tool/grind/benchmark.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/tool/grind.dart

       Copyright 2016 Google Inc.

       See SECTION 99 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/tool/grind/double_check.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/tool/grind/frameworks.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/tool/grind/subpackages.dart

       Copyright 2021 Google Inc.

       See SECTION 104 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/tool/grind/synchronize.dart

       Copyright 2017 Google Inc.

       See SECTION 100 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/tool/grind/utils.dart

       Copyright 2018 Google Inc.

       See SECTION 97 in 'LICENSE TEXT REFERENCE TABLE'

       dart-sass-main/tool/utils.dart

       Copyright 2019 Google Inc.

       See SECTION 98 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @esbuild/linux-x64-0.17.8



   >>> @tufjs/models-1.0.4

       Found in: package/LICENSE

       Copyright (c) 2022 GitHub and the TUF Contributors

       MIT.LICENSE


   >>> read-package-json-6.0.4

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter

       The ISC License


   >>> @esbuild/linux-ppc64-0.17.8



   >>> @esbuild/win32-x64-0.17.8



   >>> @esbuild/freebsd-x64-0.17.8



   >>> @esbuild/sunos-x64-0.17.8



   >>> postcss-loader-7.0.2

       Found in: postcss-loader-master/LICENSE

       Copyright JS Foundation and other contributors

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> pacote-15.1.0

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter, Kat Marchan, npm, Inc., and Contributors

       The ISC License


   >>> jackspeak-2.2.1

       Blue Oak Model License
       Version 1.0.0

       Purpose
       This license gives everyone as much permission to work with this software as possible, while protecting contributors from liability.

       Acceptance
       In order to receive this license, you must agree to its rules. The rules of this license are both obligations under that agreement and conditions to your license. You must not do anything with this software that triggers a rule that you cannot or will not follow.

       Copyright
       Each contributor licenses you to do everything with this software that would otherwise infringe that contributor's copyright in it.

       Notices
       You must ensure that everyone who gets a copy of any part of this software from you, with or without changes, also gets the text of this license or a link to https://blueoakcouncil.org/license/1.0.0.

       Excuse
       If anyone notifies you in writing that you have not complied with Notices, you can keep your license by taking all practical steps to comply within 30 days after the notice. If you do not do so, your license ends immediately.

       Patent
       Each contributor licenses you to do everything with this software that would otherwise infringe any patent claims they can license or become able to license.

       Reliability
       No contributor can revoke this license.

       No Liability
       As far as the law allows, this software comes as is, without any warranty or condition, and no contributor will be liable to anyone for any damages related to this software or this license, under any kind of legal claim.


   >>> @angular-devkit/architect-0.1502.8

       Found in: angular-cli-main/LICENSE

       Copyright (c) 2017 Google, Inc.

       the MIT License

       ADDITIONAL LICENSE INFORMATION

       > Apache2.0

       angular-cli-main/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.d.ts

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.js

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015, Salesforce.com, Inc.

       See SECTION 80 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2010 LearnBoost <dev@learnboost.com>

       See SECTION 2 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) Microsoft Corporation

       See SECTION 49 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Kyle E. Mitchell

       See SECTION 11 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-2

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Joyent, Inc.

       See SECTION 95 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright JS Foundation and other contributors, https://js.foundation

       See SECTION 65 in 'LICENSE TEXT REFERENCE TABLE'

       > BSD-3

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015, Salesforce.com, Inc.

       See SECTION 122 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2013, Yahoo! Inc.

       See SECTION 107 in 'LICENSE TEXT REFERENCE TABLE'

       > MIT

       angular-cli-main/bin/architect

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/devkit-admin

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/ng

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/bin/schematics

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.eslintrc.json

       Copyright Google LLC

       See SECTION 109 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/lib/bootstrap-local.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/lib/packages.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/bin/bootstrap.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/bin/ng.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/lib/cli/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/lib/init.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/analytics/analytics-collector.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/analytics/analytics-parameters.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/analytics/analytics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/architect-base-command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/architect-command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/command-runner.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/schematics-command-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/command.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/json-help.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/json-schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/normalize-options-middleware.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/schematic-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/command-builder/utilities/schematic-workflow.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/add/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/analytics/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/analytics/info/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/analytics/settings/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/build/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/clean/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/info/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/settings/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/cache/utilities.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/command-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/completion/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/config/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/deploy/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/doc/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/e2e/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/extract-i18n/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/generate/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/lint/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/make-this-awesome/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/new/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/run/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/serve/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/update/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/update/schematic/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/update/schematic/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/commands/version/cli.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/typings-bazel.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/typings.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/color.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/completion.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/environment-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/error.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/find-up.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/json-file.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/log-file.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/memoize_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/memoize.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/package-manager.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/package-metadata.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/package-tree.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/project.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/prompt.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/spinner.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/tty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/cli/src/utilities/version.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/create/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/create/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/all-of.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/concat.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/false.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/builders/true.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect_cli/bin/architect.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect_cli/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect_cli/src/progress.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/jobs/job-registry_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/jobs/job-registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/node/node-modules-architect-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/api_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/api.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/architect.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/create-builder.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/internal.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/api.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/create-job-handler.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/dispatcher_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/dispatcher.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/exception.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/fallback-registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-registry_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-scheduler_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/simple-scheduler.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/strategy_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/strategy.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/jobs/types.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/src/schedule-by-name.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/testing/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/architect/testing/testing-architect-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/plugins/karma.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/babel-bazel.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/build-action.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/execute-build.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/application/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/app-shell/app-shell_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/app-shell/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/app-shell/render-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/builder-status-warnings.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/allow-js_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/aot_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/base-href_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/build-optimizer_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/cross-origin_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/deploy-url_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/errors_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/font-optimization_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/lazy-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/no-entry-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/optimization-level_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/output-path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/poll_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/rebuild_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/replacements_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/resolve-json-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/resources-output-path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/scripts-array_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/service-worker_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/source-map_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/stats-json_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/styles_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/svg_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/tsconfig-paths_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/unused-files-warning_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/vendor-chunk_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/vendor-source-map_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/web-worker_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/browser/specs/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/builder.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/load-proxy-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/hmr_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/specs/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/vite-server.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/empty-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/ivy-extract-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/extract-i18n/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/jest/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/jest/jest-global.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/jest/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/karma/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/ng-packagr/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/ng-packagr/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/protractor/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/protractor/works_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/server/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/builders/server/platform-server-exports-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/builder-harness_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/builder-harness.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/file-watching.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/testing/jasmine-helpers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/babel-loader.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-static-class-members_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-static-class-members.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-typescript-enums_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/adjust-typescript-enums.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/elide-angular-metadata_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/elide-angular-metadata.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/pure-toplevel-functions_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/plugins/pure-toplevel-functions.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/presets/application.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/angular-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/compilation/angular-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/compilation/aot-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/compilation/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/compilation/jit-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/compilation/noop-compilation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/compiler-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/diagnostics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/jit-plugin-callbacks.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/jit-resource-transformer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/angular/uri.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/application-code-bundle.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/bundler-context.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/bundler-execution-result.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/commonjs-checker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/compiler-plugin-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/external-packages-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/global-scripts.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/global-styles.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/index-html-generator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/javascript-transformer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/javascript-transformer-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/license-extractor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/load-result-cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/profiling.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/rxjs-esm-resolution-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/sourcemap-ignorelist-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/bundle-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/css-language.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/css-resource-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/less-language.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/sass-language.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/virtual-module-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/esbuild/watcher.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/rebasing-importer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/sass-service-legacy.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/sass-service.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/worker-legacy.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/sass/worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/common.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/dev-server.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/configs/styles.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/any-component-style-budget-checker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/builder-watch-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/common-js-usage-warn-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/css-optimizer-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/dedupe-module-resolve-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/devtools-ignore-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/esbuild-executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/hmr/hmr-accept.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/hmr/hmr-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/index-html-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/javascript-optimizer-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/javascript-optimizer-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/json-stats-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/named-chunks-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/occurrences-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/postcss-cli-resources.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/progress-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/remove-hash-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/scripts-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/service-worker-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/styles-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/suppress-entry-chunks-webpack-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/transfer-size-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/typescript.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/plugins/watch-files-logs-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/utils/async-chunks.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/utils/helpers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/tools/webpack/utils/stats.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/transforms.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/typings.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/action-executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/build-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/bundle-calculator_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/bundle-calculator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/bundle-inline-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/check-port.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/color.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/copy-assets.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/default-progress.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/delete-output-dir.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/environment-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/error.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/i18n-inlining.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/i18n-options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/augment-index-html_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/augment-index-html.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/html-rewriting-stream.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/index-html-generator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-critical-css_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-critical-css.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-fonts_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/inline-fonts.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/style-nonce_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index-file/style-nonce.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/load-esm.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/load-translations.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-asset-patterns.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-builder-schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-file-replacements.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-optimization.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-polyfills.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/normalize-source-maps.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/output-paths.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/package-chunk-sort.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/package-version.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/process-bundle.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/purge-cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/read-tsconfig.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/run-module-as-observable-fork.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/run-module-worker.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/server-rendering/esm-in-memory-file-loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/server-rendering/prerender.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/server-rendering/render-page.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/server-rendering/render-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/service-worker.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/spinner.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/strip-bom.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/supported-browsers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/tailwind.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/tty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/url_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/url.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/version.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/webpack-browser-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_angular/src/utils/webpack-diagnostics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack-dev-server/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack-dev-server/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/build_webpack/src/webpack/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/cli-logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/testing/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/node/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/exception.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/pointer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/prompt_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/registry_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/registry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/transforms_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/transforms.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/utility.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/visitor_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/schema/visitor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/json/utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/indent_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/indent.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/level.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/logger_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/null-logger_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/null-logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/transform-logger_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/logger/transform-logger.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/lang.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/literals_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/literals.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/object_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/object.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/partially-ordered-set_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/partially-ordered-set.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/priority-queue_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/priority-queue.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/strings.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/utils/template.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/alias_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/alias.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/buffer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/create.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/empty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/memory_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/memory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/pattern_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/pattern.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/record_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/record.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/resolver.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/safe.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/scoped.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/host/sync.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/virtual-fs/path.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/core_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/core.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/definitions_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/definitions.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/metadata.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/reader_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/reader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/utilities.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/writer_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/core/src/workspace/json/writer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/bin/schematics_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/bin/schematics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/blank/factory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics_cli/schematic/factory.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/engine.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/schematic_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/engine/schematic.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/exception/exception.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/format-validator.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/html-selector_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/html-selector.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/path_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/formats/path.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/base_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/base.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/call_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/call.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/move_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/move.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/random.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/schematic.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/template_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/template.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/rules/url.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/dryrun_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/dryrun.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/sink/sink.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/action_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/action.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/common_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/delegate.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/empty.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/entry.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/host-tree_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/host-tree.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/null.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/recorder_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/recorder.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/scoped_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/scoped.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/tree/static.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/utility/update-buffer_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/utility/update-buffer.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/workflow/base.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/workflow/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/src/workflow/interface.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/node/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/node/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/install-task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/link-task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/package-manager/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/repo-init/executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/repo-init/init-task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/repo-init/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/run-schematic/executor.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/run-schematic/options.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tasks/run-schematic/task.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/testing/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/testing/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/description.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/export-ref_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/export-ref.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/fallback-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-engine-host-base.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-engine-host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/file-system-utility.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/node-module-engine-host_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/node-module-engine-host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/schema-option-transform.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/workflow/node-workflow_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular_devkit/schematics/tools/workflow/node-workflow.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/pwa/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/pwa/pwa/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/angular/pwa/pwa/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/benchmark.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/cache.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/diagnostics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/host.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/paths.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/symbol.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/system.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/ivy/transformation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/loaders/inline-resource.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/paths-plugin.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/resource_loader.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/elide_imports_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/elide_imports.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/remove-ivy-jit-support-calls_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/remove-ivy-jit-support-calls.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/replace_resources_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/replace_resources.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/ngtools/webpack/src/transformers/spec_helpers.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/application/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/application/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/app-shell/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/app-shell/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/class/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/class/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/component/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/component/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/config/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/config/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/directive/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/directive/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/e2e/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/e2e/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/enum/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/enum/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/environments/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/environments/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/guard/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/guard/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interceptor/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interceptor/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interface/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/interface/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/library/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/library/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/remove-default-project-option_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/remove-default-project-option.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/replace-default-collection-option_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/replace-default-collection-option.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/update-server-builder-config_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/migrations/update-16/update-server-builder-config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/module/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/module/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/ng-new/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/ng-new/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/no_typescript_runtime_dep_spec.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/pipe/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/pipe/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/private/components.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/private/standalone_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/private/standalone.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/resolver/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/resolver/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service-worker/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/service-worker/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/universal/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/universal/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/add-declaration-to-ng-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/ast-utils_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/ast-utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/change.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependencies_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependencies.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependency_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/dependency.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/find-module_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/find-module.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/generate-from-files.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/json-file.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/latest-versions.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/ng-ast-utils.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/parse-name_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/parse-name.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/paths_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/paths.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/project-targets.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/app_config.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/code_block.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/rules_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/rules.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/standalone/util.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/validation.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/workspace-models.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/workspace_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/utility/workspace.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/web-worker/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/web-worker/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/workspace/index_spec.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/packages/schematics/angular/workspace/index.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/build-packages-dist.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/build-schema.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/build.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/create.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/json-help.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/release-checks/dependency-ranges/index.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/release-checks/dependency-ranges/latest-versions-check.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/release-checks/dependency-ranges/peer-deps-check.mts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/snapshots.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/templates.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate-build-files.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate-licenses.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/scripts/validate-user-analytics.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/BUILD.bazel

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/link_package_json_to_tarballs.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/ng_cli_schema_generator.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/ng_cli_schema_generator.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/package_json_release_filter.jq

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/quicktype_runner.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/snapshot_repo_filter.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/tools/ts_json_schema.bzl

       Copyright Google Inc.

       See SECTION 106 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Joyent, Inc.

       See SECTION 12 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2010-2012 Mikeal Rogers

       See SECTION 108 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2011-2017 KARASZI Istvan <github@spam.raszi.hu>

       See SECTION 62 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2013-present, Facebook, Inc.

       See SECTION 21 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015-2018, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015-2016, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015-2017, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014-2018, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)

       See SECTION 1 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright jQuery Foundation and other contributors <https://jquery.org/>

       See SECTION 43 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2007 Kris Zyp SitePen (www.sitepen.com)

       See SECTION 93 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) Marak Squires

       See SECTION 6 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015 Jed Watson

       See SECTION 62 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014 Jonathan Ong

       See SECTION 64 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015 Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors

       See SECTION 54 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>

       See SECTION 44 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors

       See SECTION 44 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright Joyent, Inc. and other Node contributors

       See SECTION 56 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       (c) Sindre Sorhus

       See SECTION 34 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2016, Joyent Inc

       See SECTION 8 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright JS Foundation and other contributors <https://js.foundation/>

       See SECTION 43 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014-2017, Jon Schlinkert

       See SECTION 36 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014 Jon Schlinkert

       See SECTION 19 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2015 Douglas Christopher Wilson

       See SECTION 62 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2014-2015, Jon Schlinkert

       See SECTION 28 in 'LICENSE TEXT REFERENCE TABLE'

       > Unlicense

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2012-2014 TJ Holowaychuk

       See SECTION 139 in 'LICENSE TEXT REFERENCE TABLE'

       > Unknown License file reference

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2013 Ted Unangst <tedu@openbsd.org>

       See SECTION 137 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>

       See SECTION 137 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2005-2009 Tom Wu

       See SECTION 129 in 'LICENSE TEXT REFERENCE TABLE'

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright (c) 2005 Tom Wu

       See SECTION 129 in 'LICENSE TEXT REFERENCE TABLE'

       > Public Domain

       angular-cli-main/.yarn/releases/yarn-1.22.17.cjs

       Copyright 2015 Joyent, Inc.

       See SECTION 136 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @esbuild/freebsd-arm64-0.17.8



   >>> @esbuild/android-x64-0.17.8

       > BSD-3

       package/wasm_exec.js

       Copyright 2018 The Go Authors

       See SECTION 10 in 'LICENSE TEXT REFERENCE TABLE'

       package/wasm_exec_node.js

       Copyright 2021 The Go Authors

       See SECTION 10 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @babel/helper-split-export-declaration-7.22.6

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/helpers-7.22.6

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/parser-7.22.7

       Found in: package/LICENSE

       Copyright (c) 2012-2014 by various contributors

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> @babel/traverse-7.22.8

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> node-releases-2.0.13

       Found in: package/LICENSE

       Copyright (c) 2017 Sergey Rubanov (https://github.com/chicoxyzzy)

       the MIT License


   >>> semver-5.7.2

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       The ISC License


   >>> semver-6.3.1

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       The ISC License


   >>> @webcomponents/scoped-custom-element-registry-0.0.8

       > BSD-3

       polyfills--webcomponents-scoped-custom-element-registry-0.0.8/LICENSE

       Copyright (c) 2019 The Polymer Authors

       See SECTION 14 in 'LICENSE TEXT REFERENCE TABLE'

       polyfills--webcomponents-scoped-custom-element-registry-0.0.8/packages/custom-elements/LICENSE.md

       Copyright (c) 2015 The Polymer Authors

       See SECTION 143 in 'LICENSE TEXT REFERENCE TABLE'

       polyfills--webcomponents-scoped-custom-element-registry-0.0.8/packages/html-imports/LICENSE.md

       Copyright (c) 2015 The Polymer Authors

       See SECTION 143 in 'LICENSE TEXT REFERENCE TABLE'

       polyfills--webcomponents-scoped-custom-element-registry-0.0.8/packages/shadycss/LICENSE.md

       Copyright (c) 2015 The Polymer Authors

       See SECTION 143 in 'LICENSE TEXT REFERENCE TABLE'

       polyfills--webcomponents-scoped-custom-element-registry-0.0.8/packages/shady-css-scoped-element/LICENSE.md

       Copyright (c) 2019 The Polymer Authors

       See SECTION 224 in 'LICENSE TEXT REFERENCE TABLE'

       polyfills--webcomponents-scoped-custom-element-registry-0.0.8/packages/shadydom/LICENSE.md

       Copyright (c) 2015 The Polymer Authors

       See SECTION 143 in 'LICENSE TEXT REFERENCE TABLE'

       polyfills--webcomponents-scoped-custom-element-registry-0.0.8/packages/shadydom/src/selector-parser.js

       Copyright (c) 2022 The Polymer Project

       See SECTION 63 in 'LICENSE TEXT REFERENCE TABLE'

       polyfills--webcomponents-scoped-custom-element-registry-0.0.8/packages/template/LICENSE.md

       Copyright (c) 2016 The Polymer Authors

       See SECTION 223 in 'LICENSE TEXT REFERENCE TABLE'

       polyfills--webcomponents-scoped-custom-element-registry-0.0.8/packages/template/README.md

       Copyright (c) 2016 The Polymer Authors

       See SECTION 225 in 'LICENSE TEXT REFERENCE TABLE'

       polyfills--webcomponents-scoped-custom-element-registry-0.0.8/packages/webcomponentsjs/LICENSE.md

       Copyright (c) 2015 The Polymer Authors

       See SECTION 143 in 'LICENSE TEXT REFERENCE TABLE'

       polyfills--webcomponents-scoped-custom-element-registry-0.0.8/packages/webcomponentsjs/README.md

       Copyright (c) 2015 The Polymer Authors

       See SECTION 81 in 'LICENSE TEXT REFERENCE TABLE'


   >>> core-js-compat-3.31.1

       Found in: package/LICENSE

       Copyright (c) 2014-2023 Denis Pushkarev

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
       THE SOFTWARE.


   >>> @babel/plugin-transform-classes-7.22.6

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @angular/animations-15.2.0

       > MIT

       package/browser/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/browser/testing/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/browser.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/dsl/animation_ast_builder.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/dsl/animation_timeline_builder.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/dsl/animation_transition_expr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/dsl/animation_transition_instruction.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/dsl/style_normalization/animation_style_normalizer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/dsl/style_normalization/web_animations_style_normalizer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/error_helpers.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/errors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/private_export.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/render/animation_driver.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/render/shared.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/render/timeline_animation_engine.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/render/transition_animation_engine.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/render/web_animations/animatable_props_set.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/render/web_animations/dom_animation.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/src/warning_helpers.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/testing/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/testing/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/testing/src/mock_animation_driver.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/browser/testing/src/testing.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/animation_event.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/animation_metadata.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/animations.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/players/animation_group_player.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/players/animation_player.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/private_export.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/version.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/animations.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/animations.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 158 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/browser.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/browser.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 163 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/browser/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/browser/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 159 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/animations.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/animations.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 160 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/browser.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/browser.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 161 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/browser/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/browser/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 162 in 'LICENSE TEXT REFERENCE TABLE'

       package/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @angular/cdk-15.2.0

       Found in: package/LICENSE

       Copyright (c) 2023 Google LLC.

       the MIT License

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/esm2020/a11y/a11y-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/aria-describer/aria-describer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/aria-describer/aria-reference.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/fake-event-detection.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/focus-monitor/focus-monitor.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/focus-trap/configurable-focus-trap-config.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/focus-trap/configurable-focus-trap-factory.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/focus-trap/configurable-focus-trap.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/focus-trap/event-listener-inert-strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/focus-trap/focus-trap-inert-strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/focus-trap/focus-trap-manager.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/focus-trap/focus-trap.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/high-contrast-mode/high-contrast-mode-detector.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/input-modality/input-modality-detector.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/interactivity-checker/interactivity-checker.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/key-manager/activedescendant-key-manager.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/key-manager/focus-key-manager.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/key-manager/list-key-manager.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/live-announcer/live-announcer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/live-announcer/live-announcer-tokens.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/a11y/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/accordion-item.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/accordion.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/accordion-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/accordion/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/bidi/bidi-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/bidi/dir-document-token.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/bidi/directionality.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/bidi/dir.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/bidi/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/bidi/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/clipboard/clipboard.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/clipboard/clipboard-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/clipboard/copy-to-clipboard.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/clipboard/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/clipboard/pending-copy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/clipboard/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/coercion/array.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/coercion/boolean-property.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/coercion/css-pixel-value.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/coercion/element.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/coercion/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/coercion/number-property.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/coercion/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/coercion/string-array.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/collections/array-data-source.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/collections/collection-viewer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/collections/data-source.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/collections/dispose-view-repeater-strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/collections/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/collections/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/collections/recycle-view-repeater-strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/collections/selection-model.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/collections/tree-adapter.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/collections/unique-selection-dispatcher.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/collections/view-repeater.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/dialog/dialog-config.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/dialog/dialog-container.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/dialog/dialog-injectors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/dialog/dialog.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/dialog/dialog-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/dialog/dialog-ref.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/dialog/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/dialog/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/directives/assertions.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/directives/config.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/directives/drag-handle.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/directives/drag.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/directives/drag-placeholder.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/directives/drag-preview.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/directives/drop-list-group.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/directives/drop-list.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/dom/client-rect.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/dom/clone-node.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/dom/parent-position-tracker.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/dom/styling.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/dom/transition-duration.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/drag-drop.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/drag-drop-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/drag-drop-registry.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/drag-events.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/drag-parent.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/drag-ref.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/drag-utils.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/drop-list-ref.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/sorting/drop-list-sort-strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/drag-drop/sorting/single-axis-sort-strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/keycodes/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/keycodes/keycodes.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/keycodes/modifiers.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/keycodes/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/breakpoints.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/breakpoints-observer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/layout-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/media-matcher.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/layout/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/listbox/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/listbox/listbox.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/listbox/listbox-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/listbox/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/context-menu-trigger.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/menu-aim.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/menu-bar.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/menu-base.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/menu-errors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/menu-group.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/menu-interface.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/menu-item-checkbox.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/menu-item.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/menu-item-radio.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/menu-item-selectable.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/menu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/menu-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/menu-stack.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/menu-trigger-base.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/menu-trigger.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/pointer-focus-tracker.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/menu/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/observers/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/observers/observe-content.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/observers/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/dispatchers/base-overlay-dispatcher.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/dispatchers/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/dispatchers/overlay-keyboard-dispatcher.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/dispatchers/overlay-outside-click-dispatcher.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/fullscreen-overlay-container.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/overlay-config.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/overlay-container.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/overlay-directives.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/overlay.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/overlay-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/overlay-reference.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/overlay-ref.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/position/connected-position.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/position/flexible-connected-position-strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/position/global-position-strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/position/overlay-position-builder.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/position/position-strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/position/scroll-clip.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/scroll/block-scroll-strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/scroll/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/scroll/noop-scroll-strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/scroll/reposition-scroll-strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/scroll/scroll-strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/overlay/scroll/scroll-strategy-options.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/platform/features/input-types.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/platform/features/passive-listeners.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/platform/features/scrolling.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/platform/features/shadow-dom.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/platform/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/platform/platform.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/platform/platform-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/platform/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/portal/dom-portal-outlet.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/portal/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/portal/portal-directives.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/portal/portal-errors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/portal/portal-injector.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/portal/portal.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/portal/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/scrolling/fixed-size-virtual-scroll.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/scrolling/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/scrolling/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/scrolling/scrollable.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/scrolling/scroll-dispatcher.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/scrolling/scrolling-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/scrolling/viewport-ruler.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/scrolling/virtual-for-of.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/scrolling/virtual-scrollable-element.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/scrolling/virtual-scrollable.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/scrolling/virtual-scrollable-window.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/scrolling/virtual-scroll-repeater.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/scrolling/virtual-scroll-strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/scrolling/virtual-scroll-viewport.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/stepper/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/stepper/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/stepper/step-header.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/stepper/step-label.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/stepper/stepper-button.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/stepper/stepper.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/stepper/stepper-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/table/can-stick.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/table/cell.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/table/coalesced-style-scheduler.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/table/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/table/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/table/row.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/table/sticky-position-listener.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/table/sticky-styler.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/table/table-errors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/table/table.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/table/table-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/table/text-column.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/table/tokens.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/change-detection.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/component-harness.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/element-dimensions.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/harness-environment.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/selenium-webdriver/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/selenium-webdriver/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/selenium-webdriver/selenium-web-driver-element.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/selenium-webdriver/selenium-web-driver-harness-environment.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/selenium-webdriver/selenium-webdriver-keys.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/testbed/fake-events/dispatch-events.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/testbed/fake-events/element-focus.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/testbed/fake-events/event-objects.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/testbed/fake-events/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/testbed/fake-events/type-in-element.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/testbed/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/testbed/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/testbed/task-state-zone-interceptor.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/testbed/testbed-harness-environment.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/text-filtering.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/text-field/autofill.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/text-field/autosize.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/text-field/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/text-field/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/text-field/text-field-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/tree/control/base-tree-control.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/tree/control/flat-tree-control.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/tree/control/nested-tree-control.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/tree/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/tree/nested-node.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/tree/node.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/tree/outlet.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/tree/padding.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/tree/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/tree/toggle.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/tree/tree-errors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/tree/tree-module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/version.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/a11y.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/a11y.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 204 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/accordion.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/accordion.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 179 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/bidi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/bidi.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 201 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/cdk.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/cdk.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 234 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/clipboard.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/clipboard.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 203 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/coercion.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/coercion.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 138 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/collections.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/collections.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 212 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/dialog.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/dialog.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 185 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/drag-drop.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/drag-drop.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 189 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/keycodes.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/keycodes.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 211 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/layout.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/layout.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 187 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/listbox.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/listbox.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 190 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/menu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/menu.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 220 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/observers.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/observers.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 208 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/overlay.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/overlay.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 219 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/platform.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/platform.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 215 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/portal.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/portal.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 210 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/scrolling.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/scrolling.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 218 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/stepper.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/stepper.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 195 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/table.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/table.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 197 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 180 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing/selenium-webdriver.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing/selenium-webdriver.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 181 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing/testbed.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing/testbed.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 193 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/text-field.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/text-field.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 194 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/tree.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/tree.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 209 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/a11y.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/a11y.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 192 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/accordion.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/accordion.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 198 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/bidi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/bidi.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 216 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/cdk.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/cdk.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 234 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/clipboard.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/clipboard.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 182 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/coercion.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/coercion.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 138 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/collections.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/collections.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 196 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/dialog.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/dialog.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 217 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/drag-drop.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/drag-drop.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 200 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/keycodes.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/keycodes.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 211 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/layout.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/layout.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 214 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/listbox.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/listbox.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 184 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/menu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/menu.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 222 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/observers.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/observers.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 202 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/overlay.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/overlay.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 221 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/platform.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/platform.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 186 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/portal.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/portal.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 206 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/scrolling.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/scrolling.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 199 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/stepper.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/stepper.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 205 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/table.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/table.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 213 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 207 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing/selenium-webdriver.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing/selenium-webdriver.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 188 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing/testbed.mjs

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing/testbed.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 183 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/text-field.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/text-field.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 191 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/tree.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/tree.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 178 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-add/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-add/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-add/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-add/package-config.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-add/package-config.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-add/package-config.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-add/schema.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-add/schema.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-add/schema.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-generate/drag-drop/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-generate/drag-drop/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-generate/drag-drop/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-generate/drag-drop/schema.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-generate/drag-drop/schema.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-generate/drag-drop/schema.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/attribute-selectors.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/attribute-selectors.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/attribute-selectors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/class-names.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/class-names.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/class-names.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/constructor-checks.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/constructor-checks.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/constructor-checks.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/css-selectors.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/css-selectors.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/css-selectors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/element-selectors.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/element-selectors.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/element-selectors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/input-names.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/input-names.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/input-names.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/method-call-checks.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/method-call-checks.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/method-call-checks.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/output-names.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/output-names.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/output-names.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/property-names.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/property-names.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/property-names.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/symbol-removal.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/symbol-removal.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/data/symbol-removal.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/devkit-file-system.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/devkit-file-system.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/devkit-file-system.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/devkit-migration.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/devkit-migration.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/devkit-migration.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/devkit-migration-rule.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/devkit-migration-rule.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/devkit-migration-rule.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/find-stylesheets.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/find-stylesheets.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/find-stylesheets.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/html-parsing/angular.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/html-parsing/angular.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/html-parsing/angular.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/html-parsing/elements.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/html-parsing/elements.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/html-parsing/elements.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/attribute-selectors.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/attribute-selectors.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/attribute-selectors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/class-inheritance.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/class-inheritance.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/class-inheritance.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/class-names.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/class-names.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/class-names.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/constructor-signature.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/constructor-signature.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/constructor-signature.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/css-selectors.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/css-selectors.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/css-selectors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/element-selectors.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/element-selectors.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/element-selectors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/input-names.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/input-names.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/input-names.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/method-call-arguments.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/method-call-arguments.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/method-call-arguments.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/misc-template.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/misc-template.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/misc-template.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/output-names.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/output-names.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/output-names.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/property-names.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/property-names.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/property-names.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/symbol-removal.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/symbol-removal.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/migrations/symbol-removal.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/public-api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/public-api.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/typescript/base-types.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/typescript/base-types.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/typescript/base-types.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/typescript/imports.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/typescript/imports.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/typescript/imports.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/typescript/literal.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/typescript/literal.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/typescript/literal.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/typescript/module-specifiers.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/typescript/module-specifiers.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/typescript/module-specifiers.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/upgrade-data.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/upgrade-data.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-update/upgrade-data.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/paths.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/paths.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/paths.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/component-resource-collector.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/component-resource-collector.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/component-resource-collector.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/file-system.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/file-system.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/file-system.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/logger.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/logger.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/logger.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/migration.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/migration.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/migration.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/public-api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/public-api.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/public-api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/target-version.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/target-version.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/target-version.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/update-recorder.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/update-recorder.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/update-recorder.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/decorators.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/decorators.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/decorators.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/diagnostics.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/diagnostics.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/diagnostics.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/functions.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/functions.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/functions.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/imports.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/imports.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/imports.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/line-mappings.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/line-mappings.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/line-mappings.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/parse-tsconfig.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/parse-tsconfig.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/parse-tsconfig.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/property-name.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/property-name.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/property-name.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/virtual-host.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/virtual-host.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/utils/virtual-host.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/version-changes.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/version-changes.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/update-tool/version-changes.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/ast.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/ast.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/ast.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/ast/ng-module-imports.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/ast/ng-module-imports.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/ast/ng-module-imports.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/build-component.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/build-component.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/build-component.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/get-project.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/get-project.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/get-project.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/html-manipulation.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/html-manipulation.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/html-manipulation.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/index.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/parse5-element.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/parse5-element.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/parse5-element.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/project-index-file.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/project-index-file.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/project-index-file.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/project-main-file.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/project-main-file.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/project-main-file.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/project-style-file.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/project-style-file.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/project-style-file.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/project-targets.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/project-targets.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/project-targets.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/project-tsconfig-paths.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/project-tsconfig-paths.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/project-tsconfig-paths.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/schematic-options.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/schematic-options.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/utils/schematic-options.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @angular/common-15.2.0

       > MIT

       package/esm2020/http/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/src/backend.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/src/client.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/src/context.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/src/headers.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/src/interceptor.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/src/jsonp.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/src/module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/src/params.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/src/provider.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/src/request.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/src/response.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/src/xhr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/src/xsrf.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/testing/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/testing/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/testing/src/api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/testing/src/backend.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/testing/src/module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/testing/src/provider.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/http/testing/src/request.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/common.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/common_module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/cookie.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_class.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_component_outlet.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_for_of.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_if.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_optimized_image/asserts.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_optimized_image/error_helper.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_optimized_image/image_loaders/cloudflare_loader.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_optimized_image/image_loaders/cloudinary_loader.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_optimized_image/image_loaders/imagekit_loader.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_optimized_image/image_loaders/image_loader.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_optimized_image/image_loaders/imgix_loader.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_optimized_image/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_optimized_image/lcp_image_observer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_optimized_image/ng_optimized_image.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_optimized_image/preconnect_link_checker.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_optimized_image/preload-link-creator.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_optimized_image/tokens.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_optimized_image/url.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_plural.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_style.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_switch.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_template_outlet.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/dom_adapter.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/dom_tokens.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/errors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/currencies.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/format_date.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/format_number.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/locale_data_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/locale_data.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/localization.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/location/hash_location_strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/location/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/location/location.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/location/location_strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/location/platform_location.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/location/util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/pipes/async_pipe.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/pipes/case_conversion_pipes.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/pipes/date_pipe_config.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/pipes/date_pipe.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/pipes/i18n_plural_pipe.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/pipes/i18n_select_pipe.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/pipes/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/pipes/invalid_pipe_argument_error.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/pipes/json_pipe.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/pipes/keyvalue_pipe.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/pipes/number_pipe.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/pipes/slice_pipe.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/platform_id.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/private_export.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/version.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/viewport_scroller.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/xhr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/mock_location_strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/provide_location_mocks.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/testing.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/upgrade/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/upgrade/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/upgrade/src/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/upgrade/src/location_shim.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/upgrade/src/location_upgrade_module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/upgrade/src/params.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/upgrade/src/utils.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/common.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/common.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 231 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/http.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/http.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 175 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/http/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/http/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 170 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 173 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/upgrade.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/upgrade.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 233 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/common.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/common.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 230 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/http.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/http.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 174 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/http/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/http/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 171 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 172 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/upgrade.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/upgrade.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 232 in 'LICENSE TEXT REFERENCE TABLE'

       package/http/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/http/testing/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/af.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/af.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/af-NA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/af-NA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/agq.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/agq.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ak.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ak.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/am.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/am.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-AE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-AE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-BH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-BH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-DJ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-DJ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-DZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-DZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-EG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-EG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-EH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-EH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-ER.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-ER.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-IL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-IL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-IQ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-IQ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-JO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-JO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-KM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-KM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-KW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-KW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-LB.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-LB.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-LY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-LY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-MA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-MA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-MR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-MR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-OM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-OM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-PS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-PS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-QA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-QA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-SA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-SA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-SD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-SD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-SO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-SO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-SS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-SS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-SY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-SY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-TD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-TD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-TN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-TN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-YE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ar-YE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/asa.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/asa.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/as.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/as.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ast.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ast.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/az-Cyrl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/az-Cyrl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/az.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/az-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/az-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/az.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bas.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bas.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/be.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bem.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/be.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bem.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/be-tarask.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/be-tarask.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bez.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bez.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bg.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bg.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bm.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bm.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bn-IN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bn-IN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bo-IN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bo-IN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/br.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/br.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/brx.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/brx.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bs-Cyrl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bs-Cyrl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bs.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bs-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bs-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/bs.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ca-AD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ca-AD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ca.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ca-ES-valencia.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ca-ES-valencia.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ca-FR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ca-FR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ca-IT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ca-IT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ca.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ccp.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ccp-IN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ccp-IN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ccp.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ceb.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ceb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ce.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ce.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/cgg.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/cgg.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/chr.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/chr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ckb.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ckb-IR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ckb-IR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ckb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/cs.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/cs.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/cy.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/cy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/da.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/da-GL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/da-GL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/da.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/dav.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/dav.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/de-AT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/de-AT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/de-BE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/de-BE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/de-CH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/de-CH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/de.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/de-IT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/de-IT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/de-LI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/de-LI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/de-LU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/de-LU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/de.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/dje.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/dje.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/doi.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/doi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/dsb.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/dsb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/dua.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/dua.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/dyo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/dyo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/dz.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/dz.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ebu.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ebu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ee.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ee.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ee-TG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ee-TG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/el-CY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/el-CY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/el.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/el.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-001.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-001.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-150.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-150.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-AE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-AE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-AG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-AG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-AI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-AI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-AS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-AS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-AT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-AT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-AU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-AU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-BB.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-BB.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-BE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-BE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-BI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-BI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-BM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-BM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-BS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-BS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-BW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-BW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-BZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-BZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-CA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-CA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-CC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-CC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-CH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-CH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-CK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-CK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-CM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-CM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-CX.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-CX.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-CY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-CY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-DE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-DE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-DG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-DG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-DK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-DK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-DM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-DM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-ER.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-ER.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-FI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-FI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-FJ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-FJ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-FK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-FK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-FM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-FM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GB.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GB.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-GY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-HK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-HK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-IE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-IE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-IL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-IL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-IM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-IM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-IN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-IN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-IO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-IO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-JE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-JE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-JM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-JM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-KE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-KE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-KI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-KI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-KN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-KN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-KY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-KY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-LC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-LC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-LR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-LR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-LS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-LS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MP.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MP.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MV.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MV.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-MY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-NA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-NA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-NF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-NF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-NG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-NG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-NL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-NL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-NR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-NR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-NU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-NU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-NZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-NZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-PG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-PG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-PH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-PH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-PK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-PK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-PN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-PN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-PR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-PR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-PW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-PW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-RW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-RW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SB.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SB.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SX.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SX.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-SZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-TC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-TC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-TK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-TK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-TO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-TO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-TT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-TT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-TV.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-TV.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-TZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-TZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-UG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-UG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-UM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-UM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-VC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-VC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-VG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-VG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-VI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-VI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-VU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-VU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-WS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-WS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-ZA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-ZA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-ZM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-ZM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-ZW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/en-ZW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/eo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/eo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-419.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-419.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-AR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-AR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-BO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-BO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-BR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-BR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-BZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-BZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-CL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-CL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-CO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-CO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-CR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-CR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-CU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-CU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-DO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-DO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-EA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-EA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-EC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-EC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-GQ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-GQ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-GT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-GT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-HN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-HN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-IC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-IC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-MX.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-MX.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-NI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-NI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-PA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-PA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-PE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-PE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-PH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-PH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-PR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-PR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-PY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-PY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-SV.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-SV.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-US.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-US.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-UY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-UY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-VE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/es-VE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/et.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/et.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/eu.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/eu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ewo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ewo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/af.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/af.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/af-NA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/af-NA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/agq.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/agq.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ak.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ak.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/am.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/am.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-AE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-AE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-BH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-BH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-DJ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-DJ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-DZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-DZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-EG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-EG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-EH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-EH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-ER.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-ER.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-IL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-IL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-IQ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-IQ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-JO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-JO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-KM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-KM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-KW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-KW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-LB.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-LB.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-LY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-LY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-MA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-MA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-MR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-MR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-OM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-OM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-PS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-PS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-QA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-QA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-SA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-SA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-SD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-SD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-SO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-SO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-SS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-SS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-SY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-SY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-TD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-TD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-TN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-TN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-YE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ar-YE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/asa.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/asa.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/as.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/as.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ast.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ast.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/az-Cyrl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/az-Cyrl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/az.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/az-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/az-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/az.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bas.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bas.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/be.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bem.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/be.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bem.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/be-tarask.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/be-tarask.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bez.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bez.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bg.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bg.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bm.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bm.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bn-IN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bn-IN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bo-IN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bo-IN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/br.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/br.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/brx.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/brx.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bs-Cyrl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bs-Cyrl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bs.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bs-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bs-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/bs.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ca-AD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ca-AD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ca.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ca-ES-valencia.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ca-ES-valencia.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ca-FR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ca-FR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ca-IT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ca-IT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ca.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ccp.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ccp-IN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ccp-IN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ccp.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ceb.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ceb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ce.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ce.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/cgg.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/cgg.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/chr.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/chr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ckb.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ckb-IR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ckb-IR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ckb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/cs.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/cs.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/cy.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/cy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/da.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/da-GL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/da-GL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/da.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/dav.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/dav.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/de-AT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/de-AT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/de-BE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/de-BE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/de-CH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/de-CH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/de.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/de-IT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/de-IT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/de-LI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/de-LI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/de-LU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/de-LU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/de.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/dje.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/dje.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/doi.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/doi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/dsb.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/dsb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/dua.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/dua.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/dyo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/dyo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/dz.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/dz.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ebu.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ebu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ee.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ee.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ee-TG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ee-TG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/el-CY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/el-CY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/el.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/el.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-001.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-001.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-150.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-150.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-AE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-AE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-AG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-AG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-AI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-AI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-AS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-AS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-AT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-AT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-AU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-AU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-BB.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-BB.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-BE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-BE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-BI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-BI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-BM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-BM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-BS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-BS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-BW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-BW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-BZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-BZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-CA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-CA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-CC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-CC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-CH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-CH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-CK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-CK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-CM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-CM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-CX.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-CX.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-CY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-CY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-DE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-DE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-DG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-DG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-DK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-DK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-DM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-DM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-ER.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-ER.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-FI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-FI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-FJ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-FJ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-FK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-FK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-FM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-FM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GB.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GB.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-GY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-HK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-HK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-IE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-IE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-IL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-IL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-IM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-IM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-IN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-IN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-IO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-IO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-JE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-JE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-JM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-JM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-KE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-KE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-KI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-KI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-KN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-KN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-KY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-KY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-LC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-LC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-LR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-LR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-LS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-LS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MP.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MP.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MV.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MV.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-MY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-NA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-NA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-NF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-NF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-NG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-NG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-NL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-NL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-NR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-NR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-NU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-NU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-NZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-NZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-PG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-PG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-PH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-PH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-PK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-PK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-PN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-PN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-PR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-PR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-PW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-PW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-RW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-RW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SB.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SB.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SX.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SX.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-SZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-TC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-TC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-TK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-TK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-TO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-TO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-TT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-TT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-TV.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-TV.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-TZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-TZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-UG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-UG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-UM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-UM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-VC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-VC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-VG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-VG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-VI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-VI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-VU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-VU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-WS.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-WS.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-ZA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-ZA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-ZM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-ZM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-ZW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/en-ZW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/eo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/eo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-419.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-419.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-AR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-AR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-BO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-BO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-BR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-BR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-BZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-BZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-CL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-CL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-CO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-CO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-CR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-CR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-CU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-CU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-DO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-DO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-EA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-EA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-EC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-EC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-GQ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-GQ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-GT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-GT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-HN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-HN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-IC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-IC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-MX.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-MX.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-NI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-NI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-PA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-PA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-PE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-PE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-PH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-PH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-PR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-PR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-PY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-PY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-SV.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-SV.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-US.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-US.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-UY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-UY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-VE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/es-VE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/et.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/et.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/eu.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/eu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ewo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ewo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fa-AF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fa-AF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fa.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fa.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-BF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-BF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-CM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-CM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-GH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-GH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-GM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-GM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-GW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-GW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-LR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-LR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-MR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-MR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-NE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-NE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-NG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-NG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-SL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-SL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-SN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Adlm-SN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-CM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-CM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-GN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-GN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-BF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-BF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-CM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-CM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-GH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-GH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-GM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-GM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-GN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-GN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-GW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-GW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-LR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-LR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-MR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-MR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-NE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-NE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-NG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-NG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-SL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-Latn-SL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-MR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ff-MR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fi.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fil.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fil.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fo-DK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fo-DK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-BE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-BE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-BF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-BF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-BI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-BI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-BJ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-BJ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-BL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-BL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-CA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-CA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-CD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-CD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-CF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-CF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-CG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-CG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-CH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-CH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-CI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-CI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-CM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-CM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-DJ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-DJ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-DZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-DZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-GA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-GA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-GF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-GF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-GN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-GN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-GP.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-GP.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-GQ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-GQ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-HT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-HT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-KM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-KM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-LU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-LU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-MA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-MA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-MC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-MC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-MF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-MF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-MG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-MG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-ML.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-ML.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-MQ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-MQ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-MR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-MR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-MU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-MU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-NC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-NC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-NE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-NE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-PF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-PF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-PM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-PM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-RE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-RE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-RW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-RW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-SC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-SC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-SN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-SN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-SY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-SY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-TD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-TD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-TG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-TG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-TN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-TN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-VU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-VU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-WF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-WF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-YT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fr-YT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fur.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fur.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fy.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/fy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ga.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ga-GB.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ga-GB.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ga.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/gd.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/gd.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/gl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/gl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/gsw.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/gsw-FR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/gsw-FR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/gsw-LI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/gsw-LI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/gsw.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/gu.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/gu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/guz.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/guz.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/gv.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/gv.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ha.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ha-GH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ha-GH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ha.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ha-NE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ha-NE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/haw.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/haw.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/he.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/he.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/hi.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/hi-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/hi-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/hi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/hr-BA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/hr-BA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/hr.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/hr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/hsb.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/hsb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/hu.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/hu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/hy.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/hy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ia.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ia.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/id.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/id.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ig.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ig.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ii.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ii.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/is.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/is.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/it-CH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/it-CH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/it.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/it.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/it-SM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/it-SM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/it-VA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/it-VA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ja.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ja.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/jgo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/jgo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/jmc.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/jmc.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/jv.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/jv.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kab.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kab.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ka.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kam.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ka.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kam.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kde.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kde.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kea.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kea.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kgp.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kgp.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/khq.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/khq.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ki.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ki.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kk.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kkj.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kkj.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kk.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kln.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kln.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/km.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/km.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ko.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kok.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kok.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ko-KP.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ko-KP.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ko.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ks-Arab.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ks-Arab.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ksb.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ksb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ks-Deva.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ks-Deva.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ks.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ksf.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ksf.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ksh.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ksh.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ks.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ku.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ku.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kw.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/kw.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ky.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ky.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lag.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lag.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lb.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lg.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lg.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lkt.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lkt.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ln-AO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ln-AO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ln-CF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ln-CF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ln-CG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ln-CG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ln.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ln.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lrc.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lrc-IQ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lrc-IQ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lrc.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lt.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lt.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lu.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/luo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/luo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/luy.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/luy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lv.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/lv.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mai.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mai.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mas.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mas.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mas-TZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mas-TZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mer.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mfe.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mfe.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mg.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mgh.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mgh.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mg.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mgo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mgo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mi.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mk.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mk.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ml.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ml.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mni-Beng.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mni-Beng.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mni.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mni.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mr.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ms-BN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ms-BN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ms.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ms-ID.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ms-ID.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ms.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ms-SG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ms-SG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mt.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mt.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mua.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mua.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/my.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/my.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mzn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/mzn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/naq.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/naq.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nb.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nb-SJ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nb-SJ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nd.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nd.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nds.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nds.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nds-NL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nds-NL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ne.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ne-IN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ne-IN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ne.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nl-AW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nl-AW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nl-BE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nl-BE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nl-BQ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nl-BQ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nl-CW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nl-CW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nl-SR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nl-SR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nl-SX.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nl-SX.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nmg.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nmg.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nnh.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nnh.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/no.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/no.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nus.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nus.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nyn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/nyn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/om.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/om-KE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/om-KE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/om.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/or.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/or.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/os.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/os.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/os-RU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/os-RU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pa-Arab.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pa-Arab.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pa.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pa-Guru.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pa-Guru.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pa.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pcm.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pcm.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ps.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ps.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ps-PK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ps-PK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-AO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-AO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-CH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-CH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-CV.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-CV.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-GQ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-GQ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-GW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-GW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-LU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-LU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-MO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-MO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-MZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-MZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-PT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-PT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-ST.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-ST.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-TL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/pt-TL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/qu-BO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/qu-BO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/qu.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/qu-EC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/qu-EC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/qu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/rm.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/rm.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/rn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/rn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ro.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/rof.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/rof.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ro-MD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ro-MD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ro.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ru-BY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ru-BY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ru.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ru-KG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ru-KG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ru-KZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ru-KZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ru-MD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ru-MD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ru.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ru-UA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ru-UA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/rw.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/rwk.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/rwk.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/rw.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sa.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sah.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sah.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sa.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/saq.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/saq.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sat.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sat.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sat-Olck.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sat-Olck.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sbp.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sbp.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sc.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sc.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sd-Arab.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sd-Arab.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sd-Deva.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sd-Deva.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sd.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sd.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/se.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/se-FI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/se-FI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/seh.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/seh.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/se.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ses.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/se-SE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/se-SE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ses.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sg.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sg.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/shi.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/shi-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/shi-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/shi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/shi-Tfng.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/shi-Tfng.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/si.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/si.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sk.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sk.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/smn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/smn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/so-DJ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/so-DJ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/so.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/so-ET.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/so-ET.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/so-KE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/so-KE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/so.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sq.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sq.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sq-MK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sq-MK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sq-XK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sq-XK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Cyrl-BA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Cyrl-BA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Cyrl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Cyrl-ME.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Cyrl-ME.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Cyrl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Cyrl-XK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Cyrl-XK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Latn-BA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Latn-BA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Latn-ME.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Latn-ME.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Latn-XK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr-Latn-XK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/su.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/su-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/su-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/su.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sv-AX.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sv-AX.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sv.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sv-FI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sv-FI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sv.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sw-CD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sw-CD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sw.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sw-KE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sw-KE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sw.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sw-UG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/sw-UG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ta.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ta-LK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ta-LK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ta.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ta-MY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ta-MY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ta-SG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ta-SG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/te.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/te.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/teo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/teo-KE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/teo-KE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/teo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/tg.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/tg.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/th.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/th.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ti.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ti-ER.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ti-ER.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ti.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/tk.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/tk.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/to.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/to.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/tr-CY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/tr-CY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/tr.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/tr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/tt.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/tt.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/twq.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/twq.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/tzm.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/tzm.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ug.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ug.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/uk.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/uk.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/und.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/und.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ur.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ur-IN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ur-IN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/ur.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/uz-Arab.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/uz-Arab.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/uz-Cyrl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/uz-Cyrl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/uz.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/uz-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/uz-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/uz.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/vai.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/vai-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/vai-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/vai.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/vai-Vaii.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/vai-Vaii.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/vi.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/vi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/vun.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/vun.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/wae.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/wae.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/wo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/wo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/xh.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/xh.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/xog.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/xog.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yav.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yav.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yi.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yo-BJ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yo-BJ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yrl-CO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yrl-CO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yrl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yrl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yrl-VE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yrl-VE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yue.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yue-Hans.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yue-Hans.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yue-Hant.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yue-Hant.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/yue.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zgh.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zgh.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh-Hans.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh-Hans-HK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh-Hans-HK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh-Hans.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh-Hans-MO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh-Hans-MO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh-Hans-SG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh-Hans-SG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh-Hant.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh-Hant-HK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh-Hant-HK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh-Hant.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh-Hant-MO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh-Hant-MO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zh.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zu.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/extra/zu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fa-AF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fa-AF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fa.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fa.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-BF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-BF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-CM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-CM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-GH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-GH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-GM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-GM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-GW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-GW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-LR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-LR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-MR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-MR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-NE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-NE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-NG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-NG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-SL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-SL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-SN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Adlm-SN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-CM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-CM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-GN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-GN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-BF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-BF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-CM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-CM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-GH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-GH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-GM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-GM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-GN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-GN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-GW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-GW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-LR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-LR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-MR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-MR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-NE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-NE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-NG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-NG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-SL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-Latn-SL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-MR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ff-MR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fi.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fil.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fil.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fo-DK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fo-DK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-BE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-BE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-BF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-BF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-BI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-BI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-BJ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-BJ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-BL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-BL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-CA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-CA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-CD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-CD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-CF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-CF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-CG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-CG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-CH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-CH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-CI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-CI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-CM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-CM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-DJ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-DJ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-DZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-DZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-GA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-GA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-GF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-GF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-GN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-GN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-GP.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-GP.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-GQ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-GQ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-HT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-HT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-KM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-KM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-LU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-LU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-MA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-MA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-MC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-MC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-MF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-MF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-MG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-MG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-ML.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-ML.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-MQ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-MQ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-MR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-MR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-MU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-MU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-NC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-NC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-NE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-NE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-PF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-PF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-PM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-PM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-RE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-RE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-RW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-RW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-SC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-SC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-SN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-SN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-SY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-SY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-TD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-TD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-TG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-TG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-TN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-TN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-VU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-VU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-WF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-WF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-YT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fr-YT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fur.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fur.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fy.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/fy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ga.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ga-GB.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ga-GB.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ga.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/gd.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/gd.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/gl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/gl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/af.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/af-NA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/agq.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ak.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/am.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-AE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-BH.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-DJ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-DZ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-EG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-EH.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-ER.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-IL.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-IQ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-JO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-KM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-KW.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-LB.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-LY.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-MA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-MR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-OM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-PS.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-QA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-SA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-SD.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-SO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-SS.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-SY.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-TD.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-TN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ar-YE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/asa.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/as.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ast.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/az-Cyrl.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/az.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/az-Latn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/bas.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/be.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/bem.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/be-tarask.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/bez.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/bg.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/bm.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/bn-IN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/bn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/bo-IN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/bo.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/br.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/brx.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/bs-Cyrl.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/bs.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/bs-Latn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ca-AD.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ca-ES-valencia.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ca-FR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ca-IT.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ca.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ccp-IN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ccp.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ceb.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ce.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/cgg.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/chr.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ckb-IR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ckb.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/cs.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/cy.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/da-GL.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/da.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/dav.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/de-AT.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/de-BE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/de-CH.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/de-IT.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/de.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/de-LI.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/de-LU.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/dje.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/doi.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/dsb.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/dua.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/dyo.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/dz.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ebu.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ee.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ee-TG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/el-CY.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/el.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-001.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-150.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-AE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-AG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-AI.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-AS.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-AT.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-AU.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-BB.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-BE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-BI.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-BM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-BS.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-BW.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-BZ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-CA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-CC.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-CH.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-CK.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-CM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-CX.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-CY.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-DE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-DG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-DK.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-DM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-ER.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-FI.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-FJ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-FK.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-FM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-GB.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-GD.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-GG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-GH.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-GI.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-GM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-GU.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-GY.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-HK.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-IE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-IL.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-IM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-IN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-IO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-JE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-JM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-KE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-KI.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-KN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-KY.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-LC.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-LR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-LS.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-MG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-MH.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-MO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-MP.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-MS.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-MT.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-MU.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-MV.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-MW.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-MY.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-NA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-NF.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-NG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-NL.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-NR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-NU.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-NZ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-PG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-PH.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-PK.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-PN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-PR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-PW.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-RW.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-SB.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-SC.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-SD.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-SE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-SG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-SH.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-SI.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-SL.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-SS.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-SX.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-SZ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-TC.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-TK.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-TO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-TT.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-TV.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-TZ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-UG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-UM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-VC.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-VG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-VI.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-VU.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-WS.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-ZA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-ZM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/en-ZW.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/eo.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-419.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-AR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-BO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-BR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-BZ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-CL.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-CO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-CR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-CU.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-DO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-EA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-EC.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-GQ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-GT.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-HN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-IC.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-MX.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-NI.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-PA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-PE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-PH.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-PR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-PY.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-SV.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-US.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-UY.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/es-VE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/et.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/eu.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ewo.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fa-AF.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fa.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Adlm-BF.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Adlm-CM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Adlm-GH.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Adlm-GM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Adlm-GW.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Adlm.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Adlm-LR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Adlm-MR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Adlm-NE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Adlm-NG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Adlm-SL.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Adlm-SN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-CM.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-GN.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Latn-BF.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Latn-CM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Latn-GH.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Latn-GM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Latn-GN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Latn-GW.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Latn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Latn-LR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Latn-MR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Latn-NE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Latn-NG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-Latn-SL.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ff-MR.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fi.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fil.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fo-DK.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fo.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-BE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-BF.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-BI.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-BJ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-BL.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-CA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-CD.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-CF.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-CG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-CH.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-CI.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-CM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-DJ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-DZ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-GA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-GF.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-GN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-GP.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-GQ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-HT.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-KM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-LU.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-MA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-MC.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-MF.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-MG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-ML.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-MQ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-MR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-MU.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-NC.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-NE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-PF.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-PM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-RE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-RW.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-SC.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-SN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-SY.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-TD.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-TG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-TN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-VU.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-WF.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fr-YT.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fur.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/fy.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ga-GB.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ga.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/gd.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/gl.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/gsw-FR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/gsw.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/gsw-LI.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/gu.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/guz.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/gv.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ha-GH.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ha.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ha-NE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/haw.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/he.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/hi.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/hi-Latn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/hr-BA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/hr.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/hsb.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/hu.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/hy.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ia.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/id.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ig.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ii.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/is.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/it-CH.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/it.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/it-SM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/it-VA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ja.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/jgo.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/jmc.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/jv.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/kab.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ka.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/kam.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/kde.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/kea.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/kgp.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/khq.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ki.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/kkj.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/kk.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/kl.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/kln.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/km.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/kn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ko.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/kok.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ko-KP.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ks-Arab.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ksb.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ks-Deva.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ksf.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ksh.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ks.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ku.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/kw.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ky.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/lag.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/lb.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/lg.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/lkt.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ln-AO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ln-CF.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ln-CG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ln.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/lo.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/lrc-IQ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/lrc.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/lt.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/lu.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/luo.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/luy.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/lv.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mai.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mas.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mas-TZ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mer.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mfe.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mgh.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mg.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mgo.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mi.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mk.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ml.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mni-Beng.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mni.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mr.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ms-BN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ms-ID.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ms.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ms-SG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mt.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mua.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/my.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/mzn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/naq.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nb.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nb-SJ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nd.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nds.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nds-NL.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ne-IN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ne.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nl-AW.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nl-BE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nl-BQ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nl-CW.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nl.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nl-SR.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nl-SX.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nmg.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nnh.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/no.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nus.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/nyn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/om.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/om-KE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/or.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/os.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/os-RU.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pa-Arab.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pa-Guru.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pa.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pcm.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pl.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ps.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ps-PK.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pt-AO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pt-CH.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pt-CV.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pt-GQ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pt-GW.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pt.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pt-LU.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pt-MO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pt-MZ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pt-PT.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pt-ST.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/pt-TL.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/qu-BO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/qu-EC.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/qu.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/rm.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/rn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/rof.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ro.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ro-MD.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ru-BY.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ru.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ru-KG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ru-KZ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ru-MD.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ru-UA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/rw.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/rwk.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sah.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sa.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/saq.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sat.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sat-Olck.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sbp.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sc.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sd-Arab.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sd-Deva.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sd.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/se-FI.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/seh.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/se.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/se-SE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ses.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sg.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/shi.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/shi-Latn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/shi-Tfng.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/si.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sk.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sl.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/smn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/so-DJ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/so-ET.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/so.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/so-KE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sq.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sq-MK.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sq-XK.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sr-Cyrl-BA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sr-Cyrl.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sr-Cyrl-ME.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sr-Cyrl-XK.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sr.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sr-Latn-BA.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sr-Latn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sr-Latn-ME.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sr-Latn-XK.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/su.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/su-Latn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sv-AX.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sv-FI.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sv.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sw-CD.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sw.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sw-KE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/sw-UG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ta.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ta-LK.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ta-MY.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ta-SG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/te.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/teo.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/teo-KE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/tg.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/th.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ti-ER.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ti.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/tk.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/to.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/tr-CY.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/tr.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/tt.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/twq.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/tzm.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ug.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/uk.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/und.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ur-IN.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/ur.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/uz-Arab.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/uz-Cyrl.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/uz.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/uz-Latn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/vai.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/vai-Latn.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/vai-Vaii.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/vi.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/vun.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/wae.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/wo.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/xh.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/xog.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/yav.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/yi.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/yo-BJ.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/yo.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/yrl-CO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/yrl.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/yrl-VE.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/yue-Hans.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/yue-Hant.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/yue.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/zgh.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/zh-Hans-HK.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/zh-Hans.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/zh-Hans-MO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/zh-Hans-SG.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/zh-Hant-HK.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/zh-Hant.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/zh-Hant-MO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/zh.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/global/zu.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/gsw.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/gsw-FR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/gsw-FR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/gsw-LI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/gsw-LI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/gsw.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/gu.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/gu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/guz.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/guz.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/gv.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/gv.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ha.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ha-GH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ha-GH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ha.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ha-NE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ha-NE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/haw.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/haw.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/he.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/he.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/hi.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/hi-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/hi-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/hi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/hr-BA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/hr-BA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/hr.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/hr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/hsb.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/hsb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/hu.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/hu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/hy.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/hy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ia.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ia.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/id.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/id.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ig.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ig.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ii.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ii.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/is.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/is.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/it-CH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/it-CH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/it.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/it.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/it-SM.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/it-SM.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/it-VA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/it-VA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ja.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ja.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/jgo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/jgo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/jmc.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/jmc.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/jv.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/jv.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kab.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kab.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ka.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kam.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ka.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kam.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kde.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kde.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kea.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kea.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kgp.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kgp.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/khq.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/khq.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ki.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ki.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kk.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kkj.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kkj.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kk.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kln.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kln.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/km.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/km.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ko.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kok.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kok.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ko-KP.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ko-KP.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ko.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ks-Arab.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ks-Arab.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ksb.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ksb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ks-Deva.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ks-Deva.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ks.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ksf.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ksf.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ksh.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ksh.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ks.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ku.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ku.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kw.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/kw.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ky.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ky.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lag.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lag.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lb.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lg.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lg.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lkt.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lkt.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ln-AO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ln-AO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ln-CF.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ln-CF.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ln-CG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ln-CG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ln.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ln.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lrc.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lrc-IQ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lrc-IQ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lrc.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lt.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lt.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lu.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/luo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/luo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/luy.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/luy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lv.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/lv.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mai.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mai.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mas.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mas.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mas-TZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mas-TZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mer.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mfe.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mfe.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mg.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mgh.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mgh.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mg.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mgo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mgo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mi.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mk.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mk.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ml.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ml.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mni-Beng.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mni-Beng.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mni.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mni.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mr.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ms-BN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ms-BN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ms.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ms-ID.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ms-ID.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ms.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ms-SG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ms-SG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mt.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mt.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mua.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mua.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/my.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/my.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mzn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/mzn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/naq.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/naq.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nb.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nb-SJ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nb-SJ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nd.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nd.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nds.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nds.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nds-NL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nds-NL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ne.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ne-IN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ne-IN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ne.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nl-AW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nl-AW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nl-BE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nl-BE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nl-BQ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nl-BQ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nl-CW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nl-CW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nl-SR.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nl-SR.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nl-SX.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nl-SX.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nmg.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nmg.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nnh.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nnh.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/no.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/no.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nus.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nus.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nyn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/nyn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/om.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/om-KE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/om-KE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/om.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/or.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/or.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/os.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/os.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/os-RU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/os-RU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pa-Arab.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pa-Arab.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pa.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pa-Guru.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pa-Guru.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pa.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pcm.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pcm.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ps.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ps.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ps-PK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ps-PK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-AO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-AO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-CH.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-CH.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-CV.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-CV.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-GQ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-GQ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-GW.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-GW.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-LU.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-LU.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-MO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-MO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-MZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-MZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-PT.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-PT.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-ST.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-ST.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-TL.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/pt-TL.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/qu-BO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/qu-BO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/qu.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/qu-EC.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/qu-EC.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/qu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/rm.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/rm.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/rn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/rn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ro.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/rof.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/rof.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ro-MD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ro-MD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ro.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ru-BY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ru-BY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ru.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ru-KG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ru-KG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ru-KZ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ru-KZ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ru-MD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ru-MD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ru.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ru-UA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ru-UA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/rw.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/rwk.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/rwk.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/rw.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sa.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sah.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sah.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sa.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/saq.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/saq.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sat.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sat.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sat-Olck.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sat-Olck.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sbp.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sbp.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sc.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sc.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sd-Arab.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sd-Arab.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sd-Deva.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sd-Deva.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sd.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sd.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/se.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/se-FI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/se-FI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/seh.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/seh.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/se.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ses.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/se-SE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/se-SE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ses.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sg.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sg.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/shi.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/shi-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/shi-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/shi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/shi-Tfng.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/shi-Tfng.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/si.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/si.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sk.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sk.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/smn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/smn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/so-DJ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/so-DJ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/so.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/so-ET.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/so-ET.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/so-KE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/so-KE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/so.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sq.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sq.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sq-MK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sq-MK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sq-XK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sq-XK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Cyrl-BA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Cyrl-BA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Cyrl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Cyrl-ME.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Cyrl-ME.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Cyrl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Cyrl-XK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Cyrl-XK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Latn-BA.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Latn-BA.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Latn-ME.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Latn-ME.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Latn-XK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr-Latn-XK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/su.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/su-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/su-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/su.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sv-AX.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sv-AX.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sv.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sv-FI.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sv-FI.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sv.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sw-CD.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sw-CD.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sw.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sw-KE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sw-KE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sw.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sw-UG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/sw-UG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ta.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ta-LK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ta-LK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ta.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ta-MY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ta-MY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ta-SG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ta-SG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/te.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/te.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/teo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/teo-KE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/teo-KE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/teo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/tg.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/tg.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/th.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/th.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ti.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ti-ER.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ti-ER.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ti.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/tk.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/tk.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/to.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/to.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/tr-CY.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/tr-CY.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/tr.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/tr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/tt.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/tt.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/twq.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/twq.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/tzm.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/tzm.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ug.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ug.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/uk.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/uk.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/und.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/und.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ur.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ur-IN.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ur-IN.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/ur.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/uz-Arab.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/uz-Arab.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/uz-Cyrl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/uz-Cyrl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/uz.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/uz-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/uz-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/uz.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/vai.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/vai-Latn.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/vai-Latn.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/vai.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/vai-Vaii.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/vai-Vaii.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/vi.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/vi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/vun.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/vun.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/wae.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/wae.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/wo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/wo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/xh.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/xh.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/xog.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/xog.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yav.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yav.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yi.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yi.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yo-BJ.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yo-BJ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yo.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yo.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yrl-CO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yrl-CO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yrl.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yrl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yrl-VE.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yrl-VE.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yue.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yue-Hans.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yue-Hans.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yue-Hant.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yue-Hant.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/yue.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zgh.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zgh.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh-Hans.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh-Hans-HK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh-Hans-HK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh-Hans.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh-Hans-MO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh-Hans-MO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh-Hans-SG.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh-Hans-SG.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh-Hant.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh-Hant-HK.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh-Hant-HK.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh-Hant.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh-Hant-MO.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh-Hant-MO.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zh.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zu.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/locales/zu.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/testing/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/upgrade/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @angular/compiler-cli-15.2.0

       Found in: package/ngcc/src/execution/cluster/master.d.ts

       Copyright Google LLC

        * Use of this source code is governed by an MIT-style license that can be
        * found in the LICENSE file at https://angular.io/license

       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/bundles/chunk-2OF2AI57.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/chunk-2PLRZDNU.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/chunk-6ZJFIQBG.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/chunk-EC5K6QPP.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/chunk-J3L7WZP3.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/chunk-MLCT4AWL.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/chunk-NJMZRTB6.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/chunk-NXCQCU6C.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/chunk-O4JLZZWJ.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/chunk-P6SWFK2U.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/chunk-PKSKJEUS.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/chunk-QRHWLC7U.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/chunk-SBDNBITT.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/chunk-YRDMG3GM.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/chunk-ZCBRXUPO.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/index.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/linker/babel/index.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/ngcc/index.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/ngcc/main-ngcc.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/ngcc/src/execution/cluster/ngcc_cluster_worker.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/ngcc/src/locking/lock_file_with_child_process/ngcc_lock_unlocker.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/private/bazel.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/private/localize.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/private/migrations.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/src/bin/ngc.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/bundles/src/bin/ng_xi18n.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/babel/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/babel/src/ast/babel_ast_factory.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/babel/src/ast/babel_ast_host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/babel/src/babel_declaration_scope.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/babel/src/babel_plugin.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/babel/src/es2015_linker_plugin.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/babel/src/linker_plugin_options.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/ast/ast_host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/ast/ast_value.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/ast/typescript/typescript_ast_host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/fatal_linker_error.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/declaration_scope.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/emit_scopes/emit_scope.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/emit_scopes/local_emit_scope.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/get_source_file.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/linker_environment.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/linker_options.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/needs_linking.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/partial_linkers/partial_component_linker_1.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/partial_linkers/partial_directive_linker_1.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/partial_linkers/partial_factory_linker_1.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/partial_linkers/partial_injector_linker_1.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/partial_linkers/partial_linker.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/partial_linkers/partial_linker_selector.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/partial_linkers/partial_ng_module_linker_1.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/partial_linkers/partial_pipe_linker_1.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/partial_linkers/util.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/file_linker/translator.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/linker/src/linker_import_generator.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/analysis/module_with_providers_analyzer.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/analysis/ngcc_references_registry.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/analysis/ngcc_trait_compiler.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/analysis/private_declarations_analyzer.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/analysis/types.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/analysis/util.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/constants.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/dependencies/dependency_host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/dependencies/dependency_resolver.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/dependencies/dts_dependency_host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/dependencies/esm_dependency_host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/dependencies/module_resolver.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/entry_point_finder/entry_point_collector.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/entry_point_finder/interface.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/entry_point_finder/program_based_entry_point_finder.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/entry_point_finder/targeted_entry_point_finder.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/entry_point_finder/tracing_entry_point_finder.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/entry_point_finder/utils.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/execution/api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/execution/cluster/api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/execution/cluster/executor.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/execution/cluster/ngcc_cluster_worker.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/execution/cluster/package_json_updater.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/execution/cluster/utils.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/execution/cluster/worker.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/execution/single_process_executor.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/execution/tasks/api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/execution/tasks/completion.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/execution/tasks/queues/base_task_queue.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/execution/tasks/queues/parallel_task_queue.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/execution/tasks/queues/serial_task_queue.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/execution/tasks/utils.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/host/commonjs_host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/host/commonjs_umd_utils.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/host/delegating_host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/host/esm2015_host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/host/esm5_host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/host/ngcc_host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/host/umd_host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/host/utils.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/locking/async_locker.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/locking/lock_file.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/locking/lock_file_with_child_process/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/locking/lock_file_with_child_process/util.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/locking/sync_locker.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/main.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/migrations/migration.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/migrations/missing_injectable_migration.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/migrations/undecorated_child_migration.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/migrations/undecorated_parent_migration.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/migrations/utils.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/packages/build_marker.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/packages/bundle_program.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/packages/entry_point_bundle.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/packages/ngcc_compiler_host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/packages/source_file_cache.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/packages/transformer.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/path_mappings.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/rendering/commonjs_rendering_formatter.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/rendering/esm5_rendering_formatter.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/rendering/esm_rendering_formatter.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/rendering/ngcc_import_rewriter.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/rendering/renderer.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/rendering/rendering_formatter.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/rendering/source_maps.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/rendering/umd_rendering_formatter.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/rendering/utils.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/utils.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/writing/cleaning/cleaning_strategies.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/writing/cleaning/package_cleaner.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/writing/cleaning/utils.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/writing/file_writer.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/writing/in_place_file_writer.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/writing/new_entry_point_file_writer.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/ngcc/src/writing/package_json_updater.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/private/babel.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/private/bazel.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/private/localize.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/private/migrations.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/private/tooling.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/bin/ngc.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/bin/ng_xi18n.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/extract_i18n.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/main.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/common/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/common/src/api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/common/src/diagnostics.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/common/src/di.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/common/src/evaluation.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/common/src/factory.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/common/src/injectable_registry.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/common/src/metadata.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/common/src/references_registry.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/common/src/schema.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/common/src/util.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/component/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/component/src/diagnostics.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/component/src/handler.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/component/src/metadata.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/component/src/resources.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/component/src/symbol.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/component/src/util.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/directive/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/directive/src/handler.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/directive/src/shared.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/directive/src/symbol.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/ng_module/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/ng_module/src/handler.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/ng_module/src/module_with_providers.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/src/injectable.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/annotations/src/pipe.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/core/api/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/core/api/src/adapter.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/core/api/src/interfaces.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/core/api/src/options.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/core/api/src/public_options.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/core/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/core/src/compiler.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/core/src/host.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/cycles/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/cycles/src/analyzer.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/cycles/src/imports.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/diagnostics/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/diagnostics/src/docs.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/diagnostics/src/error_code.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/diagnostics/src/error_details_base_url.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/diagnostics/src/error.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/diagnostics/src/extended_template_diagnostic_name.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/diagnostics/src/util.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/entry_point/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/entry_point/src/generator.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/entry_point/src/logic.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/entry_point/src/private_export_checker.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/entry_point/src/reference_graph.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/file_system/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/file_system/src/compiler_host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/file_system/src/invalid_file_system.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/file_system/src/logical.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/file_system/src/types.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/file_system/src/util.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/imports/index.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/imports/src/alias.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/imports/src/core.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/imports/src/default.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/imports/src/emitter.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/imports/src/find_export.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/imports/src/patch_alias_reference_resolution.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/imports/src/reexport.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/imports/src/references.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/imports/src/resolver.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/incremental/api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/incremental/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/incremental/semantic_graph/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/incremental/semantic_graph/src/graph.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/incremental/semantic_graph/src/util.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/incremental/src/dependency_tracking.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/incremental/src/incremental.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/incremental/src/noop.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/incremental/src/state.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/incremental/src/strategy.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/indexer/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/indexer/src/api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/indexer/src/context.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/indexer/src/template.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/indexer/src/transform.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/logging/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/logging/src/console_logger.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/logging/src/logger.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/metadata/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/metadata/src/api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/metadata/src/dts.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/metadata/src/host_directives_resolver.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/metadata/src/inheritance.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/metadata/src/ng_module_index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/metadata/src/property_mapping.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/metadata/src/registry.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/metadata/src/resource_registry.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/metadata/src/util.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/partial_evaluator/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/partial_evaluator/src/builtin.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/partial_evaluator/src/diagnostics.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/partial_evaluator/src/dynamic.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/partial_evaluator/src/interface.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/partial_evaluator/src/interpreter.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/partial_evaluator/src/known_declaration.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/partial_evaluator/src/result.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/partial_evaluator/src/synthetic.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/partial_evaluator/src/ts_helpers.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/perf/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/perf/src/api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/perf/src/clock.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/perf/src/noop.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/perf/src/recorder.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/program_driver/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/program_driver/src/api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/program_driver/src/ts_create_program_driver.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/program.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/reflection/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/reflection/src/host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/reflection/src/typescript.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/reflection/src/type_to_value.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/reflection/src/util.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/resource/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/resource/src/loader.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/scope/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/scope/src/api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/scope/src/component_scope.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/scope/src/dependency.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/scope/src/local.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/scope/src/standalone.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/scope/src/typecheck.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/scope/src/util.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/shims/api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/shims/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/shims/src/adapter.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/shims/src/expando.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/shims/src/factory_generator.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/shims/src/reference_tagger.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/shims/src/summary_generator.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/shims/src/util.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/sourcemaps/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/sourcemaps/src/content_origin.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/sourcemaps/src/raw_source_map.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/sourcemaps/src/segment_marker.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/transform/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/transform/src/alias.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/transform/src/api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/transform/src/compilation.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/transform/src/declaration.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/transform/src/trait.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/transform/src/transform.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/transform/src/utils.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/translator/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/translator/src/api/ast_factory.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/translator/src/api/import_generator.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/translator/src/context.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/translator/src/import_manager.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/translator/src/translator.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/translator/src/typescript_ast_factory.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/translator/src/typescript_translator.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/translator/src/type_translator.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/ts_compatibility/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/ts_compatibility/src/ts_cross_version_utils.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/tsc_plugin.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/api/api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/api/checker.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/api/completion.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/api/context.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/api/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/api/scope.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/api/symbols.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/diagnostics/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/diagnostics/src/diagnostic.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/diagnostics/src/id.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/extended/api/api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/extended/api/extended_template_checker.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/extended/api/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/extended/checks/invalid_banana_in_box/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/extended/checks/missing_control_flow_directive/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/extended/checks/missing_ngforof_let/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/extended/checks/nullish_coalescing_not_nullable/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/extended/checks/optional_chain_not_nullable/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/extended/checks/suffix_not_supported/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/extended/checks/text_attribute_not_binding/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/extended/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/extended/src/extended_template_checker.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/checker.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/comments.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/completion.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/context.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/diagnostics.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/dom.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/environment.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/expression.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/line_mappings.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/oob.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/shim.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/source.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/tcb_util.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/template_semantics.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/template_symbol_builder.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/ts_util.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/type_check_block.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/type_check_file.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/type_constructor.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/type_emitter.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/typecheck/src/type_parameter_emitter.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/util/src/typescript.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/util/src/visitor.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/xi18n/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/ngtsc/xi18n/src/context.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/perform_compile.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/perform_watch.d.ts

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/transformers/api.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/transformers/compiler_host.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/transformers/downlevel_decorators_transform/downlevel_decorators_transform.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/transformers/downlevel_decorators_transform/index.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/transformers/entry_points.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/transformers/i18n.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/transformers/program.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/transformers/util.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/version.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/src/version_helpers.d.ts

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @angular/compiler-15.2.0

       > MIT

       package/esm2020/compiler.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/assertions.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/chars.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/compiler_facade_interface.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/compiler.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/compiler_util/expression_converter.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/config.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/constant_pool.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/core.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/expression_parser/ast.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/expression_parser/lexer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/expression_parser/parser.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/big_integer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/digest.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/extractor_merger.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/i18n_ast.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/i18n_html_parser.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/i18n_parser.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/message_bundle.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/parse_util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/serializers/placeholder.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/serializers/serializer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/serializers/xliff2.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/serializers/xliff.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/serializers/xmb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/serializers/xml_helper.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/serializers/xtb.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/translation_bundle.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/injectable_compiler_2.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/jit_compiler_facade.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/ml_parser/ast.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/ml_parser/entities.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/ml_parser/html_parser.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/ml_parser/html_tags.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/ml_parser/html_whitespaces.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/ml_parser/icu_ast_expander.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/ml_parser/interpolation_config.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/ml_parser/lexer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/ml_parser/parser.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/ml_parser/tags.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/ml_parser/tokens.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/ml_parser/xml_parser.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/ml_parser/xml_tags.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/output/abstract_emitter.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/output/abstract_js_emitter.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/output/map_util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/output/output_ast.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/output/output_jit.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/output/output_jit_trusted_types.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/output/source_map.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/parse_util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/partial/class_metadata.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/partial/component.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/partial/directive.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/partial/factory.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/partial/injectable.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/partial/injector.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/partial/ng_module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/partial/pipe.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/partial/util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/r3_ast.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/r3_class_metadata_compiler.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/r3_identifiers.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/r3_injector_compiler.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/r3_jit.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/r3_module_compiler.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/r3_pipe_compiler.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/r3_template_transform.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/view/api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/view/compiler.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/view/i18n/context.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/view/i18n/icu_serializer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/view/i18n/meta.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/view/i18n/util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/view/style_parser.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/view/t2_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/view/t2_binder.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/view/template.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/view/util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/resource_loader.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/schema/dom_element_schema_registry.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/schema/dom_security_schema.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/schema/element_schema_registry.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/schema/trusted_types_sinks.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/selector.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/shadow_css.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/style_url_resolver.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/template_parser/binding_parser.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/template_parser/template_preparser.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/version.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/testing.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/compiler.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/compiler.mjs.map

       Copyright Google LLC

       See SECTION 118 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 153 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/compiler.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/compiler.mjs.map

       Copyright Google LLC

       See SECTION 118 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 153 in 'LICENSE TEXT REFERENCE TABLE'

       package/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/testing/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @angular/core-15.2.0

       > MIT

       package/esm2020/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/application_module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/application_ref.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/application_tokens.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/change_detection/change_detection.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/change_detection/change_detector_ref.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/change_detection/constants.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/change_detection/differs/default_iterable_differ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/change_detection/differs/default_keyvalue_differ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/change_detection/differs/iterable_differs.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/change_detection/differs/keyvalue_differs.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/change_detection.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/change_detection/pipe_transform.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/compiler/compiler_facade_interface.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/compiler/compiler_facade.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/console.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/core.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/core_private_export.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/core_render3_private_export.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/debug/debug_node.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/create_injector.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/forward_ref.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/initializer_token.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/injectable.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/injection_token.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/injector_compatibility.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/injector_marker.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/injector.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/injector_token.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/inject_switch.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/interface/defs.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/interface/injector.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/interface/provider.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/internal_tokens.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/jit/environment.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/jit/injectable.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/jit/util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/metadata_attr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/metadata.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/null_injector.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/provider_collection.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/provider_token.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/r3_injector.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/reflective_errors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/reflective_injector.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/reflective_key.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/reflective_provider.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/di/scope.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/error_details_base_url.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/error_handler.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/errors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/event_emitter.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/locale_data_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/locale_en.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/localization.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/i18n/tokens.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/interface/simple_change.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/interface/type.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/linker/compiler.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/linker/component_factory.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/linker/component_factory_resolver.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/linker/element_ref.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/linker.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/linker/ng_module_factory_loader_impl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/linker/ng_module_factory_loader.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/linker/ng_module_factory.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/linker/ng_module_registration.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/linker/query_list.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/linker/template_ref.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/linker/view_container_ref.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/linker/view_ref.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/metadata/di.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/metadata/directives.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/metadata/do_boostrap.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/metadata.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/metadata/ng_module_def.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/metadata/ng_module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/metadata/resource_loading.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/metadata/schema.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/metadata/view.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/platform_core_providers.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/r3_symbols.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/reflection/platform_reflection_capabilities.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/reflection/reflection_capabilities.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/assert.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/bindings.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/collect_native_nodes.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/component.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/component_ref.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/context_discovery.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/definition_factory.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/definition.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/di.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/di_setup.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/errors_di.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/errors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/features/copy_definition_feature.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/features/host_directives_feature.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/features/inherit_definition_feature.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/features/ng_onchanges_feature.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/features/standalone_feature.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/fields.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/global_utils_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/hooks.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/i18n/i18n_apply.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/i18n/i18n_debug.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/i18n/i18n_insert_before_index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/i18n/i18n_locale_id.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/i18n/i18n_parse.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/i18n/i18n_postprocess.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/i18n/i18n_tree_shaking.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/i18n/i18n_util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/advance.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/all.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/attribute.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/change_detection.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/class_map_interpolation.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/di_attr.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/di.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/element_container.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/element.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/element_validation.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/host_property.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/i18n_icu_container_visitor.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/i18n.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/interpolation.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/listener.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/namespace.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/next_context.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/projection.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/property.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/shared.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/storage.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/style_map_interpolation.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/style_prop_interpolation.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/styling.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/template.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/text_interpolation.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/instructions/text.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/container.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/context.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/definition.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/document.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/i18n.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/injector.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/lview_tracking.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/projection.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/public_definitions.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/query.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/renderer_dom.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/renderer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/sanitization.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/styling.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/type_checks.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/interfaces/view.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/jit/directive.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/jit/environment.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/jit/module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/jit/module_patch.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/jit/partial.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/jit/pipe.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/jit/util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/metadata.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/namespaces.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/ng_module_ref.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/node_assert.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/node_manipulation_i18n.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/node_manipulation.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/node_selector_matcher.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/pipe.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/profiler.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/pure_function.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/query.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/state.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/styling/class_differ.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/styling/static_styling.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/styling/style_binding_list.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/styling/styling_parser.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/tokens.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/util/change_detection_utils.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/util/discovery_utils.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/util/global_utils.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/util/injector_utils.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/util/misc_utils.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/util/stringify_utils.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/util/view_traversal_utils.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/util/view_utils.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/view_engine_compatibility_prebound.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render3/view_ref.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render/api_flags.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render/api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/render.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/sanitization/bypass.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/sanitization/html_sanitizer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/sanitization/iframe_attrs_validation.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/sanitization/inert_body.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/sanitization/sanitization.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/sanitization/sanitizer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/sanitization/security.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/sanitization/url_sanitizer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/testability/testability.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/array_utils.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/assert.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/char_code.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/closure.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/coercion.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/comparison.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/decorators.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/dom.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/empty.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/errors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/global.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/is_dev_mode.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/iterable.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/lang.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/microtask.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/ng_dev_mode.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/ng_i18n_closure_mode.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/ng_jit_mode.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/ng_reflect.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/noop.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/property.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/raf.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/security/trusted_type_defs.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/security/trusted_types_bypass.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/security/trusted_types.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/stringify.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util/symbol.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/version.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/view/provider_flags.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/zone/async-stack-tagging.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/zone.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/zone/ng_zone.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/async.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/component_fixture.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/fake_async.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/logger.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/metadata_override.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/metadata_overrider.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/ng_zone_mock.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/resolvers.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/styling.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/testing_internal.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/testing.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/core.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/core.mjs.map

       Copyright Google LLC

       See SECTION 118 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing.mjs.map

       Copyright Google LLC

       See SECTION 167 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/core.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/core.mjs.map

       Copyright Google LLC

       See SECTION 118 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing.mjs.map

       Copyright Google LLC

       See SECTION 167 in 'LICENSE TEXT REFERENCE TABLE'

       package/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/migrations/relative-link-resolution/bundle.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/migrations/relative-link-resolution/bundle.js.map

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/migrations/router-link-with-href/bundle.js

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/migrations/router-link-with-href/bundle.js.map

       Copyright Google LLC

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-generate/standalone-migration/bundle.js

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/schematics/ng-generate/standalone-migration/bundle.js.map

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/testing/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @angular/forms-15.2.0

       > MIT

       package/esm2020/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/abstract_control_directive.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/abstract_form_group_directive.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/checkbox_value_accessor.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/control_container.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/control_value_accessor.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/default_value_accessor.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/error_examples.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/form_interface.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_control.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_control_status.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_form.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_model_group.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_model.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/ng_no_validate_directive.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/number_value_accessor.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/radio_control_value_accessor.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/range_value_accessor.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/reactive_directives/form_control_directive.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/reactive_directives/form_control_name.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/reactive_directives/form_group_directive.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/reactive_directives/form_group_name.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/reactive_errors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/select_control_value_accessor.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/select_multiple_control_value_accessor.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/shared.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/template_driven_errors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/validators.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/errors.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/form_builder.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/form_providers.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/forms.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/model/abstract_model.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/model/form_array.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/model/form_control.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/model/form_group.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/validators.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/version.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/forms.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/forms.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 237 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/forms.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/forms.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 238 in 'LICENSE TEXT REFERENCE TABLE'

       package/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @angular/platform-browser-dynamic-15.2.0

       > MIT

       package/esm2020/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/compiler_factory.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/platform-browser-dynamic.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/platform_core_dynamic.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/platform_providers.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/private_export.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/resource_loader/resource_loader_cache.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/resource_loader/resource_loader_impl.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/version.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/metadata_overrider.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/platform_core_dynamic_testing.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/private_export_testing.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/testing.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/platform-browser-dynamic.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/platform-browser-dynamic.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 229 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 152 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/platform-browser-dynamic.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/platform-browser-dynamic.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 229 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 151 in 'LICENSE TEXT REFERENCE TABLE'

       package/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/testing/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @angular/platform-browser-15.2.0

       > MIT

       package/animations/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/animations/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/animations/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/animations/src/animation_builder.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/animations/src/animations.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/animations/src/module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/animations/src/private_export.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/animations/src/providers.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/browser/browser_adapter.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/browser/generic_browser_adapter.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/browser/meta.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/browser.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/browser/server-transition.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/browser/testability.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/browser/title.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/browser/tools/browser.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/browser/tools/common_tools.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/browser/tools/tools.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/browser/transfer_state.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/dom/debug/by.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/dom/debug/ng_probe.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/dom/dom_renderer.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/dom/events/dom_events.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/dom/events/event_manager.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/dom/events/hammer_gestures.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/dom/events/key_events.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/dom/shared_styles_host.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/dom/util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/platform-browser.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/private_export.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/security/dom_sanitization_service.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/version.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/browser.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/browser_util.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/matchers.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/mock_platform_location_flag.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/testing.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/animations.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/animations.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 156 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/platform-browser.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/platform-browser.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 227 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 157 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/animations.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/animations.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 154 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/platform-browser.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/platform-browser.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 228 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 155 in 'LICENSE TEXT REFERENCE TABLE'

       package/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/testing/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @angular/router-15.2.0

       > MIT

       package/esm2020/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/apply_redirects.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/components/empty_outlet.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/create_router_state.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/create_url_tree.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/create_url_tree_strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/deprecated_load_children.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/router_link_active.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/router_link.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/directives/router_outlet.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/events.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/models.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/navigation_canceling_error.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/navigation_transition.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/operators/activate_routes.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/operators/apply_redirects.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/operators/check_guards.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/operators/prioritized_guard_value.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/operators/recognize.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/operators/resolve_data.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/operators/switch_tap.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/page_title_strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/private_export.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/provide_router.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/recognize.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/router_config_loader.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/router_config.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/route_reuse_strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/router.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/router_module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/router_outlet_context.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/router_preloader.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/router_scroller.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/router_state.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/shared.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/url_handling_strategy.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/url_tree.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/utils/collection.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/utils/config_matching.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/utils/config.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/utils/navigations.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/utils/preactivation.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/utils/tree.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/utils/type_guards.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/src/version.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/router_testing_harness.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/router_testing_module.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/testing/src/testing.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/upgrade/index.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/upgrade/public_api.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/esm2020/upgrade/src/upgrade.mjs

       Copyright Google LLC

       See SECTION 57 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/router.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/router.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 235 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 177 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/upgrade.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2015/upgrade.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 165 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/router.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/router.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 236 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/testing.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 176 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/upgrade.mjs

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'

       package/fesm2020/upgrade.mjs.map
       [NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS SUBPACKAGE UNDER THE TERMS OF THE MIT LICENSE, THE TEXT OF WHICH IS SET FORTH BELOW. THE ORIGINAL LICENSE TERMS ARE REPRODUCED BELOW ONLY AS A REFERENCE.]

       Copyright Google LLC

       See SECTION 164 in 'LICENSE TEXT REFERENCE TABLE'

       package/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/testing/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 59 in 'LICENSE TEXT REFERENCE TABLE'

       package/upgrade/index.d.ts

       (c) 2010-2022 Google LLC. https://angular.io

       See SECTION 128 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @babel/compat-data-7.22.6

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/generator-7.22.7

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/helper-compilation-targets-7.22.6

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/helper-create-class-features-plugin-7.22.6

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/helper-create-regexp-features-plugin-7.22.6

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/plugin-proposal-private-property-in-object-7.21.11

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @babel/plugin-transform-optional-chaining-7.22.6

       Found in: package/LICENSE

       Copyright (c) 2014-present Sebastian McKenzie and other contributors

       MIT.LICENSE


   >>> @jridgewell/source-map-0.3.5

       Found in: package/LICENSE

       Copyright 2019 Justin Ridgewell <jridgewell@google.com>

       Permission is hereby granted, free of charge, to any person obtaining a copy
       of this software and associated documentation files (the "Software"), to deal
       in the Software without restriction, including without limitation the rights
       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is
       furnished to do so, subject to the following conditions:

       The above copyright notice and this permission notice shall be included in
       all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       SOFTWARE.


   >>> @messageformat/core-3.2.0

       Found in: package/LICENSE

       Copyright OpenJS Foundation and contributors, https://openjsf.org

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

       ADDITIONAL LICENSE INFORMATION

       > 0BSD

       package/messageformat.js

       Copyright (c) Microsoft Corporation

       See SECTION 112 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @messageformat/number-skeleton-1.2.0

       Found in: package/LICENSE

       Copyright OpenJS Foundation and contributors, https://openjsf.org

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @messageformat/parser-5.1.0

       Found in: package/LICENSE

       Copyright OpenJS Foundation and contributors, https://openjsf.org

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be
       included in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
       NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
       LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
       OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
       WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


   >>> @ngx-formly/core-v5.6.1

       Found in: ngx-formly-5.6.1/LICENSE

       Copyright (c) 2016 FormlyJS

       The MIT License (MIT)

       ADDITIONAL LICENSE INFORMATION

       > MIT

       ngx-formly-5.6.1/demo/src/app/shared/copier/copier.service.ts

       (c) Zeno Rocha

       See SECTION 110 in 'LICENSE TEXT REFERENCE TABLE'

       ngx-formly-5.6.1/demo/src/app/shared/stackblitz/stackblitz-writer.ts

       Copyright 2018 Google Inc.

       See SECTION 239 in 'LICENSE TEXT REFERENCE TABLE'

       ngx-formly-5.6.1/src/schematics/src/wrapper-component/index_spec.ts

       Copyright Google Inc.

       See SECTION 61 in 'LICENSE TEXT REFERENCE TABLE'


   >>> @nicolo-ribaudo/semver-v6-6.3.3

       Found in: package/LICENSE

       Copyright (c) Isaac Z. Schlueter and Contributors

       The ISC License


   >>> @npmcli/git-4.1.0

       Found in: package/LICENSE

       Copyright (c) npm, Inc.

       The ISC License


   >>> @types/eslint-8.44.0

       Found in: eslint/LICENSE

       Copyright (c) Microsoft Corporation

           MIT License


   >>> @types/mqtt-2.5.0

       Found in: mqtt/LICENSE

       Copyright (c) Microsoft Corporation

           MIT License


   >>> @types/node-20.4.1

       Found in: node/LICENSE

       Copyright (c) Microsoft Corporation

           MIT License


   >>> @types/paho-mqtt-1.0.7

       Found in: paho-mqtt/LICENSE

       Copyright (c) Microsoft Corporation

           MIT License


   >>> @vcd/node-client-0.0.6-alpha.2



   >>> @vcd/ui-components-13.0.1-dev.10

       License : BSD-2


   >>> callback-stream-1.1.0

       Found in: package/README.md

       Copyright (c) 2013-2015 Matteo Collina, http://matteocollina.com

       ## LICENSE - "MIT License"


   >>> commist-1.1.0

       Found in: package/LICENSE

       Copyright (c) 2014 Matteo Collina




       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/index.js

       Copyright (c) 2014 Matteo Collina



   >>> electron-to-chromium-1.4.457

       Found in: package/LICENSE

       Copyright 2018 Kilian Valkhof

       Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

       THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


   >>> glob-10.3.3

       Found in: package/LICENSE

       Copyright (c) 2009-2023 Isaac Z. Schlueter and Contributors

       The ISC License


   >>> globby-13.2.2

       Found in: package/license

       Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)

       MIT.LICENSE


   >>> help-me-1.1.0

       Found in: package/LICENSE

       Copyright (c) 2014 Matteo Collina





   >>> immutable-4.3.1

       Found in: package/LICENSE

       Copyright (c) 2014-present, Lee Byron and other contributors.




       ADDITIONAL LICENSE INFORMATION

       > MIT

       package/dist/immutable.es.js

       Copyright (c) 2014-present, Lee Byron and other contributors.


       package/dist/immutable.js

       Copyright (c) 2014-present, Lee Byron and other contributors.


       package/dist/immutable.min.js

       Copyright (c) 2014-present, Lee Byron and other contributors.



   >>> lru-cache-10.0.0

       Found in: package/LICENSE

       Copyright (c) 2010-2023 Isaac Z. Schlueter and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.





   >>> minimatch-9.0.3

       Found in: package/LICENSE

       Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors

       The ISC License


   >>> minipass-7.0.2

       Found in: package/LICENSE

       Copyright (c) 2017-2023 npm, Inc., Isaac Z. Schlueter, and Contributors

       Permission to use, copy, modify, and/or distribute this software for any
       purpose with or without fee is hereby granted, provided that the above
       copyright notice and this permission notice appear in all copies.





   >>> mqtt-packet-6.10.0

       Found in: package/LICENSE.md

       Copyright (c) 2014-2017 mqtt-packet contributors

       The MIT License (MIT)


   >>> mqtt-4.1.0

       Found in: package/dist/mqtt.js

       Copyright Joyent, Inc. and other Node contributors.





   >>> node-gyp-9.4.0

       Found in: package/LICENSE

       Copyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net>





   >>> path-scurry-1.10.1

       License : MIT


   >>> reinterval-1.1.0

       Found in: package/LICENSE

       Copyright (c) 2015 Agor Maxime

       The MIT License (MIT)


   >>> terser-5.19.0

       Found in: package/LICENSE

       Copyright 2012-2018 (c) Mihai Bazon <mihai.bazon@gmail.com>

       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions
       are met:

           * Redistributions of source code must retain the above
             copyright notice, this list of conditions and the following
             disclaimer.

           * Redistributions in binary form must reproduce the above
             copyright notice, this list of conditions and the following
             disclaimer in the documentation and/or other materials
             provided with the distribution.





       ADDITIONAL LICENSE INFORMATION

       > BSD-2

       package/lib/ast.js

       Copyright 2012 (c) Mihai Bazon <mihai.bazon@gmail.com>

           Redistribution and use in source and binary forms, with or without
           modification, are permitted provided that the following conditions
           are met:

               * Redistributions of source code must retain the above
                 copyright notice, this list of conditions and the following
                 disclaimer.

               * Redistributions in binary form must reproduce the above
                 copyright notice, this list of conditions and the following
                 disclaimer in the documentation and/or other materials
                 provided with the distribution.



       package/lib/compress/compressor-flags.js

       Copyright 2012 (c) Mihai Bazon <mihai.bazon@gmail.com>

           Redistribution and use in source and binary forms, with or without
           modification, are permitted provided that the following conditions
           are met:

               * Redistributions of source code must retain the above
                 copyright notice, this list of conditions and the following
                 disclaimer.

               * Redistributions in binary form must reproduce the above
                 copyright notice, this list of conditions and the following
                 disclaimer in the documentation and/or other materials
                 provided with the distribution.



       package/lib/compress/drop-unused.js

       Copyright 2012 (c) Mihai Bazon <mihai.bazon@gmail.com>

           Redistribution and use in source and binary forms, with or without
           modification, are permitted provided that the following conditions
           are met:

               * Redistributions of source code must retain the above
                 copyright notice, this list of conditions and the following
                 disclaimer.

               * Redistributions in binary form must reproduce the above
                 copyright notice, this list of conditions and the following
                 disclaimer in the documentation and/or other materials
                 provided with the distribution.



       package/lib/compress/inference.js

       Copyright 2012 (c) Mihai Bazon <mihai.bazon@gmail.com>

           Redistribution and use in source and binary forms, with or without
           modification, are permitted provided that the following conditions
           are met:

               * Redistributions of source code must retain the above
                 copyright notice, this list of conditions and the following
                 disclaimer.

               * Redistributions in binary form must reproduce the above
                 copyright notice, this list of conditions and the following
                 disclaimer in the documentation and/or other materials
                 provided with the distribution.



       package/lib/compress/inline.js

       Copyright 2012 (c) Mihai Bazon <mihai.bazon@gmail.com>

           Redistribution and use in source and binary forms, with or without
           modification, are permitted provided that the following conditions
           are met:

               * Redistributions of source code must retain the above
                 copyright notice, this list of conditions and the following
                 disclaimer.

               * Redistributions in binary form must reproduce the above
                 copyright notice, this list of conditions and the following
                 disclaimer in the documentation and/or other materials
                 provided with the distribution.



       package/lib/parse.js

       Copyright 2012 (c) Mihai Bazon <mihai.bazon@gmail.com>
           Parser based on parse-js (http://marijn.haverbeke.nl/parse-js/).

           Redistribution and use in source and binary forms, with or without
           modification, are permitted provided that the following conditions
           are met:

               * Redistributions of source code must retain the above
                 copyright notice, this list of conditions and the following
                 disclaimer.

               * Redistributions in binary form must reproduce the above
                 copyright notice, this list of conditions and the following
                 disclaimer in the documentation and/or other materials
                 provided with the distribution.




   >>> tuf-js-1.1.7

       Found in: package/LICENSE

       Copyright (c) 2022 GitHub and the TUF Contributors

       MIT.LICENSE


-------------------- SECTION 3: Creative Commons Attribution 4.0 International --------------------

   >>> caniuse-lite-1.0.30001515



-------------------- SECTION 4: Creative Commons Attribution License, V3.0 --------------------

   >>> spdx-exceptions-2.3.0

       > Copyright © 2010-2015 Linux Foundation and its Contributors. Licensed
       > under the Creative Commons Attribution License 3.0 Unported. All other
       > rights are expressly reserved.


-------------------- SECTION 5: SIL Open Font License, V1.1 --------------------

   >>> @cds/city-1.1.0

       Found in: package/LICENSE

       Copyright (c) 2015, Chris Simpson <chris@victoryonemedia.com>

       This Font Software is licensed under the SIL Open Font License, Version 1.1.
       This license is copied below, and is also available with a FAQ at:
       http://scripts.sil.org/OFL

       ADDITIONAL LICENSE INFORMATION

       > SIL-OFL1.1

       package/LICENSE

       # Clarity City License

       Copyright (c) 2019 VMware, Inc.				

       The SIL OFL v1.1 license (the 'License') set forth below applies to all parts of the Clarity City project.  You may not use this file except in compliance with the License.†

       SIL OPEN FONT LICENSE

       Version 1.0 - 22 November 2005

       PREAMBLE

       The goals of the Open Font License (OFL) are to stimulate worldwide development of cooperative font projects, to support the font creation efforts of academic and linguistic communities, and to provide an open framework in which fonts may be shared and improved in partnership with others.

       The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and sold with any software provided that the font names of derivative works are changed. The fonts and derivatives, however, cannot be released under any other type of license.

       DEFINITIONS

       "Font Software" refers to any and all of the following:

           - font files
           - data files
           - source code
           - build scripts
           - documentation

       "Reserved Font Name" refers to the Font Software name as seen by users and any other names as specified after the copyright statement.

       "Standard Version" refers to the collection of Font Software components as distributed by the Copyright Holder.

       "Modified Version" refers to any derivative font software made by adding to, deleting, or substituting ó in part or in whole -- any of the components of the Standard Version, by changing formats or by porting the Font Software to a new environment.

       "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.

       PERMISSION & CONDITIONS

       Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:

           1) Neither the Font Software nor any of its individual components, in Standard or Modified Versions, may be sold by itself.
           2) Standard or Modified Versions of the Font Software may be bundled, redistributed and sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
           3) No Modified Version of the Font Software may use the Reserved Font Name(s), in part or in whole, unless explicit written permission is granted by the Copyright Holder. This restriction applies to all references stored in the Font Software, such as the font menu name and other font description fields, which are used to differentiate the font from others.
           4) The name(s) of the Copyright Holder or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder and the Author(s) or with their explicit written permission.
           5) The Font Software, modified or unmodified, in part or in whole, must be distributed using this license, and may not be distributed under any other license.

       TERMINATION

       This license becomes null and void if any of the above conditions are not met.

       DISCLAIMER

       THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.


       # Clarity City is based upon Metropolis, license is provided below.

       Copyright (c) 2015, Chris Simpson <chris@victoryonemedia.com>, with Reserved Font Name: "Metropolis".

       This Font Software is licensed under the SIL Open Font License, Version 1.1.
       This license is copied below, and is also available with a FAQ at:
       http://scripts.sil.org/OFL

       Version 2.0 - 18 March 2012


       SIL Open Font License
       ====================================================


       Preamble
       ----------

       The goals of the Open Font License (OFL) are to stimulate worldwide
       development of collaborative font projects, to support the font creation
       efforts of academic and linguistic communities, and to provide a free and
       open framework in which fonts may be shared and improved in partnership
       with others.

       The OFL allows the licensed fonts to be used, studied, modified and
       redistributed freely as long as they are not sold by themselves. The
       fonts, including any derivative works, can be bundled, embedded, 
       redistributed and/or sold with any software provided that any reserved
       names are not used by derivative works. The fonts and derivatives,
       however, cannot be released under any other type of license. The
       requirement for fonts to remain under this license does not apply
       to any document created using the fonts or their derivatives.

       Definitions
       -------------

       `"Font Software"` refers to the set of files released by the Copyright
       Holder(s) under this license and clearly marked as such. This may
       include source files, build scripts and documentation.

       `"Reserved Font Name"` refers to any names specified as such after the
       copyright statement(s).

       `"Original Version"` refers to the collection of Font Software components as
       distributed by the Copyright Holder(s).

       `"Modified Version"` refers to any derivative made by adding to, deleting,
       or substituting -- in part or in whole -- any of the components of the
       Original Version, by changing formats or by porting the Font Software to a
       new environment.

       `"Author"` refers to any designer, engineer, programmer, technical
       writer or other person who contributed to the Font Software.

       Permission & Conditions
       ------------------------

       Permission is hereby granted, free of charge, to any person obtaining
       a copy of the Font Software, to use, study, copy, merge, embed, modify,
       redistribute, and sell modified and unmodified copies of the Font
       Software, subject to the following conditions:

       1. Neither the Font Software nor any of its individual components,
       in Original or Modified Versions, may be sold by itself.

       2. Original or Modified Versions of the Font Software may be bundled,
       redistributed and/or sold with any software, provided that each copy
       contains the above copyright notice and this license. These can be
       included either as stand-alone text files, human-readable headers or
       in the appropriate machine-readable metadata fields within text or
       binary files as long as those fields can be easily viewed by the user.

       3. No Modified Version of the Font Software may use the Reserved Font
       Name(s) unless explicit written permission is granted by the corresponding
       Copyright Holder. This restriction only applies to the primary font name as
       presented to the users.

       4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font
       Software shall not be used to promote, endorse or advertise any
       Modified Version, except to acknowledge the contribution(s) of the
       Copyright Holder(s) and the Author(s) or with their explicit written
       permission.

       5. The Font Software, modified or unmodified, in part or in whole,
       must be distributed entirely under this license, and must not be
       distributed under any other license. The requirement for fonts to
       remain under this license does not apply to any document created
       using the Font Software.

       Termination
       -----------

       This license becomes null and void if any of the above conditions are
       not met.


       	DISCLAIMER

       	THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
       	EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
       	MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
       	OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
       	COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
       	INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
       	DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
       	FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
       	OTHER DEALINGS IN THE FONT SOFTWARE.



==================== APPENDIX. Standard License Files ====================

-------------------- SECTION 1: Apache License, V2.0 --------------------

Apache License 

Version 2.0, January 2004 
http://www.apache.org/licenses/ 

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by the
copyright owner that is granting the License.  

"Legal Entity" shall mean the union of the acting entity and all other
entities that control, are controlled by, or are under common control
with that entity. For the purposes of this definition, "control" means
(i) the power, direct or indirect, to cause the direction or management
of such entity, whether by contract or otherwise, or (ii) ownership
of fifty percent (50%) or more of the outstanding shares, or (iii)
beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity exercising
permissions granted by this License.  

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation source,
and configuration files.

"Object" form shall mean any form resulting from mechanical transformation
or translation of a Source form, including but not limited to compiled
object code, generated documentation, and conversions to other media
types.  

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a copyright
notice that is included in or attached to the work (an example is provided
in the Appendix below).  

"Derivative Works" shall mean any work, whether in Source or Object form,
that is based on (or derived from) the Work and for which the editorial
revisions, annotations, elaborations, or other modifications represent,
as a whole, an original work of authorship. For the purposes of this
License, Derivative Works shall not include works that remain separable
from, or merely link (or bind by name) to the interfaces of, the Work
and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including the
original version of the Work and any modifications or additions to
that Work or Derivative Works thereof, that is intentionally submitted
to Licensor for inclusion in the Work by the copyright owner or by an
individual or Legal Entity authorized to submit on behalf of the copyright
owner. For the purposes of this definition, "submitted" means any form of
electronic, verbal, or written communication sent to the Licensor or its
representatives, including but not limited to communication on electronic
mailing lists, source code control systems, and issue tracking systems
that are managed by, or on behalf of, the Licensor for the purpose of
discussing and improving the Work, but excluding communication that is
conspicuously marked or otherwise designated in writing by the copyright
owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License.
Subject to the terms and conditions of this License, each Contributor
hereby grants to You a perpetual, worldwide, non-exclusive, no-charge,
royalty-free, irrevocable copyright license to reproduce, prepare
Derivative Works of, publicly display, publicly perform, sublicense, and
distribute the Work and such Derivative Works in Source or Object form.

3. Grant of Patent License.
Subject to the terms and conditions of this License, each Contributor
hereby grants to You a perpetual, worldwide, non-exclusive, no-charge,
royalty- free, irrevocable (except as stated in this section) patent
license to make, have made, use, offer to sell, sell, import, and
otherwise transfer the Work, where such license applies only to those
patent claims licensable by such Contributor that are necessarily
infringed by their Contribution(s) alone or by combination of
their Contribution(s) with the Work to which such Contribution(s)
was submitted. If You institute patent litigation against any entity
(including a cross-claim or counterclaim in a lawsuit) alleging that the
Work or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses granted
to You under this License for that Work shall terminate as of the date
such litigation is filed.

4. Redistribution.
You may reproduce and distribute copies of the Work or Derivative Works
thereof in any medium, with or without modifications, and in Source or
Object form, provided that You meet the following conditions:

  a. You must give any other recipients of the Work or Derivative Works
     a copy of this License; and

  b. You must cause any modified files to carry prominent notices stating
     that You changed the files; and

  c. You must retain, in the Source form of any Derivative Works that
     You distribute, all copyright, patent, trademark, and attribution
     notices from the Source form of the Work, excluding those notices
     that do not pertain to any part of the Derivative Works; and

  d. If the Work includes a "NOTICE" text file as part of its
     distribution, then any Derivative Works that You distribute must
     include a readable copy of the attribution notices contained
     within such NOTICE file, excluding those notices that do not
     pertain to any part of the Derivative Works, in at least one of
     the following places: within a NOTICE text file distributed as part
     of the Derivative Works; within the Source form or documentation,
     if provided along with the Derivative Works; or, within a display
     generated by the Derivative Works, if and wherever such third-party
     notices normally appear. The contents of the NOTICE file are for
     informational purposes only and do not modify the License. You
     may add Your own attribution notices within Derivative Works that
     You distribute, alongside or as an addendum to the NOTICE text
     from the Work, provided that such additional attribution notices
     cannot be construed as modifying the License.  You may add Your own
     copyright statement to Your modifications and may provide additional
     or different license terms and conditions for use, reproduction, or
     distribution of Your modifications, or for any such Derivative Works
     as a whole, provided Your use, reproduction, and distribution of the
     Work otherwise complies with the conditions stated in this License.

5. Submission of Contributions.
Unless You explicitly state otherwise, any Contribution intentionally
submitted for inclusion in the Work by You to the Licensor shall be
under the terms and conditions of this License, without any additional
terms or conditions.  Notwithstanding the above, nothing herein shall
supersede or modify the terms of any separate license agreement you may
have executed with Licensor regarding such Contributions.

6. Trademarks.
This License does not grant permission to use the trade names, trademarks,
service marks, or product names of the Licensor, except as required for
reasonable and customary use in describing the origin of the Work and
reproducing the content of the NOTICE file.

7. Disclaimer of Warranty.
Unless required by applicable law or agreed to in writing, Licensor
provides the Work (and each Contributor provides its Contributions) on
an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied, including, without limitation, any warranties or
conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR
A PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any risks
associated with Your exercise of permissions under this License.

8. Limitation of Liability.
In no event and under no legal theory, whether in tort (including
negligence), contract, or otherwise, unless required by applicable law
(such as deliberate and grossly negligent acts) or agreed to in writing,
shall any Contributor be liable to You for damages, including any direct,
indirect, special, incidental, or consequential damages of any character
arising as a result of this License or out of the use or inability to
use the Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all other
commercial damages or losses), even if such Contributor has been advised
of the possibility of such damages.

9. Accepting Warranty or Additional Liability.
While redistributing the Work or Derivative Works thereof, You may
choose to offer, and charge a fee for, acceptance of support, warranty,
indemnity, or other liability obligations and/or rights consistent with
this License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf of
any other Contributor, and only if You agree to indemnify, defend, and
hold each Contributor harmless for any liability incurred by, or claims
asserted against, such Contributor by reason of your accepting any such
warranty or additional liability.

END OF TERMS AND CONDITIONS 

APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

-------------------- SECTION 2: Creative Commons Attribution License, V3.0 --------------------

Creative Commons Attribution 3.0 Unported

CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL
SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT
RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS"
BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION
PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.

License

THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN
AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.

BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE
MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
CONDITIONS.

1. Definitions

   a. "Adaptation" means a work based upon the Work, or upon the Work
   and other pre-existing works, such as a translation, adaptation,
   derivative work, arrangement of music or other alterations of a
   literary or artistic work, or phonogram or performance and includes
   cinematographic adaptations or any other form in which the Work may
   be recast, transformed, or adapted including in any form recognizably
   derived from the original, except that a work that constitutes a
   Collection will not be considered an Adaptation for the purpose of
   this License. For the avoidance of doubt, where the Work is a musical
   work, performance or phonogram, the synchronization of the Work in
   timed-relation with a moving image ("synching") will be considered
   an Adaptation for the purpose of this License.

   b. "Collection" means a collection of literary or artistic works,
   such as encyclopedias and anthologies, or performances, phonograms or
   broadcasts, or other works or subject matter other than works listed in
   Section 1(f) below, which, by reason of the selection and arrangement
   of their contents, constitute intellectual creations, in which the
   Work is included in its entirety in unmodified form along with one or
   more other contributions, each constituting separate and independent
   works in themselves, which together are assembled into a collective
   whole. A work that constitutes a Collection will not be considered
   an Adaptation (as defined above) for the purposes of this License.

   c. "Distribute" means to make available to the public the original
   and copies of the Work or Adaptation, as appropriate, through sale
   or other transfer of ownership.

   d. "Licensor" means the individual, individuals, entity or entities
   that offer(s) the Work under the terms of this License.

   e. "Original Author" means, in the case of a literary or artistic
   work, the individual, individuals, entity or entities who created the
   Work or if no individual or entity can be identified, the publisher;
   and in addition (i) in the case of a performance the actors, singers,
   musicians, dancers, and other persons who act, sing, deliver, declaim,
   play in, interpret or otherwise perform literary or artistic works or
   expressions of folklore; (ii) in the case of a phonogram the producer
   being the person or legal entity who first fixes the sounds of a
   performance or other sounds; and, (iii) in the case of broadcasts,
   the organization that transmits the broadcast.

   f. "Work" means the literary and/or artistic work offered under the
   terms of this License including without limitation any production
   in the literary, scientific and artistic domain, whatever may be
   the mode or form of its expression including digital form, such
   as a book, pamphlet and other writing; a lecture, address, sermon
   or other work of the same nature; a dramatic or dramatico-musical
   work; a choreographic work or entertainment in dumb show; a musical
   composition with or without words; a cinematographic work to which are
   assimilated works expressed by a process analogous to cinematography;
   a work of drawing, painting, architecture, sculpture, engraving
   or lithography; a photographic work to which are assimilated works
   expressed by a process analogous to photography; a work of applied art;
   an illustration, map, plan, sketch or three-dimensional work relative
   to geography, topography, architecture or science; a performance;
   a broadcast; a phonogram; a compilation of data to the extent it is
   protected as a copyrightable work; or a work performed by a variety
   or circus performer to the extent it is not otherwise considered a
   literary or artistic work.

   g. "You" means an individual or entity exercising rights under this
   License who has not previously violated the terms of this License
   with respect to the Work, or who has received express permission
   from the Licensor to exercise rights under this License despite a
   previous violation.

   h. "Publicly Perform" means to perform public recitations of the
   Work and to communicate to the public those public recitations, by
   any means or process, including by wire or wireless means or public
   digital performances; to make available to the public Works in such
   a way that members of the public may access these Works from a place
   and at a place individually chosen by them; to perform the Work to the
   public by any means or process and the communication to the public of
   the performances of the Work, including by public digital performance;
   to broadcast and rebroadcast the Work by any means including signs,
   sounds or images.

   i. "Reproduce" means to make copies of the Work by any means including
   without limitation by sound or visual recordings and the right of
   fixation and reproducing fixations of the Work, including storage
   of a protected performance or phonogram in digital form or other
   electronic medium.

2. Fair Dealing Rights. Nothing in this License is intended to reduce,
limit, or restrict any uses free from copyright or rights arising from
limitations or exceptions that are provided for in connection with the
copyright protection under copyright law or other applicable laws.

3. License Grant. Subject to the terms and conditions of this License,
Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
perpetual (for the duration of the applicable copyright) license to
exercise the rights in the Work as stated below:

   a. to Reproduce the Work, to incorporate the Work into one or
   more Collections, and to Reproduce the Work as incorporated in the
   Collections;

   b. to create and Reproduce Adaptations provided that any such
   Adaptation, including any translation in any medium, takes reasonable
   steps to clearly label, demarcate or otherwise identify that changes
   were made to the original Work. For example, a translation could be
   marked "The original work was translated from English to Spanish," or
   a modification could indicate "The original work has been modified.";

   c. to Distribute and Publicly Perform the Work including as
   incorporated in Collections; and,

   d. to Distribute and Publicly Perform Adaptations.

   e. For the avoidance of doubt:

      i. Non-waivable Compulsory License Schemes. In those jurisdictions
      in which the right to collect royalties through any statutory or
      compulsory licensing scheme cannot be waived, the Licensor reserves
      the exclusive right to collect such royalties for any exercise by
      You of the rights granted under this License;

      ii. Waivable Compulsory License Schemes. In those jurisdictions
      in which the right to collect royalties through any statutory or
      compulsory licensing scheme can be waived, the Licensor waives the
      exclusive right to collect such royalties for any exercise by You
      of the rights granted under this License; and,

      iii. Voluntary License Schemes. The Licensor waives the right
      to collect royalties, whether individually or, in the event that
      the Licensor is a member of a collecting society that administers
      voluntary licensing schemes, via that society, from any exercise
      by You of the rights granted under this License.  The above rights
      may be exercised in all media and formats whether now known or
      hereafter devised. The above rights include the right to make such
      modifications as are technically necessary to exercise the rights
      in other media and formats. Subject to Section 8(f), all rights
      not expressly granted by Licensor are hereby reserved.

4. Restrictions. The license granted in Section 3 above is expressly
made subject to and limited by the following restrictions:

   a. You may Distribute or Publicly Perform the Work only under the
   terms of this License.  You must include a copy of, or the Uniform
   Resource Identifier (URI) for, this License with every copy of the
   Work You Distribute or Publicly Perform. You may not offer or impose
   any terms on the Work that restrict the terms of this License or the
   ability of the recipient of the Work to exercise the rights granted to
   that recipient under the terms of the License. You may not sublicense
   the Work. You must keep intact all notices that refer to this License
   and to the disclaimer of warranties with every copy of the Work You
   Distribute or Publicly Perform. When You Distribute or Publicly Perform
   the Work, You may not impose any effective technological measures on
   the Work that restrict the ability of a recipient of the Work from
   You to exercise the rights granted to that recipient under the terms
   of the License. This Section 4(a) applies to the Work as incorporated
   in a Collection, but this does not require the Collection apart from
   the Work itself to be made subject to the terms of this License. If
   You create a Collection, upon notice from any Licensor You must,
   to the extent practicable, remove from the Collection any credit as
   required by Section 4(b), as requested. If You create an Adaptation,
   upon notice from any Licensor You must, to the extent practicable,
   remove from the Adaptation any credit as required by Section 4(b),
   as requested.

   b. If You Distribute, or Publicly Perform the Work or any Adaptations
   or Collections, You must, unless a request has been made pursuant
   to Section 4(a), keep intact all copyright notices for the Work and
   provide, reasonable to the medium or means You are utilizing: (i) the
   name of the Original Author (or pseudonym, if applicable) if supplied,
   and/or if the Original Author and/or Licensor designate another party
   or parties (e.g., a sponsor institute, publishing entity, journal)
   for attribution ("Attribution Parties") in Licensor's copyright
   notice, terms of service or by other reasonable means, the name of
   such party or parties; (ii) the title of the Work if supplied; (iii)
   to the extent reasonably practicable, the URI, if any, that Licensor
   specifies to be associated with the Work, unless such URI does not
   refer to the copyright notice or licensing information for the Work;
   and (iv) , consistent with Section 3(b), in the case of an Adaptation,
   a credit identifying the use of the Work in the Adaptation (e.g.,
   "French translation of the Work by Original Author," or "Screenplay
   based on original Work by Original Author"). The credit required
   by this Section 4 (b) may be implemented in any reasonable manner;
   provided, however, that in the case of a Adaptation or Collection, at
   a minimum such credit will appear, if a credit for all contributing
   authors of the Adaptation or Collection appears, then as part of
   these credits and in a manner at least as prominent as the credits
   for the other contributing authors. For the avoidance of doubt, You
   may only use the credit required by this Section for the purpose of
   attribution in the manner set out above and, by exercising Your rights
   under this License, You may not implicitly or explicitly assert or
   imply any connection with, sponsorship or endorsement by the Original
   Author, Licensor and/or Attribution Parties, as appropriate, of You
   or Your use of the Work, without the separate, express prior written
   permission of the Original Author, Licensor and/or Attribution Parties.

   c. Except as otherwise agreed in writing by the Licensor or as may be
   otherwise permitted by applicable law, if You Reproduce, Distribute
   or Publicly Perform the Work either by itself or as part of any
   Adaptations or Collections, You must not distort, mutilate, modify
   or take other derogatory action in relation to the Work which would
   be prejudicial to the Original Author's honor or reputation. Licensor
   agrees that in those jurisdictions (e.g. Japan), in which any exercise
   of the right granted in Section 3(b) of this License (the right to
   make Adaptations) would be deemed to be a distortion, mutilation,
   modification or other derogatory action prejudicial to the Original
   Author's honor and reputation, the Licensor will waive or not assert,
   as appropriate, this Section, to the fullest extent permitted by the
   applicable national law, to enable You to reasonably exercise Your
   right under Section 3(b) of this License (right to make Adaptations)
   but not otherwise.

5. Representations, Warranties and Disclaimer
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.

6. Limitation on Liability.
EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR
BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL,
CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS
LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF
THE POSSIBILITY OF SUCH DAMAGES.

7. Termination

   a. This License and the rights granted hereunder will terminate
   automatically upon any breach by You of the terms of this
   License. Individuals or entities who have received Adaptations or
   Collections from You under this License, however, will not have their
   licenses terminated provided such individuals or entities remain in
   full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8
   will survive any termination of this License.

   b. Subject to the above terms and conditions, the license granted
   here is perpetual (for the duration of the applicable copyright in
   the Work). Notwithstanding the above, Licensor reserves the right to
   release the Work under different license terms or to stop distributing
   the Work at any time; provided, however that any such election will not
   serve to withdraw this License (or any other license that has been,
   or is required to be, granted under the terms of this License), and
   this License will continue in full force and effect unless terminated
   as stated above.

8. Miscellaneous

   a. Each time You Distribute or Publicly Perform the Work or a
   Collection, the Licensor offers to the recipient a license to the
   Work on the same terms and conditions as the license granted to You
   under this License.

   b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
   offers to the recipient a license to the original Work on the same
   terms and conditions as the license granted to You under this License.

   c. If any provision of this License is invalid or unenforceable under
   applicable law, it shall not affect the validity or enforceability
   of the remainder of the terms of this License, and without further
   action by the parties to this agreement, such provision shall be
   reformed to the minimum extent necessary to make such provision valid
   and enforceable.

   d. No term or provision of this License shall be deemed waived and no
   breach consented to unless such waiver or consent shall be in writing
   and signed by the party to be charged with such waiver or consent.

   e. This License constitutes the entire agreement between the parties
   with respect to the Work licensed here. There are no understandings,
   agreements or representations with respect to the Work not specified
   here. Licensor shall not be bound by any additional provisions that
   may appear in any communication from You. This License may not be
   modified without the mutual written agreement of the Licensor and You.

   f. The rights granted under, and the subject matter referenced, in this
   License were drafted utilizing the terminology of the Berne Convention
   for the Protection of Literary and Artistic Works (as amended on
   September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
   Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and
   the Universal Copyright Convention (as revised on July 24, 1971). These
   rights and subject matter take effect in the relevant jurisdiction
   in which the License terms are sought to be enforced according to
   the corresponding provisions of the implementation of those treaty
   provisions in the applicable national law. If the standard suite of
   rights granted under applicable copyright law includes additional
   rights not granted under this License, such additional rights are
   deemed to be included in the License; this License is not intended
   to restrict the license of any rights under applicable law.



-------------------- SECTION 3: SIL Open Font License, V1.1 --------------------

SIL OPEN FONT LICENSE

Version 1.1 - 26 February 2007
PREAMBLE

The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.

The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS

"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).

"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting,
or substituting - in part or in whole - any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.

"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS

Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.

5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION

This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER

THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

-------------------- SECTION 4: Creative Commons Attribution 4.0 International --------------------

Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.

Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.

Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors.

Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public.

Creative Commons Attribution 4.0 International Public License

By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.

Section 1 – Definitions.

Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
Licensor means the individual(s) or entity(ies) granting rights under this Public License.
Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.

Section 2 – Scope.

License grant.
Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
reproduce and Share the Licensed Material, in whole or in part; and
produce, reproduce, and Share Adapted Material.
Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
Term. The term of this Public License is specified in Section 6(a).
Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
Downstream recipients.
Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).

Other rights.
Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
Patent and trademark rights are not licensed under this Public License.
To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties.

Section 3 – License Conditions.

Your exercise of the Licensed Rights is expressly made subject to the following conditions.

Attribution.

If You Share the Licensed Material (including in modified form), You must:
retain the following if it is supplied by the Licensor with the Licensed Material:
identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
a copyright notice;
a notice that refers to this Public License;
a notice that refers to the disclaimer of warranties;
a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License.

Section 4 – Sui Generis Database Rights.

Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:

for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database;
if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and
You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.

For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.

Section 5 – Disclaimer of Warranties and Limitation of Liability.

Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.

The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.

Section 6 – Term and Termination.

This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.

Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
Sections 1, 5, 6, 7, and 8 survive termination of this Public License.

Section 7 – Other Terms and Conditions.

The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.

Section 8 – Interpretation.

For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.

Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.

Creative Commons may be contacted at creativecommons.org.

-------------------- SECTION 5: Eclipse Public License, V1.0 --------------------

Eclipse Public License - v 1.0

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION
OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
1. DEFINITIONS

"Contribution" means:

    a) in the case of the initial Contributor, the initial code and
    documentation distributed under this Agreement, and

    b) in the case of each subsequent Contributor:

        i) changes to the Program, and

        ii) additions to the Program; where such changes and/or
        additions to the Program originate from and are distributed
        by that particular Contributor. A Contribution 'originates'
        from a Contributor if it was added to the Program by such
        Contributor itself or anyone acting on such Contributor's
        behalf. Contributions do not include additions to the Program
        which: (i) are separate modules of software distributed in
        conjunction with the Program under their own license agreement,
        and (ii) are not derivative works of the Program.

"Contributor" means any person or entity that distributes the Program.

"Licensed Patents" mean patent claims licensable by a Contributor which
are necessarily infringed by the use or sale of its Contribution alone
or when combined with the Program.

"Program" means the Contributions distributed in accordance with this
Agreement.

"Recipient" means anyone who receives the Program under this Agreement,
including all Contributors.

2. GRANT OF RIGHTS

    a) Subject to the terms of this Agreement, each Contributor hereby
    grants Recipient a non-exclusive, worldwide, royalty-free copyright
    license to reproduce, prepare derivative works of, publicly display,
    publicly perform, distribute and sublicense the Contribution of such
    Contributor, if any, and such derivative works, in source code and
    object code form.

    b) Subject to the terms of this Agreement, each Contributor hereby
    grants Recipient a non-exclusive, worldwide, royalty-free patent
    license under Licensed Patents to make, use, sell, offer to sell,
    import and otherwise transfer the Contribution of such Contributor,
    if any, in source code and object code form. This patent license
    shall apply to the combination of the Contribution and the Program
    if, at the time the Contribution is added by the Contributor, such
    addition of the Contribution causes such combination to be covered
    by the Licensed Patents. The patent license shall not apply to any
    other combinations which include the Contribution. No hardware per
    se is licensed hereunder.

    c) Recipient understands that although each Contributor grants the
    licenses to its Contributions set forth herein, no assurances are
    provided by any Contributor that the Program does not infringe the
    patent or other intellectual property rights of any other entity. Each
    Contributor disclaims any liability to Recipient for claims brought by
    any other entity based on infringement of intellectual property rights
    or otherwise. As a condition to exercising the rights and licenses
    granted hereunder, each Recipient hereby assumes sole responsibility
    to secure any other intellectual property rights needed, if any. For
    example, if a third party patent license is required to allow
    Recipient to distribute the Program, it is Recipient's responsibility
    to acquire that license before distributing the Program.

    d) Each Contributor represents that to its knowledge it has sufficient
    copyright rights in its Contribution, if any, to grant the copyright
    license set forth in this Agreement.

3. REQUIREMENTS

A Contributor may choose to distribute the Program in object code form
under its own license agreement, provided that:

    a) it complies with the terms and conditions of this Agreement; and

    b) its license agreement:

        i) effectively disclaims on behalf of all Contributors all
        warranties and conditions, express and implied, including
        warranties or conditions of title and non-infringement, and
        implied warranties or conditions of merchantability and fitness
        for a particular purpose;

        ii) effectively excludes on behalf of all Contributors all
        liability for damages, including direct, indirect, special,
        incidental and consequential damages, such as lost profits;

        iii) states that any provisions which differ from this Agreement
        are offered by that Contributor alone and not by any other
        party; and

        iv) states that source code for the Program is available from
        such Contributor, and informs licensees how to obtain it in a
        reasonable manner on or through a medium customarily used for
        software exchange.

When the Program is made available in source code form:

    a) it must be made available under this Agreement; and

    b) a copy of this Agreement must be included with each copy of
    the Program.  Contributors may not remove or alter any copyright
    notices contained within the Program.

Each Contributor must identify itself as the originator of its
Contribution, if any, in a manner that reasonably allows subsequent
Recipients to identify the originator of the Contribution.

4. COMMERCIAL DISTRIBUTION

Commercial distributors of software may accept certain responsibilities
with respect to end users, business partners and the like. While this
license is intended to facilitate the commercial use of the Program, the
Contributor who includes the Program in a commercial product offering
should do so in a manner which does not create potential liability for
other Contributors. Therefore, if a Contributor includes the Program in a
commercial product offering, such Contributor ("Commercial Contributor")
hereby agrees to defend and indemnify every other Contributor
("Indemnified Contributor") against any losses, damages and costs
(collectively "Losses") arising from claims, lawsuits and other legal
actions brought by a third party against the Indemnified Contributor to
the extent caused by the acts or omissions of such Commercial Contributor
in connection with its distribution of the Program in a commercial
product offering. The obligations in this section do not apply to any
claims or Losses relating to any actual or alleged intellectual property
infringement. In order to qualify, an Indemnified Contributor must: a)
promptly notify the Commercial Contributor in writing of such claim,
and b) allow the Commercial Contributor to control, and cooperate with
the Commercial Contributor in, the defense and any related settlement
negotiations. The Indemnified Contributor may participate in any such
claim at its own expense.

For example, a Contributor might include the Program in a commercial
product offering, Product X. That Contributor is then a Commercial
Contributor. If that Commercial Contributor then makes performance claims,
or offers warranties related to Product X, those performance claims and
warranties are such Commercial Contributor's responsibility alone. Under
this section, the Commercial Contributor would have to defend claims
against the other Contributors related to those performance claims and
warranties, and if a court requires any other Contributor to pay any
damages as a result, the Commercial Contributor must pay those damages.

5. NO WARRANTY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED
ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER
EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR
CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
PARTICULAR PURPOSE. Each Recipient is solely responsible for determining
the appropriateness of using and distributing the Program and assumes
all risks associated with its exercise of rights under this Agreement
, including but not limited to the risks and costs of program errors,
compliance with applicable laws, damage to or loss of data, programs or
equipment, and unavailability or interruption of operations.

6. DISCLAIMER OF LIABILITY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION
OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. GENERAL

If any provision of this Agreement is invalid or unenforceable under
applicable law, it shall not affect the validity or enforceability of
the remainder of the terms of this Agreement, and without further action
by the parties hereto, such provision shall be reformed to the minimum
extent necessary to make such provision valid and enforceable.

If Recipient institutes patent litigation against any entity (including
a cross-claim or counterclaim in a lawsuit) alleging that the Program
itself (excluding combinations of the Program with other software or
hardware) infringes such Recipient's patent(s), then such Recipient's
rights granted under Section 2(b) shall terminate as of the date such
litigation is filed.

All Recipient's rights under this Agreement shall terminate if it fails
to comply with any of the material terms or conditions of this Agreement
and does not cure such failure in a reasonable period of time after
becoming aware of such noncompliance. If all Recipient's rights under
this Agreement terminate, Recipient agrees to cease use and distribution
of the Program as soon as reasonably practicable. However, Recipient's
obligations under this Agreement and any licenses granted by Recipient
relating to the Program shall continue and survive.

Everyone is permitted to copy and distribute copies of this Agreement,
but in order to avoid inconsistency the Agreement is copyrighted and may
only be modified in the following manner. The Agreement Steward reserves
the right to publish new versions (including revisions) of this Agreement
from time to time. No one other than the Agreement Steward has the right
to modify this Agreement. The Eclipse Foundation is the initial Agreement
Steward. The Eclipse Foundation may assign the responsibility to serve
as the Agreement Steward to a suitable separate entity. Each new version
of the Agreement will be given a distinguishing version number. The
Program (including Contributions) may always be distributed subject to
the version of the Agreement under which it was received. In addition,
after a new version of the Agreement is published, Contributor may elect
to distribute the Program (including its Contributions) under the new
version. Except as expressly stated in Sections 2(a) and 2(b) above,
Recipient receives no rights or licenses to the intellectual property of
any Contributor under this Agreement, whether expressly, by implication,
estoppel or otherwise. All rights in the Program not expressly granted
under this Agreement are reserved.

This Agreement is governed by the laws of the State of New York and the
intellectual property laws of the United States of America. No party to
this Agreement will bring a legal action under this Agreement more than
one year after the cause of action arose. Each party waives its rights
to a jury trial in any resulting litigation.


==================== LICENSE TEXT REFERENCE TABLE ====================

-------------------- SECTION 1 --------------------
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-------------------- SECTION 2 --------------------
Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
-------------------- SECTION 3 --------------------
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-------------------- SECTION 4 --------------------
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-------------------- SECTION 5 --------------------
MIT.LICENSE
-------------------- SECTION 6 --------------------
The MIT License (MIT)
-------------------- SECTION 7 --------------------
ISC License
-------------------- SECTION 8 --------------------
Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-------------------- SECTION 9 --------------------
the MIT License
-------------------- SECTION 10 --------------------
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-------------------- SECTION 11 --------------------
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-------------------- SECTION 12 --------------------
License: MIT
-------------------- SECTION 13 --------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
-------------------- SECTION 14 --------------------
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//    * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//    * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//    * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------- SECTION 15 --------------------
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
-------------------- SECTION 16 --------------------
 * MIT Licensed
-------------------- SECTION 17 --------------------
Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
-------------------- SECTION 18 --------------------
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-------------------- SECTION 19 --------------------
Licensed under the MIT license
-------------------- SECTION 20 --------------------
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
-------------------- SECTION 21 --------------------
This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
-------------------- SECTION 22 --------------------
 * Released under the MIT license.
-------------------- SECTION 23 --------------------
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
-------------------- SECTION 24 --------------------
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to permit
 * persons to whom the Software is furnished to do so, subject to the
 * following conditions:
 *
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 * USE OR OTHER DEALINGS IN THE SOFTWARE.
-------------------- SECTION 25 --------------------
#   Permission is hereby granted, free of charge, to any person obtaining a
#   copy of this software and associated documentation files (the "Software"),
#   to deal in the Software without restriction, including without limitation
#   the rights to use, copy, modify, merge, publish, distribute, sublicense,
#   and/or sell copies of the Software, and to permit persons to whom the
#   Software is furnished to do so, subject to the following conditions:
#
#   The above copyright notice and this permission notice shall be included
#   in all copies or substantial portions of the Software.
#
#   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
#   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
#   THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
#   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
#   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
#   OTHER DEALINGS IN THE SOFTWARE.
-------------------- SECTION 26 --------------------
(The MIT License)
-------------------- SECTION 27 --------------------
 *  Licensed under the MIT License.
-------------------- SECTION 28 --------------------
Licensed under the MIT license.
-------------------- SECTION 29 --------------------
## License

The MIT License (MIT)
-------------------- SECTION 30 --------------------
License

MIT © [
-------------------- SECTION 31 --------------------
@license MIT
-------------------- SECTION 32 --------------------
## License

MIT © [Javier Blanco](http://jbgutierrez.info)
-------------------- SECTION 33 --------------------
Used with permission.
-------------------- SECTION 34 --------------------
LICENSE-MIT
-------------------- SECTION 35 --------------------
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-------------------- SECTION 36 --------------------
Released under the MIT license.
-------------------- SECTION 37 --------------------
Released under the [MIT license](
-------------------- SECTION 38 --------------------
 * Licensed under the New BSD license. See LICENSE.txt or:
 * http://opensource.org/licenses/BSD-3-Clause
-------------------- SECTION 39 --------------------
 * Licensed under the MIT License.
-------------------- SECTION 40 --------------------
 * Released under MIT license <https://lodash.com/license>
-------------------- SECTION 41 --------------------
 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
-------------------- SECTION 42 --------------------
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
-------------------- SECTION 43 --------------------
Released under MIT license <https://lodash.com/license>
-------------------- SECTION 44 --------------------
http://underscorejs.org/LICENSE>
-------------------- SECTION 45 --------------------
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 *  * Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *  * Redistributions in binary form must reproduce the above
 *    copyright notice, this list of conditions and the following
 *    disclaimer in the documentation and/or other materials provided
 *    with the distribution.
 *  * Neither the name of Google Inc. nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------- SECTION 46 --------------------
See LICENSE.txt
-------------------- SECTION 47 --------------------
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

  * Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
  * Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------- SECTION 48 --------------------
                               Apache License
                         Version 2.0, January 2004
                      http://www.apache.org/licenses/

 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

 1. Definitions.

    "License" shall mean the terms and conditions for use, reproduction,
    and distribution as defined by Sections 1 through 9 of this document.

    "Licensor" shall mean the copyright owner or entity authorized by
    the copyright owner that is granting the License.

    "Legal Entity" shall mean the union of the acting entity and all
    other entities that control, are controlled by, or are under common
    control with that entity. For the purposes of this definition,
    "control" means (i) the power, direct or indirect, to cause the
    direction or management of such entity, whether by contract or
    otherwise, or (ii) ownership of fifty percent (50%) or more of the
    outstanding shares, or (iii) beneficial ownership of such entity.

    "You" (or "Your") shall mean an individual or Legal Entity
    exercising permissions granted by this License.

    "Source" form shall mean the preferred form for making modifications,
    including but not limited to software source code, documentation
    source, and configuration files.

    "Object" form shall mean any form resulting from mechanical
    transformation or translation of a Source form, including but
    not limited to compiled object code, generated documentation,
    and conversions to other media types.

    "Work" shall mean the work of authorship, whether in Source or
    Object form, made available under the License, as indicated by a
    copyright notice that is included in or attached to the work
    (an example is provided in the Appendix below).

    "Derivative Works" shall mean any work, whether in Source or Object
    form, that is based on (or derived from) the Work and for which the
    editorial revisions, annotations, elaborations, or other modifications
    represent, as a whole, an original work of authorship. For the purposes
    of this License, Derivative Works shall not include works that remain
    separable from, or merely link (or bind by name) to the interfaces of,
    the Work and Derivative Works thereof.

    "Contribution" shall mean any work of authorship, including
    the original version of the Work and any modifications or additions
    to that Work or Derivative Works thereof, that is intentionally
    submitted to Licensor for inclusion in the Work by the copyright owner
    or by an individual or Legal Entity authorized to submit on behalf of
    the copyright owner. For the purposes of this definition, "submitted"
    means any form of electronic, verbal, or written communication sent
    to the Licensor or its representatives, including but not limited to
    communication on electronic mailing lists, source code control systems,
    and issue tracking systems that are managed by, or on behalf of, the
    Licensor for the purpose of discussing and improving the Work, but
    excluding communication that is conspicuously marked or otherwise
    designated in writing by the copyright owner as "Not a Contribution."

    "Contributor" shall mean Licensor and any individual or Legal Entity
    on behalf of whom a Contribution has been received by Licensor and
    subsequently incorporated within the Work.

 2. Grant of Copyright License. Subject to the terms and conditions of
    this License, each Contributor hereby grants to You a perpetual,
    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
    copyright license to reproduce, prepare Derivative Works of,
    publicly display, publicly perform, sublicense, and distribute the
    Work and such Derivative Works in Source or Object form.

 3. Grant of Patent License. Subject to the terms and conditions of
    this License, each Contributor hereby grants to You a perpetual,
    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
    (except as stated in this section) patent license to make, have made,
    use, offer to sell, sell, import, and otherwise transfer the Work,
    where such license applies only to those patent claims licensable
    by such Contributor that are necessarily infringed by their
    Contribution(s) alone or by combination of their Contribution(s)
    with the Work to which such Contribution(s) was submitted. If You
    institute patent litigation against any entity (including a
    cross-claim or counterclaim in a lawsuit) alleging that the Work
    or a Contribution incorporated within the Work constitutes direct
    or contributory patent infringement, then any patent licenses
    granted to You under this License for that Work shall terminate
    as of the date such litigation is filed.

 4. Redistribution. You may reproduce and distribute copies of the
    Work or Derivative Works thereof in any medium, with or without
    modifications, and in Source or Object form, provided that You
    meet the following conditions:

    (a) You must give any other recipients of the Work or
        Derivative Works a copy of this License; and

    (b) You must cause any modified files to carry prominent notices
        stating that You changed the files; and

    (c) You must retain, in the Source form of any Derivative Works
        that You distribute, all copyright, patent, trademark, and
        attribution notices from the Source form of the Work,
        excluding those notices that do not pertain to any part of
        the Derivative Works; and

    (d) If the Work includes a "NOTICE" text file as part of its
        distribution, then any Derivative Works that You distribute must
        include a readable copy of the attribution notices contained
        within such NOTICE file, excluding those notices that do not
        pertain to any part of the Derivative Works, in at least one
        of the following places: within a NOTICE text file distributed
        as part of the Derivative Works; within the Source form or
        documentation, if provided along with the Derivative Works; or,
        within a display generated by the Derivative Works, if and
        wherever such third-party notices normally appear. The contents
        of the NOTICE file are for informational purposes only and
        do not modify the License. You may add Your own attribution
        notices within Derivative Works that You distribute, alongside
        or as an addendum to the NOTICE text from the Work, provided
        that such additional attribution notices cannot be construed
        as modifying the License.

    You may add Your own copyright statement to Your modifications and
    may provide additional or different license terms and conditions
    for use, reproduction, or distribution of Your modifications, or
    for any such Derivative Works as a whole, provided Your use,
    reproduction, and distribution of the Work otherwise complies with
    the conditions stated in this License.

 5. Submission of Contributions. Unless You explicitly state otherwise,
    any Contribution intentionally submitted for inclusion in the Work
    by You to the Licensor shall be under the terms and conditions of
    this License, without any additional terms or conditions.
    Notwithstanding the above, nothing herein shall supersede or modify
    the terms of any separate license agreement you may have executed
    with Licensor regarding such Contributions.

 6. Trademarks. This License does not grant permission to use the trade
    names, trademarks, service marks, or product names of the Licensor,
    except as required for reasonable and customary use in describing the
    origin of the Work and reproducing the content of the NOTICE file.

 7. Disclaimer of Warranty. Unless required by applicable law or
    agreed to in writing, Licensor provides the Work (and each
    Contributor provides its Contributions) on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
    implied, including, without limitation, any warranties or conditions
    of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
    PARTICULAR PURPOSE. You are solely responsible for determining the
    appropriateness of using or redistributing the Work and assume any
    risks associated with Your exercise of permissions under this License.

 8. Limitation of Liability. In no event and under no legal theory,
    whether in tort (including negligence), contract, or otherwise,
    unless required by applicable law (such as deliberate and grossly
    negligent acts) or agreed to in writing, shall any Contributor be
    liable to You for damages, including any direct, indirect, special,
    incidental, or consequential damages of any character arising as a
    result of this License or out of the use or inability to use the
    Work (including but not limited to damages for loss of goodwill,
    work stoppage, computer failure or malfunction, or any and all
    other commercial damages or losses), even if such Contributor
    has been advised of the possibility of such damages.

 9. Accepting Warranty or Additional Liability. While redistributing
    the Work or Derivative Works thereof, You may choose to offer,
    and charge a fee for, acceptance of support, warranty, indemnity,
    or other liability obligations and/or rights consistent with this
    License. However, in accepting such obligations, You may act only
    on Your own behalf and on Your sole responsibility, not on behalf
    of any other Contributor, and only if You agree to indemnify,
    defend, and hold each Contributor harmless for any liability
    incurred by, or claims asserted against, such Contributor by reason
    of your accepting any such warranty or additional liability.

 END OF TERMS AND CONDITIONS

 APPENDIX: How to apply the Apache License to your work.

    To apply the Apache License to your work, attach the following
    boilerplate notice, with the fields enclosed by brackets "[]"
    replaced with your own identifying information. (Don't include
    the brackets!)  The text should be enclosed in the appropriate
    comment syntax for the file format. We also recommend that a
    file or class name and description of purpose be included on the
    same "printed page" as the copyright notice for easier
    identification within third-party archives.

 Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-------------------- SECTION 49 --------------------
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0

THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.

See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
-------------------- SECTION 50 --------------------
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


-------------------------------------------------------------------------
                              Apache License
                        Version 2.0, January 2004
                     http://www.apache.org/licenses/


TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

   "License" shall mean the terms and conditions for use, reproduction,
   and distribution as defined by Sections 1 through 9 of this document.

   "Licensor" shall mean the copyright owner or entity authorized by
   the copyright owner that is granting the License.

   "Legal Entity" shall mean the union of the acting entity and all
   other entities that control, are controlled by, or are under common
   control with that entity. For the purposes of this definition,
   "control" means (i) the power, direct or indirect, to cause the
   direction or management of such entity, whether by contract or
   otherwise, or (ii) ownership of fifty percent (50%) or more of the
   outstanding shares, or (iii) beneficial ownership of such entity.

   "You" (or "Your") shall mean an individual or Legal Entity
   exercising permissions granted by this License.

   "Source" form shall mean the preferred form for making modifications,
   including but not limited to software source code, documentation
   source, and configuration files.

   "Object" form shall mean any form resulting from mechanical
   transformation or translation of a Source form, including but
   not limited to compiled object code, generated documentation,
   and conversions to other media types.

   "Work" shall mean the work of authorship, whether in Source or
   Object form, made available under the License, as indicated by a
   copyright notice that is included in or attached to the work
   (an example is provided in the Appendix below).

   "Derivative Works" shall mean any work, whether in Source or Object
   form, that is based on (or derived from) the Work and for which the
   editorial revisions, annotations, elaborations, or other modifications
   represent, as a whole, an original work of authorship. For the purposes
   of this License, Derivative Works shall not include works that remain
   separable from, or merely link (or bind by name) to the interfaces of,
   the Work and Derivative Works thereof.

   "Contribution" shall mean any work of authorship, including
   the original version of the Work and any modifications or additions
   to that Work or Derivative Works thereof, that is intentionally
   submitted to Licensor for inclusion in the Work by the copyright owner
   or by an individual or Legal Entity authorized to submit on behalf of
   the copyright owner. For the purposes of this definition, "submitted"
   means any form of electronic, verbal, or written communication sent
   to the Licensor or its representatives, including but not limited to
   communication on electronic mailing lists, source code control systems,
   and issue tracking systems that are managed by, or on behalf of, the
   Licensor for the purpose of discussing and improving the Work, but
   excluding communication that is conspicuously marked or otherwise
   designated in writing by the copyright owner as "Not a Contribution."

   "Contributor" shall mean Licensor and any individual or Legal Entity
   on behalf of whom a Contribution has been received by Licensor and
   subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
   this License, each Contributor hereby grants to You a perpetual,
   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
   copyright license to reproduce, prepare Derivative Works of,
   publicly display, publicly perform, sublicense, and distribute the
   Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
   this License, each Contributor hereby grants to You a perpetual,
   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
   (except as stated in this section) patent license to make, have made,
   use, offer to sell, sell, import, and otherwise transfer the Work,
   where such license applies only to those patent claims licensable
   by such Contributor that are necessarily infringed by their
   Contribution(s) alone or by combination of their Contribution(s)
   with the Work to which such Contribution(s) was submitted. If You
   institute patent litigation against any entity (including a
   cross-claim or counterclaim in a lawsuit) alleging that the Work
   or a Contribution incorporated within the Work constitutes direct
   or contributory patent infringement, then any patent licenses
   granted to You under this License for that Work shall terminate
   as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
   Work or Derivative Works thereof in any medium, with or without
   modifications, and in Source or Object form, provided that You
   meet the following conditions:

   (a) You must give any other recipients of the Work or
       Derivative Works a copy of this License; and

   (b) You must cause any modified files to carry prominent notices
       stating that You changed the files; and

   (c) You must retain, in the Source form of any Derivative Works
       that You distribute, all copyright, patent, trademark, and
       attribution notices from the Source form of the Work,
       excluding those notices that do not pertain to any part of
       the Derivative Works; and

   (d) If the Work includes a "NOTICE" text file as part of its
       distribution, then any Derivative Works that You distribute must
       include a readable copy of the attribution notices contained
       within such NOTICE file, excluding those notices that do not
       pertain to any part of the Derivative Works, in at least one
       of the following places: within a NOTICE text file distributed
       as part of the Derivative Works; within the Source form or
       documentation, if provided along with the Derivative Works; or,
       within a display generated by the Derivative Works, if and
       wherever such third-party notices normally appear. The contents
       of the NOTICE file are for informational purposes only and
       do not modify the License. You may add Your own attribution
       notices within Derivative Works that You distribute, alongside
       or as an addendum to the NOTICE text from the Work, provided
       that such additional attribution notices cannot be construed
       as modifying the License.

   You may add Your own copyright statement to Your modifications and
   may provide additional or different license terms and conditions
   for use, reproduction, or distribution of Your modifications, or
   for any such Derivative Works as a whole, provided Your use,
   reproduction, and distribution of the Work otherwise complies with
   the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
   names, trademarks, service marks, or product names of the Licensor,
   except as required for reasonable and customary use in describing the
   origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
   agreed to in writing, Licensor provides the Work (and each
   Contributor provides its Contributions) on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
   implied, including, without limitation, any warranties or conditions
   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
   PARTICULAR PURPOSE. You are solely responsible for determining the
   appropriateness of using or redistributing the Work and assume any
   risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
   whether in tort (including negligence), contract, or otherwise,
   unless required by applicable law (such as deliberate and grossly
   negligent acts) or agreed to in writing, shall any Contributor be
   liable to You for damages, including any direct, indirect, special,
   incidental, or consequential damages of any character arising as a
   result of this License or out of the use or inability to use the
   Work (including but not limited to damages for loss of goodwill,
   work stoppage, computer failure or malfunction, or any and all
   other commercial damages or losses), even if such Contributor
   has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
   the Work or Derivative Works thereof, You may choose to offer,
   and charge a fee for, acceptance of support, warranty, indemnity,
   or other liability obligations and/or rights consistent with this
   License. However, in accepting such obligations, You may act only
   on Your own behalf and on Your sole responsibility, not on behalf
   of any other Contributor, and only if You agree to indemnify,
   defend, and hold each Contributor harmless for any liability
   incurred by, or claims asserted against, such Contributor by reason
   of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS
-------------------- SECTION 51 --------------------
 * @license   Licensed under MIT license
-------------------- SECTION 52 --------------------
Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
-------------------- SECTION 53 --------------------
Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 *  * Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *  * Redistributions in binary form must reproduce the above
 *    copyright notice, this list of conditions and the following
 *    disclaimer in the documentation and/or other materials provided
 *    with the distribution.
 *  * Neither the name of Google Inc. nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------- SECTION 54 --------------------
Available under MIT license <https://lodash.com/license>
-------------------- SECTION 55 --------------------
Licensed under the Apache-2.0 License.
-------------------- SECTION 56 --------------------
Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
-------------------- SECTION 57 --------------------
Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
-------------------- SECTION 58 --------------------
    Permission to use, copy, modify, and/or distribute this software for any
    purpose with or without fee is hereby granted.

    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
    PERFORMANCE OF THIS SOFTWARE.
-------------------- SECTION 59 --------------------
https://angular.io/
 * License:
-------------------- SECTION 60 --------------------
Permission to use, copy, modify, and/or distribute this software for any
    purpose with or without fee is hereby granted.

    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
    PERFORMANCE OF THIS SOFTWARE.
-------------------- SECTION 61 --------------------
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
-------------------- SECTION 62 --------------------
MIT Licensed
-------------------- SECTION 63 --------------------
// SPDX-License-Identifier: BSD-3-Clause
-------------------- SECTION 64 --------------------
MIT License */
-------------------- SECTION 65 --------------------
Redistribution and use in source and binary forms, with or without
	  modification, are permitted provided that the following conditions are met:

	    * Redistributions of source code must retain the above copyright
	      notice, this list of conditions and the following disclaimer.
	    * Redistributions in binary form must reproduce the above copyright
	      notice, this list of conditions and the following disclaimer in the
	      documentation and/or other materials provided with the distribution.

	  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
	  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
	  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
	  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
	  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
	  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
	  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
	  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
	  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
	  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------- SECTION 66 --------------------
License
-------

(MIT License)
-------------------- SECTION 67 --------------------
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files (the "Software"), to
  deal in the Software without restriction, including without limitation the
  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  sell copies of the Software, and to permit persons to whom the Software is
  furnished to do so, subject to the following conditions:

  The above copyright notice and this permission notice shall be included in
  all copies or substantial portions of the Software.

  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
  IN THE SOFTWARE.
-------------------- SECTION 68 --------------------
 * Modified but based on the following MIT and BSD licensed code:
-------------------- SECTION 69 --------------------
 * Distributed under the BSD License.
-------------------- SECTION 70 --------------------
THIS SOFTWARE IS PROVIDED "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
-------------------- SECTION 71 --------------------
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
    this file except in compliance with the License. You may obtain a copy of the
    License at http://www.apache.org/licenses/LICENSE-2.0

    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
    MERCHANTABLITY OR NON-INFRINGEMENT.

    See the Apache Version 2.0 License for specific language governing permissions
    and limitations under the License.
-------------------- SECTION 72 --------------------
 * This implementation is based on the most excellent TweetNaCl which is
 * in the public domain. Many thanks to its contributors:
-------------------- SECTION 73 --------------------
{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js"],"sourcesContent":["/*!  * @overview es6-promise - a tiny implementation of Promises/A+.  * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)  * @license   Licensed under MIT license  *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE  * @version   v4.2.8+1e68dce6  */ ","export function objectOrFunction(x) {   var type = typeof x;   return x !== null && (type === 'object' || type === 'function'); }  export function isFunction(x) {   return typeof x === 'function'; }  export function isMaybeThenable(x) {   return x !== null && typeof x === 'object'; }  var _isArray = void 0; if (Array.isArray) {   _isArray = Array.isArray; } else {   _isArray = function (x) {     return Object.prototype.toString.call(x) === '[object Array]';   }; }  export var isArray = _isArray;","var len = 0; var vertxNext = void 0; var customSchedulerFn = void 0;  export var asap = function asap(callback, arg) {   queue[len] = callback;   queue[len + 1] = arg;   len += 2;   if (len === 2) {     // If len is 2, that means that we need to schedule an async flush.     // If additional callbacks are queued before the queue is flushed, they     // will be processed by this flush that we are scheduling.     if (customSchedulerFn) {       customSchedulerFn(flush);     } else {       scheduleFlush();     }   } };  export function setScheduler(scheduleFn) {   customSchedulerFn = scheduleFn; }  export function setAsap(asapFn) {   asap = asapFn; }  var browserWindow = typeof window !== 'undefined' ? window : undefined; var browserGlobal = browserWindow || {}; var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver; var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';  // test for web worker but not in IE10 var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';  // node function useNextTick() {   // node version 0.10.x displays a deprecation warning when nextTick is used recursively   // see https://github.com/cujojs/when/issues/410 for details   return function () {     return process.nextTick(flush);   }; }  // vertx function useVertxTimer() {   if (typeof vertxNext !== 'undefined') {     return function () {       vertxNext(flush);     };   }    return useSetTimeout(); }  function useMutationObserver() {   var iterations = 0;   var observer = new BrowserMutationObserver(flush);   var node = document.createTextNode('');   observer.observe(node, { characterData: true });    return function () {     node.data = iterations = ++iterations % 2;   }; }  // web worker function useMessageChannel() {   var channel = new MessageChannel();   channel.port1.onmessage = flush;   return function () {     return channel.port2.postMessage(0);   }; }  function useSetTimeout() {   // Store setTimeout reference so es6-promise will be unaffected by   // other code modifying setTimeout (like sinon.useFakeTimers())   var globalSetTimeout = setTimeout;   return function () {     return globalSetTimeout(flush, 1);   }; }  var queue = new Array(1000); function flush() {   for (var i = 0; i < len; i += 2) {     var callback = queue[i];     var arg = queue[i + 1];      callback(arg);      queue[i] = undefined;     queue[i + 1] = undefined;   }    len = 0; }  function attemptVertx() {   try {     var vertx = Function('return this')().require('vertx');     vertxNext = vertx.runOnLoop || vertx.runOnContext;     return useVertxTimer();   } catch (e) {     return useSetTimeout();   } }  var scheduleFlush = void 0; // Decide what async method to use to triggering processing of queued callbacks: if (isNode) {   scheduleFlush = useNextTick(); } else if (BrowserMutationObserver) {   scheduleFlush = useMutationObserver(); } else if (isWorker) {   scheduleFlush = useMessageChannel(); } else if (browserWindow === undefined && typeof require === 'function') {   scheduleFlush = attemptVertx(); } else {   scheduleFlush = useSetTimeout(); }","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';  import { asap } from './asap';  export default function then(onFulfillment, onRejection) {   var parent = this;    var child = new this.constructor(noop);    if (child[PROMISE_ID] === undefined) {     makePromise(child);   }    var _state = parent._state;     if (_state) {     var callback = arguments[_state - 1];     asap(function () {       return invokeCallback(_state, child, callback, parent._result);     });   } else {     subscribe(parent, child, onFulfillment, onRejection);   }    return child; }","import { noop, resolve as _resolve } from '../-internal';  /**   `Promise.resolve` returns a promise that will become resolved with the   passed `value`. It is shorthand for the following:    ```javascript   let promise = new Promise(function(resolve, reject){     resolve(1);   });    promise.then(function(value){     // value === 1   });   ```    Instead of writing the above, your code now simply becomes the following:    ```javascript   let promise = Promise.resolve(1);    promise.then(function(value){     // value === 1   });   ```    @method resolve   @static   @param {Any} value value that the returned promise will be resolved with   Useful for tooling.   @return {Promise} a promise that will become fulfilled with the given   `value` */ export default function resolve(object) {   /*jshint validthis:true */   var Constructor = this;    if (object && typeof object === 'object' && object.constructor === Constructor) {     return object;   }    var promise = new Constructor(noop);   _resolve(promise, object);   return promise; }","import { objectOrFunction, isFunction } from './utils';  import { asap } from './asap';  import originalThen from './then'; import originalResolve from './promise/resolve';  export var PROMISE_ID = Math.random().toString(36).substring(2);  function noop() {}  var PENDING = void 0; var FULFILLED = 1; var REJECTED = 2;  function selfFulfillment() {   return new TypeError(\"You cannot resolve a promise with itself\"); }  function cannotReturnOwn() {   return new TypeError('A promises callback cannot return that same promise.'); }  function tryThen(then, value, fulfillmentHandler, rejectionHandler) {   try {     then.call(value, fulfillmentHandler, rejectionHandler);   } catch (e) {     return e;   } }  function handleForeignThenable(promise, thenable, then) {   asap(function (promise) {     var sealed = false;     var error = tryThen(then, thenable, function (value) {       if (sealed) {         return;       }       sealed = true;       if (thenable !== value) {         resolve(promise, value);       } else {         fulfill(promise, value);       }     }, function (reason) {       if (sealed) {         return;       }       sealed = true;        reject(promise, reason);     }, 'Settle: ' + (promise._label || ' unknown promise'));      if (!sealed && error) {       sealed = true;       reject(promise, error);     }   }, promise); }  function handleOwnThenable(promise, thenable) {   if (thenable._state === FULFILLED) {     fulfill(promise, thenable._result);   } else if (thenable._state === REJECTED) {     reject(promise, thenable._result);   } else {     subscribe(thenable, undefined, function (value) {       return resolve(promise, value);     }, function (reason) {       return reject(promise, reason);     });   } }  function handleMaybeThenable(promise, maybeThenable, then) {   if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {     handleOwnThenable(promise, maybeThenable);   } else {     if (then === undefined) {       fulfill(promise, maybeThenable);     } else if (isFunction(then)) {       handleForeignThenable(promise, maybeThenable, then);     } else {       fulfill(promise, maybeThenable);     }   } }  function resolve(promise, value) {   if (promise === value) {     reject(promise, selfFulfillment());   } else if (objectOrFunction(value)) {     var then = void 0;     try {       then = value.then;     } catch (error) {       reject(promise, error);       return;     }     handleMaybeThenable(promise, value, then);   } else {     fulfill(promise, value);   } }  function publishRejection(promise) {   if (promise._onerror) {     promise._onerror(promise._result);   }    publish(promise); }  function fulfill(promise, value) {   if (promise._state !== PENDING) {     return;   }    promise._result = value;   promise._state = FULFILLED;    if (promise._subscribers.length !== 0) {     asap(publish, promise);   } }  function reject(promise, reason) {   if (promise._state !== PENDING) {     return;   }   promise._state = REJECTED;   promise._result = reason;    asap(publishRejection, promise); }  function subscribe(parent, child, onFulfillment, onRejection) {   var _subscribers = parent._subscribers;   var length = _subscribers.length;     parent._onerror = null;    _subscribers[length] = child;   _subscribers[length + FULFILLED] = onFulfillment;   _subscribers[length + REJECTED] = onRejection;    if (length === 0 && parent._state) {     asap(publish, parent);   } }  function publish(promise) {   var subscribers = promise._subscribers;   var settled = promise._state;    if (subscribers.length === 0) {     return;   }    var child = void 0,       callback = void 0,       detail = promise._result;    for (var i = 0; i < subscribers.length; i += 3) {     child = subscribers[i];     callback = subscribers[i + settled];      if (child) {       invokeCallback(settled, child, callback, detail);     } else {       callback(detail);     }   }    promise._subscribers.length = 0; }  function invokeCallback(settled, promise, callback, detail) {   var hasCallback = isFunction(callback),       value = void 0,       error = void 0,       succeeded = true;    if (hasCallback) {     try {       value = callback(detail);     } catch (e) {       succeeded = false;       error = e;     }      if (promise === value) {       reject(promise, cannotReturnOwn());       return;     }   } else {     value = detail;   }    if (promise._state !== PENDING) {     // noop   } else if (hasCallback && succeeded) {     resolve(promise, value);   } else if (succeeded === false) {     reject(promise, error);   } else if (settled === FULFILLED) {     fulfill(promise, value);   } else if (settled === REJECTED) {     reject(promise, value);   } }  function initializePromise(promise, resolver) {   try {     resolver(function resolvePromise(value) {       resolve(promise, value);     }, function rejectPromise(reason) {       reject(promise, reason);     });   } catch (e) {     reject(promise, e);   } }  var id = 0; function nextId() {   return id++; }  function makePromise(promise) {   promise[PROMISE_ID] = id++;   promise._state = undefined;   promise._result = undefined;   promise._subscribers = []; }  export { nextId, makePromise, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }  import { isArray, isMaybeThenable } from './utils'; import { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, handleMaybeThenable } from './-internal';  import then from './then'; import Promise from './promise'; import originalResolve from './promise/resolve'; import originalThen from './then'; import { makePromise, PROMISE_ID } from './-internal';  function validationError() {   return new Error('Array Methods must be provided an Array'); };  var Enumerator = function () {   function Enumerator(Constructor, input) {     this._instanceConstructor = Constructor;     this.promise = new Constructor(noop);      if (!this.promise[PROMISE_ID]) {       makePromise(this.promise);     }      if (isArray(input)) {       this.length = input.length;       this._remaining = input.length;        this._result = new Array(this.length);        if (this.length === 0) {         fulfill(this.promise, this._result);       } else {         this.length = this.length || 0;         this._enumerate(input);         if (this._remaining === 0) {           fulfill(this.promise, this._result);         }       }     } else {       reject(this.promise, validationError());     }   }    Enumerator.prototype._enumerate = function _enumerate(input) {     for (var i = 0; this._state === PENDING && i < input.length; i++) {       this._eachEntry(input[i], i);     }   };    Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {     var c = this._instanceConstructor;     var resolve = c.resolve;       if (resolve === originalResolve) {       var _then = void 0;       var error = void 0;       var didError = false;       try {         _then = entry.then;       } catch (e) {         didError = true;         error = e;       }        if (_then === originalThen && entry._state !== PENDING) {         this._settledAt(entry._state, i, entry._result);       } else if (typeof _then !== 'function') {         this._remaining--;         this._result[i] = entry;       } else if (c === Promise) {         var promise = new c(noop);         if (didError) {           reject(promise, error);         } else {           handleMaybeThenable(promise, entry, _then);         }         this._willSettleAt(promise, i);       } else {         this._willSettleAt(new c(function (resolve) {           return resolve(entry);         }), i);       }     } else {       this._willSettleAt(resolve(entry), i);     }   };    Enumerator.prototype._settledAt = function _settledAt(state, i, value) {     var promise = this.promise;       if (promise._state === PENDING) {       this._remaining--;        if (state === REJECTED) {         reject(promise, value);       } else {         this._result[i] = value;       }     }      if (this._remaining === 0) {       fulfill(promise, this._result);     }   };    Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {     var enumerator = this;      subscribe(promise, undefined, function (value) {       return enumerator._settledAt(FULFILLED, i, value);     }, function (reason) {       return enumerator._settledAt(REJECTED, i, reason);     });   };    return Enumerator; }();  export default Enumerator; ;","import Enumerator from '../enumerator';  /**   `Promise.all` accepts an array of promises, and returns a new promise which   is fulfilled with an array of fulfillment values for the passed promises, or   rejected with the reason of the first passed promise to be rejected. It casts all   elements of the passed iterable to promises as it runs this algorithm.    Example:    ```javascript   let promise1 = resolve(1);   let promise2 = resolve(2);   let promise3 = resolve(3);   let promises = [ promise1, promise2, promise3 ];    Promise.all(promises).then(function(array){     // The array here would be [ 1, 2, 3 ];   });   ```    If any of the `promises` given to `all` are rejected, the first promise   that is rejected will be given as an argument to the returned promises's   rejection handler. For example:    Example:    ```javascript   let promise1 = resolve(1);   let promise2 = reject(new Error(\"2\"));   let promise3 = reject(new Error(\"3\"));   let promises = [ promise1, promise2, promise3 ];    Promise.all(promises).then(function(array){     // Code here never runs because there are rejected promises!   }, function(error) {     // error.message === \"2\"   });   ```    @method all   @static   @param {Array} entries array of promises   @param {String} label optional string for labeling the promise.   Useful for tooling.   @return {Promise} promise that is fulfilled when all `promises` have been   fulfilled, or rejected if any of them become rejected.   @static */ export default function all(entries) {   return new Enumerator(this, entries).promise; }","import { isArray } from \"../utils\";  /**   `Promise.race` returns a new promise which is settled in the same way as the   first passed promise to settle.    Example:    ```javascript   let promise1 = new Promise(function(resolve, reject){     setTimeout(function(){       resolve('promise 1');     }, 200);   });    let promise2 = new Promise(function(resolve, reject){     setTimeout(function(){       resolve('promise 2');     }, 100);   });    Promise.race([promise1, promise2]).then(function(result){     // result === 'promise 2' because it was resolved before promise1     // was resolved.   });   ```    `Promise.race` is deterministic in that only the state of the first   settled promise matters. For example, even if other promises given to the   `promises` array argument are resolved, but the first settled promise has   become rejected before the other promises became fulfilled, the returned   promise will become rejected:    ```javascript   let promise1 = new Promise(function(resolve, reject){     setTimeout(function(){       resolve('promise 1');     }, 200);   });    let promise2 = new Promise(function(resolve, reject){     setTimeout(function(){       reject(new Error('promise 2'));     }, 100);   });    Promise.race([promise1, promise2]).then(function(result){     // Code here never runs   }, function(reason){     // reason.message === 'promise 2' because promise 2 became rejected before     // promise 1 became fulfilled   });   ```    An example real-world use case is implementing timeouts:    ```javascript   Promise.race([ajax('foo.json'), timeout(5000)])   ```    @method race   @static   @param {Array} promises array of promises to observe   Useful for tooling.   @return {Promise} a promise which settles in the same way as the first passed   promise to settle. */ export default function race(entries) {   /*jshint validthis:true */   var Constructor = this;    if (!isArray(entries)) {     return new Constructor(function (_, reject) {       return reject(new TypeError('You must pass an array to race.'));     });   } else {     return new Constructor(function (resolve, reject) {       var length = entries.length;       for (var i = 0; i < length; i++) {         Constructor.resolve(entries[i]).then(resolve, reject);       }     });   } }","import { noop, reject as _reject } from '../-internal';  /**   `Promise.reject` returns a promise rejected with the passed `reason`.   It is shorthand for the following:    ```javascript   let promise = new Promise(function(resolve, reject){     reject(new Error('WHOOPS'));   });    promise.then(function(value){     // Code here doesn't run because the promise is rejected!   }, function(reason){     // reason.message === 'WHOOPS'   });   ```    Instead of writing the above, your code now simply becomes the following:    ```javascript   let promise = Promise.reject(new Error('WHOOPS'));    promise.then(function(value){     // Code here doesn't run because the promise is rejected!   }, function(reason){     // reason.message === 'WHOOPS'   });   ```    @method reject   @static   @param {Any} reason value that the returned promise will be rejected with.   Useful for tooling.   @return {Promise} a promise rejected with the given `reason`. */ export default function reject(reason) {   /*jshint validthis:true */   var Constructor = this;   var promise = new Constructor(noop);   _reject(promise, reason);   return promise; }","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }  import { isFunction } from './utils'; import { noop, nextId, PROMISE_ID, initializePromise } from './-internal'; import { asap, setAsap, setScheduler } from './asap';  import all from './promise/all'; import race from './promise/race'; import Resolve from './promise/resolve'; import Reject from './promise/reject'; import then from './then';  function needsResolver() {   throw new TypeError('You must pass a resolver function as the first argument to the promise constructor'); }  function needsNew() {   throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\"); }  /**   Promise objects represent the eventual result of an asynchronous operation. The   primary way of interacting with a promise is through its `then` method, which   registers callbacks to receive either a promise's eventual value or the reason   why the promise cannot be fulfilled.    Terminology   -----------    - `promise` is an object or function with a `then` method whose behavior conforms to this specification.   - `thenable` is an object or function that defines a `then` method.   - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).   - `exception` is a value that is thrown using the throw statement.   - `reason` is a value that indicates why a promise was rejected.   - `settled` the final resting state of a promise, fulfilled or rejected.    A promise can be in one of three states: pending, fulfilled, or rejected.    Promises that are fulfilled have a fulfillment value and are in the fulfilled   state.  Promises that are rejected have a rejection reason and are in the   rejected state.  A fulfillment value is never a thenable.    Promises can also be said to *resolve* a value.  If this value is also a   promise, then the original promise's settled state will match the value's   settled state.  So a promise that *resolves* a promise that rejects will   itself reject, and a promise that *resolves* a promise that fulfills will   itself fulfill.     Basic Usage:   ------------    ```js   let promise = new Promise(function(resolve, reject) {     // on success     resolve(value);      // on failure     reject(reason);   });    promise.then(function(value) {     // on fulfillment   }, function(reason) {     // on rejection   });   ```    Advanced Usage:   ---------------    Promises shine when abstracting away asynchronous interactions such as   `XMLHttpRequest`s.    ```js   function getJSON(url) {     return new Promise(function(resolve, reject){       let xhr = new XMLHttpRequest();        xhr.open('GET', url);       xhr.onreadystatechange = handler;       xhr.responseType = 'json';       xhr.setRequestHeader('Accept', 'application/json');       xhr.send();        function handler() {         if (this.readyState === this.DONE) {           if (this.status === 200) {             resolve(this.response);           } else {             reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));           }         }       };     });   }    getJSON('/posts.json').then(function(json) {     // on fulfillment   }, function(reason) {     // on rejection   });   ```    Unlike callbacks, promises are great composable primitives.    ```js   Promise.all([     getJSON('/posts'),     getJSON('/comments')   ]).then(function(values){     values[0] // => postsJSON     values[1] // => commentsJSON      return values;   });   ```    @class Promise   @param {Function} resolver   Useful for tooling.   @constructor */  var Promise = function () {   function Promise(resolver) {     this[PROMISE_ID] = nextId();     this._result = this._state = undefined;     this._subscribers = [];      if (noop !== resolver) {       typeof resolver !== 'function' && needsResolver();       this instanceof Promise ? initializePromise(this, resolver) : needsNew();     }   }    /**   The primary way of interacting with a promise is through its `then` method,   which registers callbacks to receive either a promise's eventual value or the   reason why the promise cannot be fulfilled.    ```js   findUser().then(function(user){     // user is available   }, function(reason){     // user is unavailable, and you are given the reason why   });   ```    Chaining   --------    The return value of `then` is itself a promise.  This second, 'downstream'   promise is resolved with the return value of the first promise's fulfillment   or rejection handler, or rejected if the handler throws an exception.    ```js   findUser().then(function (user) {     return user.name;   }, function (reason) {     return 'default name';   }).then(function (userName) {     // If `findUser` fulfilled, `userName` will be the user's name, otherwise it     // will be `'default name'`   });    findUser().then(function (user) {     throw new Error('Found user, but still unhappy');   }, function (reason) {     throw new Error('`findUser` rejected and we're unhappy');   }).then(function (value) {     // never reached   }, function (reason) {     // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.     // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.   });   ```   If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.    ```js   findUser().then(function (user) {     throw new PedagogicalException('Upstream error');   }).then(function (value) {     // never reached   }).then(function (value) {     // never reached   }, function (reason) {     // The `PedgagocialException` is propagated all the way down to here   });   ```    Assimilation   ------------    Sometimes the value you want to propagate to a downstream promise can only be   retrieved asynchronously. This can be achieved by returning a promise in the   fulfillment or rejection handler. The downstream promise will then be pending   until the returned promise is settled. This is called *assimilation*.    ```js   findUser().then(function (user) {     return findCommentsByAuthor(user);   }).then(function (comments) {     // The user's comments are now available   });   ```    If the assimliated promise rejects, then the downstream promise will also reject.    ```js   findUser().then(function (user) {     return findCommentsByAuthor(user);   }).then(function (comments) {     // If `findCommentsByAuthor` fulfills, we'll have the value here   }, function (reason) {     // If `findCommentsByAuthor` rejects, we'll have the reason here   });   ```    Simple Example   --------------    Synchronous Example    ```javascript   let result;    try {     result = findResult();     // success   } catch(reason) {     // failure   }   ```    Errback Example    ```js   findResult(function(result, err){     if (err) {       // failure     } else {       // success     }   });   ```    Promise Example;    ```javascript   findResult().then(function(result){     // success   }, function(reason){     // failure   });   ```    Advanced Example   --------------    Synchronous Example    ```javascript   let author, books;    try {     author = findAuthor();     books  = findBooksByAuthor(author);     // success   } catch(reason) {     // failure   }   ```    Errback Example    ```js    function foundBooks(books) {    }    function failure(reason) {    }    findAuthor(function(author, err){     if (err) {       failure(err);       // failure     } else {       try {         findBoooksByAuthor(author, function(books, err) {           if (err) {             failure(err);           } else {             try {               foundBooks(books);             } catch(reason) {               failure(reason);             }           }         });       } catch(error) {         failure(err);       }       // success     }   });   ```    Promise Example;    ```javascript   findAuthor().     then(findBooksByAuthor).     then(function(books){       // found books   }).catch(function(reason){     // something went wrong   });   ```    @method then   @param {Function} onFulfilled   @param {Function} onRejected   Useful for tooling.   @return {Promise}   */    /**   `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same   as the catch block of a try/catch statement.   ```js   function findAuthor(){   throw new Error('couldn't find that author');   }   // synchronous   try {   findAuthor();   } catch(reason) {   // something went wrong   }   // async with promises   findAuthor().catch(function(reason){   // something went wrong   });   ```   @method catch   @param {Function} onRejection   Useful for tooling.   @return {Promise}   */     Promise.prototype.catch = function _catch(onRejection) {     return this.then(null, onRejection);   };    /**     `finally` will be invoked regardless of the promise's fate just as native     try/catch/finally behaves        Synchronous example:        ```js     findAuthor() {       if (Math.random() > 0.5) {         throw new Error();       }       return new Author();     }        try {       return findAuthor(); // succeed or fail     } catch(error) {       return findOtherAuther();     } finally {       // always runs       // doesn't affect the return value     }     ```        Asynchronous example:        ```js     findAuthor().catch(function(reason){       return findOtherAuther();     }).finally(function(){       // author was either found, or not     });     ```        @method finally     @param {Function} callback     @return {Promise}   */     Promise.prototype.finally = function _finally(callback) {     var promise = this;     var constructor = promise.constructor;      if (isFunction(callback)) {       return promise.then(function (value) {         return constructor.resolve(callback()).then(function () {           return value;         });       }, function (reason) {         return constructor.resolve(callback()).then(function () {           throw reason;         });       });     }      return promise.then(callback, callback);   };    return Promise; }();  Promise.prototype.then = then; export default Promise; Promise.all = all; Promise.race = race; Promise.resolve = Resolve; Promise.reject = Reject; Promise._setScheduler = setScheduler; Promise._setAsap = setAsap; Promise._asap = asap;","/*global self*/ import Promise from './promise';  export default function polyfill() {   var local = void 0;    if (typeof global !== 'undefined') {     local = global;   } else if (typeof self !== 'undefined') {     local = self;   } else {     try {       local = Function('return this')();     } catch (e) {       throw new Error('polyfill failed because global object is unavailable in this environment');     }   }    var P = local.Promise;    if (P) {     var promiseToString = null;     try {       promiseToString = Object.prototype.toString.call(P.resolve());     } catch (e) {       // silently ignored     }      if (promiseToString === '[object Promise]' && !P.cast) {       return;     }   }    local.Promise = Promise; }","import Promise from './es6-promise/promise'; import polyfill from './es6-promise/polyfill';  // Strange compat.. Promise.polyfill = polyfill; Promise.Promise = Promise; export default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"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","file":"es6-promise.js"}
-------------------- SECTION 74 --------------------
 * Released under the MIT license
 * https://jquery.org/license
-------------------- SECTION 75 --------------------
 * @license Apache-2.0
-------------------- SECTION 76 --------------------
may be freely distributed under the MIT license.
-------------------- SECTION 77 --------------------
Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the 'Software'), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-------------------- SECTION 78 --------------------
Licensed under the Apache License, Version 2.0 (the "License"); you may not use

    this file except in compliance with the License. You may obtain a copy of the

    License at http://www.apache.org/licenses/LICENSE-2.0



    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED

    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,

    MERCHANTABLITY OR NON-INFRINGEMENT.



    See the Apache Version 2.0 License for specific language governing permissions

    and limitations under the License.
-------------------- SECTION 79 --------------------
MIT License, see [LICENSE](LICENSE) file.
-------------------- SECTION 80 --------------------
Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
//
//        http://www.apache.org/licenses/LICENSE-2.0
//
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//    See the License for the specific language governing permissions and
//    limitations under the License.
-------------------- SECTION 81 --------------------
BSD style license
-------------------- SECTION 82 --------------------
 * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory.
-------------------- SECTION 83 --------------------
License: MIT (
-------------------- SECTION 84 --------------------
Permission to use, copy, modify, and/or distribute this software for any

purpose with or without fee is hereby granted.



THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH

REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY

AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,

INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM

LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR

OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR

PERFORMANCE OF THIS SOFTWARE.
-------------------- SECTION 85 --------------------
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
-------------------- SECTION 86 --------------------
 *  Licensed under the MIT License. See License.txt in the project root for license information.
-------------------- SECTION 87 --------------------
## License

MIT (c) Paul Miller (<https://paulmillr.com>), see [LICENSE](LICENSE) file.
-------------------- SECTION 88 --------------------
This source code is licensed under the MIT license found in the
LICENSE file in the root directory of this source tree.
-------------------- SECTION 89 --------------------
 * Licensed under the Apache-2.0 License.
-------------------- SECTION 90 --------------------
license
  Apache License 2.0
-------------------- SECTION 91 --------------------
CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/).
-------------------- SECTION 92 --------------------
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
-------------------- SECTION 93 --------------------
Licensed under the MIT (
-------------------- SECTION 94 --------------------
the Apache License
-------------------- SECTION 95 --------------------
license":"BSD-2-Clause","
-------------------- SECTION 96 --------------------
## License(s)

### MIT
-------------------- SECTION 97 --------------------
// Copyright 2018 Google Inc. Use of this source code is governed by an
// MIT-style license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT.
-------------------- SECTION 98 --------------------
// Copyright 2019 Google Inc. Use of this source code is governed by an
// MIT-style license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT.
-------------------- SECTION 99 --------------------
// Copyright 2016 Google Inc. Use of this source code is governed by an
// MIT-style license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT.
-------------------- SECTION 100 --------------------
// Copyright 2017 Google Inc. Use of this source code is governed by an
// MIT-style license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT.
-------------------- SECTION 101 --------------------
// Copyright 2020 Google Inc. Use of this source code is governed by an
// MIT-style license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT.
-------------------- SECTION 102 --------------------
# Copyright 2016 Google Inc. Use of this source code is governed by an MIT-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/MIT.
-------------------- SECTION 103 --------------------
// Copyright 2019 Google LLC. Use of this source code is governed by an
// MIT-style license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT.
-------------------- SECTION 104 --------------------
// Copyright 2021 Google Inc. Use of this source code is governed by an
// MIT-style license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT.
-------------------- SECTION 105 --------------------
// Copyright 2021 Google LLC. Use of this source code is governed by an
// MIT-style license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT.
-------------------- SECTION 106 --------------------
# Use of this source code is governed by an MIT-style license that can be
# found in the LICENSE file at https://angular.io/license
-------------------- SECTION 107 --------------------
Copyrights licensed under the New BSD License.
* See the accompanying LICENSE file for terms.
-------------------- SECTION 108 --------------------
license":"MIT","
-------------------- SECTION 109 --------------------
        " * Use of this source code is governed by an MIT-style license that can be",
        " * found in the LICENSE file at https://angular.io/license",
-------------------- SECTION 110 --------------------
 * Both released under MIT license - © Zeno Rocha
-------------------- SECTION 111 --------------------
 * Taken from XRegExp, (c) 2007-2020 Steven Levithan under the MIT license
-------------------- SECTION 112 --------------------
Permission to use, copy, modify, and/or distribute this software for any

    purpose with or without fee is hereby granted.



    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH

    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY

    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,

    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM

    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR

    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR

    PERFORMANCE OF THIS SOFTWARE.
-------------------- SECTION 113 --------------------
http://www.opensource.org/licenses/mit-license.php>
-------------------- SECTION 114 --------------------
SPDX-License-Identifier: BSD-3-Clause
-------------------- SECTION 115 --------------------
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of the React source tree.
-------------------- SECTION 116 --------------------
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions are met:

  * Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
  * Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------- SECTION 117 --------------------
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
//   * Redistributions of source code must retain the above copyright
//   notice, this list of conditions and the following disclaimer.
//   * Redistributions in binary form must reproduce the above copyright
//   notice, this list of conditions and the following disclaimer in the
//   documentation and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------- SECTION 118 --------------------
Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */
-------------------- SECTION 119 --------------------
 * Dual licensed under the MIT (MIT-LICENSE.txt) and
 * GPL (GPL-LICENSE.txt) licenses.
-------------------- SECTION 120 --------------------
 * Available under the MIT license <https://github.com/bnjmnt4n/regjsgen/blob/master/LICENSE-MIT.txt>
-------------------- SECTION 121 --------------------
Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file.
-------------------- SECTION 122 --------------------
Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 *
 * 3. Neither the name of Salesforce.com nor the names of its contributors may
 * be used to endorse or promote products derived from this software without
 * specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
-------------------- SECTION 123 --------------------
 * Licensed under the New BSD license. See LICENSE.txt or:
-------------------- SECTION 124 --------------------
  // Comment below is used under the following license:
  /**
   * @license
   * Copyright (c) 2010-2012 Mikeal Rogers
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * http://www.apache.org/licenses/LICENSE-2.0
   * Unless required by applicable law or agreed to in writing,
   * software distributed under the License is distributed on an "AS
   * IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
   * express or implied. See the License for the specific language
   * governing permissions and limitations under the License.
-------------------- SECTION 125 --------------------
 ** Licensed under the MIT License (the "License");
 ** you may not use this file except in compliance with the License.
 ** You may obtain a copy of the License at
 **
 **     https://opensource.org/licenses/MIT
 **
 ** Unless required by applicable law or agreed to in writing, software
 ** distributed under the License is distributed on an "AS IS" BASIS,
 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 ** See the License for the specific language governing permissions and
 ** limitations under the License.
-------------------- SECTION 126 --------------------
     * Released under the MIT license
-------------------- SECTION 127 --------------------
  + '//  Ramda may be freely distributed under the MIT license. ';
-------------------- SECTION 128 --------------------
 * (c) 2010-2022 Google LLC. https://angular.io/
 * License: MIT
-------------------- SECTION 129 --------------------
See "LICENSE" for details.
-------------------- SECTION 130 --------------------
This software is covered under the following copyright:
-------------------- SECTION 131 --------------------
See "LICENSE" for details (
-------------------- SECTION 132 --------------------
 * This implementation is based on the public domain library 'jscrypto' which
-------------------- SECTION 133 --------------------
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
-------------------- SECTION 134 --------------------
This software is released under MIT license.
 * The full license information can be found in LICENSE in the root directory of this project.
-------------------- SECTION 135 --------------------
 * This software is released under MIT license.
 * The full license information can be found in LICENSE in the root directory of this project.
-------------------- SECTION 136 --------------------
Public domain.
//
// Implementation
-------------------- SECTION 137 --------------------
portions are under the following license:
-------------------- SECTION 138 --------------------
{"version":3,"file":"coercion.mjs","sources":["../../../../../../src/cdk/coercion/boolean-property.ts","../../../../../../src/cdk/coercion/number-property.ts","../../../../../../src/cdk/coercion/array.ts","../../../../../../src/cdk/coercion/css-pixel-value.ts","../../../../../../src/cdk/coercion/element.ts","../../../../../../src/cdk/coercion/string-array.ts","../../../../../../src/cdk/coercion/public-api.ts","../../../../../../src/cdk/coercion/index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Type describing the allowed values for a boolean input.  * @docs-private  */ export type BooleanInput = string | boolean | null | undefined;  /** Coerces a data-bound value (typically a string) to a boolean. */ export function coerceBooleanProperty(value: any): boolean {   return value != null && `${value}` !== 'false'; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Type describing the allowed values for a number input  * @docs-private  */ export type NumberInput = string | number | null | undefined;  /** Coerces a data-bound value (typically a string) to a number. */ export function coerceNumberProperty(value: any): number; export function coerceNumberProperty<D>(value: any, fallback: D): number | D; export function coerceNumberProperty(value: any, fallbackValue = 0) {   return _isNumberValue(value) ? Number(value) : fallbackValue; }  /**  * Whether the provided value is considered a number.  * @docs-private  */ export function _isNumberValue(value: any): boolean {   // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,   // and other non-number values as NaN, where Number just uses 0) but it considers the string   // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.   return !isNaN(parseFloat(value as any)) && !isNaN(Number(value)); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Wraps the provided value in an array, unless the provided value is an array. */ export function coerceArray<T>(value: T | T[]): T[]; export function coerceArray<T>(value: T | readonly T[]): readonly T[]; export function coerceArray<T>(value: T | T[]): T[] {   return Array.isArray(value) ? value : [value]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Coerces a value to a CSS pixel value. */ export function coerceCssPixelValue(value: any): string {   if (value == null) {     return '';   }    return typeof value === 'string' ? value : `${value}px`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ElementRef} from '@angular/core';  /**  * Coerces an ElementRef or an Element into an element.  * Useful for APIs that can accept either a ref or the native element itself.  */ export function coerceElement<T>(elementOrRef: ElementRef<T> | T): T {   return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Coerces a value to an array of trimmed non-empty strings.  * Any input that is not an array, `null` or `undefined` will be turned into a string  * via `toString()` and subsequently split with the given separator.  * `null` and `undefined` will result in an empty array.  * This results in the following outcomes:  * - `null` -&gt; `[]`  * - `[null]` -&gt; `[\"null\"]`  * - `[\"a\", \"b \", \" \"]` -&gt; `[\"a\", \"b\"]`  * - `[1, [2, 3]]` -&gt; `[\"1\", \"2,3\"]`  * - `[{ a: 0 }]` -&gt; `[\"[object Object]\"]`  * - `{ a: 0 }` -&gt; `[\"[object\", \"Object]\"]`  *  * Useful for defining CSS classes or table columns.  * @param value the value to coerce into an array of strings  * @param separator split-separator if value isn't an array  */ export function coerceStringArray(value: any, separator: string | RegExp = /\\s+/): string[] {   const result = [];    if (value != null) {     const sourceValues = Array.isArray(value) ? value : `${value}`.split(separator);     for (const sourceValue of sourceValues) {       const trimmedString = `${sourceValue}`.trim();       if (trimmedString) {         result.push(trimmedString);       }     }   }    return result; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './boolean-property'; export * from './number-property'; export * from './array'; export * from './css-pixel-value'; export * from './element'; export * from './string-array'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; "],"names":[],"mappings":";;AAAA;;;;;;AAMG;AAQH;AACM,SAAU,qBAAqB,CAAC,KAAU,EAAA;IAC9C,OAAO,KAAK,IAAI,IAAI,IAAI,GAAG,KAAK,CAAA,CAAE,KAAK,OAAO,CAAC;AACjD;;ACjBA;;;;;;AAMG;SAWa,oBAAoB,CAAC,KAAU,EAAE,aAAa,GAAG,CAAC,EAAA;AAChE,IAAA,OAAO,cAAc,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC;AAC/D,CAAC;AAED;;;AAGG;AACG,SAAU,cAAc,CAAC,KAAU,EAAA;;;;AAIvC,IAAA,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE;;AC9BA;;;;;;AAMG;AAKG,SAAU,WAAW,CAAI,KAAc,EAAA;AAC3C,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AAChD;;ACbA;;;;;;AAMG;AAEH;AACM,SAAU,mBAAmB,CAAC,KAAU,EAAA;IAC5C,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;AAED,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,CAAG,EAAA,KAAK,IAAI,CAAC;AAC1D;;ACfA;;;;;;AAMG;AAIH;;;AAGG;AACG,SAAU,aAAa,CAAI,YAA+B,EAAA;AAC9D,IAAA,OAAO,YAAY,YAAY,UAAU,GAAG,YAAY,CAAC,aAAa,GAAG,YAAY,CAAC;AACxF;;AChBA;;;;;;AAMG;AAEH;;;;;;;;;;;;;;;;AAgBG;SACa,iBAAiB,CAAC,KAAU,EAAE,YAA6B,KAAK,EAAA;IAC9E,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAA,EAAG,KAAK,CAAA,CAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAChF,QAAA,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;YACtC,MAAM,aAAa,GAAG,CAAG,EAAA,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;AAC9C,YAAA,IAAI,aAAa,EAAE;AACjB,gBAAA,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC5B,aAAA;AACF,SAAA;AACF,KAAA;AAED,IAAA,OAAO,MAAM,CAAC;AAChB;;ACvCA;;;;;;AAMG;;ACNH;;;;;;AAMG;;;;"}
-------------------- SECTION 139 --------------------
this is free and unencumbered software released into the public domain anyone is free to copy modify publish use compile sell or distribute this software either in source code form or as a compiled binary for any purpose commercial or non commercial and by any means in jurisdictions that recognize copyright laws the author or authors of this software dedicate any and all copyright interest in the software to the public domain we make this dedication for the benefit of the public at large and to the detriment of our heirs and successors we intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law the software is provided as is without warranty of any kind express or implied including but not limited to the warranties of merchantability fitness for a particular purpose and noninfringement in no event shall the authors be liable for any claim damages or other liability whether in an action of contract tort or otherwise arising from out of or in connection with the software or the use or other dealings in the software
-------------------- SECTION 140 --------------------
Licensed under the New BSD license.
-------------------- SECTION 141 --------------------
// Copyright 2022 Google Inc. Use of this source code is governed by an
// MIT-style license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT.
-------------------- SECTION 142 --------------------
const COPYRIGHT = `/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */`;
-------------------- SECTION 143 --------------------
License

Everything in this repo is BSD style license unless otherwise specified.

Copyright (c) 2015 The Polymer Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------- SECTION 144 --------------------
The << Software identified by reference to the Ecma Standard* ("Software)">>  is protected by copyright and is being
made available under the  "BSD License", included below. This Software may be subject to third party rights (rights
from parties other than Ecma International), including patent rights, and no licenses under such third party rights
are granted under this license even if the third party concerned is a member of Ecma International.  SEE THE ECMA
CODE OF CONDUCT IN PATENT MATTERS AVAILABLE AT http://www.ecma-international.org/memento/codeofconduct.htm FOR
INFORMATION REGARDING THE LICENSING OF PATENT CLAIMS THAT ARE REQUIRED TO IMPLEMENT ECMA INTERNATIONAL STANDARDS*.
-------------------- SECTION 145 --------------------
  /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
-------------------- SECTION 146 --------------------
// DefinitelyTyped license:
// ------
// MIT License
-------------------- SECTION 147 --------------------
Licensed under the [Apache License](
-------------------- SECTION 148 --------------------
 * Licensed under the ${ pkg.license } License.
-------------------- SECTION 149 --------------------
Use of this source code is governed by a BSD-style       // license that can be found in the LICENSE file.
-------------------- SECTION 150 --------------------
This software is released under MIT license.  * The full license information can be found in LICENSE in the root directory of this project.  */
-------------------- SECTION 151 --------------------
{"version":3,"file":"testing.mjs","sources":["../../../../../../packages/platform-browser-dynamic/testing/src/dom_test_component_renderer.ts","../../../../../../packages/platform-browser-dynamic/testing/src/platform_core_dynamic_testing.ts","../../../../../../packages/platform-browser-dynamic/testing/src/testing.ts","../../../../../../packages/platform-browser-dynamic/testing/public_api.ts","../../../../../../packages/platform-browser-dynamic/testing/index.ts","../../../../../../packages/platform-browser-dynamic/testing/testing.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT, ɵgetDOM as getDOM} from '@angular/common'; import {Inject, Injectable} from '@angular/core'; import {TestComponentRenderer} from '@angular/core/testing';  /**  * A DOM based implementation of the TestComponentRenderer.  */ @Injectable() export class DOMTestComponentRenderer extends TestComponentRenderer {   constructor(@Inject(DOCUMENT) private _doc: any) {     super();   }    override insertRootElement(rootElId: string) {     this.removeAllRootElements();     const rootElement = getDOM().getDefaultDocument().createElement('div');     rootElement.setAttribute('id', rootElId);     this._doc.body.appendChild(rootElement);   }    override removeAllRootElements() {     // TODO(juliemr): can/should this be optional?     const oldRoots = this._doc.querySelectorAll('[id^=root]');     for (let i = 0; i < oldRoots.length; i++) {       getDOM().remove(oldRoots[i]);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {createPlatformFactory, PlatformRef} from '@angular/core'; import {ɵplatformCoreDynamic as platformCoreDynamic} from '@angular/platform-browser-dynamic';  /**  * Platform for dynamic tests  *  * @publicApi  */ export const platformCoreDynamicTesting: (extraProviders?: any[]) => PlatformRef =     createPlatformFactory(         platformCoreDynamic,         'coreDynamicTesting',         [],     ); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {createPlatformFactory, NgModule, PlatformRef, StaticProvider} from '@angular/core'; import {TestComponentRenderer} from '@angular/core/testing'; import {ɵINTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS as INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS} from '@angular/platform-browser-dynamic'; import {BrowserTestingModule} from '@angular/platform-browser/testing';  import {DOMTestComponentRenderer} from './dom_test_component_renderer'; import {platformCoreDynamicTesting} from './platform_core_dynamic_testing';  export * from './private_export_testing';  /**  * @publicApi  */ export const platformBrowserDynamicTesting = createPlatformFactory(     platformCoreDynamicTesting, 'browserDynamicTesting',     INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS);  /**  * NgModule for testing.  *  * @publicApi  */ @NgModule({   exports: [BrowserTestingModule],   providers: [     {provide: TestComponentRenderer, useClass: DOMTestComponentRenderer},   ] }) export class BrowserDynamicTestingModule { } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/testing'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["getDOM","platformCoreDynamic","INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS"],"mappings":";;;;;;;;;;;;;AAYA;;AAEG;AAEG,MAAO,wBAAyB,SAAQ,qBAAqB,CAAA;AACjE,IAAA,WAAA,CAAsC,IAAS,EAAA;AAC7C,QAAA,KAAK,EAAE,CAAC;QAD4B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;KAE9C;AAEQ,IAAA,iBAAiB,CAAC,QAAgB,EAAA;QACzC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,QAAA,MAAM,WAAW,GAAGA,OAAM,EAAE,CAAC,kBAAkB,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACvE,QAAA,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;KACzC;IAEQ,qBAAqB,GAAA;;QAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AAC1D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxCA,OAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,SAAA;KACF;;AAlBU,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBACf,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oIADjB,wBAAwB,EAAA,CAAA,CAAA;sGAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;0BAEI,MAAM;2BAAC,QAAQ,CAAA;;;ACN9B;;;;AAIG;AACI,MAAM,0BAA0B,GACnC,qBAAqB,CACjBC,oBAAmB,EACnB,oBAAoB,EACpB,EAAE;;ACFV;;AAEG;AACI,MAAM,6BAA6B,GAAG,qBAAqB,CAC9D,0BAA0B,EAAE,uBAAuB,EACnDC,4CAA2C,EAAE;AAEjD;;;;AAIG;MAOU,2BAA2B,CAAA;;mIAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAL5B,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAKnB,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,EAJ3B,SAAA,EAAA;AACT,QAAA,EAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,wBAAwB,EAAC;AACrE,KAAA,EAAA,OAAA,EAAA,CAHS,oBAAoB,CAAA,EAAA,CAAA,CAAA;sGAKnB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAC/B,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,wBAAwB,EAAC;AACrE,qBAAA;AACF,iBAAA,CAAA;;;AC3BD;;;;AAIG;;ACJH;;ACRA;;AAEG;;;;"}
-------------------- SECTION 152 --------------------
{"version":3,"file":"testing.mjs","sources":["../../../../../../packages/platform-browser-dynamic/testing/src/dom_test_component_renderer.ts","../../../../../../packages/platform-browser-dynamic/testing/src/platform_core_dynamic_testing.ts","../../../../../../packages/platform-browser-dynamic/testing/src/testing.ts","../../../../../../packages/platform-browser-dynamic/testing/public_api.ts","../../../../../../packages/platform-browser-dynamic/testing/index.ts","../../../../../../packages/platform-browser-dynamic/testing/testing.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT, ɵgetDOM as getDOM} from '@angular/common'; import {Inject, Injectable} from '@angular/core'; import {TestComponentRenderer} from '@angular/core/testing';  /**  * A DOM based implementation of the TestComponentRenderer.  */ @Injectable() export class DOMTestComponentRenderer extends TestComponentRenderer {   constructor(@Inject(DOCUMENT) private _doc: any) {     super();   }    override insertRootElement(rootElId: string) {     this.removeAllRootElements();     const rootElement = getDOM().getDefaultDocument().createElement('div');     rootElement.setAttribute('id', rootElId);     this._doc.body.appendChild(rootElement);   }    override removeAllRootElements() {     // TODO(juliemr): can/should this be optional?     const oldRoots = this._doc.querySelectorAll('[id^=root]');     for (let i = 0; i < oldRoots.length; i++) {       getDOM().remove(oldRoots[i]);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {createPlatformFactory, PlatformRef} from '@angular/core'; import {ɵplatformCoreDynamic as platformCoreDynamic} from '@angular/platform-browser-dynamic';  /**  * Platform for dynamic tests  *  * @publicApi  */ export const platformCoreDynamicTesting: (extraProviders?: any[]) => PlatformRef =     createPlatformFactory(         platformCoreDynamic,         'coreDynamicTesting',         [],     ); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {createPlatformFactory, NgModule, PlatformRef, StaticProvider} from '@angular/core'; import {TestComponentRenderer} from '@angular/core/testing'; import {ɵINTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS as INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS} from '@angular/platform-browser-dynamic'; import {BrowserTestingModule} from '@angular/platform-browser/testing';  import {DOMTestComponentRenderer} from './dom_test_component_renderer'; import {platformCoreDynamicTesting} from './platform_core_dynamic_testing';  export * from './private_export_testing';  /**  * @publicApi  */ export const platformBrowserDynamicTesting = createPlatformFactory(     platformCoreDynamicTesting, 'browserDynamicTesting',     INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS);  /**  * NgModule for testing.  *  * @publicApi  */ @NgModule({   exports: [BrowserTestingModule],   providers: [     {provide: TestComponentRenderer, useClass: DOMTestComponentRenderer},   ] }) export class BrowserDynamicTestingModule { } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/testing'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["getDOM","platformCoreDynamic","INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS"],"mappings":";;;;;;;;;;;;;AAYA;;AAEG;AAEG,MAAO,wBAAyB,SAAQ,qBAAqB,CAAA;AACjE,IAAA,WAAA,CAAsC,IAAS,EAAA;AAC7C,QAAA,KAAK,EAAE,CAAC;AAD4B,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;KAE9C;AAEQ,IAAA,iBAAiB,CAAC,QAAgB,EAAA;QACzC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,QAAA,MAAM,WAAW,GAAGA,OAAM,EAAE,CAAC,kBAAkB,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACvE,QAAA,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;KACzC;IAEQ,qBAAqB,GAAA;;QAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AAC1D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxCA,OAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,SAAA;KACF;;AAlBU,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBACf,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oIADjB,wBAAwB,EAAA,CAAA,CAAA;sGAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;;8BAEI,MAAM;+BAAC,QAAQ,CAAA;;;;ACN9B;;;;AAIG;AACI,MAAM,0BAA0B,GACnC,qBAAqB,CACjBC,oBAAmB,EACnB,oBAAoB,EACpB,EAAE;;ACFV;;AAEG;AACI,MAAM,6BAA6B,GAAG,qBAAqB,CAC9D,0BAA0B,EAAE,uBAAuB,EACnDC,4CAA2C,EAAE;AAEjD;;;;AAIG;MAOU,2BAA2B,CAAA;;mIAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAL5B,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAKnB,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,EAJ3B,SAAA,EAAA;AACT,QAAA,EAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,wBAAwB,EAAC;AACrE,KAAA,EAAA,OAAA,EAAA,CAHS,oBAAoB,CAAA,EAAA,CAAA,CAAA;sGAKnB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAC/B,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,wBAAwB,EAAC;AACrE,qBAAA;iBACF,CAAA;;;AC3BD;;;;AAIG;;ACJH;;ACRA;;AAEG;;;;"}
-------------------- SECTION 153 --------------------
{"version":3,"file":"testing.mjs","sources":["../../../../../../packages/compiler/testing/src/testing.ts","../../../../../../packages/compiler/testing/public_api.ts","../../../../../../packages/compiler/testing/index.ts","../../../../../../packages/compiler/testing/testing.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all APIs of the compiler package.  *  * <div class=\"callout is-critical\">  *   <header>Unstable APIs</header>  *   <p>  *     All compiler apis are currently considered experimental and private!  *   </p>  *   <p>  *     We expect the APIs in this package to keep on changing. Do not rely on them.  *   </p>  * </div>  */  // TODO(alxhub): @angular/compiler/testing is unused in Ivy. A placeholder // is left here because the components repo still depends on this package // directly. It will be cleaned up at a later date. // // This export ensures this package is not empty. export const unusedExport = true; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /// <reference types=\"node\" />  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/testing';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":";;;;;;AAQA;;;;;;;;;;;;;;AAcG;AAEH;AACA;AACA;AACA;AACA;AACO,MAAM,YAAY,GAAG;;ACrB5B;AASA;;ACTA;;ACRA;;AAEG;;;;"}
-------------------- SECTION 154 --------------------
{"version":3,"file":"animations.mjs","sources":["../../../../../../packages/platform-browser/animations/src/animation_builder.ts","../../../../../../packages/platform-browser/animations/src/animation_renderer.ts","../../../../../../packages/platform-browser/animations/src/providers.ts","../../../../../../packages/platform-browser/animations/src/module.ts","../../../../../../packages/platform-browser/animations/src/animations.ts","../../../../../../packages/platform-browser/animations/public_api.ts","../../../../../../packages/platform-browser/animations/index.ts","../../../../../../packages/platform-browser/animations/animations.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationBuilder, AnimationFactory, AnimationMetadata, AnimationOptions, AnimationPlayer, sequence} from '@angular/animations'; import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, RendererFactory2, RendererType2, ViewEncapsulation} from '@angular/core';  import {AnimationRenderer} from './animation_renderer';  @Injectable() export class BrowserAnimationBuilder extends AnimationBuilder {   private _nextAnimationId = 0;   private _renderer: AnimationRenderer;    constructor(rootRenderer: RendererFactory2, @Inject(DOCUMENT) doc: any) {     super();     const typeData =         {id: '0', encapsulation: ViewEncapsulation.None, styles: [], data: {animation: []}} as         RendererType2;     this._renderer = rootRenderer.createRenderer(doc.body, typeData) as AnimationRenderer;   }    build(animation: AnimationMetadata|AnimationMetadata[]): AnimationFactory {     const id = this._nextAnimationId.toString();     this._nextAnimationId++;     const entry = Array.isArray(animation) ? sequence(animation) : animation;     issueAnimationCommand(this._renderer, null, id, 'register', [entry]);     return new BrowserAnimationFactory(id, this._renderer);   } }  export class BrowserAnimationFactory extends AnimationFactory {   constructor(private _id: string, private _renderer: AnimationRenderer) {     super();   }    create(element: any, options?: AnimationOptions): AnimationPlayer {     return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);   } }  export class RendererAnimationPlayer implements AnimationPlayer {   public parentPlayer: AnimationPlayer|null = null;   private _started = false;    constructor(       public id: string, public element: any, options: AnimationOptions,       private _renderer: AnimationRenderer) {     this._command('create', options);   }    private _listen(eventName: string, callback: (event: any) => any): () => void {     return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);   }    private _command(command: string, ...args: any[]) {     return issueAnimationCommand(this._renderer, this.element, this.id, command, args);   }    onDone(fn: () => void): void {     this._listen('done', fn);   }    onStart(fn: () => void): void {     this._listen('start', fn);   }    onDestroy(fn: () => void): void {     this._listen('destroy', fn);   }    init(): void {     this._command('init');   }    hasStarted(): boolean {     return this._started;   }    play(): void {     this._command('play');     this._started = true;   }    pause(): void {     this._command('pause');   }    restart(): void {     this._command('restart');   }    finish(): void {     this._command('finish');   }    destroy(): void {     this._command('destroy');   }    reset(): void {     this._command('reset');     this._started = false;   }    setPosition(p: number): void {     this._command('setPosition', p);   }    getPosition(): number {     return this._renderer.engine.players[+this.id]?.getPosition() ?? 0;   }    public totalTime = 0; }  function issueAnimationCommand(     renderer: AnimationRenderer, element: any, id: string, command: string, args: any[]): any {   return renderer.setProperty(element, `@@${id}:${command}`, args); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationTriggerMetadata} from '@angular/animations'; import {ɵAnimationEngine as AnimationEngine} from '@angular/animations/browser'; import {Injectable, NgZone, Renderer2, RendererFactory2, RendererStyleFlags2, RendererType2} from '@angular/core';  const ANIMATION_PREFIX = '@'; const DISABLE_ANIMATIONS_FLAG = '@.disabled';  // Define a recursive type to allow for nested arrays of `AnimationTriggerMetadata`. Note that an // interface declaration is used as TypeScript prior to 3.7 does not support recursive type // references, see https://github.com/microsoft/TypeScript/pull/33050 for details. type NestedAnimationTriggerMetadata = AnimationTriggerMetadata|RecursiveAnimationTriggerMetadata; interface RecursiveAnimationTriggerMetadata extends Array<NestedAnimationTriggerMetadata> {}  @Injectable() export class AnimationRendererFactory implements RendererFactory2 {   private _currentId: number = 0;   private _microtaskId: number = 1;   private _animationCallbacksBuffer: [(e: any) => any, any][] = [];   private _rendererCache = new Map<Renderer2, BaseAnimationRenderer>();   private _cdRecurDepth = 0;   private promise: Promise<any> = Promise.resolve(0);    constructor(       private delegate: RendererFactory2, private engine: AnimationEngine, private _zone: NgZone) {     engine.onRemovalComplete = (element: any, delegate: Renderer2) => {       // Note: if a component element has a leave animation, and a host leave animation,       // the view engine will call `removeChild` for the parent       // component renderer as well as for the child component renderer.       // Therefore, we need to check if we already removed the element.       const parentNode = delegate?.parentNode(element);       if (parentNode) {         delegate.removeChild(parentNode, element);       }     };   }    createRenderer(hostElement: any, type: RendererType2): Renderer2 {     const EMPTY_NAMESPACE_ID = '';      // cache the delegates to find out which cached delegate can     // be used by which cached renderer     const delegate = this.delegate.createRenderer(hostElement, type);     if (!hostElement || !type || !type.data || !type.data['animation']) {       let renderer: BaseAnimationRenderer|undefined = this._rendererCache.get(delegate);       if (!renderer) {         // Ensure that the renderer is removed from the cache on destroy         // since it may contain references to detached DOM nodes.         const onRendererDestroy = () => this._rendererCache.delete(delegate);         renderer =             new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine, onRendererDestroy);         // only cache this result when the base renderer is used         this._rendererCache.set(delegate, renderer);       }       return renderer;     }      const componentId = type.id;     const namespaceId = type.id + '-' + this._currentId;     this._currentId++;      this.engine.register(namespaceId, hostElement);      const registerTrigger = (trigger: NestedAnimationTriggerMetadata) => {       if (Array.isArray(trigger)) {         trigger.forEach(registerTrigger);       } else {         this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);       }     };     const animationTriggers = type.data['animation'] as NestedAnimationTriggerMetadata[];     animationTriggers.forEach(registerTrigger);      return new AnimationRenderer(this, namespaceId, delegate, this.engine);   }    begin() {     this._cdRecurDepth++;     if (this.delegate.begin) {       this.delegate.begin();     }   }    private _scheduleCountTask() {     // always use promise to schedule microtask instead of use Zone     this.promise.then(() => {       this._microtaskId++;     });   }    /** @internal */   scheduleListenerCallback(count: number, fn: (e: any) => any, data: any) {     if (count >= 0 && count < this._microtaskId) {       this._zone.run(() => fn(data));       return;     }      if (this._animationCallbacksBuffer.length == 0) {       Promise.resolve(null).then(() => {         this._zone.run(() => {           this._animationCallbacksBuffer.forEach(tuple => {             const [fn, data] = tuple;             fn(data);           });           this._animationCallbacksBuffer = [];         });       });     }      this._animationCallbacksBuffer.push([fn, data]);   }    end() {     this._cdRecurDepth--;      // this is to prevent animations from running twice when an inner     // component does CD when a parent component instead has inserted it     if (this._cdRecurDepth == 0) {       this._zone.runOutsideAngular(() => {         this._scheduleCountTask();         this.engine.flush(this._microtaskId);       });     }     if (this.delegate.end) {       this.delegate.end();     }   }    whenRenderingDone(): Promise<any> {     return this.engine.whenRenderingDone();   } }  export class BaseAnimationRenderer implements Renderer2 {   constructor(       protected namespaceId: string, public delegate: Renderer2, public engine: AnimationEngine,       private _onDestroy?: () => void) {     this.destroyNode = this.delegate.destroyNode ? (n) => delegate.destroyNode!(n) : null;   }    get data() {     return this.delegate.data;   }    destroyNode: ((n: any) => void)|null;    destroy(): void {     this.engine.destroy(this.namespaceId, this.delegate);     this.delegate.destroy();     this._onDestroy?.();   }    createElement(name: string, namespace?: string|null|undefined) {     return this.delegate.createElement(name, namespace);   }    createComment(value: string) {     return this.delegate.createComment(value);   }    createText(value: string) {     return this.delegate.createText(value);   }    appendChild(parent: any, newChild: any): void {     this.delegate.appendChild(parent, newChild);     this.engine.onInsert(this.namespaceId, newChild, parent, false);   }    insertBefore(parent: any, newChild: any, refChild: any, isMove: boolean = true): void {     this.delegate.insertBefore(parent, newChild, refChild);     // If `isMove` true than we should animate this insert.     this.engine.onInsert(this.namespaceId, newChild, parent, isMove);   }    removeChild(parent: any, oldChild: any, isHostElement: boolean): void {     this.engine.onRemove(this.namespaceId, oldChild, this.delegate, isHostElement);   }    selectRootElement(selectorOrNode: any, preserveContent?: boolean) {     return this.delegate.selectRootElement(selectorOrNode, preserveContent);   }    parentNode(node: any) {     return this.delegate.parentNode(node);   }    nextSibling(node: any) {     return this.delegate.nextSibling(node);   }    setAttribute(el: any, name: string, value: string, namespace?: string|null|undefined): void {     this.delegate.setAttribute(el, name, value, namespace);   }    removeAttribute(el: any, name: string, namespace?: string|null|undefined): void {     this.delegate.removeAttribute(el, name, namespace);   }    addClass(el: any, name: string): void {     this.delegate.addClass(el, name);   }    removeClass(el: any, name: string): void {     this.delegate.removeClass(el, name);   }    setStyle(el: any, style: string, value: any, flags?: RendererStyleFlags2|undefined): void {     this.delegate.setStyle(el, style, value, flags);   }    removeStyle(el: any, style: string, flags?: RendererStyleFlags2|undefined): void {     this.delegate.removeStyle(el, style, flags);   }    setProperty(el: any, name: string, value: any): void {     if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {       this.disableAnimations(el, !!value);     } else {       this.delegate.setProperty(el, name, value);     }   }    setValue(node: any, value: string): void {     this.delegate.setValue(node, value);   }    listen(target: any, eventName: string, callback: (event: any) => boolean | void): () => void {     return this.delegate.listen(target, eventName, callback);   }    protected disableAnimations(element: any, value: boolean) {     this.engine.disableAnimations(element, value);   } }  export class AnimationRenderer extends BaseAnimationRenderer implements Renderer2 {   constructor(       public factory: AnimationRendererFactory, namespaceId: string, delegate: Renderer2,       engine: AnimationEngine, onDestroy?: () => void) {     super(namespaceId, delegate, engine, onDestroy);     this.namespaceId = namespaceId;   }    override setProperty(el: any, name: string, value: any): void {     if (name.charAt(0) == ANIMATION_PREFIX) {       if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {         value = value === undefined ? true : !!value;         this.disableAnimations(el, value as boolean);       } else {         this.engine.process(this.namespaceId, el, name.slice(1), value);       }     } else {       this.delegate.setProperty(el, name, value);     }   }    override listen(       target: 'window'|'document'|'body'|any, eventName: string,       callback: (event: any) => any): () => void {     if (eventName.charAt(0) == ANIMATION_PREFIX) {       const element = resolveElementFromTarget(target);       let name = eventName.slice(1);       let phase = '';       // @listener.phase is for trigger animation callbacks       // @@listener is for animation builder callbacks       if (name.charAt(0) != ANIMATION_PREFIX) {         [name, phase] = parseTriggerCallbackName(name);       }       return this.engine.listen(this.namespaceId, element, name, phase, event => {         const countId = (event as any)['_data'] || -1;         this.factory.scheduleListenerCallback(countId, callback, event);       });     }     return this.delegate.listen(target, eventName, callback);   } }  function resolveElementFromTarget(target: 'window'|'document'|'body'|any): any {   switch (target) {     case 'body':       return document.body;     case 'document':       return document;     case 'window':       return window;     default:       return target;   } }  function parseTriggerCallbackName(triggerName: string) {   const dotIndex = triggerName.indexOf('.');   const trigger = triggerName.substring(0, dotIndex);   const phase = triggerName.slice(dotIndex + 1);   return [trigger, phase]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AnimationBuilder} from '@angular/animations'; import {AnimationDriver, ɵAnimationEngine as AnimationEngine, ɵAnimationStyleNormalizer as AnimationStyleNormalizer, ɵNoopAnimationDriver as NoopAnimationDriver, ɵWebAnimationsDriver as WebAnimationsDriver, ɵWebAnimationsStyleNormalizer as WebAnimationsStyleNormalizer} from '@angular/animations/browser'; import {DOCUMENT} from '@angular/common'; import {ANIMATION_MODULE_TYPE, ApplicationRef, Inject, Injectable, NgZone, OnDestroy, Provider, RendererFactory2} from '@angular/core'; import {ɵDomRendererFactory2 as DomRendererFactory2} from '@angular/platform-browser';  import {BrowserAnimationBuilder} from './animation_builder'; import {AnimationRendererFactory} from './animation_renderer';  @Injectable() export class InjectableAnimationEngine extends AnimationEngine implements OnDestroy {   // The `ApplicationRef` is injected here explicitly to force the dependency ordering.   // Since the `ApplicationRef` should be created earlier before the `AnimationEngine`, they   // both have `ngOnDestroy` hooks and `flush()` must be called after all views are destroyed.   constructor(       @Inject(DOCUMENT) doc: any, driver: AnimationDriver, normalizer: AnimationStyleNormalizer,       appRef: ApplicationRef) {     super(doc.body, driver, normalizer);   }    ngOnDestroy(): void {     this.flush();   } }  export function instantiateDefaultStyleNormalizer() {   return new WebAnimationsStyleNormalizer(); }  export function instantiateRendererFactory(     renderer: DomRendererFactory2, engine: AnimationEngine, zone: NgZone) {   return new AnimationRendererFactory(renderer, engine, zone); }  const SHARED_ANIMATION_PROVIDERS: Provider[] = [   {provide: AnimationBuilder, useClass: BrowserAnimationBuilder},   {provide: AnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer},   {provide: AnimationEngine, useClass: InjectableAnimationEngine}, {     provide: RendererFactory2,     useFactory: instantiateRendererFactory,     deps: [DomRendererFactory2, AnimationEngine, NgZone]   } ];  /**  * Separate providers from the actual module so that we can do a local modification in Google3 to  * include them in the BrowserModule.  */ export const BROWSER_ANIMATIONS_PROVIDERS: Provider[] = [   {provide: AnimationDriver, useFactory: () => new WebAnimationsDriver()},   {provide: ANIMATION_MODULE_TYPE, useValue: 'BrowserAnimations'}, ...SHARED_ANIMATION_PROVIDERS ];  /**  * Separate providers from the actual module so that we can do a local modification in Google3 to  * include them in the BrowserTestingModule.  */ export const BROWSER_NOOP_ANIMATIONS_PROVIDERS: Provider[] = [   {provide: AnimationDriver, useClass: NoopAnimationDriver},   {provide: ANIMATION_MODULE_TYPE, useValue: 'NoopAnimations'}, ...SHARED_ANIMATION_PROVIDERS ]; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {ModuleWithProviders, NgModule, Provider} from '@angular/core'; import {BrowserModule} from '@angular/platform-browser';  import {BROWSER_ANIMATIONS_PROVIDERS, BROWSER_NOOP_ANIMATIONS_PROVIDERS} from './providers';  /**  * Object used to configure the behavior of {@link BrowserAnimationsModule}  * @publicApi  */ export interface BrowserAnimationsModuleConfig {   /**    *  Whether animations should be disabled. Passing this is identical to providing the    * `NoopAnimationsModule`, but it can be controlled based on a runtime value.    */   disableAnimations?: boolean; }  /**  * Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)  * for use with animations. See [Animations](guide/animations).  * @publicApi  */ @NgModule({   exports: [BrowserModule],   providers: BROWSER_ANIMATIONS_PROVIDERS, }) export class BrowserAnimationsModule {   /**    * Configures the module based on the specified object.    *    * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.    * @see `BrowserAnimationsModuleConfig`    *    * @usageNotes    * When registering the `BrowserAnimationsModule`, you can use the `withConfig`    * function as follows:    * ```    * @NgModule({    *   imports: [BrowserAnimationsModule.withConfig(config)]    * })    * class MyNgModule {}    * ```    */   static withConfig(config: BrowserAnimationsModuleConfig):       ModuleWithProviders<BrowserAnimationsModule> {     return {       ngModule: BrowserAnimationsModule,       providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS :                                             BROWSER_ANIMATIONS_PROVIDERS     };   } }  /**  * Returns the set of [dependency-injection providers](guide/glossary#provider)  * to enable animations in an application. See [animations guide](guide/animations)  * to learn more about animations in Angular.  *  * @usageNotes  *  * The function is useful when you want to enable animations in an application  * bootstrapped using the `bootstrapApplication` function. In this scenario there  * is no need to import the `BrowserAnimationsModule` NgModule at all, just add  * providers returned by this function to the `providers` list as show below.  *  * ```typescript  * bootstrapApplication(RootComponent, {  *   providers: [  *     provideAnimations()  *   ]  * });  * ```  *  * @publicApi  */ export function provideAnimations(): Provider[] {   // Return a copy to prevent changes to the original array in case any in-place   // alterations are performed to the `provideAnimations` call results in app code.   return [...BROWSER_ANIMATIONS_PROVIDERS]; }  /**  * A null player that must be imported to allow disabling of animations.  * @publicApi  */ @NgModule({   exports: [BrowserModule],   providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, }) export class NoopAnimationsModule { }  /**  * Returns the set of [dependency-injection providers](guide/glossary#provider)  * to disable animations in an application. See [animations guide](guide/animations)  * to learn more about animations in Angular.  *  * @usageNotes  *  * The function is useful when you want to bootstrap an application using  * the `bootstrapApplication` function, but you need to disable animations  * (for example, when running tests).  *  * ```typescript  * bootstrapApplication(RootComponent, {  *   providers: [  *     provideNoopAnimations()  *   ]  * });  * ```  *  * @publicApi  */ export function provideNoopAnimations(): Provider[] {   // Return a copy to prevent changes to the original array in case any in-place   // alterations are performed to the `provideNoopAnimations` call results in app code.   return [...BROWSER_NOOP_ANIMATIONS_PROVIDERS]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all animation APIs of the animation browser package.  */ export {ANIMATION_MODULE_TYPE} from '@angular/core'; export {BrowserAnimationsModule, BrowserAnimationsModuleConfig, NoopAnimationsModule, provideAnimations, provideNoopAnimations} from './module';  export * from './private_export'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/animations'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["AnimationEngine","WebAnimationsStyleNormalizer","AnimationStyleNormalizer","DomRendererFactory2","WebAnimationsDriver","NoopAnimationDriver"],"mappings":"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"}
-------------------- SECTION 155 --------------------
{"version":3,"file":"testing.mjs","sources":["../../../../../../packages/platform-browser/testing/src/browser_util.ts","../../../../../../packages/platform-browser/testing/src/mock_platform_location_flag.ts","../../../../../../packages/platform-browser/testing/src/browser.ts","../../../../../../packages/platform-browser/testing/src/testing.ts","../../../../../../packages/platform-browser/testing/public_api.ts","../../../../../../packages/platform-browser/testing/index.ts","../../../../../../packages/platform-browser/testing/testing.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵgetDOM as getDOM} from '@angular/common'; import {NgZone, ɵglobal as global} from '@angular/core';  export class BrowserDetection {   private _overrideUa: string|null;   private get _ua(): string {     if (typeof this._overrideUa === 'string') {       return this._overrideUa;     }      return getDOM() ? getDOM().getUserAgent() : '';   }    static setup() {     return new BrowserDetection(null);   }    constructor(ua: string|null) {     this._overrideUa = ua;   }    get isFirefox(): boolean {     return this._ua.indexOf('Firefox') > -1;   }    get isAndroid(): boolean {     return this._ua.indexOf('Mozilla/5.0') > -1 && this._ua.indexOf('Android') > -1 &&         this._ua.indexOf('AppleWebKit') > -1 && this._ua.indexOf('Chrome') == -1 &&         this._ua.indexOf('IEMobile') == -1;   }    get isEdge(): boolean {     return this._ua.indexOf('Edge') > -1;   }    get isWebkit(): boolean {     return this._ua.indexOf('AppleWebKit') > -1 && this._ua.indexOf('Edge') == -1 &&         this._ua.indexOf('IEMobile') == -1;   }    get isIOS7(): boolean {     return (this._ua.indexOf('iPhone OS 7') > -1 || this._ua.indexOf('iPad OS 7') > -1) &&         this._ua.indexOf('IEMobile') == -1;   }    get isSlow(): boolean {     return this.isAndroid || this.isIOS7;   }    get isChromeDesktop(): boolean {     return this._ua.indexOf('Chrome') > -1 && this._ua.indexOf('Mobile Safari') == -1 &&         this._ua.indexOf('Edge') == -1;   }    // \"Old Chrome\" means Chrome 3X, where there are some discrepancies in the Intl API.   // Android 4.4 and 5.X have such browsers by default (respectively 30 and 39).   get isOldChrome(): boolean {     return this._ua.indexOf('Chrome') > -1 && this._ua.indexOf('Chrome/3') > -1 &&         this._ua.indexOf('Edge') == -1;   }    get supportsShadowDom() {     const testEl = document.createElement('div');     return (typeof testEl.attachShadow !== 'undefined');   } }  export const browserDetection: BrowserDetection = BrowserDetection.setup();  export function dispatchEvent(element: any, eventType: any): Event {   const evt: Event = getDOM().getDefaultDocument().createEvent('Event');   evt.initEvent(eventType, true, true);   getDOM().dispatchEvent(element, evt);   return evt; }  export function createMouseEvent(eventType: string): MouseEvent {   const evt: MouseEvent = getDOM().getDefaultDocument().createEvent('MouseEvent');   evt.initEvent(eventType, true, true);   return evt; }  export function el(html: string): HTMLElement {   return <HTMLElement>getContent(createTemplate(html)).firstChild; }  function getAttributeMap(element: any): Map<string, string> {   const res = new Map<string, string>();   const elAttrs = element.attributes;   for (let i = 0; i < elAttrs.length; i++) {     const attrib = elAttrs.item(i);     res.set(attrib.name, attrib.value);   }   return res; }  const _selfClosingTags = ['br', 'hr', 'input']; export function stringifyElement(el: any /** TODO #9100 */): string {   let result = '';   if (getDOM().isElementNode(el)) {     const tagName = el.tagName.toLowerCase();      // Opening tag     result += `<${tagName}`;      // Attributes in an ordered way     const attributeMap = getAttributeMap(el);     const sortedKeys = Array.from(attributeMap.keys()).sort();     for (const key of sortedKeys) {       const lowerCaseKey = key.toLowerCase();       let attValue = attributeMap.get(key);        if (typeof attValue !== 'string') {         result += ` ${lowerCaseKey}`;       } else {         // Browsers order style rules differently. Order them alphabetically for consistency.         if (lowerCaseKey === 'style') {           attValue = attValue.split(/; ?/).filter(s => !!s).sort().map(s => `${s};`).join(' ');         }          result += ` ${lowerCaseKey}=\"${attValue}\"`;       }     }     result += '>';      // Children     const childrenRoot = templateAwareRoot(el);     const children = childrenRoot ? childrenRoot.childNodes : [];     for (let j = 0; j < children.length; j++) {       result += stringifyElement(children[j]);     }      // Closing tag     if (_selfClosingTags.indexOf(tagName) == -1) {       result += `</${tagName}>`;     }   } else if (isCommentNode(el)) {     result += `<!--${el.nodeValue}-->`;   } else {     result += el.textContent;   }    return result; }  export function createNgZone(): NgZone {   return new NgZone({enableLongStackTrace: true, shouldCoalesceEventChangeDetection: false}); }  export function isCommentNode(node: Node): boolean {   return node.nodeType === Node.COMMENT_NODE; }  export function isTextNode(node: Node): boolean {   return node.nodeType === Node.TEXT_NODE; }  export function getContent(node: Node): Node {   if ('content' in node) {     return (<any>node).content;   } else {     return node;   } }  export function templateAwareRoot(el: Node): any {   return getDOM().isElementNode(el) && el.nodeName === 'TEMPLATE' ? getContent(el) : el; }  export function setCookie(name: string, value: string) {   // document.cookie is magical, assigning into it assigns/overrides one cookie value, but does   // not clear other cookies.   document.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value); }  export function hasStyle(element: any, styleName: string, styleValue?: string|null): boolean {   const value = element.style[styleName] || '';   return styleValue ? value == styleValue : value.length > 0; }  export function hasClass(element: any, className: string): boolean {   return element.classList.contains(className); }  export function sortedClassList(element: any): any[] {   return Array.prototype.slice.call(element.classList, 0).sort(); }  export function createTemplate(html: any): HTMLElement {   const t = getDOM().getDefaultDocument().createElement('template');   t.innerHTML = html;   return t; }  export function childNodesAsList(el: Node): any[] {   const childNodes = el.childNodes;   const res = [];   for (let i = 0; i < childNodes.length; i++) {     res[i] = childNodes[i];   }   return res; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Controls whether the `MockPlatformLocation` class should be used  * as the `PlatformLocation` implementation when the `BrowserTestingModule`  * is imported.  *  * In v16, the value of this flag will be switched to `true` to enable  * the `MockPlatformLocation` by default.  */ export const ENABLE_MOCK_PLATFORM_LOCATION = false; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {PlatformLocation} from '@angular/common'; import {MockPlatformLocation} from '@angular/common/testing'; import {APP_ID, createPlatformFactory, NgModule, NgZone, PLATFORM_INITIALIZER, platformCore, StaticProvider} from '@angular/core'; import {BrowserModule, ɵBrowserDomAdapter as BrowserDomAdapter} from '@angular/platform-browser';  import {BrowserDetection, createNgZone} from './browser_util'; import {ENABLE_MOCK_PLATFORM_LOCATION} from './mock_platform_location_flag';  function initBrowserTests() {   BrowserDomAdapter.makeCurrent();   BrowserDetection.setup(); }  const _TEST_BROWSER_PLATFORM_PROVIDERS: StaticProvider[] =     [{provide: PLATFORM_INITIALIZER, useValue: initBrowserTests, multi: true}];  /**  * Platform for testing  *  * @publicApi  */ export const platformBrowserTesting =     createPlatformFactory(platformCore, 'browserTesting', _TEST_BROWSER_PLATFORM_PROVIDERS);  /**  * NgModule for testing.  *  * @publicApi  */ @NgModule({   exports: [BrowserModule],   providers: [     {provide: APP_ID, useValue: 'a'},     {provide: NgZone, useFactory: createNgZone},     (ENABLE_MOCK_PLATFORM_LOCATION ? [{provide: PlatformLocation, useClass: MockPlatformLocation}] :                                      []),   ] }) export class BrowserTestingModule { } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the platform-browser/testing package.  */ export * from './browser'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /// <reference types=\"jasmine\" />  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/testing'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["getDOM","BrowserDomAdapter"],"mappings":"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"}
-------------------- SECTION 156 --------------------
{"version":3,"file":"animations.mjs","sources":["../../../../../../packages/platform-browser/animations/src/animation_builder.ts","../../../../../../packages/platform-browser/animations/src/animation_renderer.ts","../../../../../../packages/platform-browser/animations/src/providers.ts","../../../../../../packages/platform-browser/animations/src/module.ts","../../../../../../packages/platform-browser/animations/src/animations.ts","../../../../../../packages/platform-browser/animations/public_api.ts","../../../../../../packages/platform-browser/animations/index.ts","../../../../../../packages/platform-browser/animations/animations.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationBuilder, AnimationFactory, AnimationMetadata, AnimationOptions, AnimationPlayer, sequence} from '@angular/animations'; import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, RendererFactory2, RendererType2, ViewEncapsulation} from '@angular/core';  import {AnimationRenderer} from './animation_renderer';  @Injectable() export class BrowserAnimationBuilder extends AnimationBuilder {   private _nextAnimationId = 0;   private _renderer: AnimationRenderer;    constructor(rootRenderer: RendererFactory2, @Inject(DOCUMENT) doc: any) {     super();     const typeData =         {id: '0', encapsulation: ViewEncapsulation.None, styles: [], data: {animation: []}} as         RendererType2;     this._renderer = rootRenderer.createRenderer(doc.body, typeData) as AnimationRenderer;   }    build(animation: AnimationMetadata|AnimationMetadata[]): AnimationFactory {     const id = this._nextAnimationId.toString();     this._nextAnimationId++;     const entry = Array.isArray(animation) ? sequence(animation) : animation;     issueAnimationCommand(this._renderer, null, id, 'register', [entry]);     return new BrowserAnimationFactory(id, this._renderer);   } }  export class BrowserAnimationFactory extends AnimationFactory {   constructor(private _id: string, private _renderer: AnimationRenderer) {     super();   }    create(element: any, options?: AnimationOptions): AnimationPlayer {     return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);   } }  export class RendererAnimationPlayer implements AnimationPlayer {   public parentPlayer: AnimationPlayer|null = null;   private _started = false;    constructor(       public id: string, public element: any, options: AnimationOptions,       private _renderer: AnimationRenderer) {     this._command('create', options);   }    private _listen(eventName: string, callback: (event: any) => any): () => void {     return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);   }    private _command(command: string, ...args: any[]) {     return issueAnimationCommand(this._renderer, this.element, this.id, command, args);   }    onDone(fn: () => void): void {     this._listen('done', fn);   }    onStart(fn: () => void): void {     this._listen('start', fn);   }    onDestroy(fn: () => void): void {     this._listen('destroy', fn);   }    init(): void {     this._command('init');   }    hasStarted(): boolean {     return this._started;   }    play(): void {     this._command('play');     this._started = true;   }    pause(): void {     this._command('pause');   }    restart(): void {     this._command('restart');   }    finish(): void {     this._command('finish');   }    destroy(): void {     this._command('destroy');   }    reset(): void {     this._command('reset');     this._started = false;   }    setPosition(p: number): void {     this._command('setPosition', p);   }    getPosition(): number {     return this._renderer.engine.players[+this.id]?.getPosition() ?? 0;   }    public totalTime = 0; }  function issueAnimationCommand(     renderer: AnimationRenderer, element: any, id: string, command: string, args: any[]): any {   return renderer.setProperty(element, `@@${id}:${command}`, args); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationTriggerMetadata} from '@angular/animations'; import {ɵAnimationEngine as AnimationEngine} from '@angular/animations/browser'; import {Injectable, NgZone, Renderer2, RendererFactory2, RendererStyleFlags2, RendererType2} from '@angular/core';  const ANIMATION_PREFIX = '@'; const DISABLE_ANIMATIONS_FLAG = '@.disabled';  // Define a recursive type to allow for nested arrays of `AnimationTriggerMetadata`. Note that an // interface declaration is used as TypeScript prior to 3.7 does not support recursive type // references, see https://github.com/microsoft/TypeScript/pull/33050 for details. type NestedAnimationTriggerMetadata = AnimationTriggerMetadata|RecursiveAnimationTriggerMetadata; interface RecursiveAnimationTriggerMetadata extends Array<NestedAnimationTriggerMetadata> {}  @Injectable() export class AnimationRendererFactory implements RendererFactory2 {   private _currentId: number = 0;   private _microtaskId: number = 1;   private _animationCallbacksBuffer: [(e: any) => any, any][] = [];   private _rendererCache = new Map<Renderer2, BaseAnimationRenderer>();   private _cdRecurDepth = 0;   private promise: Promise<any> = Promise.resolve(0);    constructor(       private delegate: RendererFactory2, private engine: AnimationEngine, private _zone: NgZone) {     engine.onRemovalComplete = (element: any, delegate: Renderer2) => {       // Note: if a component element has a leave animation, and a host leave animation,       // the view engine will call `removeChild` for the parent       // component renderer as well as for the child component renderer.       // Therefore, we need to check if we already removed the element.       const parentNode = delegate?.parentNode(element);       if (parentNode) {         delegate.removeChild(parentNode, element);       }     };   }    createRenderer(hostElement: any, type: RendererType2): Renderer2 {     const EMPTY_NAMESPACE_ID = '';      // cache the delegates to find out which cached delegate can     // be used by which cached renderer     const delegate = this.delegate.createRenderer(hostElement, type);     if (!hostElement || !type || !type.data || !type.data['animation']) {       let renderer: BaseAnimationRenderer|undefined = this._rendererCache.get(delegate);       if (!renderer) {         // Ensure that the renderer is removed from the cache on destroy         // since it may contain references to detached DOM nodes.         const onRendererDestroy = () => this._rendererCache.delete(delegate);         renderer =             new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine, onRendererDestroy);         // only cache this result when the base renderer is used         this._rendererCache.set(delegate, renderer);       }       return renderer;     }      const componentId = type.id;     const namespaceId = type.id + '-' + this._currentId;     this._currentId++;      this.engine.register(namespaceId, hostElement);      const registerTrigger = (trigger: NestedAnimationTriggerMetadata) => {       if (Array.isArray(trigger)) {         trigger.forEach(registerTrigger);       } else {         this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);       }     };     const animationTriggers = type.data['animation'] as NestedAnimationTriggerMetadata[];     animationTriggers.forEach(registerTrigger);      return new AnimationRenderer(this, namespaceId, delegate, this.engine);   }    begin() {     this._cdRecurDepth++;     if (this.delegate.begin) {       this.delegate.begin();     }   }    private _scheduleCountTask() {     // always use promise to schedule microtask instead of use Zone     this.promise.then(() => {       this._microtaskId++;     });   }    /** @internal */   scheduleListenerCallback(count: number, fn: (e: any) => any, data: any) {     if (count >= 0 && count < this._microtaskId) {       this._zone.run(() => fn(data));       return;     }      if (this._animationCallbacksBuffer.length == 0) {       Promise.resolve(null).then(() => {         this._zone.run(() => {           this._animationCallbacksBuffer.forEach(tuple => {             const [fn, data] = tuple;             fn(data);           });           this._animationCallbacksBuffer = [];         });       });     }      this._animationCallbacksBuffer.push([fn, data]);   }    end() {     this._cdRecurDepth--;      // this is to prevent animations from running twice when an inner     // component does CD when a parent component instead has inserted it     if (this._cdRecurDepth == 0) {       this._zone.runOutsideAngular(() => {         this._scheduleCountTask();         this.engine.flush(this._microtaskId);       });     }     if (this.delegate.end) {       this.delegate.end();     }   }    whenRenderingDone(): Promise<any> {     return this.engine.whenRenderingDone();   } }  export class BaseAnimationRenderer implements Renderer2 {   constructor(       protected namespaceId: string, public delegate: Renderer2, public engine: AnimationEngine,       private _onDestroy?: () => void) {     this.destroyNode = this.delegate.destroyNode ? (n) => delegate.destroyNode!(n) : null;   }    get data() {     return this.delegate.data;   }    destroyNode: ((n: any) => void)|null;    destroy(): void {     this.engine.destroy(this.namespaceId, this.delegate);     this.delegate.destroy();     this._onDestroy?.();   }    createElement(name: string, namespace?: string|null|undefined) {     return this.delegate.createElement(name, namespace);   }    createComment(value: string) {     return this.delegate.createComment(value);   }    createText(value: string) {     return this.delegate.createText(value);   }    appendChild(parent: any, newChild: any): void {     this.delegate.appendChild(parent, newChild);     this.engine.onInsert(this.namespaceId, newChild, parent, false);   }    insertBefore(parent: any, newChild: any, refChild: any, isMove: boolean = true): void {     this.delegate.insertBefore(parent, newChild, refChild);     // If `isMove` true than we should animate this insert.     this.engine.onInsert(this.namespaceId, newChild, parent, isMove);   }    removeChild(parent: any, oldChild: any, isHostElement: boolean): void {     this.engine.onRemove(this.namespaceId, oldChild, this.delegate, isHostElement);   }    selectRootElement(selectorOrNode: any, preserveContent?: boolean) {     return this.delegate.selectRootElement(selectorOrNode, preserveContent);   }    parentNode(node: any) {     return this.delegate.parentNode(node);   }    nextSibling(node: any) {     return this.delegate.nextSibling(node);   }    setAttribute(el: any, name: string, value: string, namespace?: string|null|undefined): void {     this.delegate.setAttribute(el, name, value, namespace);   }    removeAttribute(el: any, name: string, namespace?: string|null|undefined): void {     this.delegate.removeAttribute(el, name, namespace);   }    addClass(el: any, name: string): void {     this.delegate.addClass(el, name);   }    removeClass(el: any, name: string): void {     this.delegate.removeClass(el, name);   }    setStyle(el: any, style: string, value: any, flags?: RendererStyleFlags2|undefined): void {     this.delegate.setStyle(el, style, value, flags);   }    removeStyle(el: any, style: string, flags?: RendererStyleFlags2|undefined): void {     this.delegate.removeStyle(el, style, flags);   }    setProperty(el: any, name: string, value: any): void {     if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {       this.disableAnimations(el, !!value);     } else {       this.delegate.setProperty(el, name, value);     }   }    setValue(node: any, value: string): void {     this.delegate.setValue(node, value);   }    listen(target: any, eventName: string, callback: (event: any) => boolean | void): () => void {     return this.delegate.listen(target, eventName, callback);   }    protected disableAnimations(element: any, value: boolean) {     this.engine.disableAnimations(element, value);   } }  export class AnimationRenderer extends BaseAnimationRenderer implements Renderer2 {   constructor(       public factory: AnimationRendererFactory, namespaceId: string, delegate: Renderer2,       engine: AnimationEngine, onDestroy?: () => void) {     super(namespaceId, delegate, engine, onDestroy);     this.namespaceId = namespaceId;   }    override setProperty(el: any, name: string, value: any): void {     if (name.charAt(0) == ANIMATION_PREFIX) {       if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {         value = value === undefined ? true : !!value;         this.disableAnimations(el, value as boolean);       } else {         this.engine.process(this.namespaceId, el, name.slice(1), value);       }     } else {       this.delegate.setProperty(el, name, value);     }   }    override listen(       target: 'window'|'document'|'body'|any, eventName: string,       callback: (event: any) => any): () => void {     if (eventName.charAt(0) == ANIMATION_PREFIX) {       const element = resolveElementFromTarget(target);       let name = eventName.slice(1);       let phase = '';       // @listener.phase is for trigger animation callbacks       // @@listener is for animation builder callbacks       if (name.charAt(0) != ANIMATION_PREFIX) {         [name, phase] = parseTriggerCallbackName(name);       }       return this.engine.listen(this.namespaceId, element, name, phase, event => {         const countId = (event as any)['_data'] || -1;         this.factory.scheduleListenerCallback(countId, callback, event);       });     }     return this.delegate.listen(target, eventName, callback);   } }  function resolveElementFromTarget(target: 'window'|'document'|'body'|any): any {   switch (target) {     case 'body':       return document.body;     case 'document':       return document;     case 'window':       return window;     default:       return target;   } }  function parseTriggerCallbackName(triggerName: string) {   const dotIndex = triggerName.indexOf('.');   const trigger = triggerName.substring(0, dotIndex);   const phase = triggerName.slice(dotIndex + 1);   return [trigger, phase]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AnimationBuilder} from '@angular/animations'; import {AnimationDriver, ɵAnimationEngine as AnimationEngine, ɵAnimationStyleNormalizer as AnimationStyleNormalizer, ɵNoopAnimationDriver as NoopAnimationDriver, ɵWebAnimationsDriver as WebAnimationsDriver, ɵWebAnimationsStyleNormalizer as WebAnimationsStyleNormalizer} from '@angular/animations/browser'; import {DOCUMENT} from '@angular/common'; import {ANIMATION_MODULE_TYPE, ApplicationRef, Inject, Injectable, NgZone, OnDestroy, Provider, RendererFactory2} from '@angular/core'; import {ɵDomRendererFactory2 as DomRendererFactory2} from '@angular/platform-browser';  import {BrowserAnimationBuilder} from './animation_builder'; import {AnimationRendererFactory} from './animation_renderer';  @Injectable() export class InjectableAnimationEngine extends AnimationEngine implements OnDestroy {   // The `ApplicationRef` is injected here explicitly to force the dependency ordering.   // Since the `ApplicationRef` should be created earlier before the `AnimationEngine`, they   // both have `ngOnDestroy` hooks and `flush()` must be called after all views are destroyed.   constructor(       @Inject(DOCUMENT) doc: any, driver: AnimationDriver, normalizer: AnimationStyleNormalizer,       appRef: ApplicationRef) {     super(doc.body, driver, normalizer);   }    ngOnDestroy(): void {     this.flush();   } }  export function instantiateDefaultStyleNormalizer() {   return new WebAnimationsStyleNormalizer(); }  export function instantiateRendererFactory(     renderer: DomRendererFactory2, engine: AnimationEngine, zone: NgZone) {   return new AnimationRendererFactory(renderer, engine, zone); }  const SHARED_ANIMATION_PROVIDERS: Provider[] = [   {provide: AnimationBuilder, useClass: BrowserAnimationBuilder},   {provide: AnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer},   {provide: AnimationEngine, useClass: InjectableAnimationEngine}, {     provide: RendererFactory2,     useFactory: instantiateRendererFactory,     deps: [DomRendererFactory2, AnimationEngine, NgZone]   } ];  /**  * Separate providers from the actual module so that we can do a local modification in Google3 to  * include them in the BrowserModule.  */ export const BROWSER_ANIMATIONS_PROVIDERS: Provider[] = [   {provide: AnimationDriver, useFactory: () => new WebAnimationsDriver()},   {provide: ANIMATION_MODULE_TYPE, useValue: 'BrowserAnimations'}, ...SHARED_ANIMATION_PROVIDERS ];  /**  * Separate providers from the actual module so that we can do a local modification in Google3 to  * include them in the BrowserTestingModule.  */ export const BROWSER_NOOP_ANIMATIONS_PROVIDERS: Provider[] = [   {provide: AnimationDriver, useClass: NoopAnimationDriver},   {provide: ANIMATION_MODULE_TYPE, useValue: 'NoopAnimations'}, ...SHARED_ANIMATION_PROVIDERS ]; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {ModuleWithProviders, NgModule, Provider} from '@angular/core'; import {BrowserModule} from '@angular/platform-browser';  import {BROWSER_ANIMATIONS_PROVIDERS, BROWSER_NOOP_ANIMATIONS_PROVIDERS} from './providers';  /**  * Object used to configure the behavior of {@link BrowserAnimationsModule}  * @publicApi  */ export interface BrowserAnimationsModuleConfig {   /**    *  Whether animations should be disabled. Passing this is identical to providing the    * `NoopAnimationsModule`, but it can be controlled based on a runtime value.    */   disableAnimations?: boolean; }  /**  * Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)  * for use with animations. See [Animations](guide/animations).  * @publicApi  */ @NgModule({   exports: [BrowserModule],   providers: BROWSER_ANIMATIONS_PROVIDERS, }) export class BrowserAnimationsModule {   /**    * Configures the module based on the specified object.    *    * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.    * @see `BrowserAnimationsModuleConfig`    *    * @usageNotes    * When registering the `BrowserAnimationsModule`, you can use the `withConfig`    * function as follows:    * ```    * @NgModule({    *   imports: [BrowserAnimationsModule.withConfig(config)]    * })    * class MyNgModule {}    * ```    */   static withConfig(config: BrowserAnimationsModuleConfig):       ModuleWithProviders<BrowserAnimationsModule> {     return {       ngModule: BrowserAnimationsModule,       providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS :                                             BROWSER_ANIMATIONS_PROVIDERS     };   } }  /**  * Returns the set of [dependency-injection providers](guide/glossary#provider)  * to enable animations in an application. See [animations guide](guide/animations)  * to learn more about animations in Angular.  *  * @usageNotes  *  * The function is useful when you want to enable animations in an application  * bootstrapped using the `bootstrapApplication` function. In this scenario there  * is no need to import the `BrowserAnimationsModule` NgModule at all, just add  * providers returned by this function to the `providers` list as show below.  *  * ```typescript  * bootstrapApplication(RootComponent, {  *   providers: [  *     provideAnimations()  *   ]  * });  * ```  *  * @publicApi  */ export function provideAnimations(): Provider[] {   // Return a copy to prevent changes to the original array in case any in-place   // alterations are performed to the `provideAnimations` call results in app code.   return [...BROWSER_ANIMATIONS_PROVIDERS]; }  /**  * A null player that must be imported to allow disabling of animations.  * @publicApi  */ @NgModule({   exports: [BrowserModule],   providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, }) export class NoopAnimationsModule { }  /**  * Returns the set of [dependency-injection providers](guide/glossary#provider)  * to disable animations in an application. See [animations guide](guide/animations)  * to learn more about animations in Angular.  *  * @usageNotes  *  * The function is useful when you want to bootstrap an application using  * the `bootstrapApplication` function, but you need to disable animations  * (for example, when running tests).  *  * ```typescript  * bootstrapApplication(RootComponent, {  *   providers: [  *     provideNoopAnimations()  *   ]  * });  * ```  *  * @publicApi  */ export function provideNoopAnimations(): Provider[] {   // Return a copy to prevent changes to the original array in case any in-place   // alterations are performed to the `provideNoopAnimations` call results in app code.   return [...BROWSER_NOOP_ANIMATIONS_PROVIDERS]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all animation APIs of the animation browser package.  */ export {ANIMATION_MODULE_TYPE} from '@angular/core'; export {BrowserAnimationsModule, BrowserAnimationsModuleConfig, NoopAnimationsModule, provideAnimations, provideNoopAnimations} from './module';  export * from './private_export'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/animations'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["AnimationEngine","WebAnimationsStyleNormalizer","AnimationStyleNormalizer","DomRendererFactory2","WebAnimationsDriver","NoopAnimationDriver"],"mappings":"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"}
-------------------- SECTION 157 --------------------
{"version":3,"file":"testing.mjs","sources":["../../../../../../packages/platform-browser/testing/src/browser_util.ts","../../../../../../packages/platform-browser/testing/src/mock_platform_location_flag.ts","../../../../../../packages/platform-browser/testing/src/browser.ts","../../../../../../packages/platform-browser/testing/src/testing.ts","../../../../../../packages/platform-browser/testing/public_api.ts","../../../../../../packages/platform-browser/testing/index.ts","../../../../../../packages/platform-browser/testing/testing.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵgetDOM as getDOM} from '@angular/common'; import {NgZone, ɵglobal as global} from '@angular/core';  export class BrowserDetection {   private _overrideUa: string|null;   private get _ua(): string {     if (typeof this._overrideUa === 'string') {       return this._overrideUa;     }      return getDOM() ? getDOM().getUserAgent() : '';   }    static setup() {     return new BrowserDetection(null);   }    constructor(ua: string|null) {     this._overrideUa = ua;   }    get isFirefox(): boolean {     return this._ua.indexOf('Firefox') > -1;   }    get isAndroid(): boolean {     return this._ua.indexOf('Mozilla/5.0') > -1 && this._ua.indexOf('Android') > -1 &&         this._ua.indexOf('AppleWebKit') > -1 && this._ua.indexOf('Chrome') == -1 &&         this._ua.indexOf('IEMobile') == -1;   }    get isEdge(): boolean {     return this._ua.indexOf('Edge') > -1;   }    get isWebkit(): boolean {     return this._ua.indexOf('AppleWebKit') > -1 && this._ua.indexOf('Edge') == -1 &&         this._ua.indexOf('IEMobile') == -1;   }    get isIOS7(): boolean {     return (this._ua.indexOf('iPhone OS 7') > -1 || this._ua.indexOf('iPad OS 7') > -1) &&         this._ua.indexOf('IEMobile') == -1;   }    get isSlow(): boolean {     return this.isAndroid || this.isIOS7;   }    get isChromeDesktop(): boolean {     return this._ua.indexOf('Chrome') > -1 && this._ua.indexOf('Mobile Safari') == -1 &&         this._ua.indexOf('Edge') == -1;   }    // \"Old Chrome\" means Chrome 3X, where there are some discrepancies in the Intl API.   // Android 4.4 and 5.X have such browsers by default (respectively 30 and 39).   get isOldChrome(): boolean {     return this._ua.indexOf('Chrome') > -1 && this._ua.indexOf('Chrome/3') > -1 &&         this._ua.indexOf('Edge') == -1;   }    get supportsShadowDom() {     const testEl = document.createElement('div');     return (typeof testEl.attachShadow !== 'undefined');   } }  export const browserDetection: BrowserDetection = BrowserDetection.setup();  export function dispatchEvent(element: any, eventType: any): Event {   const evt: Event = getDOM().getDefaultDocument().createEvent('Event');   evt.initEvent(eventType, true, true);   getDOM().dispatchEvent(element, evt);   return evt; }  export function createMouseEvent(eventType: string): MouseEvent {   const evt: MouseEvent = getDOM().getDefaultDocument().createEvent('MouseEvent');   evt.initEvent(eventType, true, true);   return evt; }  export function el(html: string): HTMLElement {   return <HTMLElement>getContent(createTemplate(html)).firstChild; }  function getAttributeMap(element: any): Map<string, string> {   const res = new Map<string, string>();   const elAttrs = element.attributes;   for (let i = 0; i < elAttrs.length; i++) {     const attrib = elAttrs.item(i);     res.set(attrib.name, attrib.value);   }   return res; }  const _selfClosingTags = ['br', 'hr', 'input']; export function stringifyElement(el: any /** TODO #9100 */): string {   let result = '';   if (getDOM().isElementNode(el)) {     const tagName = el.tagName.toLowerCase();      // Opening tag     result += `<${tagName}`;      // Attributes in an ordered way     const attributeMap = getAttributeMap(el);     const sortedKeys = Array.from(attributeMap.keys()).sort();     for (const key of sortedKeys) {       const lowerCaseKey = key.toLowerCase();       let attValue = attributeMap.get(key);        if (typeof attValue !== 'string') {         result += ` ${lowerCaseKey}`;       } else {         // Browsers order style rules differently. Order them alphabetically for consistency.         if (lowerCaseKey === 'style') {           attValue = attValue.split(/; ?/).filter(s => !!s).sort().map(s => `${s};`).join(' ');         }          result += ` ${lowerCaseKey}=\"${attValue}\"`;       }     }     result += '>';      // Children     const childrenRoot = templateAwareRoot(el);     const children = childrenRoot ? childrenRoot.childNodes : [];     for (let j = 0; j < children.length; j++) {       result += stringifyElement(children[j]);     }      // Closing tag     if (_selfClosingTags.indexOf(tagName) == -1) {       result += `</${tagName}>`;     }   } else if (isCommentNode(el)) {     result += `<!--${el.nodeValue}-->`;   } else {     result += el.textContent;   }    return result; }  export function createNgZone(): NgZone {   return new NgZone({enableLongStackTrace: true, shouldCoalesceEventChangeDetection: false}); }  export function isCommentNode(node: Node): boolean {   return node.nodeType === Node.COMMENT_NODE; }  export function isTextNode(node: Node): boolean {   return node.nodeType === Node.TEXT_NODE; }  export function getContent(node: Node): Node {   if ('content' in node) {     return (<any>node).content;   } else {     return node;   } }  export function templateAwareRoot(el: Node): any {   return getDOM().isElementNode(el) && el.nodeName === 'TEMPLATE' ? getContent(el) : el; }  export function setCookie(name: string, value: string) {   // document.cookie is magical, assigning into it assigns/overrides one cookie value, but does   // not clear other cookies.   document.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value); }  export function hasStyle(element: any, styleName: string, styleValue?: string|null): boolean {   const value = element.style[styleName] || '';   return styleValue ? value == styleValue : value.length > 0; }  export function hasClass(element: any, className: string): boolean {   return element.classList.contains(className); }  export function sortedClassList(element: any): any[] {   return Array.prototype.slice.call(element.classList, 0).sort(); }  export function createTemplate(html: any): HTMLElement {   const t = getDOM().getDefaultDocument().createElement('template');   t.innerHTML = html;   return t; }  export function childNodesAsList(el: Node): any[] {   const childNodes = el.childNodes;   const res = [];   for (let i = 0; i < childNodes.length; i++) {     res[i] = childNodes[i];   }   return res; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Controls whether the `MockPlatformLocation` class should be used  * as the `PlatformLocation` implementation when the `BrowserTestingModule`  * is imported.  *  * In v16, the value of this flag will be switched to `true` to enable  * the `MockPlatformLocation` by default.  */ export const ENABLE_MOCK_PLATFORM_LOCATION = false; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {PlatformLocation} from '@angular/common'; import {MockPlatformLocation} from '@angular/common/testing'; import {APP_ID, createPlatformFactory, NgModule, NgZone, PLATFORM_INITIALIZER, platformCore, StaticProvider} from '@angular/core'; import {BrowserModule, ɵBrowserDomAdapter as BrowserDomAdapter} from '@angular/platform-browser';  import {BrowserDetection, createNgZone} from './browser_util'; import {ENABLE_MOCK_PLATFORM_LOCATION} from './mock_platform_location_flag';  function initBrowserTests() {   BrowserDomAdapter.makeCurrent();   BrowserDetection.setup(); }  const _TEST_BROWSER_PLATFORM_PROVIDERS: StaticProvider[] =     [{provide: PLATFORM_INITIALIZER, useValue: initBrowserTests, multi: true}];  /**  * Platform for testing  *  * @publicApi  */ export const platformBrowserTesting =     createPlatformFactory(platformCore, 'browserTesting', _TEST_BROWSER_PLATFORM_PROVIDERS);  /**  * NgModule for testing.  *  * @publicApi  */ @NgModule({   exports: [BrowserModule],   providers: [     {provide: APP_ID, useValue: 'a'},     {provide: NgZone, useFactory: createNgZone},     (ENABLE_MOCK_PLATFORM_LOCATION ? [{provide: PlatformLocation, useClass: MockPlatformLocation}] :                                      []),   ] }) export class BrowserTestingModule { } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the platform-browser/testing package.  */ export * from './browser'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /// <reference types=\"jasmine\" />  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/testing'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["getDOM","BrowserDomAdapter"],"mappings":"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"}
-------------------- SECTION 158 --------------------
{"version":3,"file":"animations.mjs","sources":["../../../../../../packages/animations/src/animation_builder.ts","../../../../../../packages/animations/src/animation_metadata.ts","../../../../../../packages/animations/src/util.ts","../../../../../../packages/animations/src/players/animation_player.ts","../../../../../../packages/animations/src/players/animation_group_player.ts","../../../../../../packages/animations/src/private_export.ts","../../../../../../packages/animations/src/animations.ts","../../../../../../packages/animations/public_api.ts","../../../../../../packages/animations/index.ts","../../../../../../packages/animations/animations.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationMetadata, AnimationOptions} from './animation_metadata'; import {AnimationPlayer} from './players/animation_player';  /**  * An injectable service that produces an animation sequence programmatically within an  * Angular component or directive.  * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.  *  * @usageNotes  *  * To use this service, add it to your component or directive as a dependency.  * The service is instantiated along with your component.  *  * Apps do not typically need to create their own animation players, but if you  * do need to, follow these steps:  *  * 1. Use the <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code> method  * to create a programmatic animation. The method returns an `AnimationFactory` instance.  *  * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.  *  * 3. Use the player object to control the animation programmatically.  *  * For example:  *  * ```ts  * // import the service from BrowserAnimationsModule  * import {AnimationBuilder} from '@angular/animations';  * // require the service as a dependency  * class MyCmp {  *   constructor(private _builder: AnimationBuilder) {}  *  *   makeAnimation(element: any) {  *     // first define a reusable animation  *     const myAnimation = this._builder.build([  *       style({ width: 0 }),  *       animate(1000, style({ width: '100px' }))  *     ]);  *  *     // use the returned factory object to create a player  *     const player = myAnimation.create(element);  *  *     player.play();  *   }  * }  * ```  *  * @publicApi  */ export abstract class AnimationBuilder {   /**    * Builds a factory for producing a defined animation.    * @param animation A reusable animation definition.    * @returns A factory object that can create a player for the defined animation.    * @see `animate()`    */   abstract build(animation: AnimationMetadata|AnimationMetadata[]): AnimationFactory; }  /**  * A factory object returned from the  * <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code>  * method.  *  * @publicApi  */ export abstract class AnimationFactory {   /**    * Creates an `AnimationPlayer` instance for the reusable animation defined by    * the <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code>    * method that created this factory and attaches the new player a DOM element.    *    * @param element The DOM element to which to attach the player.    * @param options A set of options that can include a time delay and    * additional developer-defined parameters.    */   abstract create(element: any, options?: AnimationOptions): AnimationPlayer; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Represents a set of CSS styles for use in an animation style as a generic.  */ export interface ɵStyleData {   [key: string]: string|number; }  /**  * Represents a set of CSS styles for use in an animation style as a Map.  */ export type ɵStyleDataMap = Map<string, string|number>;  /**  * Represents animation-step timing parameters for an animation step.  * @see `animate()`  *  * @publicApi  */ export declare type AnimateTimings = {   /**    * The full duration of an animation step. A number and optional time unit,    * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.    * The default unit is milliseconds.    */   duration: number,   /**    * The delay in applying an animation step. A number and optional time unit.    * The default unit is milliseconds.    */   delay: number,   /**    * An easing style that controls how an animations step accelerates    * and decelerates during its run time. An easing function such as `cubic-bezier()`,    * or one of the following constants:    * - `ease-in`    * - `ease-out`    * - `ease-in-and-out`    */   easing: string | null };  /**  * @description Options that control animation styling and timing.  *  * The following animation functions accept `AnimationOptions` data:  *  * - `transition()`  * - `sequence()`  * - `{@link animations/group group()}`  * - `query()`  * - `animation()`  * - `useAnimation()`  * - `animateChild()`  *  * Programmatic animations built using the `AnimationBuilder` service also  * make use of `AnimationOptions`.  *  * @publicApi  */ export declare interface AnimationOptions {   /**    * Sets a time-delay for initiating an animation action.    * A number and optional time unit, such as \"1s\" or \"10ms\" for one second    * and 10 milliseconds, respectively.The default unit is milliseconds.    * Default value is 0, meaning no delay.    */   delay?: number|string;   /**    * A set of developer-defined parameters that modify styling and timing    * when an animation action starts. An array of key-value pairs, where the provided value    * is used as a default.    */   params?: {[name: string]: any}; }  /**  * Adds duration options to control animation styling and timing for a child animation.  *  * @see `animateChild()`  *  * @publicApi  */ export declare interface AnimateChildOptions extends AnimationOptions {   duration?: number|string; }  /**  * @description Constants for the categories of parameters that can be defined for animations.  *  * A corresponding function defines a set of parameters for each category, and  * collects them into a corresponding `AnimationMetadata` object.  *  * @publicApi  */ export const enum AnimationMetadataType {   /**    * Associates a named animation state with a set of CSS styles.    * See [`state()`](api/animations/state)    */   State = 0,   /**    * Data for a transition from one animation state to another.    * See `transition()`    */   Transition = 1,   /**    * Contains a set of animation steps.    * See `sequence()`    */   Sequence = 2,   /**    * Contains a set of animation steps.    * See `{@link animations/group group()}`    */   Group = 3,   /**    * Contains an animation step.    * See `animate()`    */   Animate = 4,   /**    * Contains a set of animation steps.    * See `keyframes()`    */   Keyframes = 5,   /**    * Contains a set of CSS property-value pairs into a named style.    * See `style()`    */   Style = 6,   /**    * Associates an animation with an entry trigger that can be attached to an element.    * See `trigger()`    */   Trigger = 7,   /**    * Contains a re-usable animation.    * See `animation()`    */   Reference = 8,   /**    * Contains data to use in executing child animations returned by a query.    * See `animateChild()`    */   AnimateChild = 9,   /**    * Contains animation parameters for a re-usable animation.    * See `useAnimation()`    */   AnimateRef = 10,   /**    * Contains child-animation query data.    * See `query()`    */   Query = 11,   /**    * Contains data for staggering an animation sequence.    * See `stagger()`    */   Stagger = 12 }  /**  * Specifies automatic styling.  *  * @publicApi  */ export const AUTO_STYLE = '*';  /**  * Base for animation data structures.  *  * @publicApi  */ export interface AnimationMetadata {   type: AnimationMetadataType; }  /**  * Contains an animation trigger. Instantiated and returned by the  * `trigger()` function.  *  * @publicApi  */ export interface AnimationTriggerMetadata extends AnimationMetadata {   /**    * The trigger name, used to associate it with an element. Unique within the component.    */   name: string;   /**    * An animation definition object, containing an array of state and transition declarations.    */   definitions: AnimationMetadata[];   /**    * An options object containing a delay and    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation. Default delay is 0.    */   options: {params?: {[name: string]: any}}|null; }  /**  * Encapsulates an animation state by associating a state name with a set of CSS styles.  * Instantiated and returned by the [`state()`](api/animations/state) function.  *  * @publicApi  */ export interface AnimationStateMetadata extends AnimationMetadata {   /**    * The state name, unique within the component.    */   name: string;   /**    *  The CSS styles associated with this state.    */   styles: AnimationStyleMetadata;   /**    * An options object containing    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation.    */   options?: {params: {[name: string]: any}}; }  /**  * Encapsulates an animation transition. Instantiated and returned by the  * `transition()` function.  *  * @publicApi  */ export interface AnimationTransitionMetadata extends AnimationMetadata {   /**    * An expression that describes a state change.    */   expr: string|       ((fromState: string, toState: string, element?: any,         params?: {[key: string]: any}) => boolean);   /**    * One or more animation objects to which this transition applies.    */   animation: AnimationMetadata|AnimationMetadata[];   /**    * An options object containing a delay and    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation. Default delay is 0.    */   options: AnimationOptions|null; }  /**  * Encapsulates a reusable animation, which is a collection of individual animation steps.  * Instantiated and returned by the `animation()` function, and  * passed to the `useAnimation()` function.  *  * @publicApi  */ export interface AnimationReferenceMetadata extends AnimationMetadata {   /**    *  One or more animation step objects.    */   animation: AnimationMetadata|AnimationMetadata[];   /**    * An options object containing a delay and    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation. Default delay is 0.    */   options: AnimationOptions|null; }  /**  * Encapsulates an animation query. Instantiated and returned by  * the `query()` function.  *  * @publicApi  */ export interface AnimationQueryMetadata extends AnimationMetadata {   /**    *  The CSS selector for this query.    */   selector: string;   /**    * One or more animation step objects.    */   animation: AnimationMetadata|AnimationMetadata[];   /**    * A query options object.    */   options: AnimationQueryOptions|null; }  /**  * Encapsulates a keyframes sequence. Instantiated and returned by  * the `keyframes()` function.  *  * @publicApi  */ export interface AnimationKeyframesSequenceMetadata extends AnimationMetadata {   /**    * An array of animation styles.    */   steps: AnimationStyleMetadata[]; }  /**  * Encapsulates an animation style. Instantiated and returned by  * the `style()` function.  *  * @publicApi  */ export interface AnimationStyleMetadata extends AnimationMetadata {   /**    * A set of CSS style properties.    */   styles: '*'|{[key: string]: string | number}|Array<{[key: string]: string | number}|'*'>;   /**    * A percentage of the total animate time at which the style is to be applied.    */   offset: number|null; }  /**  * Encapsulates an animation step. Instantiated and returned by  * the `animate()` function.  *  * @publicApi  */ export interface AnimationAnimateMetadata extends AnimationMetadata {   /**    * The timing data for the step.    */   timings: string|number|AnimateTimings;   /**    * A set of styles used in the step.    */   styles: AnimationStyleMetadata|AnimationKeyframesSequenceMetadata|null; }  /**  * Encapsulates a child animation, that can be run explicitly when the parent is run.  * Instantiated and returned by the `animateChild` function.  *  * @publicApi  */ export interface AnimationAnimateChildMetadata extends AnimationMetadata {   /**    * An options object containing a delay and    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation. Default delay is 0.    */   options: AnimationOptions|null; }  /**  * Encapsulates a reusable animation.  * Instantiated and returned by the `useAnimation()` function.  *  * @publicApi  */ export interface AnimationAnimateRefMetadata extends AnimationMetadata {   /**    * An animation reference object.    */   animation: AnimationReferenceMetadata;   /**    * An options object containing a delay and    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation. Default delay is 0.    */   options: AnimationOptions|null; }  /**  * Encapsulates an animation sequence.  * Instantiated and returned by the `sequence()` function.  *  * @publicApi  */ export interface AnimationSequenceMetadata extends AnimationMetadata {   /**    *  An array of animation step objects.    */   steps: AnimationMetadata[];   /**    * An options object containing a delay and    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation. Default delay is 0.    */   options: AnimationOptions|null; }  /**  * Encapsulates an animation group.  * Instantiated and returned by the `{@link animations/group group()}` function.  *  * @publicApi  */ export interface AnimationGroupMetadata extends AnimationMetadata {   /**    * One or more animation or style steps that form this group.    */   steps: AnimationMetadata[];   /**    * An options object containing a delay and    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation. Default delay is 0.    */   options: AnimationOptions|null; }  /**  * Encapsulates animation query options.  * Passed to the `query()` function.  *  * @publicApi  */ export declare interface AnimationQueryOptions extends AnimationOptions {   /**    * True if this query is optional, false if it is required. Default is false.    * A required query throws an error if no elements are retrieved when    * the query is executed. An optional query does not.    *    */   optional?: boolean;   /**    * A maximum total number of results to return from the query.    * If negative, results are limited from the end of the query list towards the beginning.    * By default, results are not limited.    */   limit?: number; }  /**  * Encapsulates parameters for staggering the start times of a set of animation steps.  * Instantiated and returned by the `stagger()` function.  *  * @publicApi  **/ export interface AnimationStaggerMetadata extends AnimationMetadata {   /**    * The timing data for the steps.    */   timings: string|number;   /**    * One or more animation steps.    */   animation: AnimationMetadata|AnimationMetadata[]; }  /**  * Creates a named animation trigger, containing a  list of [`state()`](api/animations/state)  * and `transition()` entries to be evaluated when the expression  * bound to the trigger changes.  *  * @param name An identifying string.  * @param definitions  An animation definition object, containing an array of  * [`state()`](api/animations/state) and `transition()` declarations.  *  * @return An object that encapsulates the trigger data.  *  * @usageNotes  * Define an animation trigger in the `animations` section of `@Component` metadata.  * In the template, reference the trigger by name and bind it to a trigger expression that  * evaluates to a defined animation state, using the following format:  *  * `[@triggerName]=\"expression\"`  *  * Animation trigger bindings convert all values to strings, and then match the  * previous and current values against any linked transitions.  * Booleans can be specified as `1` or `true` and `0` or `false`.  *  * ### Usage Example  *  * The following example creates an animation trigger reference based on the provided  * name value.  * The provided animation value is expected to be an array consisting of state and  * transition declarations.  *  * ```typescript  * @Component({  *   selector: \"my-component\",  *   templateUrl: \"my-component-tpl.html\",  *   animations: [  *     trigger(\"myAnimationTrigger\", [  *       state(...),  *       state(...),  *       transition(...),  *       transition(...)  *     ])  *   ]  * })  * class MyComponent {  *   myStatusExp = \"something\";  * }  * ```  *  * The template associated with this component makes use of the defined trigger  * by binding to an element within its template code.  *  * ```html  * <!-- somewhere inside of my-component-tpl.html -->  * <div [@myAnimationTrigger]=\"myStatusExp\">...</div>  * ```  *  * ### Using an inline function  * The `transition` animation method also supports reading an inline function which can decide  * if its associated animation should be run.  *  * ```typescript  * // this method is run each time the `myAnimationTrigger` trigger value changes.  * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:  string]: any}): boolean {  *   // notice that `element` and `params` are also available here  *   return toState == 'yes-please-animate';  * }  *  * @Component({  *   selector: 'my-component',  *   templateUrl: 'my-component-tpl.html',  *   animations: [  *     trigger('myAnimationTrigger', [  *       transition(myInlineMatcherFn, [  *         // the animation sequence code  *       ]),  *     ])  *   ]  * })  * class MyComponent {  *   myStatusExp = \"yes-please-animate\";  * }  * ```  *  * ### Disabling Animations  * When true, the special animation control binding `@.disabled` binding prevents  * all animations from rendering.  * Place the  `@.disabled` binding on an element to disable  * animations on the element itself, as well as any inner animation triggers  * within the element.  *  * The following example shows how to use this feature:  *  * ```typescript  * @Component({  *   selector: 'my-component',  *   template: `  *     <div [@.disabled]=\"isDisabled\">  *       <div [@childAnimation]=\"exp\"></div>  *     </div>  *   `,  *   animations: [  *     trigger(\"childAnimation\", [  *       // ...  *     ])  *   ]  * })  * class MyComponent {  *   isDisabled = true;  *   exp = '...';  * }  * ```  *  * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,  * along with any inner animations.  *  * ### Disable animations application-wide  * When an area of the template is set to have animations disabled,  * **all** inner components have their animations disabled as well.  * This means that you can disable all animations for an app  * by placing a host binding set on `@.disabled` on the topmost Angular component.  *  * ```typescript  * import {Component, HostBinding} from '@angular/core';  *  * @Component({  *   selector: 'app-component',  *   templateUrl: 'app.component.html',  * })  * class AppComponent {  *   @HostBinding('@.disabled')  *   public animationsDisabled = true;  * }  * ```  *  * ### Overriding disablement of inner animations  * Despite inner animations being disabled, a parent animation can `query()`  * for inner elements located in disabled areas of the template and still animate  * them if needed. This is also the case for when a sub animation is  * queried by a parent and then later animated using `animateChild()`.  *  * ### Detecting when an animation is disabled  * If a region of the DOM (or the entire application) has its animations disabled, the animation  * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides  * an instance of an `AnimationEvent`. If animations are disabled,  * the `.disabled` flag on the event is true.  *  * @publicApi  */ export function trigger(name: string, definitions: AnimationMetadata[]): AnimationTriggerMetadata {   return {type: AnimationMetadataType.Trigger, name, definitions, options: {}}; }  /**  * Defines an animation step that combines styling information with timing information.  *  * @param timings Sets `AnimateTimings` for the parent animation.  * A string in the format \"duration [delay] [easing]\".  *  - Duration and delay are expressed as a number and optional time unit,  * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.  * The default unit is milliseconds.  *  - The easing value controls how the animation accelerates and decelerates  * during its runtime. Value is one of  `ease`, `ease-in`, `ease-out`,  * `ease-in-out`, or a `cubic-bezier()` function call.  * If not supplied, no easing is applied.  *  * For example, the string \"1s 100ms ease-out\" specifies a duration of  * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,  * which decelerates near the end of the duration.  * @param styles Sets AnimationStyles for the parent animation.  * A function call to either `style()` or `keyframes()`  * that returns a collection of CSS style entries to be applied to the parent animation.  * When null, uses the styles from the destination state.  * This is useful when describing an animation step that will complete an animation;  * see \"Animating to the final state\" in `transitions()`.  * @returns An object that encapsulates the animation step.  *  * @usageNotes  * Call within an animation `sequence()`, `{@link animations/group group()}`, or  * `transition()` call to specify an animation step  * that applies given style data to the parent animation for a given amount of time.  *  * ### Syntax Examples  * **Timing examples**  *  * The following examples show various `timings` specifications.  * - `animate(500)` : Duration is 500 milliseconds.  * - `animate(\"1s\")` : Duration is 1000 milliseconds.  * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.  * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.  * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10  * milliseconds, easing according to a bezier curve.  *  * **Style examples**  *  * The following example calls `style()` to set a single CSS style.  * ```typescript  * animate(500, style({ background: \"red\" }))  * ```  * The following example calls `keyframes()` to set a CSS style  * to different values for successive keyframes.  * ```typescript  * animate(500, keyframes(  *  [  *   style({ background: \"blue\" }),  *   style({ background: \"red\" })  *  ])  * ```  *  * @publicApi  */ export function animate(     timings: string|number,     styles: AnimationStyleMetadata|AnimationKeyframesSequenceMetadata|null =         null): AnimationAnimateMetadata {   return {type: AnimationMetadataType.Animate, styles, timings}; }  /**  * @description Defines a list of animation steps to be run in parallel.  *  * @param steps An array of animation step objects.  * - When steps are defined by `style()` or `animate()`  * function calls, each call within the group is executed instantly.  * - To specify offset styles to be applied at a later time, define steps with  * `keyframes()`, or use `animate()` calls with a delay value.  * For example:  *  * ```typescript  * group([  *   animate(\"1s\", style({ background: \"black\" })),  *   animate(\"2s\", style({ color: \"white\" }))  * ])  * ```  *  * @param options An options object containing a delay and  * developer-defined parameters that provide styling defaults and  * can be overridden on invocation.  *  * @return An object that encapsulates the group data.  *  * @usageNotes  * Grouped animations are useful when a series of styles must be  * animated at different starting times and closed off at different ending times.  *  * When called within a `sequence()` or a  * `transition()` call, does not continue to the next  * instruction until all of the inner animation steps have completed.  *  * @publicApi  */ export function group(     steps: AnimationMetadata[], options: AnimationOptions|null = null): AnimationGroupMetadata {   return {type: AnimationMetadataType.Group, steps, options}; }  /**  * Defines a list of animation steps to be run sequentially, one by one.  *  * @param steps An array of animation step objects.  * - Steps defined by `style()` calls apply the styling data immediately.  * - Steps defined by `animate()` calls apply the styling data over time  *   as specified by the timing data.  *  * ```typescript  * sequence([  *   style({ opacity: 0 }),  *   animate(\"1s\", style({ opacity: 1 }))  * ])  * ```  *  * @param options An options object containing a delay and  * developer-defined parameters that provide styling defaults and  * can be overridden on invocation.  *  * @return An object that encapsulates the sequence data.  *  * @usageNotes  * When you pass an array of steps to a  * `transition()` call, the steps run sequentially by default.  * Compare this to the `{@link animations/group group()}` call, which runs animation steps in  *parallel.  *  * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,  * execution continues to the next instruction only after each of the inner animation  * steps have completed.  *  * @publicApi  **/ export function sequence(     steps: AnimationMetadata[], options: AnimationOptions|null = null): AnimationSequenceMetadata {   return {type: AnimationMetadataType.Sequence, steps, options}; }  /**  * Declares a key/value object containing CSS properties/styles that  * can then be used for an animation [`state`](api/animations/state), within an animation  *`sequence`, or as styling data for calls to `animate()` and `keyframes()`.  *  * @param tokens A set of CSS styles or HTML styles associated with an animation state.  * The value can be any of the following:  * - A key-value style pair associating a CSS property with a value.  * - An array of key-value style pairs.  * - An asterisk (*), to use auto-styling, where styles are derived from the element  * being animated and applied to the animation when it starts.  *  * Auto-styling can be used to define a state that depends on layout or other  * environmental factors.  *  * @return An object that encapsulates the style data.  *  * @usageNotes  * The following examples create animation styles that collect a set of  * CSS property values:  *  * ```typescript  * // string values for CSS properties  * style({ background: \"red\", color: \"blue\" })  *  * // numerical pixel values  * style({ width: 100, height: 0 })  * ```  *  * The following example uses auto-styling to allow an element to animate from  * a height of 0 up to its full height:  *  * ```  * style({ height: 0 }),  * animate(\"1s\", style({ height: \"*\" }))  * ```  *  * @publicApi  **/ export function style(tokens: '*'|{[key: string]: string | number}|                       Array<'*'|{[key: string]: string | number}>): AnimationStyleMetadata {   return {type: AnimationMetadataType.Style, styles: tokens, offset: null}; }  /**  * Declares an animation state within a trigger attached to an element.  *  * @param name One or more names for the defined state in a comma-separated string.  * The following reserved state names can be supplied to define a style for specific use  * cases:  *  * - `void` You can associate styles with this name to be used when  * the element is detached from the application. For example, when an `ngIf` evaluates  * to false, the state of the associated element is void.  *  - `*` (asterisk) Indicates the default state. You can associate styles with this name  * to be used as the fallback when the state that is being animated is not declared  * within the trigger.  *  * @param styles A set of CSS styles associated with this state, created using the  * `style()` function.  * This set of styles persists on the element once the state has been reached.  * @param options Parameters that can be passed to the state when it is invoked.  * 0 or more key-value pairs.  * @return An object that encapsulates the new state data.  *  * @usageNotes  * Use the `trigger()` function to register states to an animation trigger.  * Use the `transition()` function to animate between states.  * When a state is active within a component, its associated styles persist on the element,  * even when the animation ends.  *  * @publicApi  **/ export function state(     name: string, styles: AnimationStyleMetadata,     options?: {params: {[name: string]: any}}): AnimationStateMetadata {   return {type: AnimationMetadataType.State, name, styles, options}; }  /**  * Defines a set of animation styles, associating each style with an optional `offset` value.  *  * @param steps A set of animation styles with optional offset data.  * The optional `offset` value for a style specifies a percentage of the total animation  * time at which that style is applied.  * @returns An object that encapsulates the keyframes data.  *  * @usageNotes  * Use with the `animate()` call. Instead of applying animations  * from the current state  * to the destination state, keyframes describe how each style entry is applied and at what point  * within the animation arc.  * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).  *  * ### Usage  *  * In the following example, the offset values describe  * when each `backgroundColor` value is applied. The color is red at the start, and changes to  * blue when 20% of the total time has elapsed.  *  * ```typescript  * // the provided offset values  * animate(\"5s\", keyframes([  *   style({ backgroundColor: \"red\", offset: 0 }),  *   style({ backgroundColor: \"blue\", offset: 0.2 }),  *   style({ backgroundColor: \"orange\", offset: 0.3 }),  *   style({ backgroundColor: \"black\", offset: 1 })  * ]))  * ```  *  * If there are no `offset` values specified in the style entries, the offsets  * are calculated automatically.  *  * ```typescript  * animate(\"5s\", keyframes([  *   style({ backgroundColor: \"red\" }) // offset = 0  *   style({ backgroundColor: \"blue\" }) // offset = 0.33  *   style({ backgroundColor: \"orange\" }) // offset = 0.66  *   style({ backgroundColor: \"black\" }) // offset = 1  * ]))  *```   * @publicApi  */ export function keyframes(steps: AnimationStyleMetadata[]): AnimationKeyframesSequenceMetadata {   return {type: AnimationMetadataType.Keyframes, steps}; }  /**  * Declares an animation transition which is played when a certain specified condition is met.  *  * @param stateChangeExpr A string with a specific format or a function that specifies when the  * animation transition should occur (see [State Change Expression](#state-change-expression)).  *  * @param steps One or more animation objects that represent the animation's instructions.  *  * @param options An options object that can be used to specify a delay for the animation or provide  * custom parameters for it.  *  * @returns An object that encapsulates the transition data.  *  * @usageNotes  *  * ### State Change Expression  *  * The State Change Expression instructs Angular when to run the transition's animations, it can  *either be  *  - a string with a specific syntax  *  - or a function that compares the previous and current state (value of the expression bound to  *    the element's trigger) and returns `true` if the transition should occur or `false` otherwise  *  * The string format can be:  *  - `fromState => toState`, which indicates that the transition's animations should occur then the  *    expression bound to the trigger's element goes from `fromState` to `toState`  *  *    _Example:_  *      ```typescript  *        transition('open => closed', animate('.5s ease-out', style({ height: 0 }) ))  *      ```  *  *  - `fromState <=> toState`, which indicates that the transition's animations should occur then  *    the expression bound to the trigger's element goes from `fromState` to `toState` or vice versa  *  *    _Example:_  *      ```typescript  *        transition('enabled <=> disabled', animate('1s cubic-bezier(0.8,0.3,0,1)'))  *      ```  *  *  - `:enter`/`:leave`, which indicates that the transition's animations should occur when the  *    element enters or exists the DOM  *  *    _Example:_  *      ```typescript  *        transition(':enter', [  *          style({ opacity: 0 }),  *          animate('500ms', style({ opacity: 1 }))  *        ])  *      ```  *  *  - `:increment`/`:decrement`, which indicates that the transition's animations should occur when  *    the numerical expression bound to the trigger's element has increased in value or decreased  *  *    _Example:_  *      ```typescript  *        transition(':increment', query('@counter', animateChild()))  *      ```  *  *  - a sequence of any of the above divided by commas, which indicates that transition's animations  *    should occur whenever one of the state change expressions matches  *  *    _Example:_  *      ```typescript  *        transition(':increment, * => enabled, :enter', animate('1s ease', keyframes([  *          style({ transform: 'scale(1)', offset: 0}),  *          style({ transform: 'scale(1.1)', offset: 0.7}),  *          style({ transform: 'scale(1)', offset: 1})  *        ]))),  *      ```  *  * Also note that in such context:  *  - `void` can be used to indicate the absence of the element  *  - asterisks can be used as wildcards that match any state  *  - (as a consequence of the above, `void => *` is equivalent to `:enter` and `* => void` is  *    equivalent to `:leave`)  *  - `true` and `false` also match expression values of `1` and `0` respectively (but do not match  *    _truthy_ and _falsy_ values)  *  * <div class=\"alert is-helpful\">  *  *  Be careful about entering end leaving elements as their transitions present a common  *  pitfall for developers.  *  *  Note that when an element with a trigger enters the DOM its `:enter` transition always  *  gets executed, but its `:leave` transition will not be executed if the element is removed  *  alongside its parent (as it will be removed \"without warning\" before its transition has  *  a chance to be executed, the only way that such transition can occur is if the element  *  is exiting the DOM on its own).  *  *  * </div>  *  * ### Animating to a Final State  *  * If the final step in a transition is a call to `animate()` that uses a timing value  * with no `style` data, that step is automatically considered the final animation arc,  * for the element to reach the final state, in such case Angular automatically adds or removes  * CSS styles to ensure that the element is in the correct final state.  *  *  * ### Usage Examples  *  *  - Transition animations applied based on  *    the trigger's expression value  *  *   ```HTML  *   <div [@myAnimationTrigger]=\"myStatusExp\">  *    ...  *   </div>  *   ```  *  *   ```typescript  *   trigger(\"myAnimationTrigger\", [  *     ..., // states  *     transition(\"on => off, open => closed\", animate(500)),  *     transition(\"* <=> error\", query('.indicator', animateChild()))  *   ])  *   ```  *  *  - Transition animations applied based on custom logic dependent  *    on the trigger's expression value and provided parameters  *  *    ```HTML  *    <div [@myAnimationTrigger]=\"{  *     value: stepName,  *     params: { target: currentTarget }  *    }\">  *     ...  *    </div>  *    ```  *  *    ```typescript  *    trigger(\"myAnimationTrigger\", [  *      ..., // states  *      transition(  *        (fromState, toState, _element, params) =>  *          ['firststep', 'laststep'].includes(fromState.toLowerCase())  *          && toState === params?.['target'],  *        animate('1s')  *      )  *    ])  *    ```  *  * @publicApi  **/ export function transition(     stateChangeExpr: string|     ((fromState: string, toState: string, element?: any, params?: {[key: string]: any}) => boolean),     steps: AnimationMetadata|AnimationMetadata[],     options: AnimationOptions|null = null): AnimationTransitionMetadata {   return {type: AnimationMetadataType.Transition, expr: stateChangeExpr, animation: steps, options}; }  /**  * Produces a reusable animation that can be invoked in another animation or sequence,  * by calling the `useAnimation()` function.  *  * @param steps One or more animation objects, as returned by the `animate()`  * or `sequence()` function, that form a transformation from one state to another.  * A sequence is used by default when you pass an array.  * @param options An options object that can contain a delay value for the start of the  * animation, and additional developer-defined parameters.  * Provided values for additional parameters are used as defaults,  * and override values can be passed to the caller on invocation.  * @returns An object that encapsulates the animation data.  *  * @usageNotes  * The following example defines a reusable animation, providing some default parameter  * values.  *  * ```typescript  * var fadeAnimation = animation([  *   style({ opacity: '{{ start }}' }),  *   animate('{{ time }}',  *   style({ opacity: '{{ end }}'}))  *   ],  *   { params: { time: '1000ms', start: 0, end: 1 }});  * ```  *  * The following invokes the defined animation with a call to `useAnimation()`,  * passing in override parameter values.  *  * ```js  * useAnimation(fadeAnimation, {  *   params: {  *     time: '2s',  *     start: 1,  *     end: 0  *   }  * })  * ```  *  * If any of the passed-in parameter values are missing from this call,  * the default values are used. If one or more parameter values are missing before a step is  * animated, `useAnimation()` throws an error.  *  * @publicApi  */ export function animation(     steps: AnimationMetadata|AnimationMetadata[],     options: AnimationOptions|null = null): AnimationReferenceMetadata {   return {type: AnimationMetadataType.Reference, animation: steps, options}; }  /**  * Executes a queried inner animation element within an animation sequence.  *  * @param options An options object that can contain a delay value for the start of the  * animation, and additional override values for developer-defined parameters.  * @return An object that encapsulates the child animation data.  *  * @usageNotes  * Each time an animation is triggered in Angular, the parent animation  * has priority and any child animations are blocked. In order  * for a child animation to run, the parent animation must query each of the elements  * containing child animations, and run them using this function.  *  * Note that this feature is designed to be used with `query()` and it will only work  * with animations that are assigned using the Angular animation library. CSS keyframes  * and transitions are not handled by this API.  *  * @publicApi  */ export function animateChild(options: AnimateChildOptions|null = null):     AnimationAnimateChildMetadata {   return {type: AnimationMetadataType.AnimateChild, options}; }  /**  * Starts a reusable animation that is created using the `animation()` function.  *  * @param animation The reusable animation to start.  * @param options An options object that can contain a delay value for the start of  * the animation, and additional override values for developer-defined parameters.  * @return An object that contains the animation parameters.  *  * @publicApi  */ export function useAnimation(     animation: AnimationReferenceMetadata,     options: AnimationOptions|null = null): AnimationAnimateRefMetadata {   return {type: AnimationMetadataType.AnimateRef, animation, options}; }  /**  * Finds one or more inner elements within the current element that is  * being animated within a sequence. Use with `animate()`.  *  * @param selector The element to query, or a set of elements that contain Angular-specific  * characteristics, specified with one or more of the following tokens.  *  - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements (not  *     all elements can be queried via these tokens, see  *     [Entering and Leaving Elements](#entering-and-leaving-elements))  *  - `query(\":animating\")` : Query all currently animating elements.  *  - `query(\"@triggerName\")` : Query elements that contain an animation trigger.  *  - `query(\"@*\")` : Query all elements that contain an animation triggers.  *  - `query(\":self\")` : Include the current element into the animation sequence.  *  * @param animation One or more animation steps to apply to the queried element or elements.  * An array is treated as an animation sequence.  * @param options An options object. Use the 'limit' field to limit the total number of  * items to collect.  * @return An object that encapsulates the query data.  *  * @usageNotes  *  * ### Multiple Tokens  *  * Tokens can be merged into a combined query selector string. For example:  *  * ```typescript  *  query(':self, .record:enter, .record:leave, @subTrigger', [...])  * ```  *  * The `query()` function collects multiple elements and works internally by using  * `element.querySelectorAll`. Use the `limit` field of an options object to limit  * the total number of items to be collected. For example:  *  * ```js  * query('div', [  *   animate(...),  *   animate(...)  * ], { limit: 1 })  * ```  *  * By default, throws an error when zero items are found. Set the  * `optional` flag to ignore this error. For example:  *  * ```js  * query('.some-element-that-may-not-be-there', [  *   animate(...),  *   animate(...)  * ], { optional: true })  * ```  *  * ### Entering and Leaving Elements  *  * Not all elements can be queried via the `:enter` and `:leave` tokens, the only ones  * that can are those that Angular assumes can enter/leave based on their own logic  * (if their insertion/removal is simply a consequence of that of their parent they  * should be queried via a different token in their parent's `:enter`/`:leave` transitions).  *  * The only elements Angular assumes can enter/leave based on their own logic (thus the only  * ones that can be queried via the `:enter` and `:leave` tokens) are:  *  - Those inserted dynamically (via `ViewContainerRef`)  *  - Those that have a structural directive (which, under the hood, are a subset of the above ones)  *  * <div class=\"alert is-helpful\">  *  *  Note that elements will be successfully queried via `:enter`/`:leave` even if their  *  insertion/removal is not done manually via `ViewContainerRef`or caused by their structural  *  directive (e.g. they enter/exit alongside their parent).  *  * </div>  *  * <div class=\"alert is-important\">  *  *  There is an exception to what previously mentioned, besides elements entering/leaving based on  *  their own logic, elements with an animation trigger can always be queried via `:leave` when  * their parent is also leaving.  *  * </div>  *  * ### Usage Example  *  * The following example queries for inner elements and animates them  * individually using `animate()`.  *  * ```typescript  * @Component({  *   selector: 'inner',  *   template: `  *     <div [@queryAnimation]=\"exp\">  *       <h1>Title</h1>  *       <div class=\"content\">  *         Blah blah blah  *       </div>  *     </div>  *   `,  *   animations: [  *    trigger('queryAnimation', [  *      transition('* => goAnimate', [  *        // hide the inner elements  *        query('h1', style({ opacity: 0 })),  *        query('.content', style({ opacity: 0 })),  *  *        // animate the inner elements in, one by one  *        query('h1', animate(1000, style({ opacity: 1 }))),  *        query('.content', animate(1000, style({ opacity: 1 }))),  *      ])  *    ])  *  ]  * })  * class Cmp {  *   exp = '';  *  *   goAnimate() {  *     this.exp = 'goAnimate';  *   }  * }  * ```  *  * @publicApi  */ export function query(     selector: string, animation: AnimationMetadata|AnimationMetadata[],     options: AnimationQueryOptions|null = null): AnimationQueryMetadata {   return {type: AnimationMetadataType.Query, selector, animation, options}; }  /**  * Use within an animation `query()` call to issue a timing gap after  * each queried item is animated.  *  * @param timings A delay value.  * @param animation One ore more animation steps.  * @returns An object that encapsulates the stagger data.  *  * @usageNotes  * In the following example, a container element wraps a list of items stamped out  * by an `ngFor`. The container element contains an animation trigger that will later be set  * to query for each of the inner items.  *  * Each time items are added, the opacity fade-in animation runs,  * and each removed item is faded out.  * When either of these animations occur, the stagger effect is  * applied after each item's animation is started.  *  * ```html  * <!-- list.component.html -->  * <button (click)=\"toggle()\">Show / Hide Items</button>  * <hr />  * <div [@listAnimation]=\"items.length\">  *   <div *ngFor=\"let item of items\">  *     {{ item }}  *   </div>  * </div>  * ```  *  * Here is the component code:  *  * ```typescript  * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';  * @Component({  *   templateUrl: 'list.component.html',  *   animations: [  *     trigger('listAnimation', [  *     ...  *     ])  *   ]  * })  * class ListComponent {  *   items = [];  *  *   showItems() {  *     this.items = [0,1,2,3,4];  *   }  *  *   hideItems() {  *     this.items = [];  *   }  *  *   toggle() {  *     this.items.length ? this.hideItems() : this.showItems();  *    }  *  }  * ```  *  * Here is the animation trigger code:  *  * ```typescript  * trigger('listAnimation', [  *   transition('* => *', [ // each time the binding value changes  *     query(':leave', [  *       stagger(100, [  *         animate('0.5s', style({ opacity: 0 }))  *       ])  *     ]),  *     query(':enter', [  *       style({ opacity: 0 }),  *       stagger(100, [  *         animate('0.5s', style({ opacity: 1 }))  *       ])  *     ])  *   ])  * ])  * ```  *  * @publicApi  */ export function stagger(timings: string|number, animation: AnimationMetadata|AnimationMetadata[]):     AnimationStaggerMetadata {   return {type: AnimationMetadataType.Stagger, timings, animation}; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ export function scheduleMicroTask(cb: () => any) {   Promise.resolve().then(cb); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {scheduleMicroTask} from '../util';  /**  * Provides programmatic control of a reusable animation sequence,  * built using the <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code>  * method which returns an `AnimationFactory`, whose  * <code>[create](api/animations/AnimationFactory#create)()</code> method instantiates and  * initializes this interface.  *  * @see `AnimationBuilder`  * @see `AnimationFactory`  * @see `animate()`  *  * @publicApi  */ export interface AnimationPlayer {   /**    * Provides a callback to invoke when the animation finishes.    * @param fn The callback function.    * @see `finish()`    */   onDone(fn: () => void): void;   /**    * Provides a callback to invoke when the animation starts.    * @param fn The callback function.    * @see `run()`    */   onStart(fn: () => void): void;   /**    * Provides a callback to invoke after the animation is destroyed.    * @param fn The callback function.    * @see `destroy()`    * @see `beforeDestroy()`    */   onDestroy(fn: () => void): void;   /**    * Initializes the animation.    */   init(): void;   /**    * Reports whether the animation has started.    * @returns True if the animation has started, false otherwise.    */   hasStarted(): boolean;   /**    * Runs the animation, invoking the `onStart()` callback.    */   play(): void;   /**    * Pauses the animation.    */   pause(): void;   /**    * Restarts the paused animation.    */   restart(): void;   /**    * Ends the animation, invoking the `onDone()` callback.    */   finish(): void;   /**    * Destroys the animation, after invoking the `beforeDestroy()` callback.    * Calls the `onDestroy()` callback when destruction is completed.    */   destroy(): void;   /**    * Resets the animation to its initial state.    */   reset(): void;   /**    * Sets the position of the animation.    * @param position A 0-based offset into the duration, in milliseconds.    */   setPosition(position: any /** TODO #9100 */): void;   /**    * Reports the current position of the animation.    * @returns A 0-based offset into the duration, in milliseconds.    */   getPosition(): number;   /**    * The parent of this player, if any.    */   parentPlayer: AnimationPlayer|null;   /**    * The total run time of the animation, in milliseconds.    */   readonly totalTime: number;   /**    * Provides a callback to invoke before the animation is destroyed.    */   beforeDestroy?: () => any;   /**    * @internal    * Internal    */   triggerCallback?: (phaseName: string) => void;   /**    * @internal    * Internal    */   disabled?: boolean; }  /**  * An empty programmatic controller for reusable animations.  * Used internally when animations are disabled, to avoid  * checking for the null case when an animation player is expected.  *  * @see `animate()`  * @see `AnimationPlayer`  * @see `GroupPlayer`  *  * @publicApi  */ export class NoopAnimationPlayer implements AnimationPlayer {   private _onDoneFns: Function[] = [];   private _onStartFns: Function[] = [];   private _onDestroyFns: Function[] = [];   private _originalOnDoneFns: Function[] = [];   private _originalOnStartFns: Function[] = [];   private _started = false;   private _destroyed = false;   private _finished = false;   private _position = 0;   public parentPlayer: AnimationPlayer|null = null;   public readonly totalTime: number;   constructor(duration: number = 0, delay: number = 0) {     this.totalTime = duration + delay;   }   private _onFinish() {     if (!this._finished) {       this._finished = true;       this._onDoneFns.forEach(fn => fn());       this._onDoneFns = [];     }   }   onStart(fn: () => void): void {     this._originalOnStartFns.push(fn);     this._onStartFns.push(fn);   }   onDone(fn: () => void): void {     this._originalOnDoneFns.push(fn);     this._onDoneFns.push(fn);   }   onDestroy(fn: () => void): void {     this._onDestroyFns.push(fn);   }   hasStarted(): boolean {     return this._started;   }   init(): void {}   play(): void {     if (!this.hasStarted()) {       this._onStart();       this.triggerMicrotask();     }     this._started = true;   }    /** @internal */   triggerMicrotask() {     scheduleMicroTask(() => this._onFinish());   }    private _onStart() {     this._onStartFns.forEach(fn => fn());     this._onStartFns = [];   }    pause(): void {}   restart(): void {}   finish(): void {     this._onFinish();   }   destroy(): void {     if (!this._destroyed) {       this._destroyed = true;       if (!this.hasStarted()) {         this._onStart();       }       this.finish();       this._onDestroyFns.forEach(fn => fn());       this._onDestroyFns = [];     }   }   reset(): void {     this._started = false;     this._finished = false;     this._onStartFns = this._originalOnStartFns;     this._onDoneFns = this._originalOnDoneFns;   }   setPosition(position: number): void {     this._position = this.totalTime ? position * this.totalTime : 1;   }   getPosition(): number {     return this.totalTime ? this._position / this.totalTime : 1;   }    /** @internal */   triggerCallback(phaseName: string): void {     const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;     methods.forEach(fn => fn());     methods.length = 0;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {scheduleMicroTask} from '../util'; import {AnimationPlayer} from './animation_player';  /**  * A programmatic controller for a group of reusable animations.  * Used internally to control animations.  *  * @see `AnimationPlayer`  * @see `{@link animations/group group()}`  *  */ export class AnimationGroupPlayer implements AnimationPlayer {   private _onDoneFns: Function[] = [];   private _onStartFns: Function[] = [];   private _finished = false;   private _started = false;   private _destroyed = false;   private _onDestroyFns: Function[] = [];    public parentPlayer: AnimationPlayer|null = null;   public totalTime: number = 0;   public readonly players: AnimationPlayer[];    constructor(_players: AnimationPlayer[]) {     this.players = _players;     let doneCount = 0;     let destroyCount = 0;     let startCount = 0;     const total = this.players.length;      if (total == 0) {       scheduleMicroTask(() => this._onFinish());     } else {       this.players.forEach(player => {         player.onDone(() => {           if (++doneCount == total) {             this._onFinish();           }         });         player.onDestroy(() => {           if (++destroyCount == total) {             this._onDestroy();           }         });         player.onStart(() => {           if (++startCount == total) {             this._onStart();           }         });       });     }      this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);   }    private _onFinish() {     if (!this._finished) {       this._finished = true;       this._onDoneFns.forEach(fn => fn());       this._onDoneFns = [];     }   }    init(): void {     this.players.forEach(player => player.init());   }    onStart(fn: () => void): void {     this._onStartFns.push(fn);   }    private _onStart() {     if (!this.hasStarted()) {       this._started = true;       this._onStartFns.forEach(fn => fn());       this._onStartFns = [];     }   }    onDone(fn: () => void): void {     this._onDoneFns.push(fn);   }    onDestroy(fn: () => void): void {     this._onDestroyFns.push(fn);   }    hasStarted() {     return this._started;   }    play() {     if (!this.parentPlayer) {       this.init();     }     this._onStart();     this.players.forEach(player => player.play());   }    pause(): void {     this.players.forEach(player => player.pause());   }    restart(): void {     this.players.forEach(player => player.restart());   }    finish(): void {     this._onFinish();     this.players.forEach(player => player.finish());   }    destroy(): void {     this._onDestroy();   }    private _onDestroy() {     if (!this._destroyed) {       this._destroyed = true;       this._onFinish();       this.players.forEach(player => player.destroy());       this._onDestroyFns.forEach(fn => fn());       this._onDestroyFns = [];     }   }    reset(): void {     this.players.forEach(player => player.reset());     this._destroyed = false;     this._finished = false;     this._started = false;   }    setPosition(p: number): void {     const timeAtPosition = p * this.totalTime;     this.players.forEach(player => {       const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;       player.setPosition(position);     });   }    getPosition(): number {     const longestPlayer =         this.players.reduce((longestSoFar: AnimationPlayer|null, player: AnimationPlayer) => {           const newPlayerIsLongest =               longestSoFar === null || player.totalTime > longestSoFar.totalTime;           return newPlayerIsLongest ? player : longestSoFar;         }, null);     return longestPlayer != null ? longestPlayer.getPosition() : 0;   }    beforeDestroy(): void {     this.players.forEach(player => {       if (player.beforeDestroy) {         player.beforeDestroy();       }     });   }    /** @internal */   triggerCallback(phaseName: string): void {     const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;     methods.forEach(fn => fn());     methods.length = 0;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ export {AnimationGroupPlayer as ɵAnimationGroupPlayer} from './players/animation_group_player'; export const ɵPRE_STYLE = '!'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all animation APIs of the animation package.  */ export {AnimationBuilder, AnimationFactory} from './animation_builder'; export {AnimationEvent} from './animation_event'; export {animate, animateChild, AnimateChildOptions, AnimateTimings, animation, AnimationAnimateChildMetadata, AnimationAnimateMetadata, AnimationAnimateRefMetadata, AnimationGroupMetadata, AnimationKeyframesSequenceMetadata, AnimationMetadata, AnimationMetadataType, AnimationOptions, AnimationQueryMetadata, AnimationQueryOptions, AnimationReferenceMetadata, AnimationSequenceMetadata, AnimationStaggerMetadata, AnimationStateMetadata, AnimationStyleMetadata, AnimationTransitionMetadata, AnimationTriggerMetadata, AUTO_STYLE, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, ɵStyleData, ɵStyleDataMap} from './animation_metadata'; export {AnimationPlayer, NoopAnimationPlayer} from './players/animation_player';  export * from './private_export'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/animations'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 159 --------------------
{"version":3,"file":"testing.mjs","sources":["../../../../../../../packages/animations/browser/src/error_helpers.ts","../../../../../../../packages/animations/browser/src/render/web_animations/animatable_props_set.ts","../../../../../../../packages/animations/browser/src/render/shared.ts","../../../../../../../packages/animations/browser/src/util.ts","../../../../../../../packages/animations/browser/testing/src/mock_animation_driver.ts","../../../../../../../packages/animations/browser/testing/public_api.ts","../../../../../../../packages/animations/browser/testing/index.ts","../../../../../../../packages/animations/browser/testing/testing.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from './errors';  const LINE_START = '\  - ';  export function invalidTimingValue(exp: string|number): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_TIMING_VALUE,       ngDevMode && `The provided timing value \"${exp}\" is invalid.`); }  export function negativeStepValue(): Error {   return new RuntimeError(       RuntimeErrorCode.NEGATIVE_STEP_VALUE,       ngDevMode && 'Duration values below 0 are not allowed for this animation step.'); }  export function negativeDelayValue(): Error {   return new RuntimeError(       RuntimeErrorCode.NEGATIVE_DELAY_VALUE,       ngDevMode && 'Delay values below 0 are not allowed for this animation step.'); }  export function invalidStyleParams(varName: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STYLE_PARAMS,       ngDevMode &&           `Unable to resolve the local animation param ${varName} in the given list of values`); }  export function invalidParamValue(varName: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_PARAM_VALUE,       ngDevMode && `Please provide a value for the animation param ${varName}`); }  export function invalidNodeType(nodeType: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_NODE_TYPE,       ngDevMode && `Unable to resolve animation metadata node #${nodeType}`); }  export function invalidCssUnitValue(userProvidedProperty: string, value: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_CSS_UNIT_VALUE,       ngDevMode && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`); }  export function invalidTrigger(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_TRIGGER,       ngDevMode &&           'animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))'); }  export function invalidDefinition(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_DEFINITION,       ngDevMode && 'only state() and transition() definitions can sit inside of a trigger()'); }  export function invalidState(metadataName: string, missingSubs: string[]): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STATE,       ngDevMode &&           `state(\"${               metadataName}\", ...) must define default values for all the following style substitutions: ${               missingSubs.join(', ')}`); }  export function invalidStyleValue(value: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STYLE_VALUE,       ngDevMode && `The provided style string value ${value} is not allowed.`); }  export function invalidProperty(prop: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_PROPERTY,       ngDevMode &&           `The provided animation property \"${               prop}\" is not a supported CSS property for animations`); }  export function invalidParallelAnimation(     prop: string, firstStart: number, firstEnd: number, secondStart: number,     secondEnd: number): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_PARALLEL_ANIMATION,       ngDevMode &&           `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${               firstEnd}ms\" is also being animated in a parallel animation between the times of \"${               secondStart}ms\" and \"${secondEnd}ms\"`); }  export function invalidKeyframes(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_KEYFRAMES,       ngDevMode && `keyframes() must be placed inside of a call to animate()`); }  export function invalidOffset(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_OFFSET,       ngDevMode && `Please ensure that all keyframe offsets are between 0 and 1`); }  export function keyframeOffsetsOutOfOrder(): Error {   return new RuntimeError(       RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER,       ngDevMode && `Please ensure that all keyframe offsets are in order`); }  export function keyframesMissingOffsets(): Error {   return new RuntimeError(       RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS,       ngDevMode && `Not all style() steps within the declared keyframes() contain offsets`); }  export function invalidStagger(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STAGGER,       ngDevMode && `stagger() can only be used inside of query()`); }  export function invalidQuery(selector: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_QUERY,       ngDevMode &&           `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${               selector}\", { optional: true })\\` if you wish to allow this.)`); }  export function invalidExpression(expr: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_EXPRESSION,       ngDevMode && `The provided transition expression \"${expr}\" is not supported`); }  export function invalidTransitionAlias(alias: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_TRANSITION_ALIAS,       ngDevMode && `The transition alias value \"${alias}\" is not supported`); }  export function validationFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.VALIDATION_FAILED,       ngDevMode && `animation validation failed:\ ${errors.map(err => err.message).join('\ ')}`); }  export function buildingFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.BUILDING_FAILED,       ngDevMode && `animation building failed:\ ${errors.map(err => err.message).join('\ ')}`); }  export function triggerBuildFailed(name: string, errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRIGGER_BUILD_FAILED,       ngDevMode &&           `The animation trigger \"${name}\" has failed to build due to the following errors:\  - ${               errors.map(err => err.message).join('\  - ')}`); }  export function animationFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.ANIMATION_FAILED,       ngDevMode &&           `Unable to animate due to the following errors:${LINE_START}${               errors.map(err => err.message).join(LINE_START)}`); }  export function registerFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.REGISTRATION_FAILED,       ngDevMode &&           `Unable to build the animation due to the following errors: ${               errors.map(err => err.message).join('\ ')}`); }  export function missingOrDestroyedAnimation(): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION,       ngDevMode && 'The requested animation doesn\\'t exist or has already been destroyed'); }  export function createAnimationFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.CREATE_ANIMATION_FAILED,       ngDevMode &&           `Unable to create the animation due to the following errors:${               errors.map(err => err.message).join('\ ')}`); }  export function missingPlayer(id: string): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_PLAYER,       ngDevMode && `Unable to find the timeline player referenced by ${id}`); }  export function missingTrigger(phase: string, name: string): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_TRIGGER,       ngDevMode &&           `Unable to listen on the animation trigger event \"${               phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`); }  export function missingEvent(name: string): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_EVENT,       ngDevMode &&           `Unable to listen on the animation trigger \"${               name}\" because the provided event is undefined!`); }  export function unsupportedTriggerEvent(phase: string, name: string): Error {   return new RuntimeError(       RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT,       ngDevMode &&           `The provided animation trigger event \"${phase}\" for the animation trigger \"${               name}\" is not supported!`); }  export function unregisteredTrigger(name: string): Error {   return new RuntimeError(       RuntimeErrorCode.UNREGISTERED_TRIGGER,       ngDevMode && `The provided animation trigger \"${name}\" has not been registered!`); }  export function triggerTransitionsFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED,       ngDevMode &&           `Unable to process animations due to the following failed trigger transitions\  ${               errors.map(err => err.message).join('\ ')}`); }  export function triggerParsingFailed(name: string, errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRIGGER_PARSING_FAILED,       ngDevMode &&           `Animation parsing for the ${name} trigger have failed:${LINE_START}${               errors.map(err => err.message).join(LINE_START)}`); }  export function transitionFailed(name: string, errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRANSITION_FAILED,       ngDevMode && `@${name} has failed due to:\  ${errors.map(err => err.message).join('\ - ')}`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Set of all animatable CSS properties  *  * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties  */ export const ANIMATABLE_PROP_SET = new Set([   '-moz-outline-radius',   '-moz-outline-radius-bottomleft',   '-moz-outline-radius-bottomright',   '-moz-outline-radius-topleft',   '-moz-outline-radius-topright',   '-ms-grid-columns',   '-ms-grid-rows',   '-webkit-line-clamp',   '-webkit-text-fill-color',   '-webkit-text-stroke',   '-webkit-text-stroke-color',   'accent-color',   'all',   'backdrop-filter',   'background',   'background-color',   'background-position',   'background-size',   'block-size',   'border',   'border-block-end',   'border-block-end-color',   'border-block-end-width',   'border-block-start',   'border-block-start-color',   'border-block-start-width',   'border-bottom',   'border-bottom-color',   'border-bottom-left-radius',   'border-bottom-right-radius',   'border-bottom-width',   'border-color',   'border-end-end-radius',   'border-end-start-radius',   'border-image-outset',   'border-image-slice',   'border-image-width',   'border-inline-end',   'border-inline-end-color',   'border-inline-end-width',   'border-inline-start',   'border-inline-start-color',   'border-inline-start-width',   'border-left',   'border-left-color',   'border-left-width',   'border-radius',   'border-right',   'border-right-color',   'border-right-width',   'border-start-end-radius',   'border-start-start-radius',   'border-top',   'border-top-color',   'border-top-left-radius',   'border-top-right-radius',   'border-top-width',   'border-width',   'bottom',   'box-shadow',   'caret-color',   'clip',   'clip-path',   'color',   'column-count',   'column-gap',   'column-rule',   'column-rule-color',   'column-rule-width',   'column-width',   'columns',   'filter',   'flex',   'flex-basis',   'flex-grow',   'flex-shrink',   'font',   'font-size',   'font-size-adjust',   'font-stretch',   'font-variation-settings',   'font-weight',   'gap',   'grid-column-gap',   'grid-gap',   'grid-row-gap',   'grid-template-columns',   'grid-template-rows',   'height',   'inline-size',   'input-security',   'inset',   'inset-block',   'inset-block-end',   'inset-block-start',   'inset-inline',   'inset-inline-end',   'inset-inline-start',   'left',   'letter-spacing',   'line-clamp',   'line-height',   'margin',   'margin-block-end',   'margin-block-start',   'margin-bottom',   'margin-inline-end',   'margin-inline-start',   'margin-left',   'margin-right',   'margin-top',   'mask',   'mask-border',   'mask-position',   'mask-size',   'max-block-size',   'max-height',   'max-inline-size',   'max-lines',   'max-width',   'min-block-size',   'min-height',   'min-inline-size',   'min-width',   'object-position',   'offset',   'offset-anchor',   'offset-distance',   'offset-path',   'offset-position',   'offset-rotate',   'opacity',   'order',   'outline',   'outline-color',   'outline-offset',   'outline-width',   'padding',   'padding-block-end',   'padding-block-start',   'padding-bottom',   'padding-inline-end',   'padding-inline-start',   'padding-left',   'padding-right',   'padding-top',   'perspective',   'perspective-origin',   'right',   'rotate',   'row-gap',   'scale',   'scroll-margin',   'scroll-margin-block',   'scroll-margin-block-end',   'scroll-margin-block-start',   'scroll-margin-bottom',   'scroll-margin-inline',   'scroll-margin-inline-end',   'scroll-margin-inline-start',   'scroll-margin-left',   'scroll-margin-right',   'scroll-margin-top',   'scroll-padding',   'scroll-padding-block',   'scroll-padding-block-end',   'scroll-padding-block-start',   'scroll-padding-bottom',   'scroll-padding-inline',   'scroll-padding-inline-end',   'scroll-padding-inline-start',   'scroll-padding-left',   'scroll-padding-right',   'scroll-padding-top',   'scroll-snap-coordinate',   'scroll-snap-destination',   'scrollbar-color',   'shape-image-threshold',   'shape-margin',   'shape-outside',   'tab-size',   'text-decoration',   'text-decoration-color',   'text-decoration-thickness',   'text-emphasis',   'text-emphasis-color',   'text-indent',   'text-shadow',   'text-underline-offset',   'top',   'transform',   'transform-origin',   'translate',   'vertical-align',   'visibility',   'width',   'word-spacing',   'z-index',   'zoom', ]); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationEvent, AnimationPlayer, AUTO_STYLE, NoopAnimationPlayer, ɵAnimationGroupPlayer, ɵPRE_STYLE as PRE_STYLE, ɵStyleDataMap} from '@angular/animations';  import {AnimationStyleNormalizer} from '../../src/dsl/style_normalization/animation_style_normalizer'; import {AnimationDriver} from '../../src/render/animation_driver'; import {animationFailed} from '../error_helpers';  import {ANIMATABLE_PROP_SET} from './web_animations/animatable_props_set';  // We don't include ambient node types here since @angular/animations/browser // is meant to target the browser so technically it should not depend on node // types. `process` is just declared locally here as a result. declare const process: any;  export function isBrowser(): boolean {   return (typeof window !== 'undefined' && typeof window.document !== 'undefined'); }  export function isNode(): boolean {   // Checking only for `process` isn't enough to identify whether or not we're in a Node   // environment, because Webpack by default will polyfill the `process`. While we can discern   // that Webpack polyfilled it by looking at `process.browser`, it's very Webpack-specific and   // might not be future-proof. Instead we look at the stringified version of `process` which   // is `[object process]` in Node and `[object Object]` when polyfilled.   return typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; }  export function optimizeGroupPlayer(players: AnimationPlayer[]): AnimationPlayer {   switch (players.length) {     case 0:       return new NoopAnimationPlayer();     case 1:       return players[0];     default:       return new ɵAnimationGroupPlayer(players);   } }  export function normalizeKeyframes(     driver: AnimationDriver, normalizer: AnimationStyleNormalizer, element: any,     keyframes: Array<ɵStyleDataMap>, preStyles: ɵStyleDataMap = new Map(),     postStyles: ɵStyleDataMap = new Map()): Array<ɵStyleDataMap> {   const errors: Error[] = [];   const normalizedKeyframes: Array<ɵStyleDataMap> = [];   let previousOffset = -1;   let previousKeyframe: ɵStyleDataMap|null = null;   keyframes.forEach(kf => {     const offset = kf.get('offset') as number;     const isSameOffset = offset == previousOffset;     const normalizedKeyframe: ɵStyleDataMap = (isSameOffset && previousKeyframe) || new Map();     kf.forEach((val, prop) => {       let normalizedProp = prop;       let normalizedValue = val;       if (prop !== 'offset') {         normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);         switch (normalizedValue) {           case PRE_STYLE:             normalizedValue = preStyles.get(prop)!;             break;            case AUTO_STYLE:             normalizedValue = postStyles.get(prop)!;             break;            default:             normalizedValue =                 normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);             break;         }       }       normalizedKeyframe.set(normalizedProp, normalizedValue);     });     if (!isSameOffset) {       normalizedKeyframes.push(normalizedKeyframe);     }     previousKeyframe = normalizedKeyframe;     previousOffset = offset;   });   if (errors.length) {     throw animationFailed(errors);   }    return normalizedKeyframes; }  export function listenOnPlayer(     player: AnimationPlayer, eventName: string, event: AnimationEvent|undefined,     callback: (event: any) => any) {   switch (eventName) {     case 'start':       player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));       break;     case 'done':       player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));       break;     case 'destroy':       player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));       break;   } }  export function copyAnimationEvent(     e: AnimationEvent, phaseName: string, player: AnimationPlayer): AnimationEvent {   const totalTime = player.totalTime;   const disabled = (player as any).disabled ? true : false;   const event = makeAnimationEvent(       e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName,       totalTime == undefined ? e.totalTime : totalTime, disabled);   const data = (e as any)['_data'];   if (data != null) {     (event as any)['_data'] = data;   }   return event; }  export function makeAnimationEvent(     element: any, triggerName: string, fromState: string, toState: string, phaseName: string = '',     totalTime: number = 0, disabled?: boolean): AnimationEvent {   return {element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled}; }  export function getOrSetDefaultValue<T, V>(map: Map<T, V>, key: T, defaultValue: V) {   let value = map.get(key);   if (!value) {     map.set(key, value = defaultValue);   }   return value; }  export function parseTimelineCommand(command: string): [string, string] {   const separatorPos = command.indexOf(':');   const id = command.substring(1, separatorPos);   const action = command.slice(separatorPos + 1);   return [id, action]; }  let _contains: (elm1: any, elm2: any) => boolean = (elm1: any, elm2: any) => false; let _query: (element: any, selector: string, multi: boolean) => any[] =     (element: any, selector: string, multi: boolean) => {       return [];     }; let _documentElement: unknown|null = null;  export function getParentElement(element: any): unknown|null {   const parent = element.parentNode || element.host;  // consider host to support shadow DOM   if (parent === _documentElement) {     return null;   }   return parent; }  // Define utility methods for browsers and platform-server(domino) where Element // and utility methods exist. const _isNode = isNode(); if (_isNode || typeof Element !== 'undefined') {   if (!isBrowser()) {     _contains = (elm1, elm2) => elm1.contains(elm2);   } else {     // Read the document element in an IIFE that's been marked pure to avoid a top-level property     // read that may prevent tree-shaking.     _documentElement = /* @__PURE__ */ (() => document.documentElement)();     _contains = (elm1, elm2) => {       while (elm2) {         if (elm2 === elm1) {           return true;         }         elm2 = getParentElement(elm2);       }       return false;     };   }    _query = (element: any, selector: string, multi: boolean): any[] => {     if (multi) {       return Array.from(element.querySelectorAll(selector));     }     const elem = element.querySelector(selector);     return elem ? [elem] : [];   }; }  function containsVendorPrefix(prop: string): boolean {   // Webkit is the only real popular vendor prefix nowadays   // cc: http://shouldiprefix.com/   return prop.substring(1, 6) == 'ebkit';  // webkit or Webkit }  let _CACHED_BODY: {style: any}|null = null; let _IS_WEBKIT = false; export function validateStyleProperty(prop: string): boolean {   if (!_CACHED_BODY) {     _CACHED_BODY = getBodyNode() || {};     _IS_WEBKIT = _CACHED_BODY!.style ? ('WebkitAppearance' in _CACHED_BODY!.style) : false;   }    let result = true;   if (_CACHED_BODY!.style && !containsVendorPrefix(prop)) {     result = prop in _CACHED_BODY!.style;     if (!result && _IS_WEBKIT) {       const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1);       result = camelProp in _CACHED_BODY!.style;     }   }    return result; }  export function validateWebAnimatableStyleProperty(prop: string): boolean {   return ANIMATABLE_PROP_SET.has(prop); }  export function getBodyNode(): any|null {   if (typeof document != 'undefined') {     return document.body;   }   return null; }  export const containsElement = _contains; export const invokeQuery = _query;  export function hypenatePropsKeys(original: ɵStyleDataMap): ɵStyleDataMap {   const newMap: ɵStyleDataMap = new Map();   original.forEach((val, prop) => {     const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');     newMap.set(newProp, val);   });   return newMap; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimateTimings, AnimationMetadata, AnimationMetadataType, AnimationOptions, sequence, ɵStyleData, ɵStyleDataMap} from '@angular/animations';  import {Ast as AnimationAst, AstVisitor as AnimationAstVisitor} from './dsl/animation_ast'; import {AnimationDslVisitor} from './dsl/animation_dsl_visitor'; import {invalidNodeType, invalidParamValue, invalidStyleParams, invalidTimingValue, negativeDelayValue, negativeStepValue} from './error_helpers'; import {isNode} from './render/shared';  export const ONE_SECOND = 1000;  export const SUBSTITUTION_EXPR_START = '{{'; export const SUBSTITUTION_EXPR_END = '}}'; export const ENTER_CLASSNAME = 'ng-enter'; export const LEAVE_CLASSNAME = 'ng-leave'; export const NG_TRIGGER_CLASSNAME = 'ng-trigger'; export const NG_TRIGGER_SELECTOR = '.ng-trigger'; export const NG_ANIMATING_CLASSNAME = 'ng-animating'; export const NG_ANIMATING_SELECTOR = '.ng-animating';  export function resolveTimingValue(value: string|number) {   if (typeof value == 'number') return value;    const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);   if (!matches || matches.length < 2) return 0;    return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]); }  function _convertTimeValueToMS(value: number, unit: string): number {   switch (unit) {     case 's':       return value * ONE_SECOND;     default:  // ms or something else       return value;   } }  export function resolveTiming(     timings: string|number|AnimateTimings, errors: Error[], allowNegativeValues?: boolean) {   return timings.hasOwnProperty('duration') ?       <AnimateTimings>timings :       parseTimeExpression(<string|number>timings, errors, allowNegativeValues); }  function parseTimeExpression(     exp: string|number, errors: Error[], allowNegativeValues?: boolean): AnimateTimings {   const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;   let duration: number;   let delay: number = 0;   let easing: string = '';   if (typeof exp === 'string') {     const matches = exp.match(regex);     if (matches === null) {       errors.push(invalidTimingValue(exp));       return {duration: 0, delay: 0, easing: ''};     }      duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);      const delayMatch = matches[3];     if (delayMatch != null) {       delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);     }      const easingVal = matches[5];     if (easingVal) {       easing = easingVal;     }   } else {     duration = exp;   }    if (!allowNegativeValues) {     let containsErrors = false;     let startIndex = errors.length;     if (duration < 0) {       errors.push(negativeStepValue());       containsErrors = true;     }     if (delay < 0) {       errors.push(negativeDelayValue());       containsErrors = true;     }     if (containsErrors) {       errors.splice(startIndex, 0, invalidTimingValue(exp));     }   }    return {duration, delay, easing}; }  export function copyObj(     obj: {[key: string]: any}, destination: {[key: string]: any} = {}): {[key: string]: any} {   Object.keys(obj).forEach(prop => {     destination[prop] = obj[prop];   });   return destination; }  export function convertToMap(obj: ɵStyleData): ɵStyleDataMap {   const styleMap: ɵStyleDataMap = new Map();   Object.keys(obj).forEach(prop => {     const val = obj[prop];     styleMap.set(prop, val);   });   return styleMap; }  export function normalizeKeyframes(keyframes: Array<ɵStyleData>|                                    Array<ɵStyleDataMap>): Array<ɵStyleDataMap> {   if (!keyframes.length) {     return [];   }   if (keyframes[0] instanceof Map) {     return keyframes as Array<ɵStyleDataMap>;   }   return keyframes.map(kf => convertToMap(kf as ɵStyleData)); }  export function normalizeStyles(styles: ɵStyleDataMap|Array<ɵStyleDataMap>): ɵStyleDataMap {   const normalizedStyles: ɵStyleDataMap = new Map();   if (Array.isArray(styles)) {     styles.forEach(data => copyStyles(data, normalizedStyles));   } else {     copyStyles(styles, normalizedStyles);   }   return normalizedStyles; }  export function copyStyles(     styles: ɵStyleDataMap, destination: ɵStyleDataMap = new Map(),     backfill?: ɵStyleDataMap): ɵStyleDataMap {   if (backfill) {     for (let [prop, val] of backfill) {       destination.set(prop, val);     }   }   for (let [prop, val] of styles) {     destination.set(prop, val);   }   return destination; }  function getStyleAttributeString(element: any, key: string, value: string) {   // Return the key-value pair string to be added to the style attribute for the   // given CSS style key.   if (value) {     return key + ':' + value + ';';   } else {     return '';   } }  function writeStyleAttribute(element: any) {   // Read the style property of the element and manually reflect it to the   // style attribute. This is needed because Domino on platform-server doesn't   // understand the full set of allowed CSS properties and doesn't reflect some   // of them automatically.   let styleAttrValue = '';   for (let i = 0; i < element.style.length; i++) {     const key = element.style.item(i);     styleAttrValue += getStyleAttributeString(element, key, element.style.getPropertyValue(key));   }   for (const key in element.style) {     // Skip internal Domino properties that don't need to be reflected.     if (!element.style.hasOwnProperty(key) || key.startsWith('_')) {       continue;     }     const dashKey = camelCaseToDashCase(key);     styleAttrValue += getStyleAttributeString(element, dashKey, element.style[key]);   }   element.setAttribute('style', styleAttrValue); }  export function setStyles(element: any, styles: ɵStyleDataMap, formerStyles?: ɵStyleDataMap) {   if (element['style']) {     styles.forEach((val, prop) => {       const camelProp = dashCaseToCamelCase(prop);       if (formerStyles && !formerStyles.has(prop)) {         formerStyles.set(prop, element.style[camelProp]);       }       element.style[camelProp] = val;     });     // On the server set the 'style' attribute since it's not automatically reflected.     if (isNode()) {       writeStyleAttribute(element);     }   } }  export function eraseStyles(element: any, styles: ɵStyleDataMap) {   if (element['style']) {     styles.forEach((_, prop) => {       const camelProp = dashCaseToCamelCase(prop);       element.style[camelProp] = '';     });     // On the server set the 'style' attribute since it's not automatically reflected.     if (isNode()) {       writeStyleAttribute(element);     }   } }  export function normalizeAnimationEntry(steps: AnimationMetadata|                                         AnimationMetadata[]): AnimationMetadata {   if (Array.isArray(steps)) {     if (steps.length == 1) return steps[0];     return sequence(steps);   }   return steps as AnimationMetadata; }  export function validateStyleParams(     value: string|number|null|undefined, options: AnimationOptions, errors: Error[]) {   const params = options.params || {};   const matches = extractStyleParams(value);   if (matches.length) {     matches.forEach(varName => {       if (!params.hasOwnProperty(varName)) {         errors.push(invalidStyleParams(varName));       }     });   } }  const PARAM_REGEX =     new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g'); export function extractStyleParams(value: string|number|null|undefined): string[] {   let params: string[] = [];   if (typeof value === 'string') {     let match: any;     while (match = PARAM_REGEX.exec(value)) {       params.push(match[1] as string);     }     PARAM_REGEX.lastIndex = 0;   }   return params; }  export function interpolateParams(     value: string|number, params: {[name: string]: any}, errors: Error[]): string|number {   const original = value.toString();   const str = original.replace(PARAM_REGEX, (_, varName) => {     let localVal = params[varName];     // this means that the value was never overridden by the data passed in by the user     if (localVal == null) {       errors.push(invalidParamValue(varName));       localVal = '';     }     return localVal.toString();   });    // we do this to assert that numeric values stay as they are   return str == original ? value : str; }  export function iteratorToArray(iterator: any): any[] {   const arr: any[] = [];   let item = iterator.next();   while (!item.done) {     arr.push(item.value);     item = iterator.next();   }   return arr; }  const DASH_CASE_REGEXP = /-+([a-z0-9])/g; export function dashCaseToCamelCase(input: string): string {   return input.replace(DASH_CASE_REGEXP, (...m: any[]) => m[1].toUpperCase()); }  export function camelCaseToDashCase(input: string): string {   return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); }  export function allowPreviousPlayerStylesMerge(duration: number, delay: number) {   return duration === 0 || delay === 0; }  export function balancePreviousStylesIntoKeyframes(     element: any, keyframes: Array<ɵStyleDataMap>, previousStyles: ɵStyleDataMap) {   if (previousStyles.size && keyframes.length) {     let startingKeyframe = keyframes[0];     let missingStyleProps: string[] = [];     previousStyles.forEach((val, prop) => {       if (!startingKeyframe.has(prop)) {         missingStyleProps.push(prop);       }       startingKeyframe.set(prop, val);     });      if (missingStyleProps.length) {       for (let i = 1; i < keyframes.length; i++) {         let kf = keyframes[i];         missingStyleProps.forEach(prop => kf.set(prop, computeStyle(element, prop)));       }     }   }   return keyframes; }  export function visitDslNode(     visitor: AnimationDslVisitor, node: AnimationMetadata, context: any): any; export function visitDslNode(     visitor: AnimationAstVisitor, node: AnimationAst<AnimationMetadataType>, context: any): any; export function visitDslNode(visitor: any, node: any, context: any): any {   switch (node.type) {     case AnimationMetadataType.Trigger:       return visitor.visitTrigger(node, context);     case AnimationMetadataType.State:       return visitor.visitState(node, context);     case AnimationMetadataType.Transition:       return visitor.visitTransition(node, context);     case AnimationMetadataType.Sequence:       return visitor.visitSequence(node, context);     case AnimationMetadataType.Group:       return visitor.visitGroup(node, context);     case AnimationMetadataType.Animate:       return visitor.visitAnimate(node, context);     case AnimationMetadataType.Keyframes:       return visitor.visitKeyframes(node, context);     case AnimationMetadataType.Style:       return visitor.visitStyle(node, context);     case AnimationMetadataType.Reference:       return visitor.visitReference(node, context);     case AnimationMetadataType.AnimateChild:       return visitor.visitAnimateChild(node, context);     case AnimationMetadataType.AnimateRef:       return visitor.visitAnimateRef(node, context);     case AnimationMetadataType.Query:       return visitor.visitQuery(node, context);     case AnimationMetadataType.Stagger:       return visitor.visitStagger(node, context);     default:       throw invalidNodeType(node.type);   } }  export function computeStyle(element: any, prop: string): string {   return (<any>window.getComputedStyle(element))[prop]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationPlayer, AUTO_STYLE, NoopAnimationPlayer, ɵStyleDataMap} from '@angular/animations'; import {AnimationDriver, ɵallowPreviousPlayerStylesMerge as allowPreviousPlayerStylesMerge, ɵcontainsElement as containsElement, ɵgetParentElement as getParentElement, ɵinvokeQuery as invokeQuery, ɵnormalizeKeyframes as normalizeKeyframes, ɵvalidateStyleProperty as validateStyleProperty,} from '@angular/animations/browser';  import {validateWebAnimatableStyleProperty} from '../../src/render/shared'; import {camelCaseToDashCase} from '../../src/util';  /**  * @publicApi  */ export class MockAnimationDriver implements AnimationDriver {   static log: AnimationPlayer[] = [];    validateStyleProperty(prop: string): boolean {     return validateStyleProperty(prop);   }    validateAnimatableStyleProperty(prop: string): boolean {     const cssProp = camelCaseToDashCase(prop);     return validateWebAnimatableStyleProperty(cssProp);   }    matchesElement(_element: any, _selector: string): boolean {     return false;   }    containsElement(elm1: any, elm2: any): boolean {     return containsElement(elm1, elm2);   }    getParentElement(element: unknown): unknown {     return getParentElement(element);   }    query(element: any, selector: string, multi: boolean): any[] {     return invokeQuery(element, selector, multi);   }    computeStyle(element: any, prop: string, defaultValue?: string): string {     return defaultValue || '';   }    animate(       element: any, keyframes: Array<ɵStyleDataMap>, duration: number, delay: number,       easing: string, previousPlayers: any[] = []): MockAnimationPlayer {     const player =         new MockAnimationPlayer(element, keyframes, duration, delay, easing, previousPlayers);     MockAnimationDriver.log.push(<AnimationPlayer>player);     return player;   } }  /**  * @publicApi  */ export class MockAnimationPlayer extends NoopAnimationPlayer {   private __finished = false;   private __started = false;   public previousStyles: ɵStyleDataMap = new Map();   private _onInitFns: (() => any)[] = [];   public currentSnapshot: ɵStyleDataMap = new Map();   private _keyframes: Array<ɵStyleDataMap> = [];    constructor(       public element: any, public keyframes: Array<ɵStyleDataMap>, public duration: number,       public delay: number, public easing: string, public previousPlayers: any[]) {     super(duration, delay);      this._keyframes = normalizeKeyframes(keyframes);      if (allowPreviousPlayerStylesMerge(duration, delay)) {       previousPlayers.forEach(player => {         if (player instanceof MockAnimationPlayer) {           const styles = player.currentSnapshot;           styles.forEach((val, prop) => this.previousStyles.set(prop, val));         }       });     }   }    /* @internal */   onInit(fn: () => any) {     this._onInitFns.push(fn);   }    /* @internal */   override init() {     super.init();     this._onInitFns.forEach(fn => fn());     this._onInitFns = [];   }    override reset() {     super.reset();     this.__started = false;   }    override finish(): void {     super.finish();     this.__finished = true;   }    override destroy(): void {     super.destroy();     this.__finished = true;   }    /* @internal */   triggerMicrotask() {}    override play(): void {     super.play();     this.__started = true;   }    override hasStarted() {     return this.__started;   }    beforeDestroy() {     const captures: ɵStyleDataMap = new Map();      this.previousStyles.forEach((val, prop) => captures.set(prop, val));      if (this.hasStarted()) {       // when assembling the captured styles, it's important that       // we build the keyframe styles in the following order:       // {other styles within keyframes, ... previousStyles }       this._keyframes.forEach(kf => {         for (let [prop, val] of kf) {           if (prop !== 'offset') {             captures.set(prop, this.__finished ? val : AUTO_STYLE);           }         }       });     }      this.currentSnapshot = captures;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/testing'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verifcation. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["RuntimeError","normalizeKeyframes","PRE_STYLE","validateStyleProperty","containsElement","getParentElement","invokeQuery","allowPreviousPlayerStylesMerge"],"mappings":"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"}
-------------------- SECTION 160 --------------------
{"version":3,"file":"animations.mjs","sources":["../../../../../../packages/animations/src/animation_builder.ts","../../../../../../packages/animations/src/animation_metadata.ts","../../../../../../packages/animations/src/util.ts","../../../../../../packages/animations/src/players/animation_player.ts","../../../../../../packages/animations/src/players/animation_group_player.ts","../../../../../../packages/animations/src/private_export.ts","../../../../../../packages/animations/src/animations.ts","../../../../../../packages/animations/public_api.ts","../../../../../../packages/animations/index.ts","../../../../../../packages/animations/animations.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationMetadata, AnimationOptions} from './animation_metadata'; import {AnimationPlayer} from './players/animation_player';  /**  * An injectable service that produces an animation sequence programmatically within an  * Angular component or directive.  * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.  *  * @usageNotes  *  * To use this service, add it to your component or directive as a dependency.  * The service is instantiated along with your component.  *  * Apps do not typically need to create their own animation players, but if you  * do need to, follow these steps:  *  * 1. Use the <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code> method  * to create a programmatic animation. The method returns an `AnimationFactory` instance.  *  * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.  *  * 3. Use the player object to control the animation programmatically.  *  * For example:  *  * ```ts  * // import the service from BrowserAnimationsModule  * import {AnimationBuilder} from '@angular/animations';  * // require the service as a dependency  * class MyCmp {  *   constructor(private _builder: AnimationBuilder) {}  *  *   makeAnimation(element: any) {  *     // first define a reusable animation  *     const myAnimation = this._builder.build([  *       style({ width: 0 }),  *       animate(1000, style({ width: '100px' }))  *     ]);  *  *     // use the returned factory object to create a player  *     const player = myAnimation.create(element);  *  *     player.play();  *   }  * }  * ```  *  * @publicApi  */ export abstract class AnimationBuilder {   /**    * Builds a factory for producing a defined animation.    * @param animation A reusable animation definition.    * @returns A factory object that can create a player for the defined animation.    * @see `animate()`    */   abstract build(animation: AnimationMetadata|AnimationMetadata[]): AnimationFactory; }  /**  * A factory object returned from the  * <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code>  * method.  *  * @publicApi  */ export abstract class AnimationFactory {   /**    * Creates an `AnimationPlayer` instance for the reusable animation defined by    * the <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code>    * method that created this factory and attaches the new player a DOM element.    *    * @param element The DOM element to which to attach the player.    * @param options A set of options that can include a time delay and    * additional developer-defined parameters.    */   abstract create(element: any, options?: AnimationOptions): AnimationPlayer; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Represents a set of CSS styles for use in an animation style as a generic.  */ export interface ɵStyleData {   [key: string]: string|number; }  /**  * Represents a set of CSS styles for use in an animation style as a Map.  */ export type ɵStyleDataMap = Map<string, string|number>;  /**  * Represents animation-step timing parameters for an animation step.  * @see `animate()`  *  * @publicApi  */ export declare type AnimateTimings = {   /**    * The full duration of an animation step. A number and optional time unit,    * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.    * The default unit is milliseconds.    */   duration: number,   /**    * The delay in applying an animation step. A number and optional time unit.    * The default unit is milliseconds.    */   delay: number,   /**    * An easing style that controls how an animations step accelerates    * and decelerates during its run time. An easing function such as `cubic-bezier()`,    * or one of the following constants:    * - `ease-in`    * - `ease-out`    * - `ease-in-and-out`    */   easing: string | null };  /**  * @description Options that control animation styling and timing.  *  * The following animation functions accept `AnimationOptions` data:  *  * - `transition()`  * - `sequence()`  * - `{@link animations/group group()}`  * - `query()`  * - `animation()`  * - `useAnimation()`  * - `animateChild()`  *  * Programmatic animations built using the `AnimationBuilder` service also  * make use of `AnimationOptions`.  *  * @publicApi  */ export declare interface AnimationOptions {   /**    * Sets a time-delay for initiating an animation action.    * A number and optional time unit, such as \"1s\" or \"10ms\" for one second    * and 10 milliseconds, respectively.The default unit is milliseconds.    * Default value is 0, meaning no delay.    */   delay?: number|string;   /**    * A set of developer-defined parameters that modify styling and timing    * when an animation action starts. An array of key-value pairs, where the provided value    * is used as a default.    */   params?: {[name: string]: any}; }  /**  * Adds duration options to control animation styling and timing for a child animation.  *  * @see `animateChild()`  *  * @publicApi  */ export declare interface AnimateChildOptions extends AnimationOptions {   duration?: number|string; }  /**  * @description Constants for the categories of parameters that can be defined for animations.  *  * A corresponding function defines a set of parameters for each category, and  * collects them into a corresponding `AnimationMetadata` object.  *  * @publicApi  */ export const enum AnimationMetadataType {   /**    * Associates a named animation state with a set of CSS styles.    * See [`state()`](api/animations/state)    */   State = 0,   /**    * Data for a transition from one animation state to another.    * See `transition()`    */   Transition = 1,   /**    * Contains a set of animation steps.    * See `sequence()`    */   Sequence = 2,   /**    * Contains a set of animation steps.    * See `{@link animations/group group()}`    */   Group = 3,   /**    * Contains an animation step.    * See `animate()`    */   Animate = 4,   /**    * Contains a set of animation steps.    * See `keyframes()`    */   Keyframes = 5,   /**    * Contains a set of CSS property-value pairs into a named style.    * See `style()`    */   Style = 6,   /**    * Associates an animation with an entry trigger that can be attached to an element.    * See `trigger()`    */   Trigger = 7,   /**    * Contains a re-usable animation.    * See `animation()`    */   Reference = 8,   /**    * Contains data to use in executing child animations returned by a query.    * See `animateChild()`    */   AnimateChild = 9,   /**    * Contains animation parameters for a re-usable animation.    * See `useAnimation()`    */   AnimateRef = 10,   /**    * Contains child-animation query data.    * See `query()`    */   Query = 11,   /**    * Contains data for staggering an animation sequence.    * See `stagger()`    */   Stagger = 12 }  /**  * Specifies automatic styling.  *  * @publicApi  */ export const AUTO_STYLE = '*';  /**  * Base for animation data structures.  *  * @publicApi  */ export interface AnimationMetadata {   type: AnimationMetadataType; }  /**  * Contains an animation trigger. Instantiated and returned by the  * `trigger()` function.  *  * @publicApi  */ export interface AnimationTriggerMetadata extends AnimationMetadata {   /**    * The trigger name, used to associate it with an element. Unique within the component.    */   name: string;   /**    * An animation definition object, containing an array of state and transition declarations.    */   definitions: AnimationMetadata[];   /**    * An options object containing a delay and    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation. Default delay is 0.    */   options: {params?: {[name: string]: any}}|null; }  /**  * Encapsulates an animation state by associating a state name with a set of CSS styles.  * Instantiated and returned by the [`state()`](api/animations/state) function.  *  * @publicApi  */ export interface AnimationStateMetadata extends AnimationMetadata {   /**    * The state name, unique within the component.    */   name: string;   /**    *  The CSS styles associated with this state.    */   styles: AnimationStyleMetadata;   /**    * An options object containing    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation.    */   options?: {params: {[name: string]: any}}; }  /**  * Encapsulates an animation transition. Instantiated and returned by the  * `transition()` function.  *  * @publicApi  */ export interface AnimationTransitionMetadata extends AnimationMetadata {   /**    * An expression that describes a state change.    */   expr: string|       ((fromState: string, toState: string, element?: any,         params?: {[key: string]: any}) => boolean);   /**    * One or more animation objects to which this transition applies.    */   animation: AnimationMetadata|AnimationMetadata[];   /**    * An options object containing a delay and    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation. Default delay is 0.    */   options: AnimationOptions|null; }  /**  * Encapsulates a reusable animation, which is a collection of individual animation steps.  * Instantiated and returned by the `animation()` function, and  * passed to the `useAnimation()` function.  *  * @publicApi  */ export interface AnimationReferenceMetadata extends AnimationMetadata {   /**    *  One or more animation step objects.    */   animation: AnimationMetadata|AnimationMetadata[];   /**    * An options object containing a delay and    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation. Default delay is 0.    */   options: AnimationOptions|null; }  /**  * Encapsulates an animation query. Instantiated and returned by  * the `query()` function.  *  * @publicApi  */ export interface AnimationQueryMetadata extends AnimationMetadata {   /**    *  The CSS selector for this query.    */   selector: string;   /**    * One or more animation step objects.    */   animation: AnimationMetadata|AnimationMetadata[];   /**    * A query options object.    */   options: AnimationQueryOptions|null; }  /**  * Encapsulates a keyframes sequence. Instantiated and returned by  * the `keyframes()` function.  *  * @publicApi  */ export interface AnimationKeyframesSequenceMetadata extends AnimationMetadata {   /**    * An array of animation styles.    */   steps: AnimationStyleMetadata[]; }  /**  * Encapsulates an animation style. Instantiated and returned by  * the `style()` function.  *  * @publicApi  */ export interface AnimationStyleMetadata extends AnimationMetadata {   /**    * A set of CSS style properties.    */   styles: '*'|{[key: string]: string | number}|Array<{[key: string]: string | number}|'*'>;   /**    * A percentage of the total animate time at which the style is to be applied.    */   offset: number|null; }  /**  * Encapsulates an animation step. Instantiated and returned by  * the `animate()` function.  *  * @publicApi  */ export interface AnimationAnimateMetadata extends AnimationMetadata {   /**    * The timing data for the step.    */   timings: string|number|AnimateTimings;   /**    * A set of styles used in the step.    */   styles: AnimationStyleMetadata|AnimationKeyframesSequenceMetadata|null; }  /**  * Encapsulates a child animation, that can be run explicitly when the parent is run.  * Instantiated and returned by the `animateChild` function.  *  * @publicApi  */ export interface AnimationAnimateChildMetadata extends AnimationMetadata {   /**    * An options object containing a delay and    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation. Default delay is 0.    */   options: AnimationOptions|null; }  /**  * Encapsulates a reusable animation.  * Instantiated and returned by the `useAnimation()` function.  *  * @publicApi  */ export interface AnimationAnimateRefMetadata extends AnimationMetadata {   /**    * An animation reference object.    */   animation: AnimationReferenceMetadata;   /**    * An options object containing a delay and    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation. Default delay is 0.    */   options: AnimationOptions|null; }  /**  * Encapsulates an animation sequence.  * Instantiated and returned by the `sequence()` function.  *  * @publicApi  */ export interface AnimationSequenceMetadata extends AnimationMetadata {   /**    *  An array of animation step objects.    */   steps: AnimationMetadata[];   /**    * An options object containing a delay and    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation. Default delay is 0.    */   options: AnimationOptions|null; }  /**  * Encapsulates an animation group.  * Instantiated and returned by the `{@link animations/group group()}` function.  *  * @publicApi  */ export interface AnimationGroupMetadata extends AnimationMetadata {   /**    * One or more animation or style steps that form this group.    */   steps: AnimationMetadata[];   /**    * An options object containing a delay and    * developer-defined parameters that provide styling defaults and    * can be overridden on invocation. Default delay is 0.    */   options: AnimationOptions|null; }  /**  * Encapsulates animation query options.  * Passed to the `query()` function.  *  * @publicApi  */ export declare interface AnimationQueryOptions extends AnimationOptions {   /**    * True if this query is optional, false if it is required. Default is false.    * A required query throws an error if no elements are retrieved when    * the query is executed. An optional query does not.    *    */   optional?: boolean;   /**    * A maximum total number of results to return from the query.    * If negative, results are limited from the end of the query list towards the beginning.    * By default, results are not limited.    */   limit?: number; }  /**  * Encapsulates parameters for staggering the start times of a set of animation steps.  * Instantiated and returned by the `stagger()` function.  *  * @publicApi  **/ export interface AnimationStaggerMetadata extends AnimationMetadata {   /**    * The timing data for the steps.    */   timings: string|number;   /**    * One or more animation steps.    */   animation: AnimationMetadata|AnimationMetadata[]; }  /**  * Creates a named animation trigger, containing a  list of [`state()`](api/animations/state)  * and `transition()` entries to be evaluated when the expression  * bound to the trigger changes.  *  * @param name An identifying string.  * @param definitions  An animation definition object, containing an array of  * [`state()`](api/animations/state) and `transition()` declarations.  *  * @return An object that encapsulates the trigger data.  *  * @usageNotes  * Define an animation trigger in the `animations` section of `@Component` metadata.  * In the template, reference the trigger by name and bind it to a trigger expression that  * evaluates to a defined animation state, using the following format:  *  * `[@triggerName]=\"expression\"`  *  * Animation trigger bindings convert all values to strings, and then match the  * previous and current values against any linked transitions.  * Booleans can be specified as `1` or `true` and `0` or `false`.  *  * ### Usage Example  *  * The following example creates an animation trigger reference based on the provided  * name value.  * The provided animation value is expected to be an array consisting of state and  * transition declarations.  *  * ```typescript  * @Component({  *   selector: \"my-component\",  *   templateUrl: \"my-component-tpl.html\",  *   animations: [  *     trigger(\"myAnimationTrigger\", [  *       state(...),  *       state(...),  *       transition(...),  *       transition(...)  *     ])  *   ]  * })  * class MyComponent {  *   myStatusExp = \"something\";  * }  * ```  *  * The template associated with this component makes use of the defined trigger  * by binding to an element within its template code.  *  * ```html  * <!-- somewhere inside of my-component-tpl.html -->  * <div [@myAnimationTrigger]=\"myStatusExp\">...</div>  * ```  *  * ### Using an inline function  * The `transition` animation method also supports reading an inline function which can decide  * if its associated animation should be run.  *  * ```typescript  * // this method is run each time the `myAnimationTrigger` trigger value changes.  * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:  string]: any}): boolean {  *   // notice that `element` and `params` are also available here  *   return toState == 'yes-please-animate';  * }  *  * @Component({  *   selector: 'my-component',  *   templateUrl: 'my-component-tpl.html',  *   animations: [  *     trigger('myAnimationTrigger', [  *       transition(myInlineMatcherFn, [  *         // the animation sequence code  *       ]),  *     ])  *   ]  * })  * class MyComponent {  *   myStatusExp = \"yes-please-animate\";  * }  * ```  *  * ### Disabling Animations  * When true, the special animation control binding `@.disabled` binding prevents  * all animations from rendering.  * Place the  `@.disabled` binding on an element to disable  * animations on the element itself, as well as any inner animation triggers  * within the element.  *  * The following example shows how to use this feature:  *  * ```typescript  * @Component({  *   selector: 'my-component',  *   template: `  *     <div [@.disabled]=\"isDisabled\">  *       <div [@childAnimation]=\"exp\"></div>  *     </div>  *   `,  *   animations: [  *     trigger(\"childAnimation\", [  *       // ...  *     ])  *   ]  * })  * class MyComponent {  *   isDisabled = true;  *   exp = '...';  * }  * ```  *  * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,  * along with any inner animations.  *  * ### Disable animations application-wide  * When an area of the template is set to have animations disabled,  * **all** inner components have their animations disabled as well.  * This means that you can disable all animations for an app  * by placing a host binding set on `@.disabled` on the topmost Angular component.  *  * ```typescript  * import {Component, HostBinding} from '@angular/core';  *  * @Component({  *   selector: 'app-component',  *   templateUrl: 'app.component.html',  * })  * class AppComponent {  *   @HostBinding('@.disabled')  *   public animationsDisabled = true;  * }  * ```  *  * ### Overriding disablement of inner animations  * Despite inner animations being disabled, a parent animation can `query()`  * for inner elements located in disabled areas of the template and still animate  * them if needed. This is also the case for when a sub animation is  * queried by a parent and then later animated using `animateChild()`.  *  * ### Detecting when an animation is disabled  * If a region of the DOM (or the entire application) has its animations disabled, the animation  * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides  * an instance of an `AnimationEvent`. If animations are disabled,  * the `.disabled` flag on the event is true.  *  * @publicApi  */ export function trigger(name: string, definitions: AnimationMetadata[]): AnimationTriggerMetadata {   return {type: AnimationMetadataType.Trigger, name, definitions, options: {}}; }  /**  * Defines an animation step that combines styling information with timing information.  *  * @param timings Sets `AnimateTimings` for the parent animation.  * A string in the format \"duration [delay] [easing]\".  *  - Duration and delay are expressed as a number and optional time unit,  * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.  * The default unit is milliseconds.  *  - The easing value controls how the animation accelerates and decelerates  * during its runtime. Value is one of  `ease`, `ease-in`, `ease-out`,  * `ease-in-out`, or a `cubic-bezier()` function call.  * If not supplied, no easing is applied.  *  * For example, the string \"1s 100ms ease-out\" specifies a duration of  * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,  * which decelerates near the end of the duration.  * @param styles Sets AnimationStyles for the parent animation.  * A function call to either `style()` or `keyframes()`  * that returns a collection of CSS style entries to be applied to the parent animation.  * When null, uses the styles from the destination state.  * This is useful when describing an animation step that will complete an animation;  * see \"Animating to the final state\" in `transitions()`.  * @returns An object that encapsulates the animation step.  *  * @usageNotes  * Call within an animation `sequence()`, `{@link animations/group group()}`, or  * `transition()` call to specify an animation step  * that applies given style data to the parent animation for a given amount of time.  *  * ### Syntax Examples  * **Timing examples**  *  * The following examples show various `timings` specifications.  * - `animate(500)` : Duration is 500 milliseconds.  * - `animate(\"1s\")` : Duration is 1000 milliseconds.  * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.  * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.  * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10  * milliseconds, easing according to a bezier curve.  *  * **Style examples**  *  * The following example calls `style()` to set a single CSS style.  * ```typescript  * animate(500, style({ background: \"red\" }))  * ```  * The following example calls `keyframes()` to set a CSS style  * to different values for successive keyframes.  * ```typescript  * animate(500, keyframes(  *  [  *   style({ background: \"blue\" }),  *   style({ background: \"red\" })  *  ])  * ```  *  * @publicApi  */ export function animate(     timings: string|number,     styles: AnimationStyleMetadata|AnimationKeyframesSequenceMetadata|null =         null): AnimationAnimateMetadata {   return {type: AnimationMetadataType.Animate, styles, timings}; }  /**  * @description Defines a list of animation steps to be run in parallel.  *  * @param steps An array of animation step objects.  * - When steps are defined by `style()` or `animate()`  * function calls, each call within the group is executed instantly.  * - To specify offset styles to be applied at a later time, define steps with  * `keyframes()`, or use `animate()` calls with a delay value.  * For example:  *  * ```typescript  * group([  *   animate(\"1s\", style({ background: \"black\" })),  *   animate(\"2s\", style({ color: \"white\" }))  * ])  * ```  *  * @param options An options object containing a delay and  * developer-defined parameters that provide styling defaults and  * can be overridden on invocation.  *  * @return An object that encapsulates the group data.  *  * @usageNotes  * Grouped animations are useful when a series of styles must be  * animated at different starting times and closed off at different ending times.  *  * When called within a `sequence()` or a  * `transition()` call, does not continue to the next  * instruction until all of the inner animation steps have completed.  *  * @publicApi  */ export function group(     steps: AnimationMetadata[], options: AnimationOptions|null = null): AnimationGroupMetadata {   return {type: AnimationMetadataType.Group, steps, options}; }  /**  * Defines a list of animation steps to be run sequentially, one by one.  *  * @param steps An array of animation step objects.  * - Steps defined by `style()` calls apply the styling data immediately.  * - Steps defined by `animate()` calls apply the styling data over time  *   as specified by the timing data.  *  * ```typescript  * sequence([  *   style({ opacity: 0 }),  *   animate(\"1s\", style({ opacity: 1 }))  * ])  * ```  *  * @param options An options object containing a delay and  * developer-defined parameters that provide styling defaults and  * can be overridden on invocation.  *  * @return An object that encapsulates the sequence data.  *  * @usageNotes  * When you pass an array of steps to a  * `transition()` call, the steps run sequentially by default.  * Compare this to the `{@link animations/group group()}` call, which runs animation steps in  *parallel.  *  * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,  * execution continues to the next instruction only after each of the inner animation  * steps have completed.  *  * @publicApi  **/ export function sequence(     steps: AnimationMetadata[], options: AnimationOptions|null = null): AnimationSequenceMetadata {   return {type: AnimationMetadataType.Sequence, steps, options}; }  /**  * Declares a key/value object containing CSS properties/styles that  * can then be used for an animation [`state`](api/animations/state), within an animation  *`sequence`, or as styling data for calls to `animate()` and `keyframes()`.  *  * @param tokens A set of CSS styles or HTML styles associated with an animation state.  * The value can be any of the following:  * - A key-value style pair associating a CSS property with a value.  * - An array of key-value style pairs.  * - An asterisk (*), to use auto-styling, where styles are derived from the element  * being animated and applied to the animation when it starts.  *  * Auto-styling can be used to define a state that depends on layout or other  * environmental factors.  *  * @return An object that encapsulates the style data.  *  * @usageNotes  * The following examples create animation styles that collect a set of  * CSS property values:  *  * ```typescript  * // string values for CSS properties  * style({ background: \"red\", color: \"blue\" })  *  * // numerical pixel values  * style({ width: 100, height: 0 })  * ```  *  * The following example uses auto-styling to allow an element to animate from  * a height of 0 up to its full height:  *  * ```  * style({ height: 0 }),  * animate(\"1s\", style({ height: \"*\" }))  * ```  *  * @publicApi  **/ export function style(tokens: '*'|{[key: string]: string | number}|                       Array<'*'|{[key: string]: string | number}>): AnimationStyleMetadata {   return {type: AnimationMetadataType.Style, styles: tokens, offset: null}; }  /**  * Declares an animation state within a trigger attached to an element.  *  * @param name One or more names for the defined state in a comma-separated string.  * The following reserved state names can be supplied to define a style for specific use  * cases:  *  * - `void` You can associate styles with this name to be used when  * the element is detached from the application. For example, when an `ngIf` evaluates  * to false, the state of the associated element is void.  *  - `*` (asterisk) Indicates the default state. You can associate styles with this name  * to be used as the fallback when the state that is being animated is not declared  * within the trigger.  *  * @param styles A set of CSS styles associated with this state, created using the  * `style()` function.  * This set of styles persists on the element once the state has been reached.  * @param options Parameters that can be passed to the state when it is invoked.  * 0 or more key-value pairs.  * @return An object that encapsulates the new state data.  *  * @usageNotes  * Use the `trigger()` function to register states to an animation trigger.  * Use the `transition()` function to animate between states.  * When a state is active within a component, its associated styles persist on the element,  * even when the animation ends.  *  * @publicApi  **/ export function state(     name: string, styles: AnimationStyleMetadata,     options?: {params: {[name: string]: any}}): AnimationStateMetadata {   return {type: AnimationMetadataType.State, name, styles, options}; }  /**  * Defines a set of animation styles, associating each style with an optional `offset` value.  *  * @param steps A set of animation styles with optional offset data.  * The optional `offset` value for a style specifies a percentage of the total animation  * time at which that style is applied.  * @returns An object that encapsulates the keyframes data.  *  * @usageNotes  * Use with the `animate()` call. Instead of applying animations  * from the current state  * to the destination state, keyframes describe how each style entry is applied and at what point  * within the animation arc.  * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).  *  * ### Usage  *  * In the following example, the offset values describe  * when each `backgroundColor` value is applied. The color is red at the start, and changes to  * blue when 20% of the total time has elapsed.  *  * ```typescript  * // the provided offset values  * animate(\"5s\", keyframes([  *   style({ backgroundColor: \"red\", offset: 0 }),  *   style({ backgroundColor: \"blue\", offset: 0.2 }),  *   style({ backgroundColor: \"orange\", offset: 0.3 }),  *   style({ backgroundColor: \"black\", offset: 1 })  * ]))  * ```  *  * If there are no `offset` values specified in the style entries, the offsets  * are calculated automatically.  *  * ```typescript  * animate(\"5s\", keyframes([  *   style({ backgroundColor: \"red\" }) // offset = 0  *   style({ backgroundColor: \"blue\" }) // offset = 0.33  *   style({ backgroundColor: \"orange\" }) // offset = 0.66  *   style({ backgroundColor: \"black\" }) // offset = 1  * ]))  *```   * @publicApi  */ export function keyframes(steps: AnimationStyleMetadata[]): AnimationKeyframesSequenceMetadata {   return {type: AnimationMetadataType.Keyframes, steps}; }  /**  * Declares an animation transition which is played when a certain specified condition is met.  *  * @param stateChangeExpr A string with a specific format or a function that specifies when the  * animation transition should occur (see [State Change Expression](#state-change-expression)).  *  * @param steps One or more animation objects that represent the animation's instructions.  *  * @param options An options object that can be used to specify a delay for the animation or provide  * custom parameters for it.  *  * @returns An object that encapsulates the transition data.  *  * @usageNotes  *  * ### State Change Expression  *  * The State Change Expression instructs Angular when to run the transition's animations, it can  *either be  *  - a string with a specific syntax  *  - or a function that compares the previous and current state (value of the expression bound to  *    the element's trigger) and returns `true` if the transition should occur or `false` otherwise  *  * The string format can be:  *  - `fromState => toState`, which indicates that the transition's animations should occur then the  *    expression bound to the trigger's element goes from `fromState` to `toState`  *  *    _Example:_  *      ```typescript  *        transition('open => closed', animate('.5s ease-out', style({ height: 0 }) ))  *      ```  *  *  - `fromState <=> toState`, which indicates that the transition's animations should occur then  *    the expression bound to the trigger's element goes from `fromState` to `toState` or vice versa  *  *    _Example:_  *      ```typescript  *        transition('enabled <=> disabled', animate('1s cubic-bezier(0.8,0.3,0,1)'))  *      ```  *  *  - `:enter`/`:leave`, which indicates that the transition's animations should occur when the  *    element enters or exists the DOM  *  *    _Example:_  *      ```typescript  *        transition(':enter', [  *          style({ opacity: 0 }),  *          animate('500ms', style({ opacity: 1 }))  *        ])  *      ```  *  *  - `:increment`/`:decrement`, which indicates that the transition's animations should occur when  *    the numerical expression bound to the trigger's element has increased in value or decreased  *  *    _Example:_  *      ```typescript  *        transition(':increment', query('@counter', animateChild()))  *      ```  *  *  - a sequence of any of the above divided by commas, which indicates that transition's animations  *    should occur whenever one of the state change expressions matches  *  *    _Example:_  *      ```typescript  *        transition(':increment, * => enabled, :enter', animate('1s ease', keyframes([  *          style({ transform: 'scale(1)', offset: 0}),  *          style({ transform: 'scale(1.1)', offset: 0.7}),  *          style({ transform: 'scale(1)', offset: 1})  *        ]))),  *      ```  *  * Also note that in such context:  *  - `void` can be used to indicate the absence of the element  *  - asterisks can be used as wildcards that match any state  *  - (as a consequence of the above, `void => *` is equivalent to `:enter` and `* => void` is  *    equivalent to `:leave`)  *  - `true` and `false` also match expression values of `1` and `0` respectively (but do not match  *    _truthy_ and _falsy_ values)  *  * <div class=\"alert is-helpful\">  *  *  Be careful about entering end leaving elements as their transitions present a common  *  pitfall for developers.  *  *  Note that when an element with a trigger enters the DOM its `:enter` transition always  *  gets executed, but its `:leave` transition will not be executed if the element is removed  *  alongside its parent (as it will be removed \"without warning\" before its transition has  *  a chance to be executed, the only way that such transition can occur is if the element  *  is exiting the DOM on its own).  *  *  * </div>  *  * ### Animating to a Final State  *  * If the final step in a transition is a call to `animate()` that uses a timing value  * with no `style` data, that step is automatically considered the final animation arc,  * for the element to reach the final state, in such case Angular automatically adds or removes  * CSS styles to ensure that the element is in the correct final state.  *  *  * ### Usage Examples  *  *  - Transition animations applied based on  *    the trigger's expression value  *  *   ```HTML  *   <div [@myAnimationTrigger]=\"myStatusExp\">  *    ...  *   </div>  *   ```  *  *   ```typescript  *   trigger(\"myAnimationTrigger\", [  *     ..., // states  *     transition(\"on => off, open => closed\", animate(500)),  *     transition(\"* <=> error\", query('.indicator', animateChild()))  *   ])  *   ```  *  *  - Transition animations applied based on custom logic dependent  *    on the trigger's expression value and provided parameters  *  *    ```HTML  *    <div [@myAnimationTrigger]=\"{  *     value: stepName,  *     params: { target: currentTarget }  *    }\">  *     ...  *    </div>  *    ```  *  *    ```typescript  *    trigger(\"myAnimationTrigger\", [  *      ..., // states  *      transition(  *        (fromState, toState, _element, params) =>  *          ['firststep', 'laststep'].includes(fromState.toLowerCase())  *          && toState === params?.['target'],  *        animate('1s')  *      )  *    ])  *    ```  *  * @publicApi  **/ export function transition(     stateChangeExpr: string|     ((fromState: string, toState: string, element?: any, params?: {[key: string]: any}) => boolean),     steps: AnimationMetadata|AnimationMetadata[],     options: AnimationOptions|null = null): AnimationTransitionMetadata {   return {type: AnimationMetadataType.Transition, expr: stateChangeExpr, animation: steps, options}; }  /**  * Produces a reusable animation that can be invoked in another animation or sequence,  * by calling the `useAnimation()` function.  *  * @param steps One or more animation objects, as returned by the `animate()`  * or `sequence()` function, that form a transformation from one state to another.  * A sequence is used by default when you pass an array.  * @param options An options object that can contain a delay value for the start of the  * animation, and additional developer-defined parameters.  * Provided values for additional parameters are used as defaults,  * and override values can be passed to the caller on invocation.  * @returns An object that encapsulates the animation data.  *  * @usageNotes  * The following example defines a reusable animation, providing some default parameter  * values.  *  * ```typescript  * var fadeAnimation = animation([  *   style({ opacity: '{{ start }}' }),  *   animate('{{ time }}',  *   style({ opacity: '{{ end }}'}))  *   ],  *   { params: { time: '1000ms', start: 0, end: 1 }});  * ```  *  * The following invokes the defined animation with a call to `useAnimation()`,  * passing in override parameter values.  *  * ```js  * useAnimation(fadeAnimation, {  *   params: {  *     time: '2s',  *     start: 1,  *     end: 0  *   }  * })  * ```  *  * If any of the passed-in parameter values are missing from this call,  * the default values are used. If one or more parameter values are missing before a step is  * animated, `useAnimation()` throws an error.  *  * @publicApi  */ export function animation(     steps: AnimationMetadata|AnimationMetadata[],     options: AnimationOptions|null = null): AnimationReferenceMetadata {   return {type: AnimationMetadataType.Reference, animation: steps, options}; }  /**  * Executes a queried inner animation element within an animation sequence.  *  * @param options An options object that can contain a delay value for the start of the  * animation, and additional override values for developer-defined parameters.  * @return An object that encapsulates the child animation data.  *  * @usageNotes  * Each time an animation is triggered in Angular, the parent animation  * has priority and any child animations are blocked. In order  * for a child animation to run, the parent animation must query each of the elements  * containing child animations, and run them using this function.  *  * Note that this feature is designed to be used with `query()` and it will only work  * with animations that are assigned using the Angular animation library. CSS keyframes  * and transitions are not handled by this API.  *  * @publicApi  */ export function animateChild(options: AnimateChildOptions|null = null):     AnimationAnimateChildMetadata {   return {type: AnimationMetadataType.AnimateChild, options}; }  /**  * Starts a reusable animation that is created using the `animation()` function.  *  * @param animation The reusable animation to start.  * @param options An options object that can contain a delay value for the start of  * the animation, and additional override values for developer-defined parameters.  * @return An object that contains the animation parameters.  *  * @publicApi  */ export function useAnimation(     animation: AnimationReferenceMetadata,     options: AnimationOptions|null = null): AnimationAnimateRefMetadata {   return {type: AnimationMetadataType.AnimateRef, animation, options}; }  /**  * Finds one or more inner elements within the current element that is  * being animated within a sequence. Use with `animate()`.  *  * @param selector The element to query, or a set of elements that contain Angular-specific  * characteristics, specified with one or more of the following tokens.  *  - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements (not  *     all elements can be queried via these tokens, see  *     [Entering and Leaving Elements](#entering-and-leaving-elements))  *  - `query(\":animating\")` : Query all currently animating elements.  *  - `query(\"@triggerName\")` : Query elements that contain an animation trigger.  *  - `query(\"@*\")` : Query all elements that contain an animation triggers.  *  - `query(\":self\")` : Include the current element into the animation sequence.  *  * @param animation One or more animation steps to apply to the queried element or elements.  * An array is treated as an animation sequence.  * @param options An options object. Use the 'limit' field to limit the total number of  * items to collect.  * @return An object that encapsulates the query data.  *  * @usageNotes  *  * ### Multiple Tokens  *  * Tokens can be merged into a combined query selector string. For example:  *  * ```typescript  *  query(':self, .record:enter, .record:leave, @subTrigger', [...])  * ```  *  * The `query()` function collects multiple elements and works internally by using  * `element.querySelectorAll`. Use the `limit` field of an options object to limit  * the total number of items to be collected. For example:  *  * ```js  * query('div', [  *   animate(...),  *   animate(...)  * ], { limit: 1 })  * ```  *  * By default, throws an error when zero items are found. Set the  * `optional` flag to ignore this error. For example:  *  * ```js  * query('.some-element-that-may-not-be-there', [  *   animate(...),  *   animate(...)  * ], { optional: true })  * ```  *  * ### Entering and Leaving Elements  *  * Not all elements can be queried via the `:enter` and `:leave` tokens, the only ones  * that can are those that Angular assumes can enter/leave based on their own logic  * (if their insertion/removal is simply a consequence of that of their parent they  * should be queried via a different token in their parent's `:enter`/`:leave` transitions).  *  * The only elements Angular assumes can enter/leave based on their own logic (thus the only  * ones that can be queried via the `:enter` and `:leave` tokens) are:  *  - Those inserted dynamically (via `ViewContainerRef`)  *  - Those that have a structural directive (which, under the hood, are a subset of the above ones)  *  * <div class=\"alert is-helpful\">  *  *  Note that elements will be successfully queried via `:enter`/`:leave` even if their  *  insertion/removal is not done manually via `ViewContainerRef`or caused by their structural  *  directive (e.g. they enter/exit alongside their parent).  *  * </div>  *  * <div class=\"alert is-important\">  *  *  There is an exception to what previously mentioned, besides elements entering/leaving based on  *  their own logic, elements with an animation trigger can always be queried via `:leave` when  * their parent is also leaving.  *  * </div>  *  * ### Usage Example  *  * The following example queries for inner elements and animates them  * individually using `animate()`.  *  * ```typescript  * @Component({  *   selector: 'inner',  *   template: `  *     <div [@queryAnimation]=\"exp\">  *       <h1>Title</h1>  *       <div class=\"content\">  *         Blah blah blah  *       </div>  *     </div>  *   `,  *   animations: [  *    trigger('queryAnimation', [  *      transition('* => goAnimate', [  *        // hide the inner elements  *        query('h1', style({ opacity: 0 })),  *        query('.content', style({ opacity: 0 })),  *  *        // animate the inner elements in, one by one  *        query('h1', animate(1000, style({ opacity: 1 }))),  *        query('.content', animate(1000, style({ opacity: 1 }))),  *      ])  *    ])  *  ]  * })  * class Cmp {  *   exp = '';  *  *   goAnimate() {  *     this.exp = 'goAnimate';  *   }  * }  * ```  *  * @publicApi  */ export function query(     selector: string, animation: AnimationMetadata|AnimationMetadata[],     options: AnimationQueryOptions|null = null): AnimationQueryMetadata {   return {type: AnimationMetadataType.Query, selector, animation, options}; }  /**  * Use within an animation `query()` call to issue a timing gap after  * each queried item is animated.  *  * @param timings A delay value.  * @param animation One ore more animation steps.  * @returns An object that encapsulates the stagger data.  *  * @usageNotes  * In the following example, a container element wraps a list of items stamped out  * by an `ngFor`. The container element contains an animation trigger that will later be set  * to query for each of the inner items.  *  * Each time items are added, the opacity fade-in animation runs,  * and each removed item is faded out.  * When either of these animations occur, the stagger effect is  * applied after each item's animation is started.  *  * ```html  * <!-- list.component.html -->  * <button (click)=\"toggle()\">Show / Hide Items</button>  * <hr />  * <div [@listAnimation]=\"items.length\">  *   <div *ngFor=\"let item of items\">  *     {{ item }}  *   </div>  * </div>  * ```  *  * Here is the component code:  *  * ```typescript  * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';  * @Component({  *   templateUrl: 'list.component.html',  *   animations: [  *     trigger('listAnimation', [  *     ...  *     ])  *   ]  * })  * class ListComponent {  *   items = [];  *  *   showItems() {  *     this.items = [0,1,2,3,4];  *   }  *  *   hideItems() {  *     this.items = [];  *   }  *  *   toggle() {  *     this.items.length ? this.hideItems() : this.showItems();  *    }  *  }  * ```  *  * Here is the animation trigger code:  *  * ```typescript  * trigger('listAnimation', [  *   transition('* => *', [ // each time the binding value changes  *     query(':leave', [  *       stagger(100, [  *         animate('0.5s', style({ opacity: 0 }))  *       ])  *     ]),  *     query(':enter', [  *       style({ opacity: 0 }),  *       stagger(100, [  *         animate('0.5s', style({ opacity: 1 }))  *       ])  *     ])  *   ])  * ])  * ```  *  * @publicApi  */ export function stagger(timings: string|number, animation: AnimationMetadata|AnimationMetadata[]):     AnimationStaggerMetadata {   return {type: AnimationMetadataType.Stagger, timings, animation}; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ export function scheduleMicroTask(cb: () => any) {   Promise.resolve().then(cb); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {scheduleMicroTask} from '../util';  /**  * Provides programmatic control of a reusable animation sequence,  * built using the <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code>  * method which returns an `AnimationFactory`, whose  * <code>[create](api/animations/AnimationFactory#create)()</code> method instantiates and  * initializes this interface.  *  * @see `AnimationBuilder`  * @see `AnimationFactory`  * @see `animate()`  *  * @publicApi  */ export interface AnimationPlayer {   /**    * Provides a callback to invoke when the animation finishes.    * @param fn The callback function.    * @see `finish()`    */   onDone(fn: () => void): void;   /**    * Provides a callback to invoke when the animation starts.    * @param fn The callback function.    * @see `run()`    */   onStart(fn: () => void): void;   /**    * Provides a callback to invoke after the animation is destroyed.    * @param fn The callback function.    * @see `destroy()`    * @see `beforeDestroy()`    */   onDestroy(fn: () => void): void;   /**    * Initializes the animation.    */   init(): void;   /**    * Reports whether the animation has started.    * @returns True if the animation has started, false otherwise.    */   hasStarted(): boolean;   /**    * Runs the animation, invoking the `onStart()` callback.    */   play(): void;   /**    * Pauses the animation.    */   pause(): void;   /**    * Restarts the paused animation.    */   restart(): void;   /**    * Ends the animation, invoking the `onDone()` callback.    */   finish(): void;   /**    * Destroys the animation, after invoking the `beforeDestroy()` callback.    * Calls the `onDestroy()` callback when destruction is completed.    */   destroy(): void;   /**    * Resets the animation to its initial state.    */   reset(): void;   /**    * Sets the position of the animation.    * @param position A 0-based offset into the duration, in milliseconds.    */   setPosition(position: any /** TODO #9100 */): void;   /**    * Reports the current position of the animation.    * @returns A 0-based offset into the duration, in milliseconds.    */   getPosition(): number;   /**    * The parent of this player, if any.    */   parentPlayer: AnimationPlayer|null;   /**    * The total run time of the animation, in milliseconds.    */   readonly totalTime: number;   /**    * Provides a callback to invoke before the animation is destroyed.    */   beforeDestroy?: () => any;   /**    * @internal    * Internal    */   triggerCallback?: (phaseName: string) => void;   /**    * @internal    * Internal    */   disabled?: boolean; }  /**  * An empty programmatic controller for reusable animations.  * Used internally when animations are disabled, to avoid  * checking for the null case when an animation player is expected.  *  * @see `animate()`  * @see `AnimationPlayer`  * @see `GroupPlayer`  *  * @publicApi  */ export class NoopAnimationPlayer implements AnimationPlayer {   private _onDoneFns: Function[] = [];   private _onStartFns: Function[] = [];   private _onDestroyFns: Function[] = [];   private _originalOnDoneFns: Function[] = [];   private _originalOnStartFns: Function[] = [];   private _started = false;   private _destroyed = false;   private _finished = false;   private _position = 0;   public parentPlayer: AnimationPlayer|null = null;   public readonly totalTime: number;   constructor(duration: number = 0, delay: number = 0) {     this.totalTime = duration + delay;   }   private _onFinish() {     if (!this._finished) {       this._finished = true;       this._onDoneFns.forEach(fn => fn());       this._onDoneFns = [];     }   }   onStart(fn: () => void): void {     this._originalOnStartFns.push(fn);     this._onStartFns.push(fn);   }   onDone(fn: () => void): void {     this._originalOnDoneFns.push(fn);     this._onDoneFns.push(fn);   }   onDestroy(fn: () => void): void {     this._onDestroyFns.push(fn);   }   hasStarted(): boolean {     return this._started;   }   init(): void {}   play(): void {     if (!this.hasStarted()) {       this._onStart();       this.triggerMicrotask();     }     this._started = true;   }    /** @internal */   triggerMicrotask() {     scheduleMicroTask(() => this._onFinish());   }    private _onStart() {     this._onStartFns.forEach(fn => fn());     this._onStartFns = [];   }    pause(): void {}   restart(): void {}   finish(): void {     this._onFinish();   }   destroy(): void {     if (!this._destroyed) {       this._destroyed = true;       if (!this.hasStarted()) {         this._onStart();       }       this.finish();       this._onDestroyFns.forEach(fn => fn());       this._onDestroyFns = [];     }   }   reset(): void {     this._started = false;     this._finished = false;     this._onStartFns = this._originalOnStartFns;     this._onDoneFns = this._originalOnDoneFns;   }   setPosition(position: number): void {     this._position = this.totalTime ? position * this.totalTime : 1;   }   getPosition(): number {     return this.totalTime ? this._position / this.totalTime : 1;   }    /** @internal */   triggerCallback(phaseName: string): void {     const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;     methods.forEach(fn => fn());     methods.length = 0;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {scheduleMicroTask} from '../util'; import {AnimationPlayer} from './animation_player';  /**  * A programmatic controller for a group of reusable animations.  * Used internally to control animations.  *  * @see `AnimationPlayer`  * @see `{@link animations/group group()}`  *  */ export class AnimationGroupPlayer implements AnimationPlayer {   private _onDoneFns: Function[] = [];   private _onStartFns: Function[] = [];   private _finished = false;   private _started = false;   private _destroyed = false;   private _onDestroyFns: Function[] = [];    public parentPlayer: AnimationPlayer|null = null;   public totalTime: number = 0;   public readonly players: AnimationPlayer[];    constructor(_players: AnimationPlayer[]) {     this.players = _players;     let doneCount = 0;     let destroyCount = 0;     let startCount = 0;     const total = this.players.length;      if (total == 0) {       scheduleMicroTask(() => this._onFinish());     } else {       this.players.forEach(player => {         player.onDone(() => {           if (++doneCount == total) {             this._onFinish();           }         });         player.onDestroy(() => {           if (++destroyCount == total) {             this._onDestroy();           }         });         player.onStart(() => {           if (++startCount == total) {             this._onStart();           }         });       });     }      this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);   }    private _onFinish() {     if (!this._finished) {       this._finished = true;       this._onDoneFns.forEach(fn => fn());       this._onDoneFns = [];     }   }    init(): void {     this.players.forEach(player => player.init());   }    onStart(fn: () => void): void {     this._onStartFns.push(fn);   }    private _onStart() {     if (!this.hasStarted()) {       this._started = true;       this._onStartFns.forEach(fn => fn());       this._onStartFns = [];     }   }    onDone(fn: () => void): void {     this._onDoneFns.push(fn);   }    onDestroy(fn: () => void): void {     this._onDestroyFns.push(fn);   }    hasStarted() {     return this._started;   }    play() {     if (!this.parentPlayer) {       this.init();     }     this._onStart();     this.players.forEach(player => player.play());   }    pause(): void {     this.players.forEach(player => player.pause());   }    restart(): void {     this.players.forEach(player => player.restart());   }    finish(): void {     this._onFinish();     this.players.forEach(player => player.finish());   }    destroy(): void {     this._onDestroy();   }    private _onDestroy() {     if (!this._destroyed) {       this._destroyed = true;       this._onFinish();       this.players.forEach(player => player.destroy());       this._onDestroyFns.forEach(fn => fn());       this._onDestroyFns = [];     }   }    reset(): void {     this.players.forEach(player => player.reset());     this._destroyed = false;     this._finished = false;     this._started = false;   }    setPosition(p: number): void {     const timeAtPosition = p * this.totalTime;     this.players.forEach(player => {       const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;       player.setPosition(position);     });   }    getPosition(): number {     const longestPlayer =         this.players.reduce((longestSoFar: AnimationPlayer|null, player: AnimationPlayer) => {           const newPlayerIsLongest =               longestSoFar === null || player.totalTime > longestSoFar.totalTime;           return newPlayerIsLongest ? player : longestSoFar;         }, null);     return longestPlayer != null ? longestPlayer.getPosition() : 0;   }    beforeDestroy(): void {     this.players.forEach(player => {       if (player.beforeDestroy) {         player.beforeDestroy();       }     });   }    /** @internal */   triggerCallback(phaseName: string): void {     const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;     methods.forEach(fn => fn());     methods.length = 0;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ export {AnimationGroupPlayer as ɵAnimationGroupPlayer} from './players/animation_group_player'; export const ɵPRE_STYLE = '!'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all animation APIs of the animation package.  */ export {AnimationBuilder, AnimationFactory} from './animation_builder'; export {AnimationEvent} from './animation_event'; export {animate, animateChild, AnimateChildOptions, AnimateTimings, animation, AnimationAnimateChildMetadata, AnimationAnimateMetadata, AnimationAnimateRefMetadata, AnimationGroupMetadata, AnimationKeyframesSequenceMetadata, AnimationMetadata, AnimationMetadataType, AnimationOptions, AnimationQueryMetadata, AnimationQueryOptions, AnimationReferenceMetadata, AnimationSequenceMetadata, AnimationStaggerMetadata, AnimationStateMetadata, AnimationStyleMetadata, AnimationTransitionMetadata, AnimationTriggerMetadata, AUTO_STYLE, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, ɵStyleData, ɵStyleDataMap} from './animation_metadata'; export {AnimationPlayer, NoopAnimationPlayer} from './players/animation_player';  export * from './private_export'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/animations'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 161 --------------------
{"version":3,"file":"browser.mjs","sources":["../../../../../../packages/animations/browser/src/error_helpers.ts","../../../../../../packages/animations/browser/src/render/web_animations/animatable_props_set.ts","../../../../../../packages/animations/browser/src/render/shared.ts","../../../../../../packages/animations/browser/src/render/animation_driver.ts","../../../../../../packages/animations/browser/src/util.ts","../../../../../../packages/animations/browser/src/warning_helpers.ts","../../../../../../packages/animations/browser/src/dsl/animation_transition_expr.ts","../../../../../../packages/animations/browser/src/dsl/animation_ast_builder.ts","../../../../../../packages/animations/browser/src/dsl/animation_timeline_instruction.ts","../../../../../../packages/animations/browser/src/dsl/element_instruction_map.ts","../../../../../../packages/animations/browser/src/dsl/animation_timeline_builder.ts","../../../../../../packages/animations/browser/src/dsl/animation.ts","../../../../../../packages/animations/browser/src/dsl/style_normalization/animation_style_normalizer.ts","../../../../../../packages/animations/browser/src/dsl/style_normalization/web_animations_style_normalizer.ts","../../../../../../packages/animations/browser/src/dsl/animation_transition_instruction.ts","../../../../../../packages/animations/browser/src/dsl/animation_transition_factory.ts","../../../../../../packages/animations/browser/src/dsl/animation_trigger.ts","../../../../../../packages/animations/browser/src/render/timeline_animation_engine.ts","../../../../../../packages/animations/browser/src/render/transition_animation_engine.ts","../../../../../../packages/animations/browser/src/render/animation_engine_next.ts","../../../../../../packages/animations/browser/src/render/special_cased_styles.ts","../../../../../../packages/animations/browser/src/render/web_animations/web_animations_player.ts","../../../../../../packages/animations/browser/src/render/web_animations/web_animations_driver.ts","../../../../../../packages/animations/browser/src/browser.ts","../../../../../../packages/animations/browser/public_api.ts","../../../../../../packages/animations/browser/index.ts","../../../../../../packages/animations/browser/browser.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from './errors';  const LINE_START = '\  - ';  export function invalidTimingValue(exp: string|number): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_TIMING_VALUE,       ngDevMode && `The provided timing value \"${exp}\" is invalid.`); }  export function negativeStepValue(): Error {   return new RuntimeError(       RuntimeErrorCode.NEGATIVE_STEP_VALUE,       ngDevMode && 'Duration values below 0 are not allowed for this animation step.'); }  export function negativeDelayValue(): Error {   return new RuntimeError(       RuntimeErrorCode.NEGATIVE_DELAY_VALUE,       ngDevMode && 'Delay values below 0 are not allowed for this animation step.'); }  export function invalidStyleParams(varName: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STYLE_PARAMS,       ngDevMode &&           `Unable to resolve the local animation param ${varName} in the given list of values`); }  export function invalidParamValue(varName: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_PARAM_VALUE,       ngDevMode && `Please provide a value for the animation param ${varName}`); }  export function invalidNodeType(nodeType: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_NODE_TYPE,       ngDevMode && `Unable to resolve animation metadata node #${nodeType}`); }  export function invalidCssUnitValue(userProvidedProperty: string, value: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_CSS_UNIT_VALUE,       ngDevMode && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`); }  export function invalidTrigger(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_TRIGGER,       ngDevMode &&           'animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))'); }  export function invalidDefinition(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_DEFINITION,       ngDevMode && 'only state() and transition() definitions can sit inside of a trigger()'); }  export function invalidState(metadataName: string, missingSubs: string[]): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STATE,       ngDevMode &&           `state(\"${               metadataName}\", ...) must define default values for all the following style substitutions: ${               missingSubs.join(', ')}`); }  export function invalidStyleValue(value: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STYLE_VALUE,       ngDevMode && `The provided style string value ${value} is not allowed.`); }  export function invalidProperty(prop: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_PROPERTY,       ngDevMode &&           `The provided animation property \"${               prop}\" is not a supported CSS property for animations`); }  export function invalidParallelAnimation(     prop: string, firstStart: number, firstEnd: number, secondStart: number,     secondEnd: number): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_PARALLEL_ANIMATION,       ngDevMode &&           `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${               firstEnd}ms\" is also being animated in a parallel animation between the times of \"${               secondStart}ms\" and \"${secondEnd}ms\"`); }  export function invalidKeyframes(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_KEYFRAMES,       ngDevMode && `keyframes() must be placed inside of a call to animate()`); }  export function invalidOffset(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_OFFSET,       ngDevMode && `Please ensure that all keyframe offsets are between 0 and 1`); }  export function keyframeOffsetsOutOfOrder(): Error {   return new RuntimeError(       RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER,       ngDevMode && `Please ensure that all keyframe offsets are in order`); }  export function keyframesMissingOffsets(): Error {   return new RuntimeError(       RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS,       ngDevMode && `Not all style() steps within the declared keyframes() contain offsets`); }  export function invalidStagger(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STAGGER,       ngDevMode && `stagger() can only be used inside of query()`); }  export function invalidQuery(selector: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_QUERY,       ngDevMode &&           `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${               selector}\", { optional: true })\\` if you wish to allow this.)`); }  export function invalidExpression(expr: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_EXPRESSION,       ngDevMode && `The provided transition expression \"${expr}\" is not supported`); }  export function invalidTransitionAlias(alias: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_TRANSITION_ALIAS,       ngDevMode && `The transition alias value \"${alias}\" is not supported`); }  export function validationFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.VALIDATION_FAILED,       ngDevMode && `animation validation failed:\ ${errors.map(err => err.message).join('\ ')}`); }  export function buildingFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.BUILDING_FAILED,       ngDevMode && `animation building failed:\ ${errors.map(err => err.message).join('\ ')}`); }  export function triggerBuildFailed(name: string, errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRIGGER_BUILD_FAILED,       ngDevMode &&           `The animation trigger \"${name}\" has failed to build due to the following errors:\  - ${               errors.map(err => err.message).join('\  - ')}`); }  export function animationFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.ANIMATION_FAILED,       ngDevMode &&           `Unable to animate due to the following errors:${LINE_START}${               errors.map(err => err.message).join(LINE_START)}`); }  export function registerFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.REGISTRATION_FAILED,       ngDevMode &&           `Unable to build the animation due to the following errors: ${               errors.map(err => err.message).join('\ ')}`); }  export function missingOrDestroyedAnimation(): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION,       ngDevMode && 'The requested animation doesn\\'t exist or has already been destroyed'); }  export function createAnimationFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.CREATE_ANIMATION_FAILED,       ngDevMode &&           `Unable to create the animation due to the following errors:${               errors.map(err => err.message).join('\ ')}`); }  export function missingPlayer(id: string): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_PLAYER,       ngDevMode && `Unable to find the timeline player referenced by ${id}`); }  export function missingTrigger(phase: string, name: string): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_TRIGGER,       ngDevMode &&           `Unable to listen on the animation trigger event \"${               phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`); }  export function missingEvent(name: string): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_EVENT,       ngDevMode &&           `Unable to listen on the animation trigger \"${               name}\" because the provided event is undefined!`); }  export function unsupportedTriggerEvent(phase: string, name: string): Error {   return new RuntimeError(       RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT,       ngDevMode &&           `The provided animation trigger event \"${phase}\" for the animation trigger \"${               name}\" is not supported!`); }  export function unregisteredTrigger(name: string): Error {   return new RuntimeError(       RuntimeErrorCode.UNREGISTERED_TRIGGER,       ngDevMode && `The provided animation trigger \"${name}\" has not been registered!`); }  export function triggerTransitionsFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED,       ngDevMode &&           `Unable to process animations due to the following failed trigger transitions\  ${               errors.map(err => err.message).join('\ ')}`); }  export function triggerParsingFailed(name: string, errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRIGGER_PARSING_FAILED,       ngDevMode &&           `Animation parsing for the ${name} trigger have failed:${LINE_START}${               errors.map(err => err.message).join(LINE_START)}`); }  export function transitionFailed(name: string, errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRANSITION_FAILED,       ngDevMode && `@${name} has failed due to:\  ${errors.map(err => err.message).join('\ - ')}`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Set of all animatable CSS properties  *  * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties  */ export const ANIMATABLE_PROP_SET = new Set([   '-moz-outline-radius',   '-moz-outline-radius-bottomleft',   '-moz-outline-radius-bottomright',   '-moz-outline-radius-topleft',   '-moz-outline-radius-topright',   '-ms-grid-columns',   '-ms-grid-rows',   '-webkit-line-clamp',   '-webkit-text-fill-color',   '-webkit-text-stroke',   '-webkit-text-stroke-color',   'accent-color',   'all',   'backdrop-filter',   'background',   'background-color',   'background-position',   'background-size',   'block-size',   'border',   'border-block-end',   'border-block-end-color',   'border-block-end-width',   'border-block-start',   'border-block-start-color',   'border-block-start-width',   'border-bottom',   'border-bottom-color',   'border-bottom-left-radius',   'border-bottom-right-radius',   'border-bottom-width',   'border-color',   'border-end-end-radius',   'border-end-start-radius',   'border-image-outset',   'border-image-slice',   'border-image-width',   'border-inline-end',   'border-inline-end-color',   'border-inline-end-width',   'border-inline-start',   'border-inline-start-color',   'border-inline-start-width',   'border-left',   'border-left-color',   'border-left-width',   'border-radius',   'border-right',   'border-right-color',   'border-right-width',   'border-start-end-radius',   'border-start-start-radius',   'border-top',   'border-top-color',   'border-top-left-radius',   'border-top-right-radius',   'border-top-width',   'border-width',   'bottom',   'box-shadow',   'caret-color',   'clip',   'clip-path',   'color',   'column-count',   'column-gap',   'column-rule',   'column-rule-color',   'column-rule-width',   'column-width',   'columns',   'filter',   'flex',   'flex-basis',   'flex-grow',   'flex-shrink',   'font',   'font-size',   'font-size-adjust',   'font-stretch',   'font-variation-settings',   'font-weight',   'gap',   'grid-column-gap',   'grid-gap',   'grid-row-gap',   'grid-template-columns',   'grid-template-rows',   'height',   'inline-size',   'input-security',   'inset',   'inset-block',   'inset-block-end',   'inset-block-start',   'inset-inline',   'inset-inline-end',   'inset-inline-start',   'left',   'letter-spacing',   'line-clamp',   'line-height',   'margin',   'margin-block-end',   'margin-block-start',   'margin-bottom',   'margin-inline-end',   'margin-inline-start',   'margin-left',   'margin-right',   'margin-top',   'mask',   'mask-border',   'mask-position',   'mask-size',   'max-block-size',   'max-height',   'max-inline-size',   'max-lines',   'max-width',   'min-block-size',   'min-height',   'min-inline-size',   'min-width',   'object-position',   'offset',   'offset-anchor',   'offset-distance',   'offset-path',   'offset-position',   'offset-rotate',   'opacity',   'order',   'outline',   'outline-color',   'outline-offset',   'outline-width',   'padding',   'padding-block-end',   'padding-block-start',   'padding-bottom',   'padding-inline-end',   'padding-inline-start',   'padding-left',   'padding-right',   'padding-top',   'perspective',   'perspective-origin',   'right',   'rotate',   'row-gap',   'scale',   'scroll-margin',   'scroll-margin-block',   'scroll-margin-block-end',   'scroll-margin-block-start',   'scroll-margin-bottom',   'scroll-margin-inline',   'scroll-margin-inline-end',   'scroll-margin-inline-start',   'scroll-margin-left',   'scroll-margin-right',   'scroll-margin-top',   'scroll-padding',   'scroll-padding-block',   'scroll-padding-block-end',   'scroll-padding-block-start',   'scroll-padding-bottom',   'scroll-padding-inline',   'scroll-padding-inline-end',   'scroll-padding-inline-start',   'scroll-padding-left',   'scroll-padding-right',   'scroll-padding-top',   'scroll-snap-coordinate',   'scroll-snap-destination',   'scrollbar-color',   'shape-image-threshold',   'shape-margin',   'shape-outside',   'tab-size',   'text-decoration',   'text-decoration-color',   'text-decoration-thickness',   'text-emphasis',   'text-emphasis-color',   'text-indent',   'text-shadow',   'text-underline-offset',   'top',   'transform',   'transform-origin',   'translate',   'vertical-align',   'visibility',   'width',   'word-spacing',   'z-index',   'zoom', ]); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationEvent, AnimationPlayer, AUTO_STYLE, NoopAnimationPlayer, ɵAnimationGroupPlayer, ɵPRE_STYLE as PRE_STYLE, ɵStyleDataMap} from '@angular/animations';  import {AnimationStyleNormalizer} from '../../src/dsl/style_normalization/animation_style_normalizer'; import {AnimationDriver} from '../../src/render/animation_driver'; import {animationFailed} from '../error_helpers';  import {ANIMATABLE_PROP_SET} from './web_animations/animatable_props_set';  // We don't include ambient node types here since @angular/animations/browser // is meant to target the browser so technically it should not depend on node // types. `process` is just declared locally here as a result. declare const process: any;  export function isBrowser(): boolean {   return (typeof window !== 'undefined' && typeof window.document !== 'undefined'); }  export function isNode(): boolean {   // Checking only for `process` isn't enough to identify whether or not we're in a Node   // environment, because Webpack by default will polyfill the `process`. While we can discern   // that Webpack polyfilled it by looking at `process.browser`, it's very Webpack-specific and   // might not be future-proof. Instead we look at the stringified version of `process` which   // is `[object process]` in Node and `[object Object]` when polyfilled.   return typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; }  export function optimizeGroupPlayer(players: AnimationPlayer[]): AnimationPlayer {   switch (players.length) {     case 0:       return new NoopAnimationPlayer();     case 1:       return players[0];     default:       return new ɵAnimationGroupPlayer(players);   } }  export function normalizeKeyframes(     driver: AnimationDriver, normalizer: AnimationStyleNormalizer, element: any,     keyframes: Array<ɵStyleDataMap>, preStyles: ɵStyleDataMap = new Map(),     postStyles: ɵStyleDataMap = new Map()): Array<ɵStyleDataMap> {   const errors: Error[] = [];   const normalizedKeyframes: Array<ɵStyleDataMap> = [];   let previousOffset = -1;   let previousKeyframe: ɵStyleDataMap|null = null;   keyframes.forEach(kf => {     const offset = kf.get('offset') as number;     const isSameOffset = offset == previousOffset;     const normalizedKeyframe: ɵStyleDataMap = (isSameOffset && previousKeyframe) || new Map();     kf.forEach((val, prop) => {       let normalizedProp = prop;       let normalizedValue = val;       if (prop !== 'offset') {         normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);         switch (normalizedValue) {           case PRE_STYLE:             normalizedValue = preStyles.get(prop)!;             break;            case AUTO_STYLE:             normalizedValue = postStyles.get(prop)!;             break;            default:             normalizedValue =                 normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);             break;         }       }       normalizedKeyframe.set(normalizedProp, normalizedValue);     });     if (!isSameOffset) {       normalizedKeyframes.push(normalizedKeyframe);     }     previousKeyframe = normalizedKeyframe;     previousOffset = offset;   });   if (errors.length) {     throw animationFailed(errors);   }    return normalizedKeyframes; }  export function listenOnPlayer(     player: AnimationPlayer, eventName: string, event: AnimationEvent|undefined,     callback: (event: any) => any) {   switch (eventName) {     case 'start':       player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));       break;     case 'done':       player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));       break;     case 'destroy':       player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));       break;   } }  export function copyAnimationEvent(     e: AnimationEvent, phaseName: string, player: AnimationPlayer): AnimationEvent {   const totalTime = player.totalTime;   const disabled = (player as any).disabled ? true : false;   const event = makeAnimationEvent(       e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName,       totalTime == undefined ? e.totalTime : totalTime, disabled);   const data = (e as any)['_data'];   if (data != null) {     (event as any)['_data'] = data;   }   return event; }  export function makeAnimationEvent(     element: any, triggerName: string, fromState: string, toState: string, phaseName: string = '',     totalTime: number = 0, disabled?: boolean): AnimationEvent {   return {element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled}; }  export function getOrSetDefaultValue<T, V>(map: Map<T, V>, key: T, defaultValue: V) {   let value = map.get(key);   if (!value) {     map.set(key, value = defaultValue);   }   return value; }  export function parseTimelineCommand(command: string): [string, string] {   const separatorPos = command.indexOf(':');   const id = command.substring(1, separatorPos);   const action = command.slice(separatorPos + 1);   return [id, action]; }  let _contains: (elm1: any, elm2: any) => boolean = (elm1: any, elm2: any) => false; let _query: (element: any, selector: string, multi: boolean) => any[] =     (element: any, selector: string, multi: boolean) => {       return [];     }; let _documentElement: unknown|null = null;  export function getParentElement(element: any): unknown|null {   const parent = element.parentNode || element.host;  // consider host to support shadow DOM   if (parent === _documentElement) {     return null;   }   return parent; }  // Define utility methods for browsers and platform-server(domino) where Element // and utility methods exist. const _isNode = isNode(); if (_isNode || typeof Element !== 'undefined') {   if (!isBrowser()) {     _contains = (elm1, elm2) => elm1.contains(elm2);   } else {     // Read the document element in an IIFE that's been marked pure to avoid a top-level property     // read that may prevent tree-shaking.     _documentElement = /* @__PURE__ */ (() => document.documentElement)();     _contains = (elm1, elm2) => {       while (elm2) {         if (elm2 === elm1) {           return true;         }         elm2 = getParentElement(elm2);       }       return false;     };   }    _query = (element: any, selector: string, multi: boolean): any[] => {     if (multi) {       return Array.from(element.querySelectorAll(selector));     }     const elem = element.querySelector(selector);     return elem ? [elem] : [];   }; }  function containsVendorPrefix(prop: string): boolean {   // Webkit is the only real popular vendor prefix nowadays   // cc: http://shouldiprefix.com/   return prop.substring(1, 6) == 'ebkit';  // webkit or Webkit }  let _CACHED_BODY: {style: any}|null = null; let _IS_WEBKIT = false; export function validateStyleProperty(prop: string): boolean {   if (!_CACHED_BODY) {     _CACHED_BODY = getBodyNode() || {};     _IS_WEBKIT = _CACHED_BODY!.style ? ('WebkitAppearance' in _CACHED_BODY!.style) : false;   }    let result = true;   if (_CACHED_BODY!.style && !containsVendorPrefix(prop)) {     result = prop in _CACHED_BODY!.style;     if (!result && _IS_WEBKIT) {       const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1);       result = camelProp in _CACHED_BODY!.style;     }   }    return result; }  export function validateWebAnimatableStyleProperty(prop: string): boolean {   return ANIMATABLE_PROP_SET.has(prop); }  export function getBodyNode(): any|null {   if (typeof document != 'undefined') {     return document.body;   }   return null; }  export const containsElement = _contains; export const invokeQuery = _query;  export function hypenatePropsKeys(original: ɵStyleDataMap): ɵStyleDataMap {   const newMap: ɵStyleDataMap = new Map();   original.forEach((val, prop) => {     const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');     newMap.set(newProp, val);   });   return newMap; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationPlayer, NoopAnimationPlayer} from '@angular/animations'; import {Injectable} from '@angular/core';  import {containsElement, getParentElement, invokeQuery, validateStyleProperty} from './shared';  /**  * @publicApi  */ @Injectable() export class NoopAnimationDriver implements AnimationDriver {   validateStyleProperty(prop: string): boolean {     return validateStyleProperty(prop);   }    matchesElement(_element: any, _selector: string): boolean {     // This method is deprecated and no longer in use so we return false.     return false;   }    containsElement(elm1: any, elm2: any): boolean {     return containsElement(elm1, elm2);   }    getParentElement(element: unknown): unknown {     return getParentElement(element);   }    query(element: any, selector: string, multi: boolean): any[] {     return invokeQuery(element, selector, multi);   }    computeStyle(element: any, prop: string, defaultValue?: string): string {     return defaultValue || '';   }    animate(       element: any, keyframes: Array<Map<string, string|number>>, duration: number, delay: number,       easing: string, previousPlayers: any[] = [],       scrubberAccessRequested?: boolean): AnimationPlayer {     return new NoopAnimationPlayer(duration, delay);   } }  /**  * @publicApi  */ export abstract class AnimationDriver {   static NOOP: AnimationDriver = (/* @__PURE__ */ new NoopAnimationDriver());    abstract validateStyleProperty(prop: string): boolean;    abstract validateAnimatableStyleProperty?: (prop: string) => boolean;    /**    * @deprecated No longer in use. Will be removed.    */   abstract matchesElement(element: any, selector: string): boolean;    abstract containsElement(elm1: any, elm2: any): boolean;    /**    * Obtains the parent element, if any. `null` is returned if the element does not have a parent.    */   abstract getParentElement(element: unknown): unknown;    abstract query(element: any, selector: string, multi: boolean): any[];    abstract computeStyle(element: any, prop: string, defaultValue?: string): string;    abstract animate(       element: any, keyframes: Array<Map<string, string|number>>, duration: number, delay: number,       easing?: string|null, previousPlayers?: any[], scrubberAccessRequested?: boolean): any; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimateTimings, AnimationMetadata, AnimationMetadataType, AnimationOptions, sequence, ɵStyleData, ɵStyleDataMap} from '@angular/animations';  import {Ast as AnimationAst, AstVisitor as AnimationAstVisitor} from './dsl/animation_ast'; import {AnimationDslVisitor} from './dsl/animation_dsl_visitor'; import {invalidNodeType, invalidParamValue, invalidStyleParams, invalidTimingValue, negativeDelayValue, negativeStepValue} from './error_helpers'; import {isNode} from './render/shared';  export const ONE_SECOND = 1000;  export const SUBSTITUTION_EXPR_START = '{{'; export const SUBSTITUTION_EXPR_END = '}}'; export const ENTER_CLASSNAME = 'ng-enter'; export const LEAVE_CLASSNAME = 'ng-leave'; export const NG_TRIGGER_CLASSNAME = 'ng-trigger'; export const NG_TRIGGER_SELECTOR = '.ng-trigger'; export const NG_ANIMATING_CLASSNAME = 'ng-animating'; export const NG_ANIMATING_SELECTOR = '.ng-animating';  export function resolveTimingValue(value: string|number) {   if (typeof value == 'number') return value;    const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);   if (!matches || matches.length < 2) return 0;    return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]); }  function _convertTimeValueToMS(value: number, unit: string): number {   switch (unit) {     case 's':       return value * ONE_SECOND;     default:  // ms or something else       return value;   } }  export function resolveTiming(     timings: string|number|AnimateTimings, errors: Error[], allowNegativeValues?: boolean) {   return timings.hasOwnProperty('duration') ?       <AnimateTimings>timings :       parseTimeExpression(<string|number>timings, errors, allowNegativeValues); }  function parseTimeExpression(     exp: string|number, errors: Error[], allowNegativeValues?: boolean): AnimateTimings {   const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;   let duration: number;   let delay: number = 0;   let easing: string = '';   if (typeof exp === 'string') {     const matches = exp.match(regex);     if (matches === null) {       errors.push(invalidTimingValue(exp));       return {duration: 0, delay: 0, easing: ''};     }      duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);      const delayMatch = matches[3];     if (delayMatch != null) {       delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);     }      const easingVal = matches[5];     if (easingVal) {       easing = easingVal;     }   } else {     duration = exp;   }    if (!allowNegativeValues) {     let containsErrors = false;     let startIndex = errors.length;     if (duration < 0) {       errors.push(negativeStepValue());       containsErrors = true;     }     if (delay < 0) {       errors.push(negativeDelayValue());       containsErrors = true;     }     if (containsErrors) {       errors.splice(startIndex, 0, invalidTimingValue(exp));     }   }    return {duration, delay, easing}; }  export function copyObj(     obj: {[key: string]: any}, destination: {[key: string]: any} = {}): {[key: string]: any} {   Object.keys(obj).forEach(prop => {     destination[prop] = obj[prop];   });   return destination; }  export function convertToMap(obj: ɵStyleData): ɵStyleDataMap {   const styleMap: ɵStyleDataMap = new Map();   Object.keys(obj).forEach(prop => {     const val = obj[prop];     styleMap.set(prop, val);   });   return styleMap; }  export function normalizeKeyframes(keyframes: Array<ɵStyleData>|                                    Array<ɵStyleDataMap>): Array<ɵStyleDataMap> {   if (!keyframes.length) {     return [];   }   if (keyframes[0] instanceof Map) {     return keyframes as Array<ɵStyleDataMap>;   }   return keyframes.map(kf => convertToMap(kf as ɵStyleData)); }  export function normalizeStyles(styles: ɵStyleDataMap|Array<ɵStyleDataMap>): ɵStyleDataMap {   const normalizedStyles: ɵStyleDataMap = new Map();   if (Array.isArray(styles)) {     styles.forEach(data => copyStyles(data, normalizedStyles));   } else {     copyStyles(styles, normalizedStyles);   }   return normalizedStyles; }  export function copyStyles(     styles: ɵStyleDataMap, destination: ɵStyleDataMap = new Map(),     backfill?: ɵStyleDataMap): ɵStyleDataMap {   if (backfill) {     for (let [prop, val] of backfill) {       destination.set(prop, val);     }   }   for (let [prop, val] of styles) {     destination.set(prop, val);   }   return destination; }  function getStyleAttributeString(element: any, key: string, value: string) {   // Return the key-value pair string to be added to the style attribute for the   // given CSS style key.   if (value) {     return key + ':' + value + ';';   } else {     return '';   } }  function writeStyleAttribute(element: any) {   // Read the style property of the element and manually reflect it to the   // style attribute. This is needed because Domino on platform-server doesn't   // understand the full set of allowed CSS properties and doesn't reflect some   // of them automatically.   let styleAttrValue = '';   for (let i = 0; i < element.style.length; i++) {     const key = element.style.item(i);     styleAttrValue += getStyleAttributeString(element, key, element.style.getPropertyValue(key));   }   for (const key in element.style) {     // Skip internal Domino properties that don't need to be reflected.     if (!element.style.hasOwnProperty(key) || key.startsWith('_')) {       continue;     }     const dashKey = camelCaseToDashCase(key);     styleAttrValue += getStyleAttributeString(element, dashKey, element.style[key]);   }   element.setAttribute('style', styleAttrValue); }  export function setStyles(element: any, styles: ɵStyleDataMap, formerStyles?: ɵStyleDataMap) {   if (element['style']) {     styles.forEach((val, prop) => {       const camelProp = dashCaseToCamelCase(prop);       if (formerStyles && !formerStyles.has(prop)) {         formerStyles.set(prop, element.style[camelProp]);       }       element.style[camelProp] = val;     });     // On the server set the 'style' attribute since it's not automatically reflected.     if (isNode()) {       writeStyleAttribute(element);     }   } }  export function eraseStyles(element: any, styles: ɵStyleDataMap) {   if (element['style']) {     styles.forEach((_, prop) => {       const camelProp = dashCaseToCamelCase(prop);       element.style[camelProp] = '';     });     // On the server set the 'style' attribute since it's not automatically reflected.     if (isNode()) {       writeStyleAttribute(element);     }   } }  export function normalizeAnimationEntry(steps: AnimationMetadata|                                         AnimationMetadata[]): AnimationMetadata {   if (Array.isArray(steps)) {     if (steps.length == 1) return steps[0];     return sequence(steps);   }   return steps as AnimationMetadata; }  export function validateStyleParams(     value: string|number|null|undefined, options: AnimationOptions, errors: Error[]) {   const params = options.params || {};   const matches = extractStyleParams(value);   if (matches.length) {     matches.forEach(varName => {       if (!params.hasOwnProperty(varName)) {         errors.push(invalidStyleParams(varName));       }     });   } }  const PARAM_REGEX =     new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g'); export function extractStyleParams(value: string|number|null|undefined): string[] {   let params: string[] = [];   if (typeof value === 'string') {     let match: any;     while (match = PARAM_REGEX.exec(value)) {       params.push(match[1] as string);     }     PARAM_REGEX.lastIndex = 0;   }   return params; }  export function interpolateParams(     value: string|number, params: {[name: string]: any}, errors: Error[]): string|number {   const original = value.toString();   const str = original.replace(PARAM_REGEX, (_, varName) => {     let localVal = params[varName];     // this means that the value was never overridden by the data passed in by the user     if (localVal == null) {       errors.push(invalidParamValue(varName));       localVal = '';     }     return localVal.toString();   });    // we do this to assert that numeric values stay as they are   return str == original ? value : str; }  export function iteratorToArray(iterator: any): any[] {   const arr: any[] = [];   let item = iterator.next();   while (!item.done) {     arr.push(item.value);     item = iterator.next();   }   return arr; }  const DASH_CASE_REGEXP = /-+([a-z0-9])/g; export function dashCaseToCamelCase(input: string): string {   return input.replace(DASH_CASE_REGEXP, (...m: any[]) => m[1].toUpperCase()); }  export function camelCaseToDashCase(input: string): string {   return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); }  export function allowPreviousPlayerStylesMerge(duration: number, delay: number) {   return duration === 0 || delay === 0; }  export function balancePreviousStylesIntoKeyframes(     element: any, keyframes: Array<ɵStyleDataMap>, previousStyles: ɵStyleDataMap) {   if (previousStyles.size && keyframes.length) {     let startingKeyframe = keyframes[0];     let missingStyleProps: string[] = [];     previousStyles.forEach((val, prop) => {       if (!startingKeyframe.has(prop)) {         missingStyleProps.push(prop);       }       startingKeyframe.set(prop, val);     });      if (missingStyleProps.length) {       for (let i = 1; i < keyframes.length; i++) {         let kf = keyframes[i];         missingStyleProps.forEach(prop => kf.set(prop, computeStyle(element, prop)));       }     }   }   return keyframes; }  export function visitDslNode(     visitor: AnimationDslVisitor, node: AnimationMetadata, context: any): any; export function visitDslNode(     visitor: AnimationAstVisitor, node: AnimationAst<AnimationMetadataType>, context: any): any; export function visitDslNode(visitor: any, node: any, context: any): any {   switch (node.type) {     case AnimationMetadataType.Trigger:       return visitor.visitTrigger(node, context);     case AnimationMetadataType.State:       return visitor.visitState(node, context);     case AnimationMetadataType.Transition:       return visitor.visitTransition(node, context);     case AnimationMetadataType.Sequence:       return visitor.visitSequence(node, context);     case AnimationMetadataType.Group:       return visitor.visitGroup(node, context);     case AnimationMetadataType.Animate:       return visitor.visitAnimate(node, context);     case AnimationMetadataType.Keyframes:       return visitor.visitKeyframes(node, context);     case AnimationMetadataType.Style:       return visitor.visitStyle(node, context);     case AnimationMetadataType.Reference:       return visitor.visitReference(node, context);     case AnimationMetadataType.AnimateChild:       return visitor.visitAnimateChild(node, context);     case AnimationMetadataType.AnimateRef:       return visitor.visitAnimateRef(node, context);     case AnimationMetadataType.Query:       return visitor.visitQuery(node, context);     case AnimationMetadataType.Stagger:       return visitor.visitStagger(node, context);     default:       throw invalidNodeType(node.type);   } }  export function computeStyle(element: any, prop: string): string {   return (<any>window.getComputedStyle(element))[prop]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  function createListOfWarnings(warnings: string[]): string {   const LINE_START = '\  - ';   return `${LINE_START}${warnings.filter(Boolean).map(warning => warning).join(LINE_START)}`; }  export function warnValidation(warnings: string[]): void {   NG_DEV_MODE && console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`); }  export function warnTriggerBuild(name: string, warnings: string[]): void {   NG_DEV_MODE &&       console.warn(`The animation trigger \"${name}\" has built with the following warnings:${           createListOfWarnings(warnings)}`); }  export function warnRegister(warnings: string[]): void {   NG_DEV_MODE &&       console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`); }  export function triggerParsingWarnings(name: string, warnings: string[]): void {   NG_DEV_MODE &&       console.warn(`Animation parsing for the ${name} trigger presents the following warnings:${           createListOfWarnings(warnings)}`); }  export function pushUnrecognizedPropertiesWarning(warnings: string[], props: string[]): void {   if (props.length) {     warnings.push(`The following provided properties are not recognized: ${props.join(', ')}`);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {invalidExpression, invalidTransitionAlias} from '../error_helpers';  export const ANY_STATE = '*'; export declare type TransitionMatcherFn =     (fromState: any, toState: any, element: any, params: {[key: string]: any}) => boolean;  export function parseTransitionExpr(     transitionValue: string|TransitionMatcherFn, errors: Error[]): TransitionMatcherFn[] {   const expressions: TransitionMatcherFn[] = [];   if (typeof transitionValue == 'string') {     transitionValue.split(/\\s*,\\s*/).forEach(         str => parseInnerTransitionStr(str, expressions, errors));   } else {     expressions.push(<TransitionMatcherFn>transitionValue);   }   return expressions; }  function parseInnerTransitionStr(     eventStr: string, expressions: TransitionMatcherFn[], errors: Error[]) {   if (eventStr[0] == ':') {     const result = parseAnimationAlias(eventStr, errors);     if (typeof result == 'function') {       expressions.push(result);       return;     }     eventStr = result;   }    const match = eventStr.match(/^(\\*|[-\\w]+)\\s*(<?[=-]>)\\s*(\\*|[-\\w]+)$/);   if (match == null || match.length < 4) {     errors.push(invalidExpression(eventStr));     return expressions;   }    const fromState = match[1];   const separator = match[2];   const toState = match[3];   expressions.push(makeLambdaFromStates(fromState, toState));    const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;   if (separator[0] == '<' && !isFullAnyStateExpr) {     expressions.push(makeLambdaFromStates(toState, fromState));   } }  function parseAnimationAlias(alias: string, errors: Error[]): string|TransitionMatcherFn {   switch (alias) {     case ':enter':       return 'void => *';     case ':leave':       return '* => void';     case ':increment':       return (fromState: any, toState: any): boolean => parseFloat(toState) > parseFloat(fromState);     case ':decrement':       return (fromState: any, toState: any): boolean => parseFloat(toState) < parseFloat(fromState);     default:       errors.push(invalidTransitionAlias(alias));       return '* => *';   } }  // DO NOT REFACTOR ... keep the follow set instantiations // with the values intact (closure compiler for some reason // removes follow-up lines that add the values outside of // the constructor... const TRUE_BOOLEAN_VALUES = new Set<string>(['true', '1']); const FALSE_BOOLEAN_VALUES = new Set<string>(['false', '0']);  function makeLambdaFromStates(lhs: string, rhs: string): TransitionMatcherFn {   const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);   const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);    return (fromState: any, toState: any): boolean => {     let lhsMatch = lhs == ANY_STATE || lhs == fromState;     let rhsMatch = rhs == ANY_STATE || rhs == toState;      if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {       lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);     }     if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {       rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);     }      return lhsMatch && rhsMatch;   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimateTimings, AnimationAnimateChildMetadata, AnimationAnimateMetadata, AnimationAnimateRefMetadata, AnimationGroupMetadata, AnimationKeyframesSequenceMetadata, AnimationMetadata, AnimationMetadataType, AnimationOptions, AnimationQueryMetadata, AnimationQueryOptions, AnimationReferenceMetadata, AnimationSequenceMetadata, AnimationStaggerMetadata, AnimationStateMetadata, AnimationStyleMetadata, AnimationTransitionMetadata, AnimationTriggerMetadata, AUTO_STYLE, style, ɵStyleDataMap} from '@angular/animations';  import {invalidDefinition, invalidKeyframes, invalidOffset, invalidParallelAnimation, invalidProperty, invalidStagger, invalidState, invalidStyleValue, invalidTrigger, keyframeOffsetsOutOfOrder, keyframesMissingOffsets} from '../error_helpers'; import {AnimationDriver} from '../render/animation_driver'; import {getOrSetDefaultValue} from '../render/shared'; import {convertToMap, copyObj, extractStyleParams, iteratorToArray, NG_ANIMATING_SELECTOR, NG_TRIGGER_SELECTOR, normalizeAnimationEntry, resolveTiming, SUBSTITUTION_EXPR_START, validateStyleParams, visitDslNode} from '../util'; import {pushUnrecognizedPropertiesWarning} from '../warning_helpers';  import {AnimateAst, AnimateChildAst, AnimateRefAst, Ast, DynamicTimingAst, GroupAst, KeyframesAst, QueryAst, ReferenceAst, SequenceAst, StaggerAst, StateAst, StyleAst, TimingAst, TransitionAst, TriggerAst} from './animation_ast'; import {AnimationDslVisitor} from './animation_dsl_visitor'; import {parseTransitionExpr} from './animation_transition_expr';  const SELF_TOKEN = ':self'; const SELF_TOKEN_REGEX = new RegExp(`\\s*${SELF_TOKEN}\\s*,?`, 'g');  /*  * [Validation]  * The visitor code below will traverse the animation AST generated by the animation verb functions  * (the output is a tree of objects) and attempt to perform a series of validations on the data. The  * following corner-cases will be validated:  *  * 1. Overlap of animations  * Given that a CSS property cannot be animated in more than one place at the same time, it's  * important that this behavior is detected and validated. The way in which this occurs is that  * each time a style property is examined, a string-map containing the property will be updated with  * the start and end times for when the property is used within an animation step.  *  * If there are two or more parallel animations that are currently running (these are invoked by the  * group()) on the same element then the validator will throw an error. Since the start/end timing  * values are collected for each property then if the current animation step is animating the same  * property and its timing values fall anywhere into the window of time that the property is  * currently being animated within then this is what causes an error.  *  * 2. Timing values  * The validator will validate to see if a timing value of `duration delay easing` or  * `durationNumber` is valid or not.  *  * (note that upon validation the code below will replace the timing data with an object containing  * {duration,delay,easing}.  *  * 3. Offset Validation  * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().  * Offsets within keyframes() are considered valid when:  *  *   - No offsets are used at all  *   - Each style() entry contains an offset value  *   - Each offset is between 0 and 1  *   - Each offset is greater to or equal than the previous one  *  * Otherwise an error will be thrown.  */ export function buildAnimationAst(     driver: AnimationDriver, metadata: AnimationMetadata|AnimationMetadata[], errors: Error[],     warnings: string[]): Ast<AnimationMetadataType> {   return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings); }  const ROOT_SELECTOR = '';  export class AnimationAstBuilderVisitor implements AnimationDslVisitor {   constructor(private _driver: AnimationDriver) {}    build(metadata: AnimationMetadata|AnimationMetadata[], errors: Error[], warnings: string[]):       Ast<AnimationMetadataType> {     const context = new AnimationAstBuilderContext(errors);     this._resetContextStyleTimingState(context);     const ast =         <Ast<AnimationMetadataType>>visitDslNode(this, normalizeAnimationEntry(metadata), context);      if (typeof ngDevMode === 'undefined' || ngDevMode) {       if (context.unsupportedCSSPropertiesFound.size) {         pushUnrecognizedPropertiesWarning(             warnings,             [...context.unsupportedCSSPropertiesFound.keys()],         );       }     }      return ast;   }    private _resetContextStyleTimingState(context: AnimationAstBuilderContext) {     context.currentQuerySelector = ROOT_SELECTOR;     context.collectedStyles = new Map<string, Map<string, StyleTimeTuple>>();     context.collectedStyles.set(ROOT_SELECTOR, new Map());     context.currentTime = 0;   }    visitTrigger(metadata: AnimationTriggerMetadata, context: AnimationAstBuilderContext):       TriggerAst {     let queryCount = context.queryCount = 0;     let depCount = context.depCount = 0;     const states: StateAst[] = [];     const transitions: TransitionAst[] = [];     if (metadata.name.charAt(0) == '@') {       context.errors.push(invalidTrigger());     }      metadata.definitions.forEach(def => {       this._resetContextStyleTimingState(context);       if (def.type == AnimationMetadataType.State) {         const stateDef = def as AnimationStateMetadata;         const name = stateDef.name;         name.toString().split(/\\s*,\\s*/).forEach(n => {           stateDef.name = n;           states.push(this.visitState(stateDef, context));         });         stateDef.name = name;       } else if (def.type == AnimationMetadataType.Transition) {         const transition = this.visitTransition(def as AnimationTransitionMetadata, context);         queryCount += transition.queryCount;         depCount += transition.depCount;         transitions.push(transition);       } else {         context.errors.push(invalidDefinition());       }     });      return {       type: AnimationMetadataType.Trigger,       name: metadata.name,       states,       transitions,       queryCount,       depCount,       options: null     };   }    visitState(metadata: AnimationStateMetadata, context: AnimationAstBuilderContext): StateAst {     const styleAst = this.visitStyle(metadata.styles, context);     const astParams = (metadata.options && metadata.options.params) || null;     if (styleAst.containsDynamicStyles) {       const missingSubs = new Set<string>();       const params = astParams || {};       styleAst.styles.forEach(style => {         if (style instanceof Map) {           style.forEach(value => {             extractStyleParams(value).forEach(sub => {               if (!params.hasOwnProperty(sub)) {                 missingSubs.add(sub);               }             });           });         }       });       if (missingSubs.size) {         const missingSubsArr = iteratorToArray(missingSubs.values());         context.errors.push(invalidState(metadata.name, missingSubsArr));       }     }      return {       type: AnimationMetadataType.State,       name: metadata.name,       style: styleAst,       options: astParams ? {params: astParams} : null     };   }    visitTransition(metadata: AnimationTransitionMetadata, context: AnimationAstBuilderContext):       TransitionAst {     context.queryCount = 0;     context.depCount = 0;     const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);     const matchers = parseTransitionExpr(metadata.expr, context.errors);      return {       type: AnimationMetadataType.Transition,       matchers,       animation,       queryCount: context.queryCount,       depCount: context.depCount,       options: normalizeAnimationOptions(metadata.options)     };   }    visitSequence(metadata: AnimationSequenceMetadata, context: AnimationAstBuilderContext):       SequenceAst {     return {       type: AnimationMetadataType.Sequence,       steps: metadata.steps.map(s => visitDslNode(this, s, context)),       options: normalizeAnimationOptions(metadata.options)     };   }    visitGroup(metadata: AnimationGroupMetadata, context: AnimationAstBuilderContext): GroupAst {     const currentTime = context.currentTime;     let furthestTime = 0;     const steps = metadata.steps.map(step => {       context.currentTime = currentTime;       const innerAst = visitDslNode(this, step, context);       furthestTime = Math.max(furthestTime, context.currentTime);       return innerAst;     });      context.currentTime = furthestTime;     return {       type: AnimationMetadataType.Group,       steps,       options: normalizeAnimationOptions(metadata.options)     };   }    visitAnimate(metadata: AnimationAnimateMetadata, context: AnimationAstBuilderContext):       AnimateAst {     const timingAst = constructTimingAst(metadata.timings, context.errors);     context.currentAnimateTimings = timingAst;     let styleAst: StyleAst|KeyframesAst;     let styleMetadata: AnimationStyleMetadata|AnimationKeyframesSequenceMetadata =         metadata.styles ? metadata.styles : style({});     if (styleMetadata.type == AnimationMetadataType.Keyframes) {       styleAst = this.visitKeyframes(styleMetadata as AnimationKeyframesSequenceMetadata, context);     } else {       let styleMetadata = metadata.styles as AnimationStyleMetadata;       let isEmpty = false;       if (!styleMetadata) {         isEmpty = true;         const newStyleData: {[prop: string]: string|number} = {};         if (timingAst.easing) {           newStyleData['easing'] = timingAst.easing;         }         styleMetadata = style(newStyleData);       }       context.currentTime += timingAst.duration + timingAst.delay;       const _styleAst = this.visitStyle(styleMetadata, context);       _styleAst.isEmptyStep = isEmpty;       styleAst = _styleAst;     }      context.currentAnimateTimings = null;     return {       type: AnimationMetadataType.Animate,       timings: timingAst,       style: styleAst,       options: null     };   }    visitStyle(metadata: AnimationStyleMetadata, context: AnimationAstBuilderContext): StyleAst {     const ast = this._makeStyleAst(metadata, context);     this._validateStyleAst(ast, context);     return ast;   }    private _makeStyleAst(metadata: AnimationStyleMetadata, context: AnimationAstBuilderContext):       StyleAst {     const styles: Array<(ɵStyleDataMap | string)> = [];     const metadataStyles = Array.isArray(metadata.styles) ? metadata.styles : [metadata.styles];      for (let styleTuple of metadataStyles) {       if (typeof styleTuple === 'string') {         if (styleTuple === AUTO_STYLE) {           styles.push(styleTuple);         } else {           context.errors.push(invalidStyleValue(styleTuple));         }       } else {         styles.push(convertToMap(styleTuple));       }     }      let containsDynamicStyles = false;     let collectedEasing: string|null = null;     styles.forEach(styleData => {       if (styleData instanceof Map) {         if (styleData.has('easing')) {           collectedEasing = styleData.get('easing') as string;           styleData.delete('easing');         }         if (!containsDynamicStyles) {           for (let value of styleData.values()) {             if (value!.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {               containsDynamicStyles = true;               break;             }           }         }       }     });      return {       type: AnimationMetadataType.Style,       styles,       easing: collectedEasing,       offset: metadata.offset,       containsDynamicStyles,       options: null     };   }    private _validateStyleAst(ast: StyleAst, context: AnimationAstBuilderContext): void {     const timings = context.currentAnimateTimings;     let endTime = context.currentTime;     let startTime = context.currentTime;     if (timings && startTime > 0) {       startTime -= timings.duration + timings.delay;     }      ast.styles.forEach(tuple => {       if (typeof tuple === 'string') return;        tuple.forEach((value, prop) => {         if (typeof ngDevMode === 'undefined' || ngDevMode) {           if (!this._driver.validateStyleProperty(prop)) {             tuple.delete(prop);             context.unsupportedCSSPropertiesFound.add(prop);             return;           }         }          // This is guaranteed to have a defined Map at this querySelector location making it         // safe to add the assertion here. It is set as a default empty map in prior methods.         const collectedStyles = context.collectedStyles.get(context.currentQuerySelector!)!;         const collectedEntry = collectedStyles.get(prop);         let updateCollectedStyle = true;         if (collectedEntry) {           if (startTime != endTime && startTime >= collectedEntry.startTime &&               endTime <= collectedEntry.endTime) {             context.errors.push(invalidParallelAnimation(                 prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime));             updateCollectedStyle = false;           }            // we always choose the smaller start time value since we           // want to have a record of the entire animation window where           // the style property is being animated in between           startTime = collectedEntry.startTime;         }          if (updateCollectedStyle) {           collectedStyles.set(prop, {startTime, endTime});         }          if (context.options) {           validateStyleParams(value, context.options, context.errors);         }       });     });   }    visitKeyframes(metadata: AnimationKeyframesSequenceMetadata, context: AnimationAstBuilderContext):       KeyframesAst {     const ast: KeyframesAst = {type: AnimationMetadataType.Keyframes, styles: [], options: null};     if (!context.currentAnimateTimings) {       context.errors.push(invalidKeyframes());       return ast;     }      const MAX_KEYFRAME_OFFSET = 1;      let totalKeyframesWithOffsets = 0;     const offsets: number[] = [];     let offsetsOutOfOrder = false;     let keyframesOutOfRange = false;     let previousOffset: number = 0;      const keyframes: StyleAst[] = metadata.steps.map(styles => {       const style = this._makeStyleAst(styles, context);       let offsetVal: number|null =           style.offset != null ? style.offset : consumeOffset(style.styles);       let offset: number = 0;       if (offsetVal != null) {         totalKeyframesWithOffsets++;         offset = style.offset = offsetVal;       }       keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;       offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;       previousOffset = offset;       offsets.push(offset);       return style;     });      if (keyframesOutOfRange) {       context.errors.push(invalidOffset());     }      if (offsetsOutOfOrder) {       context.errors.push(keyframeOffsetsOutOfOrder());     }      const length = metadata.steps.length;     let generatedOffset = 0;     if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {       context.errors.push(keyframesMissingOffsets());     } else if (totalKeyframesWithOffsets == 0) {       generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);     }      const limit = length - 1;     const currentTime = context.currentTime;     const currentAnimateTimings = context.currentAnimateTimings!;     const animateDuration = currentAnimateTimings.duration;     keyframes.forEach((kf, i) => {       const offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];       const durationUpToThisFrame = offset * animateDuration;       context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;       currentAnimateTimings.duration = durationUpToThisFrame;       this._validateStyleAst(kf, context);       kf.offset = offset;        ast.styles.push(kf);     });      return ast;   }    visitReference(metadata: AnimationReferenceMetadata, context: AnimationAstBuilderContext):       ReferenceAst {     return {       type: AnimationMetadataType.Reference,       animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),       options: normalizeAnimationOptions(metadata.options)     };   }    visitAnimateChild(metadata: AnimationAnimateChildMetadata, context: AnimationAstBuilderContext):       AnimateChildAst {     context.depCount++;     return {       type: AnimationMetadataType.AnimateChild,       options: normalizeAnimationOptions(metadata.options)     };   }    visitAnimateRef(metadata: AnimationAnimateRefMetadata, context: AnimationAstBuilderContext):       AnimateRefAst {     return {       type: AnimationMetadataType.AnimateRef,       animation: this.visitReference(metadata.animation, context),       options: normalizeAnimationOptions(metadata.options)     };   }    visitQuery(metadata: AnimationQueryMetadata, context: AnimationAstBuilderContext): QueryAst {     const parentSelector = context.currentQuerySelector!;     const options = (metadata.options || {}) as AnimationQueryOptions;      context.queryCount++;     context.currentQuery = metadata;     const [selector, includeSelf] = normalizeSelector(metadata.selector);     context.currentQuerySelector =         parentSelector.length ? (parentSelector + ' ' + selector) : selector;     getOrSetDefaultValue(context.collectedStyles, context.currentQuerySelector, new Map());      const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);     context.currentQuery = null;     context.currentQuerySelector = parentSelector;      return {       type: AnimationMetadataType.Query,       selector,       limit: options.limit || 0,       optional: !!options.optional,       includeSelf,       animation,       originalSelector: metadata.selector,       options: normalizeAnimationOptions(metadata.options)     };   }    visitStagger(metadata: AnimationStaggerMetadata, context: AnimationAstBuilderContext):       StaggerAst {     if (!context.currentQuery) {       context.errors.push(invalidStagger());     }     const timings = metadata.timings === 'full' ?         {duration: 0, delay: 0, easing: 'full'} :         resolveTiming(metadata.timings, context.errors, true);      return {       type: AnimationMetadataType.Stagger,       animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),       timings,       options: null     };   } }  function normalizeSelector(selector: string): [string, boolean] {   const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;   if (hasAmpersand) {     selector = selector.replace(SELF_TOKEN_REGEX, '');   }    // Note: the :enter and :leave aren't normalized here since those   // selectors are filled in at runtime during timeline building   selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR)                  .replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.slice(1))                  .replace(/:animating/g, NG_ANIMATING_SELECTOR);    return [selector, hasAmpersand]; }   function normalizeParams(obj: {[key: string]: any}|any): {[key: string]: any}|null {   return obj ? copyObj(obj) : null; }  export type StyleTimeTuple = {   startTime: number; endTime: number; };  export class AnimationAstBuilderContext {   public queryCount: number = 0;   public depCount: number = 0;   public currentTransition: AnimationTransitionMetadata|null = null;   public currentQuery: AnimationQueryMetadata|null = null;   public currentQuerySelector: string|null = null;   public currentAnimateTimings: TimingAst|null = null;   public currentTime: number = 0;   public collectedStyles = new Map<string, Map<string, StyleTimeTuple>>();   public options: AnimationOptions|null = null;   public unsupportedCSSPropertiesFound: Set<string> = new Set<string>();   constructor(public errors: Error[]) {} }  type OffsetStyles = string|ɵStyleDataMap;  function consumeOffset(styles: OffsetStyles|Array<OffsetStyles>): number|null {   if (typeof styles == 'string') return null;    let offset: number|null = null;    if (Array.isArray(styles)) {     styles.forEach(styleTuple => {       if (styleTuple instanceof Map && styleTuple.has('offset')) {         const obj = styleTuple as ɵStyleDataMap;         offset = parseFloat(obj.get('offset') as string);         obj.delete('offset');       }     });   } else if (styles instanceof Map && styles.has('offset')) {     const obj = styles;     offset = parseFloat(obj.get('offset') as string);     obj.delete('offset');   }   return offset; }  function constructTimingAst(value: string|number|AnimateTimings, errors: Error[]) {   if (value.hasOwnProperty('duration')) {     return value as AnimateTimings;   }    if (typeof value == 'number') {     const duration = resolveTiming(value, errors).duration;     return makeTimingAst(duration, 0, '');   }    const strValue = value as string;   const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');   if (isDynamic) {     const ast = makeTimingAst(0, 0, '') as any;     ast.dynamic = true;     ast.strValue = strValue;     return ast as DynamicTimingAst;   }    const timings = resolveTiming(strValue, errors);   return makeTimingAst(timings.duration, timings.delay, timings.easing); }  function normalizeAnimationOptions(options: AnimationOptions|null): AnimationOptions {   if (options) {     options = copyObj(options);     if (options['params']) {       options['params'] = normalizeParams(options['params'])!;     }   } else {     options = {};   }   return options; }  function makeTimingAst(duration: number, delay: number, easing: string|null): TimingAst {   return {duration, delay, easing}; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {ɵStyleDataMap} from '@angular/animations';  import {AnimationEngineInstruction, AnimationTransitionInstructionType} from '../render/animation_engine_instruction';  export interface AnimationTimelineInstruction extends AnimationEngineInstruction {   element: any;   keyframes: Array<ɵStyleDataMap>;   preStyleProps: string[];   postStyleProps: string[];   duration: number;   delay: number;   totalTime: number;   easing: string|null;   stretchStartingKeyframe?: boolean;   subTimeline: boolean; }  export function createTimelineInstruction(     element: any, keyframes: Array<ɵStyleDataMap>, preStyleProps: string[],     postStyleProps: string[], duration: number, delay: number, easing: string|null = null,     subTimeline: boolean = false): AnimationTimelineInstruction {   return {     type: AnimationTransitionInstructionType.TimelineAnimation,     element,     keyframes,     preStyleProps,     postStyleProps,     duration,     delay,     totalTime: duration + delay,     easing,     subTimeline   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationTimelineInstruction} from './animation_timeline_instruction';  export class ElementInstructionMap {   private _map = new Map<any, AnimationTimelineInstruction[]>();    get(element: any): AnimationTimelineInstruction[] {     return this._map.get(element) || [];   }    append(element: any, instructions: AnimationTimelineInstruction[]) {     let existingInstructions = this._map.get(element);     if (!existingInstructions) {       this._map.set(element, existingInstructions = []);     }     existingInstructions.push(...instructions);   }    has(element: any): boolean {     return this._map.has(element);   }    clear() {     this._map.clear();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimateChildOptions, AnimateTimings, AnimationMetadataType, AnimationOptions, AnimationQueryOptions, AUTO_STYLE, ɵPRE_STYLE as PRE_STYLE, ɵStyleDataMap} from '@angular/animations';  import {invalidQuery} from '../error_helpers'; import {AnimationDriver} from '../render/animation_driver'; import {copyStyles, interpolateParams, iteratorToArray, resolveTiming, resolveTimingValue, visitDslNode} from '../util';  import {AnimateAst, AnimateChildAst, AnimateRefAst, Ast, AstVisitor, DynamicTimingAst, GroupAst, KeyframesAst, QueryAst, ReferenceAst, SequenceAst, StaggerAst, StateAst, StyleAst, TimingAst, TransitionAst, TriggerAst} from './animation_ast'; import {AnimationTimelineInstruction, createTimelineInstruction} from './animation_timeline_instruction'; import {ElementInstructionMap} from './element_instruction_map';  const ONE_FRAME_IN_MILLISECONDS = 1; const ENTER_TOKEN = ':enter'; const ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g'); const LEAVE_TOKEN = ':leave'; const LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');  /*  * The code within this file aims to generate web-animations-compatible keyframes from Angular's  * animation DSL code.  *  * The code below will be converted from:  *  * ```  * sequence([  *   style({ opacity: 0 }),  *   animate(1000, style({ opacity: 0 }))  * ])  * ```  *  * To:  * ```  * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]  * duration = 1000  * delay = 0  * easing = ''  * ```  *  * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a  * combination of AST traversal and merge-sort-like algorithms are used.  *  * [AST Traversal]  * Each of the animation verbs, when executed, will return an string-map object representing what  * type of action it is (style, animate, group, etc...) and the data associated with it. This means  * that when functional composition mix of these functions is evaluated (like in the example above)  * then it will end up producing a tree of objects representing the animation itself.  *  * When this animation object tree is processed by the visitor code below it will visit each of the  * verb statements within the visitor. And during each visit it will build the context of the  * animation keyframes by interacting with the `TimelineBuilder`.  *  * [TimelineBuilder]  * This class is responsible for tracking the styles and building a series of keyframe objects for a  * timeline between a start and end time. The builder starts off with an initial timeline and each  * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a  * `sequence()` then it will generate a sub timeline for each step as well as a new one after  * they are complete.  *  * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub  * timeline was created (based on one of the cases above) then the parent timeline will attempt to  * merge the styles used within the sub timelines into itself (only with group() this will happen).  * This happens with a merge operation (much like how the merge works in mergeSort) and it will only  * copy the most recently used styles from the sub timelines into the parent timeline. This ensures  * that if the styles are used later on in another phase of the animation then they will be the most  * up-to-date values.  *  * [How Missing Styles Are Updated]  * Each timeline has a `backFill` property which is responsible for filling in new styles into  * already processed keyframes if a new style shows up later within the animation sequence.  *  * ```  * sequence([  *   style({ width: 0 }),  *   animate(1000, style({ width: 100 })),  *   animate(1000, style({ width: 200 })),  *   animate(1000, style({ width: 300 }))  *   animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere  * else  * ])  * ```  *  * What is happening here is that the `height` value is added later in the sequence, but is missing  * from all previous animation steps. Therefore when a keyframe is created it would also be missing  * from all previous keyframes up until where it is first used. For the timeline keyframe generation  * to properly fill in the style it will place the previous value (the value from the parent  * timeline) or a default value of `*` into the backFill map. The `copyStyles` method in util.ts  * handles propagating that backfill map to the styles object.  *  * When a sub-timeline is created it will have its own backFill property. This is done so that  * styles present within the sub-timeline do not accidentally seep into the previous/future timeline  * keyframes  *  * [Validation]  * The code in this file is not responsible for validation. That functionality happens with within  * the `AnimationValidatorVisitor` code.  */ export function buildAnimationTimelines(     driver: AnimationDriver, rootElement: any, ast: Ast<AnimationMetadataType>,     enterClassName: string, leaveClassName: string, startingStyles: ɵStyleDataMap = new Map(),     finalStyles: ɵStyleDataMap = new Map(), options: AnimationOptions,     subInstructions?: ElementInstructionMap, errors: Error[] = []): AnimationTimelineInstruction[] {   return new AnimationTimelineBuilderVisitor().buildKeyframes(       driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles,       options, subInstructions, errors); }  export class AnimationTimelineBuilderVisitor implements AstVisitor {   buildKeyframes(       driver: AnimationDriver, rootElement: any, ast: Ast<AnimationMetadataType>,       enterClassName: string, leaveClassName: string, startingStyles: ɵStyleDataMap,       finalStyles: ɵStyleDataMap, options: AnimationOptions,       subInstructions?: ElementInstructionMap,       errors: Error[] = []): AnimationTimelineInstruction[] {     subInstructions = subInstructions || new ElementInstructionMap();     const context = new AnimationTimelineContext(         driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);     context.options = options;     const delay = options.delay ? resolveTimingValue(options.delay) : 0;     context.currentTimeline.delayNextStep(delay);     context.currentTimeline.setStyles([startingStyles], null, context.errors, options);      visitDslNode(this, ast, context);      // this checks to see if an actual animation happened     const timelines = context.timelines.filter(timeline => timeline.containsAnimation());      // note: we just want to apply the final styles for the rootElement, so we do not     //       just apply the styles to the last timeline but the last timeline which     //       element is the root one (basically `*`-styles are replaced with the actual     //       state style values only for the root element)     if (timelines.length && finalStyles.size) {       let lastRootTimeline: TimelineBuilder|undefined;       for (let i = timelines.length - 1; i >= 0; i--) {         const timeline = timelines[i];         if (timeline.element === rootElement) {           lastRootTimeline = timeline;           break;         }       }       if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {         lastRootTimeline.setStyles([finalStyles], null, context.errors, options);       }     }     return timelines.length ?         timelines.map(timeline => timeline.buildKeyframes()) :         [createTimelineInstruction(rootElement, [], [], [], 0, delay, '', false)];   }    visitTrigger(ast: TriggerAst, context: AnimationTimelineContext): any {     // these values are not visited in this AST   }    visitState(ast: StateAst, context: AnimationTimelineContext): any {     // these values are not visited in this AST   }    visitTransition(ast: TransitionAst, context: AnimationTimelineContext): any {     // these values are not visited in this AST   }    visitAnimateChild(ast: AnimateChildAst, context: AnimationTimelineContext): any {     const elementInstructions = context.subInstructions.get(context.element);     if (elementInstructions) {       const innerContext = context.createSubContext(ast.options);       const startTime = context.currentTimeline.currentTime;       const endTime = this._visitSubInstructions(           elementInstructions, innerContext, innerContext.options as AnimateChildOptions);       if (startTime != endTime) {         // we do this on the upper context because we created a sub context for         // the sub child animations         context.transformIntoNewTimeline(endTime);       }     }     context.previousNode = ast;   }    visitAnimateRef(ast: AnimateRefAst, context: AnimationTimelineContext): any {     const innerContext = context.createSubContext(ast.options);     innerContext.transformIntoNewTimeline();     this._applyAnimationRefDelays([ast.options, ast.animation.options], context, innerContext);     this.visitReference(ast.animation, innerContext);     context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);     context.previousNode = ast;   }    private _applyAnimationRefDelays(       animationsRefsOptions: (AnimationOptions|null)[], context: AnimationTimelineContext,       innerContext: AnimationTimelineContext) {     for (const animationRefOptions of animationsRefsOptions) {       const animationDelay = animationRefOptions?.delay;       if (animationDelay) {         const animationDelayValue = typeof animationDelay === 'number' ?             animationDelay :             resolveTimingValue(interpolateParams(                 animationDelay, animationRefOptions?.params ?? {}, context.errors));         innerContext.delayNextStep(animationDelayValue);       }     }   }    private _visitSubInstructions(       instructions: AnimationTimelineInstruction[], context: AnimationTimelineContext,       options: AnimateChildOptions): number {     const startTime = context.currentTimeline.currentTime;     let furthestTime = startTime;      // this is a special-case for when a user wants to skip a sub     // animation from being fired entirely.     const duration = options.duration != null ? resolveTimingValue(options.duration) : null;     const delay = options.delay != null ? resolveTimingValue(options.delay) : null;     if (duration !== 0) {       instructions.forEach(instruction => {         const instructionTimings =             context.appendInstructionToTimeline(instruction, duration, delay);         furthestTime =             Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);       });     }      return furthestTime;   }    visitReference(ast: ReferenceAst, context: AnimationTimelineContext) {     context.updateOptions(ast.options, true);     visitDslNode(this, ast.animation, context);     context.previousNode = ast;   }    visitSequence(ast: SequenceAst, context: AnimationTimelineContext) {     const subContextCount = context.subContextCount;     let ctx = context;     const options = ast.options;      if (options && (options.params || options.delay)) {       ctx = context.createSubContext(options);       ctx.transformIntoNewTimeline();        if (options.delay != null) {         if (ctx.previousNode.type == AnimationMetadataType.Style) {           ctx.currentTimeline.snapshotCurrentStyles();           ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;         }          const delay = resolveTimingValue(options.delay);         ctx.delayNextStep(delay);       }     }      if (ast.steps.length) {       ast.steps.forEach(s => visitDslNode(this, s, ctx));        // this is here just in case the inner steps only contain or end with a style() call       ctx.currentTimeline.applyStylesToKeyframe();        // this means that some animation function within the sequence       // ended up creating a sub timeline (which means the current       // timeline cannot overlap with the contents of the sequence)       if (ctx.subContextCount > subContextCount) {         ctx.transformIntoNewTimeline();       }     }      context.previousNode = ast;   }    visitGroup(ast: GroupAst, context: AnimationTimelineContext) {     const innerTimelines: TimelineBuilder[] = [];     let furthestTime = context.currentTimeline.currentTime;     const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;      ast.steps.forEach(s => {       const innerContext = context.createSubContext(ast.options);       if (delay) {         innerContext.delayNextStep(delay);       }        visitDslNode(this, s, innerContext);       furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);       innerTimelines.push(innerContext.currentTimeline);     });      // this operation is run after the AST loop because otherwise     // if the parent timeline's collected styles were updated then     // it would pass in invalid data into the new-to-be forked items     innerTimelines.forEach(         timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));     context.transformIntoNewTimeline(furthestTime);     context.previousNode = ast;   }    private _visitTiming(ast: TimingAst, context: AnimationTimelineContext): AnimateTimings {     if ((ast as DynamicTimingAst).dynamic) {       const strValue = (ast as DynamicTimingAst).strValue;       const timingValue =           context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;       return resolveTiming(timingValue, context.errors);     } else {       return {duration: ast.duration, delay: ast.delay, easing: ast.easing};     }   }    visitAnimate(ast: AnimateAst, context: AnimationTimelineContext) {     const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);     const timeline = context.currentTimeline;     if (timings.delay) {       context.incrementTime(timings.delay);       timeline.snapshotCurrentStyles();     }      const style = ast.style;     if (style.type == AnimationMetadataType.Keyframes) {       this.visitKeyframes(style, context);     } else {       context.incrementTime(timings.duration);       this.visitStyle(style as StyleAst, context);       timeline.applyStylesToKeyframe();     }      context.currentAnimateTimings = null;     context.previousNode = ast;   }    visitStyle(ast: StyleAst, context: AnimationTimelineContext) {     const timeline = context.currentTimeline;     const timings = context.currentAnimateTimings!;      // this is a special case for when a style() call     // directly follows  an animate() call (but not inside of an animate() call)     if (!timings && timeline.hasCurrentStyleProperties()) {       timeline.forwardFrame();     }      const easing = (timings && timings.easing) || ast.easing;     if (ast.isEmptyStep) {       timeline.applyEmptyStep(easing);     } else {       timeline.setStyles(ast.styles, easing, context.errors, context.options);     }      context.previousNode = ast;   }    visitKeyframes(ast: KeyframesAst, context: AnimationTimelineContext) {     const currentAnimateTimings = context.currentAnimateTimings!;     const startTime = (context.currentTimeline!).duration;     const duration = currentAnimateTimings.duration;     const innerContext = context.createSubContext();     const innerTimeline = innerContext.currentTimeline;     innerTimeline.easing = currentAnimateTimings.easing;      ast.styles.forEach(step => {       const offset: number = step.offset || 0;       innerTimeline.forwardTime(offset * duration);       innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);       innerTimeline.applyStylesToKeyframe();     });      // this will ensure that the parent timeline gets all the styles from     // the child even if the new timeline below is not used     context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);      // we do this because the window between this timeline and the sub timeline     // should ensure that the styles within are exactly the same as they were before     context.transformIntoNewTimeline(startTime + duration);     context.previousNode = ast;   }    visitQuery(ast: QueryAst, context: AnimationTimelineContext) {     // in the event that the first step before this is a style step we need     // to ensure the styles are applied before the children are animated     const startTime = context.currentTimeline.currentTime;     const options = (ast.options || {}) as AnimationQueryOptions;     const delay = options.delay ? resolveTimingValue(options.delay) : 0;      if (delay &&         (context.previousNode.type === AnimationMetadataType.Style ||          (startTime == 0 && context.currentTimeline.hasCurrentStyleProperties()))) {       context.currentTimeline.snapshotCurrentStyles();       context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;     }      let furthestTime = startTime;     const elms = context.invokeQuery(         ast.selector, ast.originalSelector, ast.limit, ast.includeSelf,         options.optional ? true : false, context.errors);      context.currentQueryTotal = elms.length;     let sameElementTimeline: TimelineBuilder|null = null;     elms.forEach((element, i) => {       context.currentQueryIndex = i;       const innerContext = context.createSubContext(ast.options, element);       if (delay) {         innerContext.delayNextStep(delay);       }        if (element === context.element) {         sameElementTimeline = innerContext.currentTimeline;       }        visitDslNode(this, ast.animation, innerContext);        // this is here just incase the inner steps only contain or end       // with a style() call (which is here to signal that this is a preparatory       // call to style an element before it is animated again)       innerContext.currentTimeline.applyStylesToKeyframe();        const endTime = innerContext.currentTimeline.currentTime;       furthestTime = Math.max(furthestTime, endTime);     });      context.currentQueryIndex = 0;     context.currentQueryTotal = 0;     context.transformIntoNewTimeline(furthestTime);      if (sameElementTimeline) {       context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);       context.currentTimeline.snapshotCurrentStyles();     }      context.previousNode = ast;   }    visitStagger(ast: StaggerAst, context: AnimationTimelineContext) {     const parentContext = context.parentContext!;     const tl = context.currentTimeline;     const timings = ast.timings;     const duration = Math.abs(timings.duration);     const maxTime = duration * (context.currentQueryTotal - 1);     let delay = duration * context.currentQueryIndex;      let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;     switch (staggerTransformer) {       case 'reverse':         delay = maxTime - delay;         break;       case 'full':         delay = parentContext.currentStaggerTime;         break;     }      const timeline = context.currentTimeline;     if (delay) {       timeline.delayNextStep(delay);     }      const startingTime = timeline.currentTime;     visitDslNode(this, ast.animation, context);     context.previousNode = ast;      // time = duration + delay     // the reason why this computation is so complex is because     // the inner timeline may either have a delay value or a stretched     // keyframe depending on if a subtimeline is not used or is used.     parentContext.currentStaggerTime =         (tl.currentTime - startingTime) + (tl.startTime - parentContext.currentTimeline.startTime);   } }  export declare type StyleAtTime = {   time: number; value: string | number; };  const DEFAULT_NOOP_PREVIOUS_NODE = <Ast<AnimationMetadataType>>{}; export class AnimationTimelineContext {   public parentContext: AnimationTimelineContext|null = null;   public currentTimeline: TimelineBuilder;   public currentAnimateTimings: AnimateTimings|null = null;   public previousNode: Ast<AnimationMetadataType> = DEFAULT_NOOP_PREVIOUS_NODE;   public subContextCount = 0;   public options: AnimationOptions = {};   public currentQueryIndex: number = 0;   public currentQueryTotal: number = 0;   public currentStaggerTime: number = 0;    constructor(       private _driver: AnimationDriver, public element: any,       public subInstructions: ElementInstructionMap, private _enterClassName: string,       private _leaveClassName: string, public errors: Error[], public timelines: TimelineBuilder[],       initialTimeline?: TimelineBuilder) {     this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);     timelines.push(this.currentTimeline);   }    get params() {     return this.options.params;   }    updateOptions(options: AnimationOptions|null, skipIfExists?: boolean) {     if (!options) return;      const newOptions = options as any;     let optionsToUpdate = this.options;      // NOTE: this will get patched up when other animation methods support duration overrides     if (newOptions.duration != null) {       (optionsToUpdate as any).duration = resolveTimingValue(newOptions.duration);     }      if (newOptions.delay != null) {       optionsToUpdate.delay = resolveTimingValue(newOptions.delay);     }      const newParams = newOptions.params;     if (newParams) {       let paramsToUpdate: {[name: string]: any} = optionsToUpdate.params!;       if (!paramsToUpdate) {         paramsToUpdate = this.options.params = {};       }        Object.keys(newParams).forEach(name => {         if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {           paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);         }       });     }   }    private _copyOptions() {     const options: AnimationOptions = {};     if (this.options) {       const oldParams = this.options.params;       if (oldParams) {         const params: {[name: string]: any} = options['params'] = {};         Object.keys(oldParams).forEach(name => {           params[name] = oldParams[name];         });       }     }     return options;   }    createSubContext(options: AnimationOptions|null = null, element?: any, newTime?: number):       AnimationTimelineContext {     const target = element || this.element;     const context = new AnimationTimelineContext(         this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName,         this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));     context.previousNode = this.previousNode;     context.currentAnimateTimings = this.currentAnimateTimings;      context.options = this._copyOptions();     context.updateOptions(options);      context.currentQueryIndex = this.currentQueryIndex;     context.currentQueryTotal = this.currentQueryTotal;     context.parentContext = this;     this.subContextCount++;     return context;   }    transformIntoNewTimeline(newTime?: number) {     this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;     this.currentTimeline = this.currentTimeline.fork(this.element, newTime);     this.timelines.push(this.currentTimeline);     return this.currentTimeline;   }    appendInstructionToTimeline(       instruction: AnimationTimelineInstruction, duration: number|null,       delay: number|null): AnimateTimings {     const updatedTimings: AnimateTimings = {       duration: duration != null ? duration : instruction.duration,       delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,       easing: ''     };     const builder = new SubTimelineBuilder(         this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps,         instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);     this.timelines.push(builder);     return updatedTimings;   }    incrementTime(time: number) {     this.currentTimeline.forwardTime(this.currentTimeline.duration + time);   }    delayNextStep(delay: number) {     // negative delays are not yet supported     if (delay > 0) {       this.currentTimeline.delayNextStep(delay);     }   }    invokeQuery(       selector: string, originalSelector: string, limit: number, includeSelf: boolean,       optional: boolean, errors: Error[]): any[] {     let results: any[] = [];     if (includeSelf) {       results.push(this.element);     }     if (selector.length > 0) {  // only if :self is used then the selector can be empty       selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);       selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);       const multi = limit != 1;       let elements = this._driver.query(this.element, selector, multi);       if (limit !== 0) {         elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) :                                elements.slice(0, limit);       }       results.push(...elements);     }      if (!optional && results.length == 0) {       errors.push(invalidQuery(originalSelector));     }     return results;   } }  export class TimelineBuilder {   public duration: number = 0;   // TODO(issue/24571): remove '!'.   public easing!: string|null;   private _previousKeyframe: ɵStyleDataMap = new Map();   private _currentKeyframe: ɵStyleDataMap = new Map();   private _keyframes = new Map<number, ɵStyleDataMap>();   private _styleSummary = new Map<string, StyleAtTime>();   private _localTimelineStyles: ɵStyleDataMap = new Map();   private _globalTimelineStyles: ɵStyleDataMap;   private _pendingStyles: ɵStyleDataMap = new Map();   private _backFill: ɵStyleDataMap = new Map();   private _currentEmptyStepKeyframe: ɵStyleDataMap|null = null;    constructor(       private _driver: AnimationDriver, public element: any, public startTime: number,       private _elementTimelineStylesLookup?: Map<any, ɵStyleDataMap>) {     if (!this._elementTimelineStylesLookup) {       this._elementTimelineStylesLookup = new Map<any, ɵStyleDataMap>();     }      this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element)!;     if (!this._globalTimelineStyles) {       this._globalTimelineStyles = this._localTimelineStyles;       this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);     }     this._loadKeyframe();   }    containsAnimation(): boolean {     switch (this._keyframes.size) {       case 0:         return false;       case 1:         return this.hasCurrentStyleProperties();       default:         return true;     }   }    hasCurrentStyleProperties(): boolean {     return this._currentKeyframe.size > 0;   }    get currentTime() {     return this.startTime + this.duration;   }    delayNextStep(delay: number) {     // in the event that a style() step is placed right before a stagger()     // and that style() step is the very first style() value in the animation     // then we need to make a copy of the keyframe [0, copy, 1] so that the delay     // properly applies the style() values to work with the stagger...     const hasPreStyleStep = this._keyframes.size === 1 && this._pendingStyles.size;      if (this.duration || hasPreStyleStep) {       this.forwardTime(this.currentTime + delay);       if (hasPreStyleStep) {         this.snapshotCurrentStyles();       }     } else {       this.startTime += delay;     }   }    fork(element: any, currentTime?: number): TimelineBuilder {     this.applyStylesToKeyframe();     return new TimelineBuilder(         this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);   }    private _loadKeyframe() {     if (this._currentKeyframe) {       this._previousKeyframe = this._currentKeyframe;     }     this._currentKeyframe = this._keyframes.get(this.duration)!;     if (!this._currentKeyframe) {       this._currentKeyframe = new Map();       this._keyframes.set(this.duration, this._currentKeyframe);     }   }    forwardFrame() {     this.duration += ONE_FRAME_IN_MILLISECONDS;     this._loadKeyframe();   }    forwardTime(time: number) {     this.applyStylesToKeyframe();     this.duration = time;     this._loadKeyframe();   }    private _updateStyle(prop: string, value: string|number) {     this._localTimelineStyles.set(prop, value);     this._globalTimelineStyles.set(prop, value);     this._styleSummary.set(prop, {time: this.currentTime, value});   }    allowOnlyTimelineStyles() {     return this._currentEmptyStepKeyframe !== this._currentKeyframe;   }    applyEmptyStep(easing: string|null) {     if (easing) {       this._previousKeyframe.set('easing', easing);     }      // special case for animate(duration):     // all missing styles are filled with a `*` value then     // if any destination styles are filled in later on the same     // keyframe then they will override the overridden styles     // We use `_globalTimelineStyles` here because there may be     // styles in previous keyframes that are not present in this timeline     for (let [prop, value] of this._globalTimelineStyles) {       this._backFill.set(prop, value || AUTO_STYLE);       this._currentKeyframe.set(prop, AUTO_STYLE);     }     this._currentEmptyStepKeyframe = this._currentKeyframe;   }    setStyles(       input: Array<(ɵStyleDataMap | string)>, easing: string|null, errors: Error[],       options?: AnimationOptions) {     if (easing) {       this._previousKeyframe.set('easing', easing);     }     const params = (options && options.params) || {};     const styles = flattenStyles(input, this._globalTimelineStyles);     for (let [prop, value] of styles) {       const val = interpolateParams(value, params, errors);       this._pendingStyles.set(prop, val);       if (!this._localTimelineStyles.has(prop)) {         this._backFill.set(prop, this._globalTimelineStyles.get(prop) ?? AUTO_STYLE);       }       this._updateStyle(prop, val);     }   }    applyStylesToKeyframe() {     if (this._pendingStyles.size == 0) return;      this._pendingStyles.forEach((val, prop) => {       this._currentKeyframe.set(prop, val);     });     this._pendingStyles.clear();      this._localTimelineStyles.forEach((val, prop) => {       if (!this._currentKeyframe.has(prop)) {         this._currentKeyframe.set(prop, val);       }     });   }    snapshotCurrentStyles() {     for (let [prop, val] of this._localTimelineStyles) {       this._pendingStyles.set(prop, val);       this._updateStyle(prop, val);     }   }    getFinalKeyframe() {     return this._keyframes.get(this.duration);   }    get properties() {     const properties: string[] = [];     for (let prop in this._currentKeyframe) {       properties.push(prop);     }     return properties;   }    mergeTimelineCollectedStyles(timeline: TimelineBuilder) {     timeline._styleSummary.forEach((details1, prop) => {       const details0 = this._styleSummary.get(prop);       if (!details0 || details1.time > details0.time) {         this._updateStyle(prop, details1.value);       }     });   }    buildKeyframes(): AnimationTimelineInstruction {     this.applyStylesToKeyframe();     const preStyleProps = new Set<string>();     const postStyleProps = new Set<string>();     const isEmpty = this._keyframes.size === 1 && this.duration === 0;      let finalKeyframes: Array<ɵStyleDataMap> = [];     this._keyframes.forEach((keyframe, time) => {       const finalKeyframe = copyStyles(keyframe, new Map(), this._backFill);       finalKeyframe.forEach((value, prop) => {         if (value === PRE_STYLE) {           preStyleProps.add(prop);         } else if (value === AUTO_STYLE) {           postStyleProps.add(prop);         }       });       if (!isEmpty) {         finalKeyframe.set('offset', time / this.duration);       }       finalKeyframes.push(finalKeyframe);     });      const preProps: string[] = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : [];     const postProps: string[] = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : [];      // special case for a 0-second animation (which is designed just to place styles onscreen)     if (isEmpty) {       const kf0 = finalKeyframes[0];       const kf1 = new Map(kf0);       kf0.set('offset', 0);       kf1.set('offset', 1);       finalKeyframes = [kf0, kf1];     }      return createTimelineInstruction(         this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime,         this.easing, false);   } }  class SubTimelineBuilder extends TimelineBuilder {   public timings: AnimateTimings;    constructor(       driver: AnimationDriver, element: any, public keyframes: Array<ɵStyleDataMap>,       public preStyleProps: string[], public postStyleProps: string[], timings: AnimateTimings,       private _stretchStartingKeyframe: boolean = false) {     super(driver, element, timings.delay);     this.timings = {duration: timings.duration, delay: timings.delay, easing: timings.easing};   }    override containsAnimation(): boolean {     return this.keyframes.length > 1;   }    override buildKeyframes(): AnimationTimelineInstruction {     let keyframes = this.keyframes;     let {delay, duration, easing} = this.timings;     if (this._stretchStartingKeyframe && delay) {       const newKeyframes: Array<ɵStyleDataMap> = [];       const totalTime = duration + delay;       const startingGap = delay / totalTime;        // the original starting keyframe now starts once the delay is done       const newFirstKeyframe = copyStyles(keyframes[0]);       newFirstKeyframe.set('offset', 0);       newKeyframes.push(newFirstKeyframe);        const oldFirstKeyframe = copyStyles(keyframes[0]);       oldFirstKeyframe.set('offset', roundOffset(startingGap));       newKeyframes.push(oldFirstKeyframe);        /*         When the keyframe is stretched then it means that the delay before the animation         starts is gone. Instead the first keyframe is placed at the start of the animation         and it is then copied to where it starts when the original delay is over. This basically         means nothing animates during that delay, but the styles are still rendered. For this         to work the original offset values that exist in the original keyframes must be \"warped\"         so that they can take the new keyframe + delay into account.          delay=1000, duration=1000, keyframes = 0 .5 1          turns into          delay=0, duration=2000, keyframes = 0 .33 .66 1        */        // offsets between 1 ... n -1 are all warped by the keyframe stretch       const limit = keyframes.length - 1;       for (let i = 1; i <= limit; i++) {         let kf = copyStyles(keyframes[i]);         const oldOffset = kf.get('offset') as number;         const timeAtKeyframe = delay + oldOffset * duration;         kf.set('offset', roundOffset(timeAtKeyframe / totalTime));         newKeyframes.push(kf);       }        // the new starting keyframe should be added at the start       duration = totalTime;       delay = 0;       easing = '';        keyframes = newKeyframes;     }      return createTimelineInstruction(         this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing,         true);   } }  function roundOffset(offset: number, decimalPoints = 3): number {   const mult = Math.pow(10, decimalPoints - 1);   return Math.round(offset * mult) / mult; }  function flattenStyles(input: Array<(ɵStyleDataMap | string)>, allStyles: ɵStyleDataMap) {   const styles: ɵStyleDataMap = new Map();   let allProperties: string[]|IterableIterator<string>;   input.forEach(token => {     if (token === '*') {       allProperties = allProperties || allStyles.keys();       for (let prop of allProperties) {         styles.set(prop, AUTO_STYLE);       }     } else {       copyStyles(token as ɵStyleDataMap, styles);     }   });   return styles; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationMetadata, AnimationMetadataType, AnimationOptions, ɵStyleDataMap} from '@angular/animations';  import {buildingFailed, validationFailed} from '../error_helpers'; import {AnimationDriver} from '../render/animation_driver'; import {ENTER_CLASSNAME, LEAVE_CLASSNAME, normalizeStyles} from '../util'; import {warnValidation} from '../warning_helpers';  import {Ast} from './animation_ast'; import {buildAnimationAst} from './animation_ast_builder'; import {buildAnimationTimelines} from './animation_timeline_builder'; import {AnimationTimelineInstruction} from './animation_timeline_instruction'; import {ElementInstructionMap} from './element_instruction_map';  export class Animation {   private _animationAst: Ast<AnimationMetadataType>;   constructor(private _driver: AnimationDriver, input: AnimationMetadata|AnimationMetadata[]) {     const errors: Error[] = [];     const warnings: string[] = [];     const ast = buildAnimationAst(_driver, input, errors, warnings);     if (errors.length) {       throw validationFailed(errors);     }     if (warnings.length) {       warnValidation(warnings);     }     this._animationAst = ast;   }    buildTimelines(       element: any, startingStyles: ɵStyleDataMap|Array<ɵStyleDataMap>,       destinationStyles: ɵStyleDataMap|Array<ɵStyleDataMap>, options: AnimationOptions,       subInstructions?: ElementInstructionMap): AnimationTimelineInstruction[] {     const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) :                                                   <ɵStyleDataMap>startingStyles;     const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) :                                                     <ɵStyleDataMap>destinationStyles;     const errors: any = [];     subInstructions = subInstructions || new ElementInstructionMap();     const result = buildAnimationTimelines(         this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest,         options, subInstructions, errors);     if (errors.length) {       throw buildingFailed(errors);     }     return result;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @publicApi  */ export abstract class AnimationStyleNormalizer {   abstract normalizePropertyName(propertyName: string, errors: Error[]): string;   abstract normalizeStyleValue(       userProvidedProperty: string, normalizedProperty: string, value: string|number,       errors: Error[]): string; }  /**  * @publicApi  */ export class NoopAnimationStyleNormalizer {   normalizePropertyName(propertyName: string, errors: Error[]): string {     return propertyName;   }    normalizeStyleValue(       userProvidedProperty: string, normalizedProperty: string, value: string|number,       errors: Error[]): string {     return <any>value;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {invalidCssUnitValue} from '../../error_helpers'; import {dashCaseToCamelCase} from '../../util';  import {AnimationStyleNormalizer} from './animation_style_normalizer';  const DIMENSIONAL_PROP_SET = new Set([   'width',   'height',   'minWidth',   'minHeight',   'maxWidth',   'maxHeight',   'left',   'top',   'bottom',   'right',   'fontSize',   'outlineWidth',   'outlineOffset',   'paddingTop',   'paddingLeft',   'paddingBottom',   'paddingRight',   'marginTop',   'marginLeft',   'marginBottom',   'marginRight',   'borderRadius',   'borderWidth',   'borderTopWidth',   'borderLeftWidth',   'borderRightWidth',   'borderBottomWidth',   'textIndent',   'perspective' ]);  export class WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {   override normalizePropertyName(propertyName: string, errors: Error[]): string {     return dashCaseToCamelCase(propertyName);   }    override normalizeStyleValue(       userProvidedProperty: string, normalizedProperty: string, value: string|number,       errors: Error[]): string {     let unit: string = '';     const strVal = value.toString().trim();      if (DIMENSIONAL_PROP_SET.has(normalizedProperty) && value !== 0 && value !== '0') {       if (typeof value === 'number') {         unit = 'px';       } else {         const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);         if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {           errors.push(invalidCssUnitValue(userProvidedProperty, value));         }       }     }     return strVal + unit;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵStyleDataMap} from '@angular/animations';  import {AnimationEngineInstruction, AnimationTransitionInstructionType} from '../render/animation_engine_instruction';  import {AnimationTimelineInstruction} from './animation_timeline_instruction';  export interface AnimationTransitionInstruction extends AnimationEngineInstruction {   element: any;   triggerName: string;   isRemovalTransition: boolean;   fromState: string;   fromStyles: ɵStyleDataMap;   toState: string;   toStyles: ɵStyleDataMap;   timelines: AnimationTimelineInstruction[];   queriedElements: any[];   preStyleProps: Map<any, Set<string>>;   postStyleProps: Map<any, Set<string>>;   totalTime: number;   errors?: Error[]; }  export function createTransitionInstruction(     element: any, triggerName: string, fromState: string, toState: string,     isRemovalTransition: boolean, fromStyles: ɵStyleDataMap, toStyles: ɵStyleDataMap,     timelines: AnimationTimelineInstruction[], queriedElements: any[],     preStyleProps: Map<any, Set<string>>, postStyleProps: Map<any, Set<string>>, totalTime: number,     errors?: Error[]): AnimationTransitionInstruction {   return {     type: AnimationTransitionInstructionType.TransitionAnimation,     element,     triggerName,     isRemovalTransition,     fromState,     fromStyles,     toState,     toStyles,     timelines,     queriedElements,     preStyleProps,     postStyleProps,     totalTime,     errors   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationOptions, ɵStyleDataMap} from '@angular/animations';  import {AnimationDriver} from '../render/animation_driver'; import {getOrSetDefaultValue} from '../render/shared'; import {copyObj, interpolateParams, iteratorToArray} from '../util';  import {StyleAst, TransitionAst} from './animation_ast'; import {buildAnimationTimelines} from './animation_timeline_builder'; import {AnimationTimelineInstruction} from './animation_timeline_instruction'; import {TransitionMatcherFn} from './animation_transition_expr'; import {AnimationTransitionInstruction, createTransitionInstruction} from './animation_transition_instruction'; import {ElementInstructionMap} from './element_instruction_map'; import {AnimationStyleNormalizer} from './style_normalization/animation_style_normalizer';  const EMPTY_OBJECT = {};  export class AnimationTransitionFactory {   constructor(       private _triggerName: string, public ast: TransitionAst,       private _stateStyles: Map<string, AnimationStateStyles>) {}    match(currentState: any, nextState: any, element: any, params: {[key: string]: any}): boolean {     return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);   }    buildStyles(stateName: string|boolean|undefined, params: {[key: string]: any}, errors: Error[]):       ɵStyleDataMap {     let styler = this._stateStyles.get('*');     if (stateName !== undefined) {       styler = this._stateStyles.get(stateName?.toString()) || styler;     }     return styler ? styler.buildStyles(params, errors) : new Map();   }    build(       driver: AnimationDriver, element: any, currentState: any, nextState: any,       enterClassName: string, leaveClassName: string, currentOptions?: AnimationOptions,       nextOptions?: AnimationOptions, subInstructions?: ElementInstructionMap,       skipAstBuild?: boolean): AnimationTransitionInstruction {     const errors: Error[] = [];      const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;     const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;     const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);     const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;     const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);      const queriedElements = new Set<any>();     const preStyleMap = new Map<any, Set<string>>();     const postStyleMap = new Map<any, Set<string>>();     const isRemoval = nextState === 'void';      const animationOptions: AnimationOptions = {       params: applyParamDefaults(nextAnimationParams, transitionAnimationParams),       delay: this.ast.options?.delay,     };      const timelines = skipAstBuild ?         [] :         buildAnimationTimelines(             driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles,             nextStateStyles, animationOptions, subInstructions, errors);      let totalTime = 0;     timelines.forEach(tl => {       totalTime = Math.max(tl.duration + tl.delay, totalTime);     });      if (errors.length) {       return createTransitionInstruction(           element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles,           nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);     }      timelines.forEach(tl => {       const elm = tl.element;       const preProps = getOrSetDefaultValue(preStyleMap, elm, new Set<string>());       tl.preStyleProps.forEach(prop => preProps.add(prop));        const postProps = getOrSetDefaultValue(postStyleMap, elm, new Set<string>());       tl.postStyleProps.forEach(prop => postProps.add(prop));        if (elm !== element) {         queriedElements.add(elm);       }     });      if (typeof ngDevMode === 'undefined' || ngDevMode) {       checkNonAnimatableInTimelines(timelines, this._triggerName, driver);     }      const queriedElementsList = iteratorToArray(queriedElements.values());     return createTransitionInstruction(         element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles,         nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime);   } }  /**  * Checks inside a set of timelines if they try to animate a css property which is not considered  * animatable, in that case it prints a warning on the console.  * Besides that the function doesn't have any other effect.  *  * Note: this check is done here after the timelines are built instead of doing on a lower level so  * that we can make sure that the warning appears only once per instruction (we can aggregate here  * all the issues instead of finding them separately).  *  * @param timelines The built timelines for the current instruction.  * @param triggerName The name of the trigger for the current instruction.  * @param driver Animation driver used to perform the check.  *  */ function checkNonAnimatableInTimelines(     timelines: AnimationTimelineInstruction[], triggerName: string, driver: AnimationDriver): void {   if (!driver.validateAnimatableStyleProperty) {     return;   }    const allowedNonAnimatableProps = new Set<string>([     // 'easing' is a utility/synthetic prop we use to represent     // easing functions, it represents a property of the animation     // which is not animatable but different values can be used     // in different steps     'easing'   ]);    const invalidNonAnimatableProps = new Set<string>();    timelines.forEach(({keyframes}) => {     const nonAnimatablePropsInitialValues = new Map<string, string|number>();     keyframes.forEach(keyframe => {       const entriesToCheck =           Array.from(keyframe.entries()).filter(([prop]) => !allowedNonAnimatableProps.has(prop));       for (const [prop, value] of entriesToCheck) {         if (!driver.validateAnimatableStyleProperty!(prop)) {           if (nonAnimatablePropsInitialValues.has(prop) && !invalidNonAnimatableProps.has(prop)) {             const propInitialValue = nonAnimatablePropsInitialValues.get(prop);             if (propInitialValue !== value) {               invalidNonAnimatableProps.add(prop);             }           } else {             nonAnimatablePropsInitialValues.set(prop, value);           }         }       }     });   });    if (invalidNonAnimatableProps.size > 0) {     console.warn(         `Warning: The animation trigger \"${triggerName}\" is attempting to animate the following` +         ' not animatable properties: ' + Array.from(invalidNonAnimatableProps).join(', ') + '\ ' +         '(to check the list of all animatable properties visit https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties)');   } }  function oneOrMoreTransitionsMatch(     matchFns: TransitionMatcherFn[], currentState: any, nextState: any, element: any,     params: {[key: string]: any}): boolean {   return matchFns.some(fn => fn(currentState, nextState, element, params)); }  function applyParamDefaults(userParams: Record<string, any>, defaults: Record<string, any>) {   const result: Record<string, any> = copyObj(defaults);    for (const key in userParams) {     if (userParams.hasOwnProperty(key) && userParams[key] != null) {       result[key] = userParams[key];     }   }    return result; }  export class AnimationStateStyles {   constructor(       private styles: StyleAst, private defaultParams: {[key: string]: any},       private normalizer: AnimationStyleNormalizer) {}    buildStyles(params: {[key: string]: any}, errors: Error[]): ɵStyleDataMap {     const finalStyles: ɵStyleDataMap = new Map();     const combinedParams = copyObj(this.defaultParams);     Object.keys(params).forEach(key => {       const value = params[key];       if (value !== null) {         combinedParams[key] = value;       }     });     this.styles.styles.forEach(value => {       if (typeof value !== 'string') {         value.forEach((val, prop) => {           if (val) {             val = interpolateParams(val, combinedParams, errors);           }           const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);           val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);           finalStyles.set(prop, val);         });       }     });     return finalStyles;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationMetadataType, ɵStyleDataMap} from '@angular/animations';  import {SequenceAst, TransitionAst, TriggerAst} from './animation_ast'; import {AnimationStateStyles, AnimationTransitionFactory} from './animation_transition_factory'; import {AnimationStyleNormalizer} from './style_normalization/animation_style_normalizer';    export function buildTrigger(     name: string, ast: TriggerAst, normalizer: AnimationStyleNormalizer): AnimationTrigger {   return new AnimationTrigger(name, ast, normalizer); }  export class AnimationTrigger {   public transitionFactories: AnimationTransitionFactory[] = [];   public fallbackTransition: AnimationTransitionFactory;   public states = new Map<string, AnimationStateStyles>();    constructor(       public name: string, public ast: TriggerAst, private _normalizer: AnimationStyleNormalizer) {     ast.states.forEach(ast => {       const defaultParams = (ast.options && ast.options.params) || {};       this.states.set(ast.name, new AnimationStateStyles(ast.style, defaultParams, _normalizer));     });      balanceProperties(this.states, 'true', '1');     balanceProperties(this.states, 'false', '0');      ast.transitions.forEach(ast => {       this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));     });     this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);   }    get containsQueries() {     return this.ast.queryCount > 0;   }    matchTransition(currentState: any, nextState: any, element: any, params: {[key: string]: any}):       AnimationTransitionFactory|null {     const entry =         this.transitionFactories.find(f => f.match(currentState, nextState, element, params));     return entry || null;   }    matchStyles(currentState: any, params: {[key: string]: any}, errors: Error[]): ɵStyleDataMap {     return this.fallbackTransition.buildStyles(currentState, params, errors);   } }  function createFallbackTransition(     triggerName: string, states: Map<string, AnimationStateStyles>,     normalizer: AnimationStyleNormalizer): AnimationTransitionFactory {   const matchers = [(fromState: any, toState: any) => true];   const animation: SequenceAst = {type: AnimationMetadataType.Sequence, steps: [], options: null};   const transition: TransitionAst = {     type: AnimationMetadataType.Transition,     animation,     matchers,     options: null,     queryCount: 0,     depCount: 0   };   return new AnimationTransitionFactory(triggerName, transition, states); }  function balanceProperties(     stateMap: Map<string, AnimationStateStyles>, key1: string, key2: string) {   if (stateMap.has(key1)) {     if (!stateMap.has(key2)) {       stateMap.set(key2, stateMap.get(key1)!);     }   } else if (stateMap.has(key2)) {     stateMap.set(key1, stateMap.get(key2)!);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationMetadata, AnimationMetadataType, AnimationOptions, AnimationPlayer, AUTO_STYLE, ɵStyleDataMap} from '@angular/animations';  import {Ast} from '../dsl/animation_ast'; import {buildAnimationAst} from '../dsl/animation_ast_builder'; import {buildAnimationTimelines} from '../dsl/animation_timeline_builder'; import {AnimationTimelineInstruction} from '../dsl/animation_timeline_instruction'; import {ElementInstructionMap} from '../dsl/element_instruction_map'; import {AnimationStyleNormalizer} from '../dsl/style_normalization/animation_style_normalizer'; import {createAnimationFailed, missingOrDestroyedAnimation, missingPlayer, registerFailed} from '../error_helpers'; import {ENTER_CLASSNAME, LEAVE_CLASSNAME} from '../util'; import {warnRegister} from '../warning_helpers';  import {AnimationDriver} from './animation_driver'; import {getOrSetDefaultValue, listenOnPlayer, makeAnimationEvent, normalizeKeyframes, optimizeGroupPlayer} from './shared';  const EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();  export class TimelineAnimationEngine {   private _animations = new Map<string, Ast<AnimationMetadataType>>();   private _playersById = new Map<string, AnimationPlayer>();   public players: AnimationPlayer[] = [];    constructor(       public bodyNode: any, private _driver: AnimationDriver,       private _normalizer: AnimationStyleNormalizer) {}    register(id: string, metadata: AnimationMetadata|AnimationMetadata[]) {     const errors: Error[] = [];     const warnings: string[] = [];     const ast = buildAnimationAst(this._driver, metadata, errors, warnings);     if (errors.length) {       throw registerFailed(errors);     } else {       if (warnings.length) {         warnRegister(warnings);       }       this._animations.set(id, ast);     }   }    private _buildPlayer(       i: AnimationTimelineInstruction, preStyles: ɵStyleDataMap,       postStyles?: ɵStyleDataMap): AnimationPlayer {     const element = i.element;     const keyframes = normalizeKeyframes(         this._driver, this._normalizer, element, i.keyframes, preStyles, postStyles);     return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);   }    create(id: string, element: any, options: AnimationOptions = {}): AnimationPlayer {     const errors: Error[] = [];     const ast = this._animations.get(id);     let instructions: AnimationTimelineInstruction[];      const autoStylesMap = new Map<any, ɵStyleDataMap>();      if (ast) {       instructions = buildAnimationTimelines(           this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, new Map(), new Map(),           options, EMPTY_INSTRUCTION_MAP, errors);       instructions.forEach(inst => {         const styles = getOrSetDefaultValue(             autoStylesMap, inst.element, new Map<string, string|number|null>());         inst.postStyleProps.forEach(prop => styles.set(prop, null));       });     } else {       errors.push(missingOrDestroyedAnimation());       instructions = [];     }      if (errors.length) {       throw createAnimationFailed(errors);     }      autoStylesMap.forEach((styles, element) => {       styles.forEach((_, prop) => {         styles.set(prop, this._driver.computeStyle(element, prop, AUTO_STYLE));       });     });      const players = instructions.map(i => {       const styles = autoStylesMap.get(i.element);       return this._buildPlayer(i, new Map(), styles);     });     const player = optimizeGroupPlayer(players);     this._playersById.set(id, player);     player.onDestroy(() => this.destroy(id));      this.players.push(player);     return player;   }    destroy(id: string) {     const player = this._getPlayer(id);     player.destroy();     this._playersById.delete(id);     const index = this.players.indexOf(player);     if (index >= 0) {       this.players.splice(index, 1);     }   }    private _getPlayer(id: string): AnimationPlayer {     const player = this._playersById.get(id);     if (!player) {       throw missingPlayer(id);     }     return player;   }    listen(id: string, element: string, eventName: string, callback: (event: any) => any):       () => void {     // triggerName, fromState, toState are all ignored for timeline animations     const baseEvent = makeAnimationEvent(element, '', '', '');     listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);     return () => {};   }    command(id: string, element: any, command: string, args: any[]): void {     if (command == 'register') {       this.register(id, args[0] as AnimationMetadata | AnimationMetadata[]);       return;     }      if (command == 'create') {       const options = (args[0] || {}) as AnimationOptions;       this.create(id, element, options);       return;     }      const player = this._getPlayer(id);     switch (command) {       case 'play':         player.play();         break;       case 'pause':         player.pause();         break;       case 'reset':         player.reset();         break;       case 'restart':         player.restart();         break;       case 'finish':         player.finish();         break;       case 'init':         player.init();         break;       case 'setPosition':         player.setPosition(parseFloat(args[0] as string));         break;       case 'destroy':         this.destroy(id);         break;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationOptions, AnimationPlayer, AUTO_STYLE, NoopAnimationPlayer, ɵAnimationGroupPlayer as AnimationGroupPlayer, ɵPRE_STYLE as PRE_STYLE, ɵStyleDataMap} from '@angular/animations';  import {AnimationTimelineInstruction} from '../dsl/animation_timeline_instruction'; import {AnimationTransitionFactory} from '../dsl/animation_transition_factory'; import {AnimationTransitionInstruction} from '../dsl/animation_transition_instruction'; import {AnimationTrigger} from '../dsl/animation_trigger'; import {ElementInstructionMap} from '../dsl/element_instruction_map'; import {AnimationStyleNormalizer} from '../dsl/style_normalization/animation_style_normalizer'; import {missingEvent, missingTrigger, transitionFailed, triggerTransitionsFailed, unregisteredTrigger, unsupportedTriggerEvent} from '../error_helpers'; import {copyObj, ENTER_CLASSNAME, eraseStyles, LEAVE_CLASSNAME, NG_ANIMATING_CLASSNAME, NG_ANIMATING_SELECTOR, NG_TRIGGER_CLASSNAME, NG_TRIGGER_SELECTOR, setStyles} from '../util';  import {AnimationDriver} from './animation_driver'; import {getOrSetDefaultValue, listenOnPlayer, makeAnimationEvent, normalizeKeyframes, optimizeGroupPlayer} from './shared';  const QUEUED_CLASSNAME = 'ng-animate-queued'; const QUEUED_SELECTOR = '.ng-animate-queued'; const DISABLED_CLASSNAME = 'ng-animate-disabled'; const DISABLED_SELECTOR = '.ng-animate-disabled'; const STAR_CLASSNAME = 'ng-star-inserted'; const STAR_SELECTOR = '.ng-star-inserted';  const EMPTY_PLAYER_ARRAY: TransitionAnimationPlayer[] = []; const NULL_REMOVAL_STATE: ElementAnimationState = {   namespaceId: '',   setForRemoval: false,   setForMove: false,   hasAnimation: false,   removedBeforeQueried: false }; const NULL_REMOVED_QUERIED_STATE: ElementAnimationState = {   namespaceId: '',   setForMove: false,   setForRemoval: false,   hasAnimation: false,   removedBeforeQueried: true };  interface TriggerListener {   name: string;   phase: string;   callback: (event: any) => any; }  export interface QueueInstruction {   element: any;   triggerName: string;   fromState: StateValue;   toState: StateValue;   transition: AnimationTransitionFactory;   player: TransitionAnimationPlayer;   isFallbackTransition: boolean; }  export const REMOVAL_FLAG = '__ng_removed';  export interface ElementAnimationState {   setForRemoval: boolean;   setForMove: boolean;   hasAnimation: boolean;   namespaceId: string;   removedBeforeQueried: boolean;   previousTriggersValues?: Map<string, string>; }  export class StateValue {   public value: string;   public options: AnimationOptions;    get params(): {[key: string]: any} {     return this.options.params as {[key: string]: any};   }    constructor(input: any, public namespaceId: string = '') {     const isObj = input && input.hasOwnProperty('value');     const value = isObj ? input['value'] : input;     this.value = normalizeTriggerValue(value);     if (isObj) {       const options = copyObj(input as any);       delete options['value'];       this.options = options as AnimationOptions;     } else {       this.options = {};     }     if (!this.options.params) {       this.options.params = {};     }   }    absorbOptions(options: AnimationOptions) {     const newParams = options.params;     if (newParams) {       const oldParams = this.options.params!;       Object.keys(newParams).forEach(prop => {         if (oldParams[prop] == null) {           oldParams[prop] = newParams[prop];         }       });     }   } }  export const VOID_VALUE = 'void'; export const DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);  export class AnimationTransitionNamespace {   public players: TransitionAnimationPlayer[] = [];    private _triggers = new Map<string, AnimationTrigger>();   private _queue: QueueInstruction[] = [];    private _elementListeners = new Map<any, TriggerListener[]>();    private _hostClassName: string;    constructor(       public id: string, public hostElement: any, private _engine: TransitionAnimationEngine) {     this._hostClassName = 'ng-tns-' + id;     addClass(hostElement, this._hostClassName);   }    listen(element: any, name: string, phase: string, callback: (event: any) => boolean): () => any {     if (!this._triggers.has(name)) {       throw missingTrigger(phase, name);     }      if (phase == null || phase.length == 0) {       throw missingEvent(name);     }      if (!isTriggerEventValid(phase)) {       throw unsupportedTriggerEvent(phase, name);     }      const listeners = getOrSetDefaultValue(this._elementListeners, element, []);     const data = {name, phase, callback};     listeners.push(data);      const triggersWithStates =         getOrSetDefaultValue(this._engine.statesByElement, element, new Map<string, StateValue>());     if (!triggersWithStates.has(name)) {       addClass(element, NG_TRIGGER_CLASSNAME);       addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);       triggersWithStates.set(name, DEFAULT_STATE_VALUE);     }      return () => {       // the event listener is removed AFTER the flush has occurred such       // that leave animations callbacks can fire (otherwise if the node       // is removed in between then the listeners would be deregistered)       this._engine.afterFlush(() => {         const index = listeners.indexOf(data);         if (index >= 0) {           listeners.splice(index, 1);         }          if (!this._triggers.has(name)) {           triggersWithStates.delete(name);         }       });     };   }    register(name: string, ast: AnimationTrigger): boolean {     if (this._triggers.has(name)) {       // throw       return false;     } else {       this._triggers.set(name, ast);       return true;     }   }    private _getTrigger(name: string) {     const trigger = this._triggers.get(name);     if (!trigger) {       throw unregisteredTrigger(name);     }     return trigger;   }    trigger(element: any, triggerName: string, value: any, defaultToFallback: boolean = true):       TransitionAnimationPlayer|undefined {     const trigger = this._getTrigger(triggerName);     const player = new TransitionAnimationPlayer(this.id, triggerName, element);      let triggersWithStates = this._engine.statesByElement.get(element);     if (!triggersWithStates) {       addClass(element, NG_TRIGGER_CLASSNAME);       addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);       this._engine.statesByElement.set(element, triggersWithStates = new Map<string, StateValue>());     }      let fromState = triggersWithStates.get(triggerName);     const toState = new StateValue(value, this.id);     const isObj = value && value.hasOwnProperty('value');     if (!isObj && fromState) {       toState.absorbOptions(fromState.options);     }      triggersWithStates.set(triggerName, toState);      if (!fromState) {       fromState = DEFAULT_STATE_VALUE;     }      const isRemoval = toState.value === VOID_VALUE;      // normally this isn't reached by here, however, if an object expression     // is passed in then it may be a new object each time. Comparing the value     // is important since that will stay the same despite there being a new object.     // The removal arc here is special cased because the same element is triggered     // twice in the event that it contains animations on the outer/inner portions     // of the host container     if (!isRemoval && fromState.value === toState.value) {       // this means that despite the value not changing, some inner params       // have changed which means that the animation final styles need to be applied       if (!objEquals(fromState.params, toState.params)) {         const errors: Error[] = [];         const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);         const toStyles = trigger.matchStyles(toState.value, toState.params, errors);         if (errors.length) {           this._engine.reportError(errors);         } else {           this._engine.afterFlush(() => {             eraseStyles(element, fromStyles);             setStyles(element, toStyles);           });         }       }       return;     }      const playersOnElement: TransitionAnimationPlayer[] =         getOrSetDefaultValue(this._engine.playersByElement, element, []);     playersOnElement.forEach(player => {       // only remove the player if it is queued on the EXACT same trigger/namespace       // we only also deal with queued players here because if the animation has       // started then we want to keep the player alive until the flush happens       // (which is where the previousPlayers are passed into the new player)       if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {         player.destroy();       }     });      let transition =         trigger.matchTransition(fromState.value, toState.value, element, toState.params);     let isFallbackTransition = false;     if (!transition) {       if (!defaultToFallback) return;       transition = trigger.fallbackTransition;       isFallbackTransition = true;     }      this._engine.totalQueuedPlayers++;     this._queue.push(         {element, triggerName, transition, fromState, toState, player, isFallbackTransition});      if (!isFallbackTransition) {       addClass(element, QUEUED_CLASSNAME);       player.onStart(() => {         removeClass(element, QUEUED_CLASSNAME);       });     }      player.onDone(() => {       let index = this.players.indexOf(player);       if (index >= 0) {         this.players.splice(index, 1);       }        const players = this._engine.playersByElement.get(element);       if (players) {         let index = players.indexOf(player);         if (index >= 0) {           players.splice(index, 1);         }       }     });      this.players.push(player);     playersOnElement.push(player);      return player;   }    deregister(name: string) {     this._triggers.delete(name);      this._engine.statesByElement.forEach(stateMap => stateMap.delete(name));      this._elementListeners.forEach((listeners, element) => {       this._elementListeners.set(element, listeners.filter(entry => {         return entry.name != name;       }));     });   }    clearElementCache(element: any) {     this._engine.statesByElement.delete(element);     this._elementListeners.delete(element);     const elementPlayers = this._engine.playersByElement.get(element);     if (elementPlayers) {       elementPlayers.forEach(player => player.destroy());       this._engine.playersByElement.delete(element);     }   }    private _signalRemovalForInnerTriggers(rootElement: any, context: any) {     const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);      // emulate a leave animation for all inner nodes within this node.     // If there are no animations found for any of the nodes then clear the cache     // for the element.     elements.forEach(elm => {       // this means that an inner remove() operation has already kicked off       // the animation on this element...       if (elm[REMOVAL_FLAG]) return;        const namespaces = this._engine.fetchNamespacesByElement(elm);       if (namespaces.size) {         namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));       } else {         this.clearElementCache(elm);       }     });      // If the child elements were removed along with the parent, their animations might not     // have completed. Clear all the elements from the cache so we don't end up with a memory leak.     this._engine.afterFlushAnimationsDone(         () => elements.forEach(elm => this.clearElementCache(elm)));   }    triggerLeaveAnimation(       element: any, context: any, destroyAfterComplete?: boolean,       defaultToFallback?: boolean): boolean {     const triggerStates = this._engine.statesByElement.get(element);     const previousTriggersValues = new Map<string, string>();     if (triggerStates) {       const players: TransitionAnimationPlayer[] = [];       triggerStates.forEach((state, triggerName) => {         previousTriggersValues.set(triggerName, state.value);         // this check is here in the event that an element is removed         // twice (both on the host level and the component level)         if (this._triggers.has(triggerName)) {           const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);           if (player) {             players.push(player);           }         }       });        if (players.length) {         this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);         if (destroyAfterComplete) {           optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));         }         return true;       }     }     return false;   }    prepareLeaveAnimationListeners(element: any) {     const listeners = this._elementListeners.get(element);     const elementStates = this._engine.statesByElement.get(element);      // if this statement fails then it means that the element was picked up     // by an earlier flush (or there are no listeners at all to track the leave).     if (listeners && elementStates) {       const visitedTriggers = new Set<string>();       listeners.forEach(listener => {         const triggerName = listener.name;         if (visitedTriggers.has(triggerName)) return;         visitedTriggers.add(triggerName);          const trigger = this._triggers.get(triggerName)!;         const transition = trigger.fallbackTransition;         const fromState = elementStates.get(triggerName) || DEFAULT_STATE_VALUE;         const toState = new StateValue(VOID_VALUE);         const player = new TransitionAnimationPlayer(this.id, triggerName, element);          this._engine.totalQueuedPlayers++;         this._queue.push({           element,           triggerName,           transition,           fromState,           toState,           player,           isFallbackTransition: true         });       });     }   }    removeNode(element: any, context: any): void {     const engine = this._engine;     if (element.childElementCount) {       this._signalRemovalForInnerTriggers(element, context);     }      // this means that a * => VOID animation was detected and kicked off     if (this.triggerLeaveAnimation(element, context, true)) return;      // find the player that is animating and make sure that the     // removal is delayed until that player has completed     let containsPotentialParentTransition = false;     if (engine.totalAnimations) {       const currentPlayers =           engine.players.length ? engine.playersByQueriedElement.get(element) : [];        // when this `if statement` does not continue forward it means that       // a previous animation query has selected the current element and       // is animating it. In this situation want to continue forwards and       // allow the element to be queued up for animation later.       if (currentPlayers && currentPlayers.length) {         containsPotentialParentTransition = true;       } else {         let parent = element;         while (parent = parent.parentNode) {           const triggers = engine.statesByElement.get(parent);           if (triggers) {             containsPotentialParentTransition = true;             break;           }         }       }     }      // at this stage we know that the element will either get removed     // during flush or will be picked up by a parent query. Either way     // we need to fire the listeners for this element when it DOES get     // removed (once the query parent animation is done or after flush)     this.prepareLeaveAnimationListeners(element);      // whether or not a parent has an animation we need to delay the deferral of the leave     // operation until we have more information (which we do after flush() has been called)     if (containsPotentialParentTransition) {       engine.markElementAsRemoved(this.id, element, false, context);     } else {       const removalFlag = element[REMOVAL_FLAG];       if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {         // we do this after the flush has occurred such         // that the callbacks can be fired         engine.afterFlush(() => this.clearElementCache(element));         engine.destroyInnerAnimations(element);         engine._onRemovalComplete(element, context);       }     }   }    insertNode(element: any, parent: any): void {     addClass(element, this._hostClassName);   }    drainQueuedTransitions(microtaskId: number): QueueInstruction[] {     const instructions: QueueInstruction[] = [];     this._queue.forEach(entry => {       const player = entry.player;       if (player.destroyed) return;        const element = entry.element;       const listeners = this._elementListeners.get(element);       if (listeners) {         listeners.forEach((listener: TriggerListener) => {           if (listener.name == entry.triggerName) {             const baseEvent = makeAnimationEvent(                 element, entry.triggerName, entry.fromState.value, entry.toState.value);             (baseEvent as any)['_data'] = microtaskId;             listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);           }         });       }        if (player.markedForDestroy) {         this._engine.afterFlush(() => {           // now we can destroy the element properly since the event listeners have           // been bound to the player           player.destroy();         });       } else {         instructions.push(entry);       }     });      this._queue = [];      return instructions.sort((a, b) => {       // if depCount == 0 them move to front       // otherwise if a contains b then move back       const d0 = a.transition.ast.depCount;       const d1 = b.transition.ast.depCount;       if (d0 == 0 || d1 == 0) {         return d0 - d1;       }       return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;     });   }    destroy(context: any) {     this.players.forEach(p => p.destroy());     this._signalRemovalForInnerTriggers(this.hostElement, context);   }    elementContainsData(element: any): boolean {     let containsData = false;     if (this._elementListeners.has(element)) containsData = true;     containsData =         (this._queue.find(entry => entry.element === element) ? true : false) || containsData;     return containsData;   } }  export interface QueuedTransition {   element: any;   instruction: AnimationTransitionInstruction;   player: TransitionAnimationPlayer; }  export class TransitionAnimationEngine {   public players: TransitionAnimationPlayer[] = [];   public newHostElements = new Map<any, AnimationTransitionNamespace>();   public playersByElement = new Map<any, TransitionAnimationPlayer[]>();   public playersByQueriedElement = new Map<any, TransitionAnimationPlayer[]>();   public statesByElement = new Map<any, Map<string, StateValue>>();   public disabledNodes = new Set<any>();    public totalAnimations = 0;   public totalQueuedPlayers = 0;    private _namespaceLookup: {[id: string]: AnimationTransitionNamespace} = {};   private _namespaceList: AnimationTransitionNamespace[] = [];   private _flushFns: (() => any)[] = [];   private _whenQuietFns: (() => any)[] = [];    public namespacesByHostElement = new Map<any, AnimationTransitionNamespace>();   public collectedEnterElements: any[] = [];   public collectedLeaveElements: any[] = [];    // this method is designed to be overridden by the code that uses this engine   public onRemovalComplete = (element: any, context: any) => {};    /** @internal */   _onRemovalComplete(element: any, context: any) {     this.onRemovalComplete(element, context);   }    constructor(       public bodyNode: any, public driver: AnimationDriver,       private _normalizer: AnimationStyleNormalizer) {}    get queuedPlayers(): TransitionAnimationPlayer[] {     const players: TransitionAnimationPlayer[] = [];     this._namespaceList.forEach(ns => {       ns.players.forEach(player => {         if (player.queued) {           players.push(player);         }       });     });     return players;   }    createNamespace(namespaceId: string, hostElement: any) {     const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);     if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {       this._balanceNamespaceList(ns, hostElement);     } else {       // defer this later until flush during when the host element has       // been inserted so that we know exactly where to place it in       // the namespace list       this.newHostElements.set(hostElement, ns);        // given that this host element is a part of the animation code, it       // may or may not be inserted by a parent node that is of an       // animation renderer type. If this happens then we can still have       // access to this item when we query for :enter nodes. If the parent       // is a renderer then the set data-structure will normalize the entry       this.collectEnterElement(hostElement);     }     return this._namespaceLookup[namespaceId] = ns;   }    private _balanceNamespaceList(ns: AnimationTransitionNamespace, hostElement: any) {     const namespaceList = this._namespaceList;     const namespacesByHostElement = this.namespacesByHostElement;     const limit = namespaceList.length - 1;     if (limit >= 0) {       let found = false;       // Find the closest ancestor with an existing namespace so we can then insert `ns` after it,       // establishing a top-down ordering of namespaces in `this._namespaceList`.       let ancestor = this.driver.getParentElement(hostElement);       while (ancestor) {         const ancestorNs = namespacesByHostElement.get(ancestor);         if (ancestorNs) {           // An animation namespace has been registered for this ancestor, so we insert `ns`           // right after it to establish top-down ordering of animation namespaces.           const index = namespaceList.indexOf(ancestorNs);           namespaceList.splice(index + 1, 0, ns);           found = true;           break;         }         ancestor = this.driver.getParentElement(ancestor);       }       if (!found) {         // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to         // ensure that any existing descendants are ordered after `ns`, retaining the desired         // top-down ordering.         namespaceList.unshift(ns);       }     } else {       namespaceList.push(ns);     }      namespacesByHostElement.set(hostElement, ns);     return ns;   }    register(namespaceId: string, hostElement: any) {     let ns = this._namespaceLookup[namespaceId];     if (!ns) {       ns = this.createNamespace(namespaceId, hostElement);     }     return ns;   }    registerTrigger(namespaceId: string, name: string, trigger: AnimationTrigger) {     let ns = this._namespaceLookup[namespaceId];     if (ns && ns.register(name, trigger)) {       this.totalAnimations++;     }   }    destroy(namespaceId: string, context: any) {     if (!namespaceId) return;      const ns = this._fetchNamespace(namespaceId);      this.afterFlush(() => {       this.namespacesByHostElement.delete(ns.hostElement);       delete this._namespaceLookup[namespaceId];       const index = this._namespaceList.indexOf(ns);       if (index >= 0) {         this._namespaceList.splice(index, 1);       }     });      this.afterFlushAnimationsDone(() => ns.destroy(context));   }    private _fetchNamespace(id: string) {     return this._namespaceLookup[id];   }    fetchNamespacesByElement(element: any): Set<AnimationTransitionNamespace> {     // normally there should only be one namespace per element, however     // if @triggers are placed on both the component element and then     // its host element (within the component code) then there will be     // two namespaces returned. We use a set here to simply deduplicate     // the namespaces in case (for the reason described above) there are multiple triggers     const namespaces = new Set<AnimationTransitionNamespace>();     const elementStates = this.statesByElement.get(element);     if (elementStates) {       for (let stateValue of elementStates.values()) {         if (stateValue.namespaceId) {           const ns = this._fetchNamespace(stateValue.namespaceId);           if (ns) {             namespaces.add(ns);           }         }       }     }     return namespaces;   }    trigger(namespaceId: string, element: any, name: string, value: any): boolean {     if (isElementNode(element)) {       const ns = this._fetchNamespace(namespaceId);       if (ns) {         ns.trigger(element, name, value);         return true;       }     }     return false;   }    insertNode(namespaceId: string, element: any, parent: any, insertBefore: boolean): void {     if (!isElementNode(element)) return;      // special case for when an element is removed and reinserted (move operation)     // when this occurs we do not want to use the element for deletion later     const details = element[REMOVAL_FLAG] as ElementAnimationState;     if (details && details.setForRemoval) {       details.setForRemoval = false;       details.setForMove = true;       const index = this.collectedLeaveElements.indexOf(element);       if (index >= 0) {         this.collectedLeaveElements.splice(index, 1);       }     }      // in the event that the namespaceId is blank then the caller     // code does not contain any animation code in it, but it is     // just being called so that the node is marked as being inserted     if (namespaceId) {       const ns = this._fetchNamespace(namespaceId);       // This if-statement is a workaround for router issue #21947.       // The router sometimes hits a race condition where while a route       // is being instantiated a new navigation arrives, triggering leave       // animation of DOM that has not been fully initialized, until this       // is resolved, we need to handle the scenario when DOM is not in a       // consistent state during the animation.       if (ns) {         ns.insertNode(element, parent);       }     }      // only *directives and host elements are inserted before     if (insertBefore) {       this.collectEnterElement(element);     }   }    collectEnterElement(element: any) {     this.collectedEnterElements.push(element);   }    markElementAsDisabled(element: any, value: boolean) {     if (value) {       if (!this.disabledNodes.has(element)) {         this.disabledNodes.add(element);         addClass(element, DISABLED_CLASSNAME);       }     } else if (this.disabledNodes.has(element)) {       this.disabledNodes.delete(element);       removeClass(element, DISABLED_CLASSNAME);     }   }    removeNode(namespaceId: string, element: any, isHostElement: boolean, context: any): void {     if (isElementNode(element)) {       const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;       if (ns) {         ns.removeNode(element, context);       } else {         this.markElementAsRemoved(namespaceId, element, false, context);       }        if (isHostElement) {         const hostNS = this.namespacesByHostElement.get(element);         if (hostNS && hostNS.id !== namespaceId) {           hostNS.removeNode(element, context);         }       }     } else {       this._onRemovalComplete(element, context);     }   }    markElementAsRemoved(       namespaceId: string, element: any, hasAnimation?: boolean, context?: any,       previousTriggersValues?: Map<string, string>) {     this.collectedLeaveElements.push(element);     element[REMOVAL_FLAG] = {       namespaceId,       setForRemoval: context,       hasAnimation,       removedBeforeQueried: false,       previousTriggersValues     };   }    listen(       namespaceId: string, element: any, name: string, phase: string,       callback: (event: any) => boolean): () => any {     if (isElementNode(element)) {       return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);     }     return () => {};   }    private _buildInstruction(       entry: QueueInstruction, subTimelines: ElementInstructionMap, enterClassName: string,       leaveClassName: string, skipBuildAst?: boolean) {     return entry.transition.build(         this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName,         leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);   }    destroyInnerAnimations(containerElement: any) {     let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);     elements.forEach(element => this.destroyActiveAnimationsForElement(element));      if (this.playersByQueriedElement.size == 0) return;      elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);     elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));   }    destroyActiveAnimationsForElement(element: any) {     const players = this.playersByElement.get(element);     if (players) {       players.forEach(player => {         // special case for when an element is set for destruction, but hasn't started.         // in this situation we want to delay the destruction until the flush occurs         // so that any event listeners attached to the player are triggered.         if (player.queued) {           player.markedForDestroy = true;         } else {           player.destroy();         }       });     }   }    finishActiveQueriedAnimationOnElement(element: any) {     const players = this.playersByQueriedElement.get(element);     if (players) {       players.forEach(player => player.finish());     }   }    whenRenderingDone(): Promise<any> {     return new Promise<void>(resolve => {       if (this.players.length) {         return optimizeGroupPlayer(this.players).onDone(() => resolve());       } else {         resolve();       }     });   }    processLeaveNode(element: any) {     const details = element[REMOVAL_FLAG] as ElementAnimationState;     if (details && details.setForRemoval) {       // this will prevent it from removing it twice       element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;       if (details.namespaceId) {         this.destroyInnerAnimations(element);         const ns = this._fetchNamespace(details.namespaceId);         if (ns) {           ns.clearElementCache(element);         }       }       this._onRemovalComplete(element, details.setForRemoval);     }      if (element.classList?.contains(DISABLED_CLASSNAME)) {       this.markElementAsDisabled(element, false);     }      this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {       this.markElementAsDisabled(node, false);     });   }    flush(microtaskId: number = -1) {     let players: AnimationPlayer[] = [];     if (this.newHostElements.size) {       this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));       this.newHostElements.clear();     }      if (this.totalAnimations && this.collectedEnterElements.length) {       for (let i = 0; i < this.collectedEnterElements.length; i++) {         const elm = this.collectedEnterElements[i];         addClass(elm, STAR_CLASSNAME);       }     }      if (this._namespaceList.length &&         (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {       const cleanupFns: Function[] = [];       try {         players = this._flushAnimations(cleanupFns, microtaskId);       } finally {         for (let i = 0; i < cleanupFns.length; i++) {           cleanupFns[i]();         }       }     } else {       for (let i = 0; i < this.collectedLeaveElements.length; i++) {         const element = this.collectedLeaveElements[i];         this.processLeaveNode(element);       }     }      this.totalQueuedPlayers = 0;     this.collectedEnterElements.length = 0;     this.collectedLeaveElements.length = 0;     this._flushFns.forEach(fn => fn());     this._flushFns = [];      if (this._whenQuietFns.length) {       // we move these over to a variable so that       // if any new callbacks are registered in another       // flush they do not populate the existing set       const quietFns = this._whenQuietFns;       this._whenQuietFns = [];        if (players.length) {         optimizeGroupPlayer(players).onDone(() => {           quietFns.forEach(fn => fn());         });       } else {         quietFns.forEach(fn => fn());       }     }   }    reportError(errors: Error[]) {     throw triggerTransitionsFailed(errors);   }    private _flushAnimations(cleanupFns: Function[], microtaskId: number):       TransitionAnimationPlayer[] {     const subTimelines = new ElementInstructionMap();     const skippedPlayers: TransitionAnimationPlayer[] = [];     const skippedPlayersMap = new Map<any, AnimationPlayer[]>();     const queuedInstructions: QueuedTransition[] = [];     const queriedElements = new Map<any, TransitionAnimationPlayer[]>();     const allPreStyleElements = new Map<any, Set<string>>();     const allPostStyleElements = new Map<any, Set<string>>();      const disabledElementsSet = new Set<any>();     this.disabledNodes.forEach(node => {       disabledElementsSet.add(node);       const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);       for (let i = 0; i < nodesThatAreDisabled.length; i++) {         disabledElementsSet.add(nodesThatAreDisabled[i]);       }     });      const bodyNode = this.bodyNode;     const allTriggerElements = Array.from(this.statesByElement.keys());     const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);      // this must occur before the instructions are built below such that     // the :enter queries match the elements (since the timeline queries     // are fired during instruction building).     const enterNodeMapIds = new Map<any, string>();     let i = 0;     enterNodeMap.forEach((nodes, root) => {       const className = ENTER_CLASSNAME + i++;       enterNodeMapIds.set(root, className);       nodes.forEach(node => addClass(node, className));     });      const allLeaveNodes: any[] = [];     const mergedLeaveNodes = new Set<any>();     const leaveNodesWithoutAnimations = new Set<any>();     for (let i = 0; i < this.collectedLeaveElements.length; i++) {       const element = this.collectedLeaveElements[i];       const details = element[REMOVAL_FLAG] as ElementAnimationState;       if (details && details.setForRemoval) {         allLeaveNodes.push(element);         mergedLeaveNodes.add(element);         if (details.hasAnimation) {           this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));         } else {           leaveNodesWithoutAnimations.add(element);         }       }     }      const leaveNodeMapIds = new Map<any, string>();     const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));     leaveNodeMap.forEach((nodes, root) => {       const className = LEAVE_CLASSNAME + i++;       leaveNodeMapIds.set(root, className);       nodes.forEach(node => addClass(node, className));     });      cleanupFns.push(() => {       enterNodeMap.forEach((nodes, root) => {         const className = enterNodeMapIds.get(root)!;         nodes.forEach(node => removeClass(node, className));       });        leaveNodeMap.forEach((nodes, root) => {         const className = leaveNodeMapIds.get(root)!;         nodes.forEach(node => removeClass(node, className));       });        allLeaveNodes.forEach(element => {         this.processLeaveNode(element);       });     });      const allPlayers: TransitionAnimationPlayer[] = [];     const erroneousTransitions: AnimationTransitionInstruction[] = [];     for (let i = this._namespaceList.length - 1; i >= 0; i--) {       const ns = this._namespaceList[i];       ns.drainQueuedTransitions(microtaskId).forEach(entry => {         const player = entry.player;         const element = entry.element;         allPlayers.push(player);          if (this.collectedEnterElements.length) {           const details = element[REMOVAL_FLAG] as ElementAnimationState;           // animations for move operations (elements being removed and reinserted,           // e.g. when the order of an *ngFor list changes) are currently not supported           if (details && details.setForMove) {             if (details.previousTriggersValues &&                 details.previousTriggersValues.has(entry.triggerName)) {               const previousValue = details.previousTriggersValues.get(entry.triggerName) as string;                // we need to restore the previous trigger value since the element has               // only been moved and hasn't actually left the DOM               const triggersWithStates = this.statesByElement.get(entry.element);               if (triggersWithStates && triggersWithStates.has(entry.triggerName)) {                 const state = triggersWithStates.get(entry.triggerName)!;                 state.value = previousValue;                 triggersWithStates.set(entry.triggerName, state);               }             }              player.destroy();             return;           }         }          const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);         const leaveClassName = leaveNodeMapIds.get(element)!;         const enterClassName = enterNodeMapIds.get(element)!;         const instruction = this._buildInstruction(             entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned)!;         if (instruction.errors && instruction.errors.length) {           erroneousTransitions.push(instruction);           return;         }          // even though the element may not be in the DOM, it may still         // be added at a later point (due to the mechanics of content         // projection and/or dynamic component insertion) therefore it's         // important to still style the element.         if (nodeIsOrphaned) {           player.onStart(() => eraseStyles(element, instruction.fromStyles));           player.onDestroy(() => setStyles(element, instruction.toStyles));           skippedPlayers.push(player);           return;         }          // if an unmatched transition is queued and ready to go         // then it SHOULD NOT render an animation and cancel the         // previously running animations.         if (entry.isFallbackTransition) {           player.onStart(() => eraseStyles(element, instruction.fromStyles));           player.onDestroy(() => setStyles(element, instruction.toStyles));           skippedPlayers.push(player);           return;         }          // this means that if a parent animation uses this animation as a sub-trigger         // then it will instruct the timeline builder not to add a player delay, but         // instead stretch the first keyframe gap until the animation starts. This is         // important in order to prevent extra initialization styles from being         // required by the user for the animation.         const timelines: AnimationTimelineInstruction[] = [];         instruction.timelines.forEach(tl => {           tl.stretchStartingKeyframe = true;           if (!this.disabledNodes.has(tl.element)) {             timelines.push(tl);           }         });         instruction.timelines = timelines;          subTimelines.append(element, instruction.timelines);          const tuple = {instruction, player, element};          queuedInstructions.push(tuple);          instruction.queriedElements.forEach(             element => getOrSetDefaultValue(queriedElements, element, []).push(player));          instruction.preStyleProps.forEach((stringMap, element) => {           if (stringMap.size) {             let setVal: Set<string> = allPreStyleElements.get(element)!;             if (!setVal) {               allPreStyleElements.set(element, setVal = new Set<string>());             }             stringMap.forEach((_, prop) => setVal.add(prop));           }         });          instruction.postStyleProps.forEach((stringMap, element) => {           let setVal: Set<string> = allPostStyleElements.get(element)!;           if (!setVal) {             allPostStyleElements.set(element, setVal = new Set<string>());           }           stringMap.forEach((_, prop) => setVal.add(prop));         });       });     }      if (erroneousTransitions.length) {       const errors: Error[] = [];       erroneousTransitions.forEach(instruction => {         errors.push(transitionFailed(instruction.triggerName, instruction.errors!));       });        allPlayers.forEach(player => player.destroy());       this.reportError(errors);     }      const allPreviousPlayersMap = new Map<any, TransitionAnimationPlayer[]>();     // this map tells us which element in the DOM tree is contained by     // which animation. Further down this map will get populated once     // the players are built and in doing so we can use it to efficiently     // figure out if a sub player is skipped due to a parent player having priority.     const animationElementMap = new Map<any, any>();     queuedInstructions.forEach(entry => {       const element = entry.element;       if (subTimelines.has(element)) {         animationElementMap.set(element, element);         this._beforeAnimationBuild(             entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);       }     });      skippedPlayers.forEach(player => {       const element = player.element;       const previousPlayers =           this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);       previousPlayers.forEach(prevPlayer => {         getOrSetDefaultValue(allPreviousPlayersMap, element, []).push(prevPlayer);         prevPlayer.destroy();       });     });      // this is a special case for nodes that will be removed either by     // having their own leave animations or by being queried in a container     // that will be removed once a parent animation is complete. The idea     // here is that * styles must be identical to ! styles because of     // backwards compatibility (* is also filled in by default in many places).     // Otherwise * styles will return an empty value or \"auto\" since the element     // passed to getComputedStyle will not be visible (since * === destination)     const replaceNodes = allLeaveNodes.filter(node => {       return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);     });      // POST STAGE: fill the * styles     const postStylesMap = new Map<any, ɵStyleDataMap>();     const allLeaveQueriedNodes = cloakAndComputeStyles(         postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);      allLeaveQueriedNodes.forEach(node => {       if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {         replaceNodes.push(node);       }     });      // PRE STAGE: fill the ! styles     const preStylesMap = new Map<any, ɵStyleDataMap>();     enterNodeMap.forEach((nodes, root) => {       cloakAndComputeStyles(           preStylesMap, this.driver, new Set(nodes), allPreStyleElements, PRE_STYLE);     });      replaceNodes.forEach(node => {       const post = postStylesMap.get(node);       const pre = preStylesMap.get(node);       postStylesMap.set(           node,           new Map([...Array.from(post?.entries() ?? []), ...Array.from(pre?.entries() ?? [])]));     });      const rootPlayers: TransitionAnimationPlayer[] = [];     const subPlayers: TransitionAnimationPlayer[] = [];     const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};     queuedInstructions.forEach(entry => {       const {element, player, instruction} = entry;       // this means that it was never consumed by a parent animation which       // means that it is independent and therefore should be set for animation       if (subTimelines.has(element)) {         if (disabledElementsSet.has(element)) {           player.onDestroy(() => setStyles(element, instruction.toStyles));           player.disabled = true;           player.overrideTotalTime(instruction.totalTime);           skippedPlayers.push(player);           return;         }          // this will flow up the DOM and query the map to figure out         // if a parent animation has priority over it. In the situation         // that a parent is detected then it will cancel the loop. If         // nothing is detected, or it takes a few hops to find a parent,         // then it will fill in the missing nodes and signal them as having         // a detected parent (or a NO_PARENT value via a special constant).         let parentWithAnimation: any = NO_PARENT_ANIMATION_ELEMENT_DETECTED;         if (animationElementMap.size > 1) {           let elm = element;           const parentsToAdd: any[] = [];           while (elm = elm.parentNode) {             const detectedParent = animationElementMap.get(elm);             if (detectedParent) {               parentWithAnimation = detectedParent;               break;             }             parentsToAdd.push(elm);           }           parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));         }          const innerPlayer = this._buildAnimation(             player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap,             postStylesMap);          player.setRealPlayer(innerPlayer);          if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {           rootPlayers.push(player);         } else {           const parentPlayers = this.playersByElement.get(parentWithAnimation);           if (parentPlayers && parentPlayers.length) {             player.parentPlayer = optimizeGroupPlayer(parentPlayers);           }           skippedPlayers.push(player);         }       } else {         eraseStyles(element, instruction.fromStyles);         player.onDestroy(() => setStyles(element, instruction.toStyles));         // there still might be a ancestor player animating this         // element therefore we will still add it as a sub player         // even if its animation may be disabled         subPlayers.push(player);         if (disabledElementsSet.has(element)) {           skippedPlayers.push(player);         }       }     });      // find all of the sub players' corresponding inner animation players     subPlayers.forEach(player => {       // even if no players are found for a sub animation it       // will still complete itself after the next tick since it's Noop       const playersForElement = skippedPlayersMap.get(player.element);       if (playersForElement && playersForElement.length) {         const innerPlayer = optimizeGroupPlayer(playersForElement);         player.setRealPlayer(innerPlayer);       }     });      // the reason why we don't actually play the animation is     // because all that a skipped player is designed to do is to     // fire the start/done transition callback events     skippedPlayers.forEach(player => {       if (player.parentPlayer) {         player.syncPlayerEvents(player.parentPlayer);       } else {         player.destroy();       }     });      // run through all of the queued removals and see if they     // were picked up by a query. If not then perform the removal     // operation right away unless a parent animation is ongoing.     for (let i = 0; i < allLeaveNodes.length; i++) {       const element = allLeaveNodes[i];       const details = element[REMOVAL_FLAG] as ElementAnimationState;       removeClass(element, LEAVE_CLASSNAME);        // this means the element has a removal animation that is being       // taken care of and therefore the inner elements will hang around       // until that animation is over (or the parent queried animation)       if (details && details.hasAnimation) continue;        let players: TransitionAnimationPlayer[] = [];        // if this element is queried or if it contains queried children       // then we want for the element not to be removed from the page       // until the queried animations have finished       if (queriedElements.size) {         let queriedPlayerResults = queriedElements.get(element);         if (queriedPlayerResults && queriedPlayerResults.length) {           players.push(...queriedPlayerResults);         }          let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);         for (let j = 0; j < queriedInnerElements.length; j++) {           let queriedPlayers = queriedElements.get(queriedInnerElements[j]);           if (queriedPlayers && queriedPlayers.length) {             players.push(...queriedPlayers);           }         }       }        const activePlayers = players.filter(p => !p.destroyed);       if (activePlayers.length) {         removeNodesAfterAnimationDone(this, element, activePlayers);       } else {         this.processLeaveNode(element);       }     }      // this is required so the cleanup method doesn't remove them     allLeaveNodes.length = 0;      rootPlayers.forEach(player => {       this.players.push(player);       player.onDone(() => {         player.destroy();          const index = this.players.indexOf(player);         this.players.splice(index, 1);       });       player.play();     });      return rootPlayers;   }    elementContainsData(namespaceId: string, element: any) {     let containsData = false;     const details = element[REMOVAL_FLAG] as ElementAnimationState;     if (details && details.setForRemoval) containsData = true;     if (this.playersByElement.has(element)) containsData = true;     if (this.playersByQueriedElement.has(element)) containsData = true;     if (this.statesByElement.has(element)) containsData = true;     return this._fetchNamespace(namespaceId).elementContainsData(element) || containsData;   }    afterFlush(callback: () => any) {     this._flushFns.push(callback);   }    afterFlushAnimationsDone(callback: () => any) {     this._whenQuietFns.push(callback);   }    private _getPreviousPlayers(       element: string, isQueriedElement: boolean, namespaceId?: string, triggerName?: string,       toStateValue?: any): TransitionAnimationPlayer[] {     let players: TransitionAnimationPlayer[] = [];     if (isQueriedElement) {       const queriedElementPlayers = this.playersByQueriedElement.get(element);       if (queriedElementPlayers) {         players = queriedElementPlayers;       }     } else {       const elementPlayers = this.playersByElement.get(element);       if (elementPlayers) {         const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;         elementPlayers.forEach(player => {           if (player.queued) return;           if (!isRemovalAnimation && player.triggerName != triggerName) return;           players.push(player);         });       }     }     if (namespaceId || triggerName) {       players = players.filter(player => {         if (namespaceId && namespaceId != player.namespaceId) return false;         if (triggerName && triggerName != player.triggerName) return false;         return true;       });     }     return players;   }    private _beforeAnimationBuild(       namespaceId: string, instruction: AnimationTransitionInstruction,       allPreviousPlayersMap: Map<any, TransitionAnimationPlayer[]>) {     const triggerName = instruction.triggerName;     const rootElement = instruction.element;      // when a removal animation occurs, ALL previous players are collected     // and destroyed (even if they are outside of the current namespace)     const targetNameSpaceId: string|undefined =         instruction.isRemovalTransition ? undefined : namespaceId;     const targetTriggerName: string|undefined =         instruction.isRemovalTransition ? undefined : triggerName;      for (const timelineInstruction of instruction.timelines) {       const element = timelineInstruction.element;       const isQueriedElement = element !== rootElement;       const players = getOrSetDefaultValue(allPreviousPlayersMap, element, []);       const previousPlayers = this._getPreviousPlayers(           element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);       previousPlayers.forEach(player => {         const realPlayer = (player as TransitionAnimationPlayer).getRealPlayer() as any;         if (realPlayer.beforeDestroy) {           realPlayer.beforeDestroy();         }         player.destroy();         players.push(player);       });     }      // this needs to be done so that the PRE/POST styles can be     // computed properly without interfering with the previous animation     eraseStyles(rootElement, instruction.fromStyles);   }    private _buildAnimation(       namespaceId: string, instruction: AnimationTransitionInstruction,       allPreviousPlayersMap: Map<any, TransitionAnimationPlayer[]>,       skippedPlayersMap: Map<any, AnimationPlayer[]>, preStylesMap: Map<any, ɵStyleDataMap>,       postStylesMap: Map<any, ɵStyleDataMap>): AnimationPlayer {     const triggerName = instruction.triggerName;     const rootElement = instruction.element;      // we first run this so that the previous animation player     // data can be passed into the successive animation players     const allQueriedPlayers: TransitionAnimationPlayer[] = [];     const allConsumedElements = new Set<any>();     const allSubElements = new Set<any>();     const allNewPlayers = instruction.timelines.map(timelineInstruction => {       const element = timelineInstruction.element;       allConsumedElements.add(element);        // FIXME (matsko): make sure to-be-removed animations are removed properly       const details = element[REMOVAL_FLAG];       if (details && details.removedBeforeQueried)         return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);       const isQueriedElement = element !== rootElement;       const previousPlayers =           flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY)                                   .map(p => p.getRealPlayer()))               .filter(p => {                 // the `element` is not apart of the AnimationPlayer definition, but                 // Mock/WebAnimations                 // use the element within their implementation. This will be added in Angular5 to                 // AnimationPlayer                 const pp = p as any;                 return pp.element ? pp.element === element : false;               });        const preStyles = preStylesMap.get(element);       const postStyles = postStylesMap.get(element);        const keyframes = normalizeKeyframes(           this.driver, this._normalizer, element, timelineInstruction.keyframes, preStyles,           postStyles);       const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);        // this means that this particular player belongs to a sub trigger. It is       // important that we match this player up with the corresponding (@trigger.listener)       if (timelineInstruction.subTimeline && skippedPlayersMap) {         allSubElements.add(element);       }        if (isQueriedElement) {         const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);         wrappedPlayer.setRealPlayer(player);         allQueriedPlayers.push(wrappedPlayer);       }        return player;     });      allQueriedPlayers.forEach(player => {       getOrSetDefaultValue(this.playersByQueriedElement, player.element, []).push(player);       player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));     });      allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));     const player = optimizeGroupPlayer(allNewPlayers);     player.onDestroy(() => {       allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));       setStyles(rootElement, instruction.toStyles);     });      // this basically makes all of the callbacks for sub element animations     // be dependent on the upper players for when they finish     allSubElements.forEach(element => {       getOrSetDefaultValue(skippedPlayersMap, element, []).push(player);     });      return player;   }    private _buildPlayer(       instruction: AnimationTimelineInstruction, keyframes: Array<ɵStyleDataMap>,       previousPlayers: AnimationPlayer[]): AnimationPlayer {     if (keyframes.length > 0) {       return this.driver.animate(           instruction.element, keyframes, instruction.duration, instruction.delay,           instruction.easing, previousPlayers);     }      // special case for when an empty transition|definition is provided     // ... there is no point in rendering an empty animation     return new NoopAnimationPlayer(instruction.duration, instruction.delay);   } }  export class TransitionAnimationPlayer implements AnimationPlayer {   private _player: AnimationPlayer = new NoopAnimationPlayer();   private _containsRealPlayer = false;    private _queuedCallbacks = new Map<string, ((event: any) => any)[]>();   public readonly destroyed = false;   // TODO(issue/24571): remove '!'.   public parentPlayer!: AnimationPlayer;    public markedForDestroy: boolean = false;   public disabled = false;    readonly queued: boolean = true;   public readonly totalTime: number = 0;    constructor(public namespaceId: string, public triggerName: string, public element: any) {}    setRealPlayer(player: AnimationPlayer) {     if (this._containsRealPlayer) return;      this._player = player;     this._queuedCallbacks.forEach((callbacks, phase) => {       callbacks.forEach(callback => listenOnPlayer(player, phase, undefined, callback));     });      this._queuedCallbacks.clear();     this._containsRealPlayer = true;     this.overrideTotalTime(player.totalTime);     (this as {queued: boolean}).queued = false;   }    getRealPlayer() {     return this._player;   }    overrideTotalTime(totalTime: number) {     (this as any).totalTime = totalTime;   }    syncPlayerEvents(player: AnimationPlayer) {     const p = this._player as any;     if (p.triggerCallback) {       player.onStart(() => p.triggerCallback!('start'));     }     player.onDone(() => this.finish());     player.onDestroy(() => this.destroy());   }    private _queueEvent(name: string, callback: (event: any) => any): void {     getOrSetDefaultValue(this._queuedCallbacks, name, []).push(callback);   }    onDone(fn: () => void): void {     if (this.queued) {       this._queueEvent('done', fn);     }     this._player.onDone(fn);   }    onStart(fn: () => void): void {     if (this.queued) {       this._queueEvent('start', fn);     }     this._player.onStart(fn);   }    onDestroy(fn: () => void): void {     if (this.queued) {       this._queueEvent('destroy', fn);     }     this._player.onDestroy(fn);   }    init(): void {     this._player.init();   }    hasStarted(): boolean {     return this.queued ? false : this._player.hasStarted();   }    play(): void {     !this.queued && this._player.play();   }    pause(): void {     !this.queued && this._player.pause();   }    restart(): void {     !this.queued && this._player.restart();   }    finish(): void {     this._player.finish();   }    destroy(): void {     (this as {destroyed: boolean}).destroyed = true;     this._player.destroy();   }    reset(): void {     !this.queued && this._player.reset();   }    setPosition(p: any): void {     if (!this.queued) {       this._player.setPosition(p);     }   }    getPosition(): number {     return this.queued ? 0 : this._player.getPosition();   }    /** @internal */   triggerCallback(phaseName: string): void {     const p = this._player as any;     if (p.triggerCallback) {       p.triggerCallback(phaseName);     }   } }  function deleteOrUnsetInMap<T, V>(map: Map<T, V[]>, key: T, value: V) {   let currentValues = map.get(key);   if (currentValues) {     if (currentValues.length) {       const index = currentValues.indexOf(value);       currentValues.splice(index, 1);     }     if (currentValues.length == 0) {       map.delete(key);     }   }   return currentValues; }  function normalizeTriggerValue(value: any): any {   // we use `!= null` here because it's the most simple   // way to test against a \"falsy\" value without mixing   // in empty strings or a zero value. DO NOT OPTIMIZE.   return value != null ? value : null; }  function isElementNode(node: any) {   return node && node['nodeType'] === 1; }  function isTriggerEventValid(eventName: string): boolean {   return eventName == 'start' || eventName == 'done'; }  function cloakElement(element: any, value?: string) {   const oldValue = element.style.display;   element.style.display = value != null ? value : 'none';   return oldValue; }  function cloakAndComputeStyles(     valuesMap: Map<any, ɵStyleDataMap>, driver: AnimationDriver, elements: Set<any>,     elementPropsMap: Map<any, Set<string>>, defaultStyle: string): any[] {   const cloakVals: string[] = [];   elements.forEach(element => cloakVals.push(cloakElement(element)));    const failedElements: any[] = [];    elementPropsMap.forEach((props: Set<string>, element: any) => {     const styles: ɵStyleDataMap = new Map();     props.forEach(prop => {       const value = driver.computeStyle(element, prop, defaultStyle);       styles.set(prop, value);        // there is no easy way to detect this because a sub element could be removed       // by a parent animation element being detached.       if (!value || value.length == 0) {         element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;         failedElements.push(element);       }     });     valuesMap.set(element, styles);   });    // we use a index variable here since Set.forEach(a, i) does not return   // an index value for the closure (but instead just the value)   let i = 0;   elements.forEach(element => cloakElement(element, cloakVals[i++]));    return failedElements; }  /* Since the Angular renderer code will return a collection of inserted nodes in all areas of a DOM tree, it's up to this algorithm to figure out which nodes are roots for each animation @trigger.  By placing each inserted node into a Set and traversing upwards, it is possible to find the @trigger elements and well any direct *star insertion nodes, if a @trigger root is found then the enter element is placed into the Map[@trigger] spot.  */ function buildRootMap(roots: any[], nodes: any[]): Map<any, any[]> {   const rootMap = new Map<any, any[]>();   roots.forEach(root => rootMap.set(root, []));    if (nodes.length == 0) return rootMap;    const NULL_NODE = 1;   const nodeSet = new Set(nodes);   const localRootMap = new Map<any, any>();    function getRoot(node: any): any {     if (!node) return NULL_NODE;      let root = localRootMap.get(node);     if (root) return root;      const parent = node.parentNode;     if (rootMap.has(parent)) {  // ngIf inside @trigger       root = parent;     } else if (nodeSet.has(parent)) {  // ngIf inside ngIf       root = NULL_NODE;     } else {  // recurse upwards       root = getRoot(parent);     }      localRootMap.set(node, root);     return root;   }    nodes.forEach(node => {     const root = getRoot(node);     if (root !== NULL_NODE) {       rootMap.get(root)!.push(node);     }   });    return rootMap; }  function addClass(element: any, className: string) {   element.classList?.add(className); }  function removeClass(element: any, className: string) {   element.classList?.remove(className); }  function removeNodesAfterAnimationDone(     engine: TransitionAnimationEngine, element: any, players: AnimationPlayer[]) {   optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element)); }  function flattenGroupPlayers(players: AnimationPlayer[]): AnimationPlayer[] {   const finalPlayers: AnimationPlayer[] = [];   _flattenGroupPlayersRecur(players, finalPlayers);   return finalPlayers; }  function _flattenGroupPlayersRecur(players: AnimationPlayer[], finalPlayers: AnimationPlayer[]) {   for (let i = 0; i < players.length; i++) {     const player = players[i];     if (player instanceof AnimationGroupPlayer) {       _flattenGroupPlayersRecur(player.players, finalPlayers);     } else {       finalPlayers.push(player);     }   } }  function objEquals(a: {[key: string]: any}, b: {[key: string]: any}): boolean {   const k1 = Object.keys(a);   const k2 = Object.keys(b);   if (k1.length != k2.length) return false;   for (let i = 0; i < k1.length; i++) {     const prop = k1[i];     if (!b.hasOwnProperty(prop) || a[prop] !== b[prop]) return false;   }   return true; }  function replacePostStylesAsPre(     element: any, allPreStyleElements: Map<any, Set<string>>,     allPostStyleElements: Map<any, Set<string>>): boolean {   const postEntry = allPostStyleElements.get(element);   if (!postEntry) return false;    let preEntry = allPreStyleElements.get(element);   if (preEntry) {     postEntry.forEach(data => preEntry!.add(data));   } else {     allPreStyleElements.set(element, postEntry);   }    allPostStyleElements.delete(element);   return true; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationMetadata, AnimationPlayer, AnimationTriggerMetadata} from '@angular/animations';  import {TriggerAst} from '../dsl/animation_ast'; import {buildAnimationAst} from '../dsl/animation_ast_builder'; import {AnimationTrigger, buildTrigger} from '../dsl/animation_trigger'; import {AnimationStyleNormalizer} from '../dsl/style_normalization/animation_style_normalizer'; import {triggerBuildFailed} from '../error_helpers'; import {warnTriggerBuild} from '../warning_helpers';  import {AnimationDriver} from './animation_driver'; import {parseTimelineCommand} from './shared'; import {TimelineAnimationEngine} from './timeline_animation_engine'; import {TransitionAnimationEngine} from './transition_animation_engine';  export class AnimationEngine {   private _transitionEngine: TransitionAnimationEngine;   private _timelineEngine: TimelineAnimationEngine;    private _triggerCache: {[key: string]: AnimationTrigger} = {};    // this method is designed to be overridden by the code that uses this engine   public onRemovalComplete = (element: any, context: any) => {};    constructor(       private bodyNode: any, private _driver: AnimationDriver,       private _normalizer: AnimationStyleNormalizer) {     this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, _normalizer);     this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, _normalizer);      this._transitionEngine.onRemovalComplete = (element: any, context: any) =>         this.onRemovalComplete(element, context);   }    registerTrigger(       componentId: string, namespaceId: string, hostElement: any, name: string,       metadata: AnimationTriggerMetadata): void {     const cacheKey = componentId + '-' + name;     let trigger = this._triggerCache[cacheKey];     if (!trigger) {       const errors: Error[] = [];       const warnings: string[] = [];       const ast = buildAnimationAst(                       this._driver, metadata as AnimationMetadata, errors, warnings) as TriggerAst;       if (errors.length) {         throw triggerBuildFailed(name, errors);       }       if (warnings.length) {         warnTriggerBuild(name, warnings);       }       trigger = buildTrigger(name, ast, this._normalizer);       this._triggerCache[cacheKey] = trigger;     }     this._transitionEngine.registerTrigger(namespaceId, name, trigger);   }    register(namespaceId: string, hostElement: any) {     this._transitionEngine.register(namespaceId, hostElement);   }    destroy(namespaceId: string, context: any) {     this._transitionEngine.destroy(namespaceId, context);   }    onInsert(namespaceId: string, element: any, parent: any, insertBefore: boolean): void {     this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);   }    onRemove(namespaceId: string, element: any, context: any, isHostElement?: boolean): void {     this._transitionEngine.removeNode(namespaceId, element, isHostElement || false, context);   }    disableAnimations(element: any, disable: boolean) {     this._transitionEngine.markElementAsDisabled(element, disable);   }    process(namespaceId: string, element: any, property: string, value: any) {     if (property.charAt(0) == '@') {       const [id, action] = parseTimelineCommand(property);       const args = value as any[];       this._timelineEngine.command(id, element, action, args);     } else {       this._transitionEngine.trigger(namespaceId, element, property, value);     }   }    listen(       namespaceId: string, element: any, eventName: string, eventPhase: string,       callback: (event: any) => any): () => any {     // @@listen     if (eventName.charAt(0) == '@') {       const [id, action] = parseTimelineCommand(eventName);       return this._timelineEngine.listen(id, element, action, callback);     }     return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);   }    flush(microtaskId: number = -1): void {     this._transitionEngine.flush(microtaskId);   }    get players(): AnimationPlayer[] {     return (this._transitionEngine.players as AnimationPlayer[])         .concat(this._timelineEngine.players as AnimationPlayer[]);   }    whenRenderingDone(): Promise<any> {     return this._transitionEngine.whenRenderingDone();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {ɵStyleDataMap} from '@angular/animations';  import {eraseStyles, setStyles} from '../util';  /**  * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are  * detected.  *  * In CSS there exist properties that cannot be animated within a keyframe animation  * (whether it be via CSS keyframes or web-animations) and the animation implementation  * will ignore them. This function is designed to detect those special cased styles and  * return a container that will be executed at the start and end of the animation.  *  * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`  */ export function packageNonAnimatableStyles(     element: any, styles: ɵStyleDataMap|Array<ɵStyleDataMap>): SpecialCasedStyles|null {   let startStyles: ɵStyleDataMap|null = null;   let endStyles: ɵStyleDataMap|null = null;   if (Array.isArray(styles) && styles.length) {     startStyles = filterNonAnimatableStyles(styles[0]);     if (styles.length > 1) {       endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);     }   } else if (styles instanceof Map) {     startStyles = filterNonAnimatableStyles(styles);   }    return (startStyles || endStyles) ? new SpecialCasedStyles(element, startStyles, endStyles) :                                       null; }  /**  * Designed to be executed during a keyframe-based animation to apply any special-cased styles.  *  * When started (when the `start()` method is run) then the provided `startStyles`  * will be applied. When finished (when the `finish()` method is called) the  * `endStyles` will be applied as well any any starting styles. Finally when  * `destroy()` is called then all styles will be removed.  */ export class SpecialCasedStyles {   static initialStylesByElement = (/* @__PURE__ */ new WeakMap<any, ɵStyleDataMap>());    private _state = SpecialCasedStylesState.Pending;   private _initialStyles!: ɵStyleDataMap;    constructor(       private _element: any, private _startStyles: ɵStyleDataMap|null,       private _endStyles: ɵStyleDataMap|null) {     let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);     if (!initialStyles) {       SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = new Map());     }     this._initialStyles = initialStyles;   }    start() {     if (this._state < SpecialCasedStylesState.Started) {       if (this._startStyles) {         setStyles(this._element, this._startStyles, this._initialStyles);       }       this._state = SpecialCasedStylesState.Started;     }   }    finish() {     this.start();     if (this._state < SpecialCasedStylesState.Finished) {       setStyles(this._element, this._initialStyles);       if (this._endStyles) {         setStyles(this._element, this._endStyles);         this._endStyles = null;       }       this._state = SpecialCasedStylesState.Started;     }   }    destroy() {     this.finish();     if (this._state < SpecialCasedStylesState.Destroyed) {       SpecialCasedStyles.initialStylesByElement.delete(this._element);       if (this._startStyles) {         eraseStyles(this._element, this._startStyles);         this._endStyles = null;       }       if (this._endStyles) {         eraseStyles(this._element, this._endStyles);         this._endStyles = null;       }       setStyles(this._element, this._initialStyles);       this._state = SpecialCasedStylesState.Destroyed;     }   } }  /**  * An enum of states reflective of what the status of `SpecialCasedStyles` is.  *  * Depending on how `SpecialCasedStyles` is interacted with, the start and end  * styles may not be applied in the same way. This enum ensures that if and when  * the ending styles are applied then the starting styles are applied. It is  * also used to reflect what the current status of the special cased styles are  * which helps prevent the starting/ending styles not be applied twice. It is  * also used to cleanup the styles once `SpecialCasedStyles` is destroyed.  */ const enum SpecialCasedStylesState {   Pending = 0,   Started = 1,   Finished = 2,   Destroyed = 3, }  function filterNonAnimatableStyles(styles: ɵStyleDataMap): ɵStyleDataMap|null {   let result: ɵStyleDataMap|null = null;   styles.forEach((val, prop) => {     if (isNonAnimatableStyle(prop)) {       result = result || new Map();       result.set(prop, val);     }   });   return result; }  function isNonAnimatableStyle(prop: string) {   return prop === 'display' || prop === 'position'; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationPlayer, ɵStyleDataMap} from '@angular/animations';  import {computeStyle} from '../../util'; import {SpecialCasedStyles} from '../special_cased_styles';  import {DOMAnimation} from './dom_animation';  export class WebAnimationsPlayer implements AnimationPlayer {   private _onDoneFns: Function[] = [];   private _onStartFns: Function[] = [];   private _onDestroyFns: Function[] = [];   private _duration: number;   private _delay: number;   private _initialized = false;   private _finished = false;   private _started = false;   private _destroyed = false;   private _finalKeyframe?: ɵStyleDataMap;    // the following original fns are persistent copies of the _onStartFns and _onDoneFns   // and are used to reset the fns to their original values upon reset()   // (since the _onStartFns and _onDoneFns get deleted after they are called)   private _originalOnDoneFns: Function[] = [];   private _originalOnStartFns: Function[] = [];    // TODO(issue/24571): remove '!'.   public readonly domPlayer!: DOMAnimation;   public time = 0;    public parentPlayer: AnimationPlayer|null = null;   public currentSnapshot: ɵStyleDataMap = new Map();    constructor(       public element: any, public keyframes: Array<ɵStyleDataMap>,       public options: {[key: string]: string|number},       private _specialStyles?: SpecialCasedStyles|null) {     this._duration = <number>options['duration'];     this._delay = <number>options['delay'] || 0;     this.time = this._duration + this._delay;   }    private _onFinish() {     if (!this._finished) {       this._finished = true;       this._onDoneFns.forEach(fn => fn());       this._onDoneFns = [];     }   }    init(): void {     this._buildPlayer();     this._preparePlayerBeforeStart();   }    private _buildPlayer(): void {     if (this._initialized) return;     this._initialized = true;      const keyframes = this.keyframes;     (this as {domPlayer: DOMAnimation}).domPlayer =         this._triggerWebAnimation(this.element, keyframes, this.options);     this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : new Map();     this.domPlayer.addEventListener('finish', () => this._onFinish());   }    private _preparePlayerBeforeStart() {     // this is required so that the player doesn't start to animate right away     if (this._delay) {       this._resetDomPlayerState();     } else {       this.domPlayer.pause();     }   }    private _convertKeyframesToObject(keyframes: Array<ɵStyleDataMap>): any[] {     const kfs: any[] = [];     keyframes.forEach(frame => {       kfs.push(Object.fromEntries(frame));     });     return kfs;   }    /** @internal */   _triggerWebAnimation(element: any, keyframes: Array<ɵStyleDataMap>, options: any): DOMAnimation {     // jscompiler doesn't seem to know animate is a native property because it's not fully     // supported yet across common browsers (we polyfill it for Edge/Safari) [CL #143630929]     return element['animate'](this._convertKeyframesToObject(keyframes), options) as DOMAnimation;   }    onStart(fn: () => void): void {     this._originalOnStartFns.push(fn);     this._onStartFns.push(fn);   }    onDone(fn: () => void): void {     this._originalOnDoneFns.push(fn);     this._onDoneFns.push(fn);   }    onDestroy(fn: () => void): void {     this._onDestroyFns.push(fn);   }    play(): void {     this._buildPlayer();     if (!this.hasStarted()) {       this._onStartFns.forEach(fn => fn());       this._onStartFns = [];       this._started = true;       if (this._specialStyles) {         this._specialStyles.start();       }     }     this.domPlayer.play();   }    pause(): void {     this.init();     this.domPlayer.pause();   }    finish(): void {     this.init();     if (this._specialStyles) {       this._specialStyles.finish();     }     this._onFinish();     this.domPlayer.finish();   }    reset(): void {     this._resetDomPlayerState();     this._destroyed = false;     this._finished = false;     this._started = false;     this._onStartFns = this._originalOnStartFns;     this._onDoneFns = this._originalOnDoneFns;   }    private _resetDomPlayerState() {     if (this.domPlayer) {       this.domPlayer.cancel();     }   }    restart(): void {     this.reset();     this.play();   }    hasStarted(): boolean {     return this._started;   }    destroy(): void {     if (!this._destroyed) {       this._destroyed = true;       this._resetDomPlayerState();       this._onFinish();       if (this._specialStyles) {         this._specialStyles.destroy();       }       this._onDestroyFns.forEach(fn => fn());       this._onDestroyFns = [];     }   }    setPosition(p: number): void {     if (this.domPlayer === undefined) {       this.init();     }     this.domPlayer.currentTime = p * this.time;   }    getPosition(): number {     return this.domPlayer.currentTime / this.time;   }    get totalTime(): number {     return this._delay + this._duration;   }    beforeDestroy() {     const styles: ɵStyleDataMap = new Map();     if (this.hasStarted()) {       // note: this code is invoked only when the `play` function was called prior to this       // (thus `hasStarted` returns true), this implies that the code that initializes       // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here       const finalKeyframe = this._finalKeyframe!;       finalKeyframe.forEach((val, prop) => {         if (prop !== 'offset') {           styles.set(prop, this._finished ? val : computeStyle(this.element, prop));         }       });     }      this.currentSnapshot = styles;   }    /** @internal */   triggerCallback(phaseName: string): void {     const methods = phaseName === 'start' ? this._onStartFns : this._onDoneFns;     methods.forEach(fn => fn());     methods.length = 0;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationPlayer, ɵStyleDataMap} from '@angular/animations';  import {allowPreviousPlayerStylesMerge, balancePreviousStylesIntoKeyframes, camelCaseToDashCase, copyStyles, normalizeKeyframes} from '../../util'; import {AnimationDriver} from '../animation_driver'; import {containsElement, getParentElement, invokeQuery, validateStyleProperty, validateWebAnimatableStyleProperty} from '../shared'; import {packageNonAnimatableStyles} from '../special_cased_styles';  import {WebAnimationsPlayer} from './web_animations_player';  export class WebAnimationsDriver implements AnimationDriver {   validateStyleProperty(prop: string): boolean {     // Perform actual validation in dev mode only, in prod mode this check is a noop.     if (typeof ngDevMode === 'undefined' || ngDevMode) {       return validateStyleProperty(prop);     }     return true;   }    validateAnimatableStyleProperty(prop: string): boolean {     // Perform actual validation in dev mode only, in prod mode this check is a noop.     if (typeof ngDevMode === 'undefined' || ngDevMode) {       const cssProp = camelCaseToDashCase(prop);       return validateWebAnimatableStyleProperty(cssProp);     }     return true;   }    matchesElement(_element: any, _selector: string): boolean {     // This method is deprecated and no longer in use so we return false.     return false;   }    containsElement(elm1: any, elm2: any): boolean {     return containsElement(elm1, elm2);   }    getParentElement(element: unknown): unknown {     return getParentElement(element);   }    query(element: any, selector: string, multi: boolean): any[] {     return invokeQuery(element, selector, multi);   }    computeStyle(element: any, prop: string, defaultValue?: string): string {     return (window.getComputedStyle(element) as any)[prop] as string;   }    animate(       element: any, keyframes: Array<Map<string, string|number>>, duration: number, delay: number,       easing: string, previousPlayers: AnimationPlayer[] = []): AnimationPlayer {     const fill = delay == 0 ? 'both' : 'forwards';     const playerOptions: {[key: string]: string|number} = {duration, delay, fill};     // we check for this to avoid having a null|undefined value be present     // for the easing (which results in an error for certain browsers #9752)     if (easing) {       playerOptions['easing'] = easing;     }      const previousStyles: ɵStyleDataMap = new Map();     const previousWebAnimationPlayers = <WebAnimationsPlayer[]>previousPlayers.filter(         player => player instanceof WebAnimationsPlayer);     if (allowPreviousPlayerStylesMerge(duration, delay)) {       previousWebAnimationPlayers.forEach(player => {         player.currentSnapshot.forEach((val, prop) => previousStyles.set(prop, val));       });     }      let _keyframes = normalizeKeyframes(keyframes).map(styles => copyStyles(styles));     _keyframes = balancePreviousStylesIntoKeyframes(element, _keyframes, previousStyles);     const specialStyles = packageNonAnimatableStyles(element, _keyframes);     return new WebAnimationsPlayer(element, _keyframes, playerOptions, specialStyles);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all animation APIs of the animation browser package.  */ export {AnimationDriver} from './render/animation_driver'; export * from './private_export'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/browser'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["RuntimeError","normalizeKeyframes","PRE_STYLE","AnimationGroupPlayer"],"mappings":";;;;;;;;;;AAYA,MAAM,UAAU,GAAG,OAAO,CAAC;AAErB,SAAU,kBAAkB,CAAC,GAAkB,EAAA;IACnD,OAAO,IAAIA,aAAY,CAEnB,IAAA,8CAAA,SAAS,IAAI,CAA8B,2BAAA,EAAA,GAAG,CAAe,aAAA,CAAA,CAAC,CAAC;AACrE,CAAC;SAEe,iBAAiB,GAAA;AAC/B,IAAA,OAAO,IAAIA,aAAY,CAAA,IAAA,6CAEnB,SAAS,IAAI,kEAAkE,CAAC,CAAC;AACvF,CAAC;SAEe,kBAAkB,GAAA;AAChC,IAAA,OAAO,IAAIA,aAAY,CAAA,IAAA,8CAEnB,SAAS,IAAI,+DAA+D,CAAC,CAAC;AACpF,CAAC;AAEK,SAAU,kBAAkB,CAAC,OAAe,EAAA;IAChD,OAAO,IAAIA,aAAY,CAAA,IAAA,8CAEnB,SAAS;QACL,CAA+C,4CAAA,EAAA,OAAO,CAA8B,4BAAA,CAAA,CAAC,CAAC;AAChG,CAAC;AAEK,SAAU,iBAAiB,CAAC,OAAe,EAAA;IAC/C,OAAO,IAAIA,aAAY,CAEnB,IAAA,6CAAA,SAAS,IAAI,CAAkD,+CAAA,EAAA,OAAO,CAAE,CAAA,CAAC,CAAC;AAChF,CAAC;AAEK,SAAU,eAAe,CAAC,QAAgB,EAAA;IAC9C,OAAO,IAAIA,aAAY,CAEnB,IAAA,2CAAA,SAAS,IAAI,CAA8C,2CAAA,EAAA,QAAQ,CAAE,CAAA,CAAC,CAAC;AAC7E,CAAC;AAEe,SAAA,mBAAmB,CAAC,oBAA4B,EAAE,KAAa,EAAA;IAC7E,OAAO,IAAIA,aAAY,CAAA,IAAA,gDAEnB,SAAS,IAAI,CAAuC,oCAAA,EAAA,oBAAoB,CAAI,CAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC;AAC3F,CAAC;SAEe,cAAc,GAAA;IAC5B,OAAO,IAAIA,aAAY,CAAA,IAAA,yCAEnB,SAAS;AACL,QAAA,wFAAwF,CAAC,CAAC;AACpG,CAAC;SAEe,iBAAiB,GAAA;AAC/B,IAAA,OAAO,IAAIA,aAAY,CAAA,IAAA,4CAEnB,SAAS,IAAI,yEAAyE,CAAC,CAAC;AAC9F,CAAC;AAEe,SAAA,YAAY,CAAC,YAAoB,EAAE,WAAqB,EAAA;IACtE,OAAO,IAAIA,aAAY,CAAA,IAAA,uCAEnB,SAAS;QACL,CACI,OAAA,EAAA,YAAY,CACZ,8EAAA,EAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAE,CAAA,CAAC,CAAC;AACxC,CAAC;AAEK,SAAU,iBAAiB,CAAC,KAAa,EAAA;IAC7C,OAAO,IAAIA,aAAY,CAEnB,IAAA,6CAAA,SAAS,IAAI,CAAmC,gCAAA,EAAA,KAAK,CAAkB,gBAAA,CAAA,CAAC,CAAC;AAC/E,CAAC;AAEK,SAAU,eAAe,CAAC,IAAY,EAAA;IAC1C,OAAO,IAAIA,aAAY,CAAA,IAAA,0CAEnB,SAAS;QACL,CACI,iCAAA,EAAA,IAAI,CAAkD,gDAAA,CAAA,CAAC,CAAC;AACtE,CAAC;AAEK,SAAU,wBAAwB,CACpC,IAAY,EAAE,UAAkB,EAAE,QAAgB,EAAE,WAAmB,EACvE,SAAiB,EAAA;IACnB,OAAO,IAAIA,aAAY,CAAA,IAAA,oDAEnB,SAAS;QACL,CAAqB,kBAAA,EAAA,IAAI,CAAuC,oCAAA,EAAA,UAAU,CACtE,SAAA,EAAA,QAAQ,CACR,yEAAA,EAAA,WAAW,CAAY,SAAA,EAAA,SAAS,CAAK,GAAA,CAAA,CAAC,CAAC;AACrD,CAAC;SAEe,gBAAgB,GAAA;AAC9B,IAAA,OAAO,IAAIA,aAAY,CAAA,IAAA,2CAEnB,SAAS,IAAI,CAAA,wDAAA,CAA0D,CAAC,CAAC;AAC/E,CAAC;SAEe,aAAa,GAAA;AAC3B,IAAA,OAAO,IAAIA,aAAY,CAAA,IAAA,wCAEnB,SAAS,IAAI,CAAA,2DAAA,CAA6D,CAAC,CAAC;AAClF,CAAC;SAEe,yBAAyB,GAAA;AACvC,IAAA,OAAO,IAAIA,aAAY,CAAA,IAAA,uDAEnB,SAAS,IAAI,CAAA,oDAAA,CAAsD,CAAC,CAAC;AAC3E,CAAC;SAEe,uBAAuB,GAAA;AACrC,IAAA,OAAO,IAAIA,aAAY,CAAA,IAAA,mDAEnB,SAAS,IAAI,CAAA,qEAAA,CAAuE,CAAC,CAAC;AAC5F,CAAC;SAEe,cAAc,GAAA;AAC5B,IAAA,OAAO,IAAIA,aAAY,CAAA,IAAA,yCAEnB,SAAS,IAAI,CAAA,4CAAA,CAA8C,CAAC,CAAC;AACnE,CAAC;AAEK,SAAU,YAAY,CAAC,QAAgB,EAAA;IAC3C,OAAO,IAAIA,aAAY,CAAA,IAAA,uCAEnB,SAAS;AACL,QAAA,CAAA,SAAA,EAAY,QAAQ,CAAA,2CAAA,EAChB,QAAQ,CAAA,oDAAA,CAAsD,CAAC,CAAC;AAC9E,CAAC;AAEK,SAAU,iBAAiB,CAAC,IAAY,EAAA;IAC5C,OAAO,IAAIA,aAAY,CAEnB,IAAA,4CAAA,SAAS,IAAI,CAAuC,oCAAA,EAAA,IAAI,CAAoB,kBAAA,CAAA,CAAC,CAAC;AACpF,CAAC;AAEK,SAAU,sBAAsB,CAAC,KAAa,EAAA;IAClD,OAAO,IAAIA,aAAY,CAEnB,IAAA,kDAAA,SAAS,IAAI,CAA+B,4BAAA,EAAA,KAAK,CAAoB,kBAAA,CAAA,CAAC,CAAC;AAC7E,CAAC;AAEK,SAAU,gBAAgB,CAAC,MAAe,EAAA;IAC9C,OAAO,IAAIA,aAAY,CAAA,IAAA,2CAEnB,SAAS,IAAI,iCAAiC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAE,CAAA,CAAC,CAAC;AACjG,CAAC;AAEK,SAAU,cAAc,CAAC,MAAe,EAAA;IAC5C,OAAO,IAAIA,aAAY,CAAA,IAAA,yCAEnB,SAAS,IAAI,+BAA+B,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAE,CAAA,CAAC,CAAC;AAC/F,CAAC;AAEe,SAAA,kBAAkB,CAAC,IAAY,EAAE,MAAe,EAAA;IAC9D,OAAO,IAAIA,aAAY,CAAA,IAAA,8CAEnB,SAAS;QACL,CAA0B,uBAAA,EAAA,IAAI,0DAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAE,CAAA,CAAC,CAAC;AAC9D,CAAC;AAEK,SAAU,eAAe,CAAC,MAAe,EAAA;IAC7C,OAAO,IAAIA,aAAY,CAAA,IAAA,0CAEnB,SAAS;QACL,CAAiD,8CAAA,EAAA,UAAU,GACvD,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAE,CAAA,CAAC,CAAC;AACjE,CAAC;AAEK,SAAU,cAAc,CAAC,MAAe,EAAA;IAC5C,OAAO,IAAIA,aAAY,CAAA,IAAA,6CAEnB,SAAS;AACL,QAAA,CAAA,2DAAA,EACI,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC,CAAC;AAC3D,CAAC;SAEe,2BAA2B,GAAA;AACzC,IAAA,OAAO,IAAIA,aAAY,CAAA,IAAA,wDAEnB,SAAS,IAAI,sEAAsE,CAAC,CAAC;AAC3F,CAAC;AAEK,SAAU,qBAAqB,CAAC,MAAe,EAAA;IACnD,OAAO,IAAIA,aAAY,CAAA,IAAA,iDAEnB,SAAS;AACL,QAAA,CAAA,2DAAA,EACI,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC,CAAC;AAC3D,CAAC;AAEK,SAAU,aAAa,CAAC,EAAU,EAAA;IACtC,OAAO,IAAIA,aAAY,CAEnB,IAAA,wCAAA,SAAS,IAAI,CAAoD,iDAAA,EAAA,EAAE,CAAE,CAAA,CAAC,CAAC;AAC7E,CAAC;AAEe,SAAA,cAAc,CAAC,KAAa,EAAE,IAAY,EAAA;IACxD,OAAO,IAAIA,aAAY,CAAA,IAAA,yCAEnB,SAAS;AACL,QAAA,CAAA,iDAAA,EACI,KAAK,CAAA,iCAAA,EAAoC,IAAI,CAAA,iBAAA,CAAmB,CAAC,CAAC;AAChF,CAAC;AAEK,SAAU,YAAY,CAAC,IAAY,EAAA;IACvC,OAAO,IAAIA,aAAY,CAAA,IAAA,uCAEnB,SAAS;QACL,CACI,2CAAA,EAAA,IAAI,CAA4C,0CAAA,CAAA,CAAC,CAAC;AAChE,CAAC;AAEe,SAAA,uBAAuB,CAAC,KAAa,EAAE,IAAY,EAAA;IACjE,OAAO,IAAIA,aAAY,CAAA,IAAA,mDAEnB,SAAS;AACL,QAAA,CAAA,sCAAA,EAAyC,KAAK,CAAA,6BAAA,EAC1C,IAAI,CAAA,mBAAA,CAAqB,CAAC,CAAC;AACzC,CAAC;AAEK,SAAU,mBAAmB,CAAC,IAAY,EAAA;IAC9C,OAAO,IAAIA,aAAY,CAEnB,IAAA,8CAAA,SAAS,IAAI,CAAmC,gCAAA,EAAA,IAAI,CAA4B,0BAAA,CAAA,CAAC,CAAC;AACxF,CAAC;AAEK,SAAU,wBAAwB,CAAC,MAAe,EAAA;IACtD,OAAO,IAAIA,aAAY,CAAA,IAAA,oDAEnB,SAAS;AACL,QAAA,CAAA,+EAAA,EACI,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC,CAAC;AAC3D,CAAC;AAEe,SAAA,oBAAoB,CAAC,IAAY,EAAE,MAAe,EAAA;IAChE,OAAO,IAAIA,aAAY,CAAA,IAAA,gDAEnB,SAAS;QACL,CAA6B,0BAAA,EAAA,IAAI,wBAAwB,UAAU,CAAA,EAC/D,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAE,CAAA,CAAC,CAAC;AACjE,CAAC;AAEe,SAAA,gBAAgB,CAAC,IAAY,EAAE,MAAe,EAAA;IAC5D,OAAO,IAAIA,aAAY,CAAA,IAAA,2CAEnB,SAAS,IAAI,CAAI,CAAA,EAAA,IAAI,CAAyB,sBAAA,EAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC;AACnG;;AC5PA;;;;AAIG;AACI,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IACzC,qBAAqB;IACrB,gCAAgC;IAChC,iCAAiC;IACjC,6BAA6B;IAC7B,8BAA8B;IAC9B,kBAAkB;IAClB,eAAe;IACf,oBAAoB;IACpB,yBAAyB;IACzB,qBAAqB;IACrB,2BAA2B;IAC3B,cAAc;IACd,KAAK;IACL,iBAAiB;IACjB,YAAY;IACZ,kBAAkB;IAClB,qBAAqB;IACrB,iBAAiB;IACjB,YAAY;IACZ,QAAQ;IACR,kBAAkB;IAClB,wBAAwB;IACxB,wBAAwB;IACxB,oBAAoB;IACpB,0BAA0B;IAC1B,0BAA0B;IAC1B,eAAe;IACf,qBAAqB;IACrB,2BAA2B;IAC3B,4BAA4B;IAC5B,qBAAqB;IACrB,cAAc;IACd,uBAAuB;IACvB,yBAAyB;IACzB,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;IACnB,yBAAyB;IACzB,yBAAyB;IACzB,qBAAqB;IACrB,2BAA2B;IAC3B,2BAA2B;IAC3B,aAAa;IACb,mBAAmB;IACnB,mBAAmB;IACnB,eAAe;IACf,cAAc;IACd,oBAAoB;IACpB,oBAAoB;IACpB,yBAAyB;IACzB,2BAA2B;IAC3B,YAAY;IACZ,kBAAkB;IAClB,wBAAwB;IACxB,yBAAyB;IACzB,kBAAkB;IAClB,cAAc;IACd,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,MAAM;IACN,WAAW;IACX,OAAO;IACP,cAAc;IACd,YAAY;IACZ,aAAa;IACb,mBAAmB;IACnB,mBAAmB;IACnB,cAAc;IACd,SAAS;IACT,QAAQ;IACR,MAAM;IACN,YAAY;IACZ,WAAW;IACX,aAAa;IACb,MAAM;IACN,WAAW;IACX,kBAAkB;IAClB,cAAc;IACd,yBAAyB;IACzB,aAAa;IACb,KAAK;IACL,iBAAiB;IACjB,UAAU;IACV,cAAc;IACd,uBAAuB;IACvB,oBAAoB;IACpB,QAAQ;IACR,aAAa;IACb,gBAAgB;IAChB,OAAO;IACP,aAAa;IACb,iBAAiB;IACjB,mBAAmB;IACnB,cAAc;IACd,kBAAkB;IAClB,oBAAoB;IACpB,MAAM;IACN,gBAAgB;IAChB,YAAY;IACZ,aAAa;IACb,QAAQ;IACR,kBAAkB;IAClB,oBAAoB;IACpB,eAAe;IACf,mBAAmB;IACnB,qBAAqB;IACrB,aAAa;IACb,cAAc;IACd,YAAY;IACZ,MAAM;IACN,aAAa;IACb,eAAe;IACf,WAAW;IACX,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,WAAW;IACX,WAAW;IACX,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,WAAW;IACX,iBAAiB;IACjB,QAAQ;IACR,eAAe;IACf,iBAAiB;IACjB,aAAa;IACb,iBAAiB;IACjB,eAAe;IACf,SAAS;IACT,OAAO;IACP,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,SAAS;IACT,mBAAmB;IACnB,qBAAqB;IACrB,gBAAgB;IAChB,oBAAoB;IACpB,sBAAsB;IACtB,cAAc;IACd,eAAe;IACf,aAAa;IACb,aAAa;IACb,oBAAoB;IACpB,OAAO;IACP,QAAQ;IACR,SAAS;IACT,OAAO;IACP,eAAe;IACf,qBAAqB;IACrB,yBAAyB;IACzB,2BAA2B;IAC3B,sBAAsB;IACtB,sBAAsB;IACtB,0BAA0B;IAC1B,4BAA4B;IAC5B,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,gBAAgB;IAChB,sBAAsB;IACtB,0BAA0B;IAC1B,4BAA4B;IAC5B,uBAAuB;IACvB,uBAAuB;IACvB,2BAA2B;IAC3B,6BAA6B;IAC7B,qBAAqB;IACrB,sBAAsB;IACtB,oBAAoB;IACpB,wBAAwB;IACxB,yBAAyB;IACzB,iBAAiB;IACjB,uBAAuB;IACvB,cAAc;IACd,eAAe;IACf,UAAU;IACV,iBAAiB;IACjB,uBAAuB;IACvB,2BAA2B;IAC3B,eAAe;IACf,qBAAqB;IACrB,aAAa;IACb,aAAa;IACb,uBAAuB;IACvB,KAAK;IACL,WAAW;IACX,kBAAkB;IAClB,WAAW;IACX,gBAAgB;IAChB,YAAY;IACZ,OAAO;IACP,cAAc;IACd,SAAS;IACT,MAAM;AACP,CAAA,CAAC;;SCjMc,SAAS,GAAA;AACvB,IAAA,QAAQ,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE;AACnF,CAAC;SAEe,MAAM,GAAA;;;;;;AAMpB,IAAA,OAAO,OAAO,OAAO,KAAK,WAAW,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,CAAC;AAC5F,CAAC;AAEK,SAAU,mBAAmB,CAAC,OAA0B,EAAA;IAC5D,QAAQ,OAAO,CAAC,MAAM;AACpB,QAAA,KAAK,CAAC;YACJ,OAAO,IAAI,mBAAmB,EAAE,CAAC;AACnC,QAAA,KAAK,CAAC;AACJ,YAAA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,QAAA;AACE,YAAA,OAAO,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC7C,KAAA;AACH,CAAC;SAEeC,oBAAkB,CAC9B,MAAuB,EAAE,UAAoC,EAAE,OAAY,EAC3E,SAA+B,EAAE,SAAA,GAA2B,IAAI,GAAG,EAAE,EACrE,UAA4B,GAAA,IAAI,GAAG,EAAE,EAAA;IACvC,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,mBAAmB,GAAyB,EAAE,CAAC;AACrD,IAAA,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC;IACxB,IAAI,gBAAgB,GAAuB,IAAI,CAAC;AAChD,IAAA,SAAS,CAAC,OAAO,CAAC,EAAE,IAAG;QACrB,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC;AAC1C,QAAA,MAAM,YAAY,GAAG,MAAM,IAAI,cAAc,CAAC;QAC9C,MAAM,kBAAkB,GAAkB,CAAC,YAAY,IAAI,gBAAgB,KAAK,IAAI,GAAG,EAAE,CAAC;QAC1F,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;YACvB,IAAI,cAAc,GAAG,IAAI,CAAC;YAC1B,IAAI,eAAe,GAAG,GAAG,CAAC;YAC1B,IAAI,IAAI,KAAK,QAAQ,EAAE;gBACrB,cAAc,GAAG,UAAU,CAAC,qBAAqB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAC1E,gBAAA,QAAQ,eAAe;AACrB,oBAAA,KAAKC,UAAS;AACZ,wBAAA,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;wBACvC,MAAM;AAER,oBAAA,KAAK,UAAU;AACb,wBAAA,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;wBACxC,MAAM;AAER,oBAAA;wBACE,eAAe;4BACX,UAAU,CAAC,mBAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;wBAClF,MAAM;AACT,iBAAA;AACF,aAAA;AACD,YAAA,kBAAkB,CAAC,GAAG,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAC1D,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC9C,SAAA;QACD,gBAAgB,GAAG,kBAAkB,CAAC;QACtC,cAAc,GAAG,MAAM,CAAC;AAC1B,KAAC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,QAAA,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;AAC/B,KAAA;AAED,IAAA,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAEK,SAAU,cAAc,CAC1B,MAAuB,EAAE,SAAiB,EAAE,KAA+B,EAC3E,QAA6B,EAAA;AAC/B,IAAA,QAAQ,SAAS;AACf,QAAA,KAAK,OAAO;YACV,MAAM,CAAC,OAAO,CAAC,MAAM,QAAQ,CAAC,KAAK,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YACpF,MAAM;AACR,QAAA,KAAK,MAAM;YACT,MAAM,CAAC,MAAM,CAAC,MAAM,QAAQ,CAAC,KAAK,IAAI,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAClF,MAAM;AACR,QAAA,KAAK,SAAS;YACZ,MAAM,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,KAAK,IAAI,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YACxF,MAAM;AACT,KAAA;AACH,CAAC;SAEe,kBAAkB,CAC9B,CAAiB,EAAE,SAAiB,EAAE,MAAuB,EAAA;AAC/D,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACnC,IAAA,MAAM,QAAQ,GAAI,MAAc,CAAC,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC;AACzD,IAAA,MAAM,KAAK,GAAG,kBAAkB,CAC5B,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,CAAC,SAAS,EAC1E,SAAS,IAAI,SAAS,GAAG,CAAC,CAAC,SAAS,GAAG,SAAS,EAAE,QAAQ,CAAC,CAAC;AAChE,IAAA,MAAM,IAAI,GAAI,CAAS,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,IAAI,IAAI,IAAI,EAAE;AACf,QAAA,KAAa,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AAChC,KAAA;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;SAEe,kBAAkB,CAC9B,OAAY,EAAE,WAAmB,EAAE,SAAiB,EAAE,OAAe,EAAE,SAAoB,GAAA,EAAE,EAC7F,SAAoB,GAAA,CAAC,EAAE,QAAkB,EAAA;AAC3C,IAAA,OAAO,EAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAC,CAAC;AAChG,CAAC;SAEe,oBAAoB,CAAO,GAAc,EAAE,GAAM,EAAE,YAAe,EAAA;IAChF,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK,EAAE;QACV,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,YAAY,CAAC,CAAC;AACpC,KAAA;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAEK,SAAU,oBAAoB,CAAC,OAAe,EAAA;IAClD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;AAC/C,IAAA,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,IAAI,SAAS,GAAsC,CAAC,IAAS,EAAE,IAAS,KAAK,KAAK,CAAC;AACnF,IAAI,MAAM,GACN,CAAC,OAAY,EAAE,QAAgB,EAAE,KAAc,KAAI;AACjD,IAAA,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AACN,IAAI,gBAAgB,GAAiB,IAAI,CAAC;AAEpC,SAAU,gBAAgB,CAAC,OAAY,EAAA;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAClD,IAAI,MAAM,KAAK,gBAAgB,EAAE;AAC/B,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AACD,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;AACA;AACA,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;AACzB,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;IAC7C,IAAI,CAAC,SAAS,EAAE,EAAE;AAChB,QAAA,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjD,KAAA;AAAM,SAAA;;;AAGL,QAAA,gBAAgB,mBAAmB,CAAC,MAAM,QAAQ,CAAC,eAAe,GAAG,CAAC;AACtE,QAAA,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,KAAI;AACzB,YAAA,OAAO,IAAI,EAAE;gBACX,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,oBAAA,OAAO,IAAI,CAAC;AACb,iBAAA;AACD,gBAAA,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC/B,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;AACH,KAAA;IAED,MAAM,GAAG,CAAC,OAAY,EAAE,QAAgB,EAAE,KAAc,KAAW;AACjE,QAAA,IAAI,KAAK,EAAE;YACT,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvD,SAAA;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC5B,KAAC,CAAC;AACH,CAAA;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAA;;;AAGxC,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC;AACzC,CAAC;AAED,IAAI,YAAY,GAAsB,IAAI,CAAC;AAC3C,IAAI,UAAU,GAAG,KAAK,CAAC;AACjB,SAAU,qBAAqB,CAAC,IAAY,EAAA;IAChD,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,YAAY,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC;AACnC,QAAA,UAAU,GAAG,YAAa,CAAC,KAAK,IAAI,kBAAkB,IAAI,YAAa,CAAC,KAAK,IAAI,KAAK,CAAC;AACxF,KAAA;IAED,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,YAAa,CAAC,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE;AACtD,QAAA,MAAM,GAAG,IAAI,IAAI,YAAa,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE;YACzB,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1E,YAAA,MAAM,GAAG,SAAS,IAAI,YAAa,CAAC,KAAK,CAAC;AAC3C,SAAA;AACF,KAAA;AAED,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAEK,SAAU,kCAAkC,CAAC,IAAY,EAAA;AAC7D,IAAA,OAAO,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;SAEe,WAAW,GAAA;AACzB,IAAA,IAAI,OAAO,QAAQ,IAAI,WAAW,EAAE;QAClC,OAAO,QAAQ,CAAC,IAAI,CAAC;AACtB,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,MAAM,eAAe,GAAG,UAAU;AAClC,MAAM,WAAW,GAAG,OAAO;AAE5B,SAAU,iBAAiB,CAAC,QAAuB,EAAA;AACvD,IAAA,MAAM,MAAM,GAAkB,IAAI,GAAG,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;AACzD,QAAA,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC3B,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,MAAM,CAAC;AAChB;;AC9NA;;AAEG;MAEU,mBAAmB,CAAA;AAC9B,IAAA,qBAAqB,CAAC,IAAY,EAAA;AAChC,QAAA,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;KACpC;IAED,cAAc,CAAC,QAAa,EAAE,SAAiB,EAAA;;AAE7C,QAAA,OAAO,KAAK,CAAC;KACd;IAED,eAAe,CAAC,IAAS,EAAE,IAAS,EAAA;AAClC,QAAA,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACpC;AAED,IAAA,gBAAgB,CAAC,OAAgB,EAAA;AAC/B,QAAA,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;KAClC;AAED,IAAA,KAAK,CAAC,OAAY,EAAE,QAAgB,EAAE,KAAc,EAAA;QAClD,OAAO,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;KAC9C;AAED,IAAA,YAAY,CAAC,OAAY,EAAE,IAAY,EAAE,YAAqB,EAAA;QAC5D,OAAO,YAAY,IAAI,EAAE,CAAC;KAC3B;AAED,IAAA,OAAO,CACH,OAAY,EAAE,SAA4C,EAAE,QAAgB,EAAE,KAAa,EAC3F,MAAc,EAAE,eAAyB,GAAA,EAAE,EAC3C,uBAAiC,EAAA;AACnC,QAAA,OAAO,IAAI,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;KACjD;;2HA/BU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+HAAnB,mBAAmB,EAAA,CAAA,CAAA;sGAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;AAmCX;;AAEG;MACmB,eAAe,CAAA;;AAC5B,eAAA,CAAA,IAAI,oBAAqC,IAAI,mBAAmB,EAAE,CAAC;;ACxCrE,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,eAAe,GAAG,UAAU,CAAC;AACnC,MAAM,eAAe,GAAG,UAAU,CAAC;AACnC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAC1C,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAC1C,MAAM,sBAAsB,GAAG,cAAc,CAAC;AAC9C,MAAM,qBAAqB,GAAG,eAAe,CAAC;AAE/C,SAAU,kBAAkB,CAAC,KAAoB,EAAA;IACrD,IAAI,OAAO,KAAK,IAAI,QAAQ;AAAE,QAAA,OAAO,KAAK,CAAC;IAE3C,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACjD,IAAA,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC;AAE7C,IAAA,OAAO,qBAAqB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa,EAAE,IAAY,EAAA;AACxD,IAAA,QAAQ,IAAI;AACV,QAAA,KAAK,GAAG;YACN,OAAO,KAAK,GAAG,UAAU,CAAC;AAC5B,QAAA;AACE,YAAA,OAAO,KAAK,CAAC;AAChB,KAAA;AACH,CAAC;SAEe,aAAa,CACzB,OAAqC,EAAE,MAAe,EAAE,mBAA6B,EAAA;AACvF,IAAA,OAAO,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC;AACrB,QAAA,OAAO;AACvB,QAAA,mBAAmB,CAAgB,OAAO,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,mBAAmB,CACxB,GAAkB,EAAE,MAAe,EAAE,mBAA6B,EAAA;IACpE,MAAM,KAAK,GAAG,0EAA0E,CAAC;AACzF,IAAA,IAAI,QAAgB,CAAC;IACrB,IAAI,KAAK,GAAW,CAAC,CAAC;IACtB,IAAI,MAAM,GAAW,EAAE,CAAC;AACxB,IAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,OAAO,KAAK,IAAI,EAAE;YACpB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,YAAA,OAAO,EAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;AAC5C,SAAA;AAED,QAAA,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAErE,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,YAAA,KAAK,GAAG,qBAAqB,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAI,SAAS,EAAE;YACb,MAAM,GAAG,SAAS,CAAC;AACpB,SAAA;AACF,KAAA;AAAM,SAAA;QACL,QAAQ,GAAG,GAAG,CAAC;AAChB,KAAA;IAED,IAAI,CAAC,mBAAmB,EAAE;QACxB,IAAI,cAAc,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;QAC/B,IAAI,QAAQ,GAAG,CAAC,EAAE;AAChB,YAAA,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;YACjC,cAAc,GAAG,IAAI,CAAC;AACvB,SAAA;QACD,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAClC,cAAc,GAAG,IAAI,CAAC;AACvB,SAAA;AACD,QAAA,IAAI,cAAc,EAAE;AAClB,YAAA,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,SAAA;AACF,KAAA;AAED,IAAA,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAC,CAAC;AACnC,CAAC;SAEe,OAAO,CACnB,GAAyB,EAAE,cAAoC,EAAE,EAAA;IACnE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;QAC9B,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,WAAW,CAAC;AACrB,CAAC;AAEK,SAAU,YAAY,CAAC,GAAe,EAAA;AAC1C,IAAA,MAAM,QAAQ,GAAkB,IAAI,GAAG,EAAE,CAAC;IAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AAC9B,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,QAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC1B,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAEK,SAAU,kBAAkB,CAAC,SACoB,EAAA;AACrD,IAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACrB,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;AACD,IAAA,IAAI,SAAS,CAAC,CAAC,CAAC,YAAY,GAAG,EAAE;AAC/B,QAAA,OAAO,SAAiC,CAAC;AAC1C,KAAA;AACD,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,YAAY,CAAC,EAAgB,CAAC,CAAC,CAAC;AAC7D,CAAC;AAEK,SAAU,eAAe,CAAC,MAA0C,EAAA;AACxE,IAAA,MAAM,gBAAgB,GAAkB,IAAI,GAAG,EAAE,CAAC;AAClD,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACzB,QAAA,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC5D,KAAA;AAAM,SAAA;AACL,QAAA,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AACtC,KAAA;AACD,IAAA,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAEK,SAAU,UAAU,CACtB,MAAqB,EAAE,cAA6B,IAAI,GAAG,EAAE,EAC7D,QAAwB,EAAA;AAC1B,IAAA,IAAI,QAAQ,EAAE;QACZ,KAAK,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,QAAQ,EAAE;AAChC,YAAA,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC5B,SAAA;AACF,KAAA;IACD,KAAK,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE;AAC9B,QAAA,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC5B,KAAA;AACD,IAAA,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAY,EAAE,GAAW,EAAE,KAAa,EAAA;;;AAGvE,IAAA,IAAI,KAAK,EAAE;AACT,QAAA,OAAO,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC;AAChC,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAY,EAAA;;;;;IAKvC,IAAI,cAAc,GAAG,EAAE,CAAC;AACxB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,QAAA,cAAc,IAAI,uBAAuB,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9F,KAAA;AACD,IAAA,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE;;AAE/B,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAC7D,SAAS;AACV,SAAA;AACD,QAAA,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACzC,QAAA,cAAc,IAAI,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACjF,KAAA;AACD,IAAA,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAChD,CAAC;SAEe,SAAS,CAAC,OAAY,EAAE,MAAqB,EAAE,YAA4B,EAAA;AACzF,IAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QACpB,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AAC3B,YAAA,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC3C,gBAAA,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AAClD,aAAA;AACD,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;AACjC,SAAC,CAAC,CAAC;;QAEH,IAAI,MAAM,EAAE,EAAE;YACZ,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC9B,SAAA;AACF,KAAA;AACH,CAAC;AAEe,SAAA,WAAW,CAAC,OAAY,EAAE,MAAqB,EAAA;AAC7D,IAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QACpB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,KAAI;AACzB,YAAA,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC5C,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AAChC,SAAC,CAAC,CAAC;;QAEH,IAAI,MAAM,EAAE,EAAE;YACZ,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC9B,SAAA;AACF,KAAA;AACH,CAAC;AAEK,SAAU,uBAAuB,CAAC,KACmB,EAAA;AACzD,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AACvC,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,KAAA;AACD,IAAA,OAAO,KAA0B,CAAC;AACpC,CAAC;SAEe,mBAAmB,CAC/B,KAAmC,EAAE,OAAyB,EAAE,MAAe,EAAA;AACjF,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;AACpC,IAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,QAAA,OAAO,CAAC,OAAO,CAAC,OAAO,IAAG;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBACnC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1C,aAAA;AACH,SAAC,CAAC,CAAC;AACJ,KAAA;AACH,CAAC;AAED,MAAM,WAAW,GACb,IAAI,MAAM,CAAC,CAAA,EAAG,uBAAuB,CAAA,aAAA,EAAgB,qBAAqB,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC;AACjF,SAAU,kBAAkB,CAAC,KAAmC,EAAA;IACpE,IAAI,MAAM,GAAa,EAAE,CAAC;AAC1B,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,IAAI,KAAU,CAAC;QACf,OAAO,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACtC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAW,CAAC,CAAC;AACjC,SAAA;AACD,QAAA,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;AAC3B,KAAA;AACD,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;SAEe,iBAAiB,CAC7B,KAAoB,EAAE,MAA6B,EAAE,MAAe,EAAA;AACtE,IAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;AAClC,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,OAAO,KAAI;AACvD,QAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;;QAE/B,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;YACxC,QAAQ,GAAG,EAAE,CAAC;AACf,SAAA;AACD,QAAA,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAC7B,KAAC,CAAC,CAAC;;IAGH,OAAO,GAAG,IAAI,QAAQ,GAAG,KAAK,GAAG,GAAG,CAAC;AACvC,CAAC;AAEK,SAAU,eAAe,CAAC,QAAa,EAAA;IAC3C,MAAM,GAAG,GAAU,EAAE,CAAC;AACtB,IAAA,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC3B,IAAA,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,QAAA,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;AACxB,KAAA;AACD,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,gBAAgB,GAAG,eAAe,CAAC;AACnC,SAAU,mBAAmB,CAAC,KAAa,EAAA;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9E,CAAC;AAEK,SAAU,mBAAmB,CAAC,KAAa,EAAA;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AACjE,CAAC;AAEe,SAAA,8BAA8B,CAAC,QAAgB,EAAE,KAAa,EAAA;AAC5E,IAAA,OAAO,QAAQ,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;AACvC,CAAC;SAEe,kCAAkC,CAC9C,OAAY,EAAE,SAA+B,EAAE,cAA6B,EAAA;AAC9E,IAAA,IAAI,cAAc,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE;AAC3C,QAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,iBAAiB,GAAa,EAAE,CAAC;QACrC,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AACnC,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC/B,gBAAA,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,aAAA;AACD,YAAA,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAClC,SAAC,CAAC,CAAC;QAEH,IAAI,iBAAiB,CAAC,MAAM,EAAE;AAC5B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,gBAAA,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACtB,iBAAiB,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9E,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA,OAAO,SAAS,CAAC;AACnB,CAAC;SAMe,YAAY,CAAC,OAAY,EAAE,IAAS,EAAE,OAAY,EAAA;IAChE,QAAQ,IAAI,CAAC,IAAI;AACf,QAAA,KAAA,CAAA;YACE,OAAO,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7C,QAAA,KAAA,CAAA;YACE,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAA,KAAA,CAAA;YACE,OAAO,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAChD,QAAA,KAAA,CAAA;YACE,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9C,QAAA,KAAA,CAAA;YACE,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAA,KAAA,CAAA;YACE,OAAO,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7C,QAAA,KAAA,CAAA;YACE,OAAO,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/C,QAAA,KAAA,CAAA;YACE,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAA,KAAA,CAAA;YACE,OAAO,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/C,QAAA,KAAA,CAAA;YACE,OAAO,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAClD,QAAA,KAAA,EAAA;YACE,OAAO,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAChD,QAAA,KAAA,EAAA;YACE,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAA,KAAA,EAAA;YACE,OAAO,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7C,QAAA;AACE,YAAA,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,KAAA;AACH,CAAC;AAEe,SAAA,YAAY,CAAC,OAAY,EAAE,IAAY,EAAA;IACrD,OAAa,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,CAAC;AACvD;;AClVA,MAAM,WAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC;AAEpE,SAAS,oBAAoB,CAAC,QAAkB,EAAA;IAC9C,MAAM,UAAU,GAAG,OAAO,CAAC;IAC3B,OAAO,CAAA,EAAG,UAAU,CAAA,EAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,CAAE,CAAC;AAC7F,CAAC;AAEK,SAAU,cAAc,CAAC,QAAkB,EAAA;AAC/C,IAAA,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA,8BAAA,EAAiC,oBAAoB,CAAC,QAAQ,CAAC,CAAE,CAAA,CAAC,CAAC;AACjG,CAAC;AAEe,SAAA,gBAAgB,CAAC,IAAY,EAAE,QAAkB,EAAA;IAC/D,WAAW;AACP,QAAA,OAAO,CAAC,IAAI,CAAC,CAAA,uBAAA,EAA0B,IAAI,CAAA,wCAAA,EACvC,oBAAoB,CAAC,QAAQ,CAAC,CAAE,CAAA,CAAC,CAAC;AAC5C,CAAC;AAEK,SAAU,YAAY,CAAC,QAAkB,EAAA;IAC7C,WAAW;QACP,OAAO,CAAC,IAAI,CAAC,CAA+C,4CAAA,EAAA,oBAAoB,CAAC,QAAQ,CAAC,CAAE,CAAA,CAAC,CAAC;AACpG,CAAC;AAEe,SAAA,sBAAsB,CAAC,IAAY,EAAE,QAAkB,EAAA;IACrE,WAAW;AACP,QAAA,OAAO,CAAC,IAAI,CAAC,CAAA,0BAAA,EAA6B,IAAI,CAAA,yCAAA,EAC1C,oBAAoB,CAAC,QAAQ,CAAC,CAAE,CAAA,CAAC,CAAC;AAC5C,CAAC;AAEe,SAAA,iCAAiC,CAAC,QAAkB,EAAE,KAAe,EAAA;IACnF,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,QAAA,QAAQ,CAAC,IAAI,CAAC,CAAA,sDAAA,EAAyD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAE,CAAA,CAAC,CAAC;AAC5F,KAAA;AACH;;AC9BO,MAAM,SAAS,GAAG,GAAG,CAAC;AAIb,SAAA,mBAAmB,CAC/B,eAA2C,EAAE,MAAe,EAAA;IAC9D,MAAM,WAAW,GAA0B,EAAE,CAAC;AAC9C,IAAA,IAAI,OAAO,eAAe,IAAI,QAAQ,EAAE;QACtC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,CACpC,GAAG,IAAI,uBAAuB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/D,KAAA;AAAM,SAAA;AACL,QAAA,WAAW,CAAC,IAAI,CAAsB,eAAe,CAAC,CAAC;AACxD,KAAA;AACD,IAAA,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,uBAAuB,CAC5B,QAAgB,EAAE,WAAkC,EAAE,MAAe,EAAA;AACvE,IAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;QACtB,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACrD,QAAA,IAAI,OAAO,MAAM,IAAI,UAAU,EAAE;AAC/B,YAAA,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO;AACR,SAAA;QACD,QAAQ,GAAG,MAAM,CAAC;AACnB,KAAA;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACxE,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACrC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzC,QAAA,OAAO,WAAW,CAAC;AACpB,KAAA;AAED,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3D,MAAM,kBAAkB,GAAG,SAAS,IAAI,SAAS,IAAI,OAAO,IAAI,SAAS,CAAC;IAC1E,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAC9C,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5D,KAAA;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,MAAe,EAAA;AACzD,IAAA,QAAQ,KAAK;AACX,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,WAAW,CAAC;AACrB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,WAAW,CAAC;AACrB,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,CAAC,SAAc,EAAE,OAAY,KAAc,UAAU,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AAChG,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,CAAC,SAAc,EAAE,OAAY,KAAc,UAAU,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AAChG,QAAA;YACE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,YAAA,OAAO,QAAQ,CAAC;AACnB,KAAA;AACH,CAAC;AAED;AACA;AACA;AACA;AACA,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3D,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AAE7D,SAAS,oBAAoB,CAAC,GAAW,EAAE,GAAW,EAAA;AACpD,IAAA,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxF,IAAA,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAExF,IAAA,OAAO,CAAC,SAAc,EAAE,OAAY,KAAa;QAC/C,IAAI,QAAQ,GAAG,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,CAAC;QACpD,IAAI,QAAQ,GAAG,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,OAAO,CAAC;QAElD,IAAI,CAAC,QAAQ,IAAI,iBAAiB,IAAI,OAAO,SAAS,KAAK,SAAS,EAAE;YACpE,QAAQ,GAAG,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrF,SAAA;QACD,IAAI,CAAC,QAAQ,IAAI,iBAAiB,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE;YAClE,QAAQ,GAAG,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnF,SAAA;QAED,OAAO,QAAQ,IAAI,QAAQ,CAAC;AAC9B,KAAC,CAAC;AACJ;;AC3EA,MAAM,UAAU,GAAG,OAAO,CAAC;AAC3B,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,CAAM,GAAA,EAAA,UAAU,CAAO,KAAA,CAAA,EAAE,GAAG,CAAC,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCG;AACG,SAAU,iBAAiB,CAC7B,MAAuB,EAAE,QAA+C,EAAE,MAAe,EACzF,QAAkB,EAAA;AACpB,IAAA,OAAO,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,aAAa,GAAG,EAAE,CAAC;MAEZ,0BAA0B,CAAA;AACrC,IAAA,WAAA,CAAoB,OAAwB,EAAA;QAAxB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;KAAI;AAEhD,IAAA,KAAK,CAAC,QAA+C,EAAE,MAAe,EAAE,QAAkB,EAAA;AAExF,QAAA,MAAM,OAAO,GAAG,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;AAC5C,QAAA,MAAM,GAAG,GACuB,YAAY,CAAC,IAAI,EAAE,uBAAuB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;AAE/F,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,YAAA,IAAI,OAAO,CAAC,6BAA6B,CAAC,IAAI,EAAE;AAC9C,gBAAA,iCAAiC,CAC7B,QAAQ,EACR,CAAC,GAAG,OAAO,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC,CACpD,CAAC;AACH,aAAA;AACF,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACZ;AAEO,IAAA,6BAA6B,CAAC,OAAmC,EAAA;AACvE,QAAA,OAAO,CAAC,oBAAoB,GAAG,aAAa,CAAC;AAC7C,QAAA,OAAO,CAAC,eAAe,GAAG,IAAI,GAAG,EAAuC,CAAC;QACzE,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACtD,QAAA,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;KACzB;IAED,YAAY,CAAC,QAAkC,EAAE,OAAmC,EAAA;AAElF,QAAA,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;AACxC,QAAA,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpC,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAoB,EAAE,CAAC;QACxC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;YAClC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AACvC,SAAA;AAED,QAAA,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,IAAG;AACjC,YAAA,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;AAC5C,YAAA,IAAI,GAAG,CAAC,IAAI,IAAA,CAAA,oCAAiC;gBAC3C,MAAM,QAAQ,GAAG,GAA6B,CAAC;AAC/C,gBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC3B,gBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;AAC3C,oBAAA,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;AAClB,oBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAClD,iBAAC,CAAC,CAAC;AACH,gBAAA,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AACtB,aAAA;AAAM,iBAAA,IAAI,GAAG,CAAC,IAAI,IAAA,CAAA,yCAAsC;gBACvD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAkC,EAAE,OAAO,CAAC,CAAC;AACrF,gBAAA,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC;AACpC,gBAAA,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC;AAChC,gBAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9B,aAAA;AAAM,iBAAA;gBACL,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC1C,aAAA;AACH,SAAC,CAAC,CAAC;QAEH,OAAO;AACL,YAAA,IAAI,EAA+B,CAAA;YACnC,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM;YACN,WAAW;YACX,UAAU;YACV,QAAQ;AACR,YAAA,OAAO,EAAE,IAAI;SACd,CAAC;KACH;IAED,UAAU,CAAC,QAAgC,EAAE,OAAmC,EAAA;AAC9E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3D,QAAA,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC;QACxE,IAAI,QAAQ,CAAC,qBAAqB,EAAE;AAClC,YAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;AACtC,YAAA,MAAM,MAAM,GAAG,SAAS,IAAI,EAAE,CAAC;AAC/B,YAAA,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;gBAC9B,IAAI,KAAK,YAAY,GAAG,EAAE;AACxB,oBAAA,KAAK,CAAC,OAAO,CAAC,KAAK,IAAG;wBACpB,kBAAkB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AACtC,4BAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC/B,gCAAA,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,6BAAA;AACH,yBAAC,CAAC,CAAC;AACL,qBAAC,CAAC,CAAC;AACJ,iBAAA;AACH,aAAC,CAAC,CAAC;YACH,IAAI,WAAW,CAAC,IAAI,EAAE;gBACpB,MAAM,cAAc,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7D,gBAAA,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;AAClE,aAAA;AACF,SAAA;QAED,OAAO;AACL,YAAA,IAAI,EAA6B,CAAA;YACjC,IAAI,EAAE,QAAQ,CAAC,IAAI;AACnB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,OAAO,EAAE,SAAS,GAAG,EAAC,MAAM,EAAE,SAAS,EAAC,GAAG,IAAI;SAChD,CAAC;KACH;IAED,eAAe,CAAC,QAAqC,EAAE,OAAmC,EAAA;AAExF,QAAA,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;AACvB,QAAA,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACrB,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3F,QAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAEpE,OAAO;AACL,YAAA,IAAI,EAAkC,CAAA;YACtC,QAAQ;YACR,SAAS;YACT,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC1B,YAAA,OAAO,EAAE,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC;SACrD,CAAC;KACH;IAED,aAAa,CAAC,QAAmC,EAAE,OAAmC,EAAA;QAEpF,OAAO;AACL,YAAA,IAAI,EAAgC,CAAA;AACpC,YAAA,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,YAAA,OAAO,EAAE,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC;SACrD,CAAC;KACH;IAED,UAAU,CAAC,QAAgC,EAAE,OAAmC,EAAA;AAC9E,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACxC,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAG;AACtC,YAAA,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;YAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACnD,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;AAC3D,YAAA,OAAO,QAAQ,CAAC;AAClB,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,CAAC,WAAW,GAAG,YAAY,CAAC;QACnC,OAAO;AACL,YAAA,IAAI,EAA6B,CAAA;YACjC,KAAK;AACL,YAAA,OAAO,EAAE,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC;SACrD,CAAC;KACH;IAED,YAAY,CAAC,QAAkC,EAAE,OAAmC,EAAA;AAElF,QAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACvE,QAAA,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;AAC1C,QAAA,IAAI,QAA+B,CAAC;AACpC,QAAA,IAAI,aAAa,GACb,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AAClD,QAAA,IAAI,aAAa,CAAC,IAAI,IAAA,CAAA,wCAAqC;YACzD,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,aAAmD,EAAE,OAAO,CAAC,CAAC;AAC9F,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,aAAa,GAAG,QAAQ,CAAC,MAAgC,CAAC;YAC9D,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,aAAa,EAAE;gBAClB,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,YAAY,GAAoC,EAAE,CAAC;gBACzD,IAAI,SAAS,CAAC,MAAM,EAAE;AACpB,oBAAA,YAAY,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;AAC3C,iBAAA;AACD,gBAAA,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;AACrC,aAAA;YACD,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC;YAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAC1D,YAAA,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC;YAChC,QAAQ,GAAG,SAAS,CAAC;AACtB,SAAA;AAED,QAAA,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACrC,OAAO;AACL,YAAA,IAAI,EAA+B,CAAA;AACnC,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,OAAO,EAAE,IAAI;SACd,CAAC;KACH;IAED,UAAU,CAAC,QAAgC,EAAE,OAAmC,EAAA;QAC9E,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACrC,QAAA,OAAO,GAAG,CAAC;KACZ;IAEO,aAAa,CAAC,QAAgC,EAAE,OAAmC,EAAA;QAEzF,MAAM,MAAM,GAAoC,EAAE,CAAC;QACnD,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAE5F,QAAA,KAAK,IAAI,UAAU,IAAI,cAAc,EAAE;AACrC,YAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;gBAClC,IAAI,UAAU,KAAK,UAAU,EAAE;AAC7B,oBAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzB,iBAAA;AAAM,qBAAA;oBACL,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;AACpD,iBAAA;AACF,aAAA;AAAM,iBAAA;gBACL,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;AACvC,aAAA;AACF,SAAA;QAED,IAAI,qBAAqB,GAAG,KAAK,CAAC;QAClC,IAAI,eAAe,GAAgB,IAAI,CAAC;AACxC,QAAA,MAAM,CAAC,OAAO,CAAC,SAAS,IAAG;YACzB,IAAI,SAAS,YAAY,GAAG,EAAE;AAC5B,gBAAA,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC3B,oBAAA,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC;AACpD,oBAAA,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,iBAAA;gBACD,IAAI,CAAC,qBAAqB,EAAE;AAC1B,oBAAA,KAAK,IAAI,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE;wBACpC,IAAI,KAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE;4BAC3D,qBAAqB,GAAG,IAAI,CAAC;4BAC7B,MAAM;AACP,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;QAEH,OAAO;AACL,YAAA,IAAI,EAA6B,CAAA;YACjC,MAAM;AACN,YAAA,MAAM,EAAE,eAAe;YACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,qBAAqB;AACrB,YAAA,OAAO,EAAE,IAAI;SACd,CAAC;KACH;IAEO,iBAAiB,CAAC,GAAa,EAAE,OAAmC,EAAA;AAC1E,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;AAC9C,QAAA,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;AAClC,QAAA,IAAI,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;AACpC,QAAA,IAAI,OAAO,IAAI,SAAS,GAAG,CAAC,EAAE;YAC5B,SAAS,IAAI,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;AAC/C,SAAA;AAED,QAAA,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;YACzB,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO;YAEtC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;AAC5B,gBAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;oBACjD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE;AAC7C,wBAAA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACnB,wBAAA,OAAO,CAAC,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAChD,OAAO;AACR,qBAAA;AACF,iBAAA;;;AAID,gBAAA,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAqB,CAAE,CAAC;gBACpF,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACjD,IAAI,oBAAoB,GAAG,IAAI,CAAC;AAChC,gBAAA,IAAI,cAAc,EAAE;oBAClB,IAAI,SAAS,IAAI,OAAO,IAAI,SAAS,IAAI,cAAc,CAAC,SAAS;AAC7D,wBAAA,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE;wBACrC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CACxC,IAAI,EAAE,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;wBACjF,oBAAoB,GAAG,KAAK,CAAC;AAC9B,qBAAA;;;;AAKD,oBAAA,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC;AACtC,iBAAA;AAED,gBAAA,IAAI,oBAAoB,EAAE;oBACxB,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,EAAC,SAAS,EAAE,OAAO,EAAC,CAAC,CAAC;AACjD,iBAAA;gBAED,IAAI,OAAO,CAAC,OAAO,EAAE;oBACnB,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7D,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;IAED,cAAc,CAAC,QAA4C,EAAE,OAAmC,EAAA;AAE9F,QAAA,MAAM,GAAG,GAAiB,EAAC,IAAI,2CAAmC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;AAC7F,QAAA,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;YAClC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACxC,YAAA,OAAO,GAAG,CAAC;AACZ,SAAA;QAED,MAAM,mBAAmB,GAAG,CAAC,CAAC;QAE9B,IAAI,yBAAyB,GAAG,CAAC,CAAC;QAClC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,IAAI,mBAAmB,GAAG,KAAK,CAAC;QAChC,IAAI,cAAc,GAAW,CAAC,CAAC;QAE/B,MAAM,SAAS,GAAe,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAG;YACxD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClD,IAAI,SAAS,GACT,KAAK,CAAC,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACtE,IAAI,MAAM,GAAW,CAAC,CAAC;YACvB,IAAI,SAAS,IAAI,IAAI,EAAE;AACrB,gBAAA,yBAAyB,EAAE,CAAC;AAC5B,gBAAA,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;AACnC,aAAA;YACD,mBAAmB,GAAG,mBAAmB,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;AACtE,YAAA,iBAAiB,GAAG,iBAAiB,IAAI,MAAM,GAAG,cAAc,CAAC;YACjE,cAAc,GAAG,MAAM,CAAC;AACxB,YAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrB,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,mBAAmB,EAAE;YACvB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AACtC,SAAA;AAED,QAAA,IAAI,iBAAiB,EAAE;YACrB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;AAClD,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QACrC,IAAI,eAAe,GAAG,CAAC,CAAC;AACxB,QAAA,IAAI,yBAAyB,GAAG,CAAC,IAAI,yBAAyB,GAAG,MAAM,EAAE;YACvE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;AAChD,SAAA;aAAM,IAAI,yBAAyB,IAAI,CAAC,EAAE;YACzC,eAAe,GAAG,mBAAmB,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;AACtD,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;AACzB,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AACxC,QAAA,MAAM,qBAAqB,GAAG,OAAO,CAAC,qBAAsB,CAAC;AAC7D,QAAA,MAAM,eAAe,GAAG,qBAAqB,CAAC,QAAQ,CAAC;QACvD,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,KAAI;AAC1B,YAAA,MAAM,MAAM,GAAG,eAAe,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3F,YAAA,MAAM,qBAAqB,GAAG,MAAM,GAAG,eAAe,CAAC;YACvD,OAAO,CAAC,WAAW,GAAG,WAAW,GAAG,qBAAqB,CAAC,KAAK,GAAG,qBAAqB,CAAC;AACxF,YAAA,qBAAqB,CAAC,QAAQ,GAAG,qBAAqB,CAAC;AACvD,YAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACpC,YAAA,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;AAEnB,YAAA,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,GAAG,CAAC;KACZ;IAED,cAAc,CAAC,QAAoC,EAAE,OAAmC,EAAA;QAEtF,OAAO;AACL,YAAA,IAAI,EAAiC,CAAA;AACrC,YAAA,SAAS,EAAE,YAAY,CAAC,IAAI,EAAE,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;AACnF,YAAA,OAAO,EAAE,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC;SACrD,CAAC;KACH;IAED,iBAAiB,CAAC,QAAuC,EAAE,OAAmC,EAAA;QAE5F,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO;AACL,YAAA,IAAI,EAAoC,CAAA;AACxC,YAAA,OAAO,EAAE,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC;SACrD,CAAC;KACH;IAED,eAAe,CAAC,QAAqC,EAAE,OAAmC,EAAA;QAExF,OAAO;AACL,YAAA,IAAI,EAAkC,EAAA;YACtC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;AAC3D,YAAA,OAAO,EAAE,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC;SACrD,CAAC;KACH;IAED,UAAU,CAAC,QAAgC,EAAE,OAAmC,EAAA;AAC9E,QAAA,MAAM,cAAc,GAAG,OAAO,CAAC,oBAAqB,CAAC;QACrD,MAAM,OAAO,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,CAA0B,CAAC;QAElE,OAAO,CAAC,UAAU,EAAE,CAAC;AACrB,QAAA,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC;AAChC,QAAA,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrE,QAAA,OAAO,CAAC,oBAAoB;AACxB,YAAA,cAAc,CAAC,MAAM,IAAI,cAAc,GAAG,GAAG,GAAG,QAAQ,IAAI,QAAQ,CAAC;AACzE,QAAA,oBAAoB,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,oBAAoB,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAEvF,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3F,QAAA,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;AAC5B,QAAA,OAAO,CAAC,oBAAoB,GAAG,cAAc,CAAC;QAE9C,OAAO;AACL,YAAA,IAAI,EAA6B,EAAA;YACjC,QAAQ;AACR,YAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AACzB,YAAA,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ;YAC5B,WAAW;YACX,SAAS;YACT,gBAAgB,EAAE,QAAQ,CAAC,QAAQ;AACnC,YAAA,OAAO,EAAE,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC;SACrD,CAAC;KACH;IAED,YAAY,CAAC,QAAkC,EAAE,OAAmC,EAAA;AAElF,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACzB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AACvC,SAAA;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,KAAK,MAAM;AACvC,YAAA,EAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAC;YACvC,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE1D,OAAO;AACL,YAAA,IAAI,EAA+B,EAAA;AACnC,YAAA,SAAS,EAAE,YAAY,CAAC,IAAI,EAAE,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;YACnF,OAAO;AACP,YAAA,OAAO,EAAE,IAAI;SACd,CAAC;KACH;AACF,CAAA;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAA;IACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,UAAU,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AACjG,IAAA,IAAI,YAAY,EAAE;QAChB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;AACnD,KAAA;;;IAID,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC;AACxC,SAAA,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,mBAAmB,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrE,SAAA,OAAO,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;AAE9D,IAAA,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AAClC,CAAC;AAGD,SAAS,eAAe,CAAC,GAA6B,EAAA;AACpD,IAAA,OAAO,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACnC,CAAC;MAMY,0BAA0B,CAAA;AAWrC,IAAA,WAAA,CAAmB,MAAe,EAAA;QAAf,IAAM,CAAA,MAAA,GAAN,MAAM,CAAS;QAV3B,IAAU,CAAA,UAAA,GAAW,CAAC,CAAC;QACvB,IAAQ,CAAA,QAAA,GAAW,CAAC,CAAC;QACrB,IAAiB,CAAA,iBAAA,GAAqC,IAAI,CAAC;QAC3D,IAAY,CAAA,YAAA,GAAgC,IAAI,CAAC;QACjD,IAAoB,CAAA,oBAAA,GAAgB,IAAI,CAAC;QACzC,IAAqB,CAAA,qBAAA,GAAmB,IAAI,CAAC;QAC7C,IAAW,CAAA,WAAA,GAAW,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,GAAG,EAAuC,CAAC;QACjE,IAAO,CAAA,OAAA,GAA0B,IAAI,CAAC;AACtC,QAAA,IAAA,CAAA,6BAA6B,GAAgB,IAAI,GAAG,EAAU,CAAC;KAChC;AACvC,CAAA;AAID,SAAS,aAAa,CAAC,MAAwC,EAAA;IAC7D,IAAI,OAAO,MAAM,IAAI,QAAQ;AAAE,QAAA,OAAO,IAAI,CAAC;IAE3C,IAAI,MAAM,GAAgB,IAAI,CAAC;AAE/B,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACzB,QAAA,MAAM,CAAC,OAAO,CAAC,UAAU,IAAG;YAC1B,IAAI,UAAU,YAAY,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACzD,MAAM,GAAG,GAAG,UAA2B,CAAC;gBACxC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC,CAAC;AACjD,gBAAA,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtB,aAAA;AACH,SAAC,CAAC,CAAC;AACJ,KAAA;SAAM,IAAI,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QACxD,MAAM,GAAG,GAAG,MAAM,CAAC;QACnB,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC,CAAC;AACjD,QAAA,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtB,KAAA;AACD,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAmC,EAAE,MAAe,EAAA;AAC9E,IAAA,IAAI,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;AACpC,QAAA,OAAO,KAAuB,CAAC;AAChC,KAAA;AAED,IAAA,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;QAC5B,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC;QACvD,OAAO,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,KAAA;IAED,MAAM,QAAQ,GAAG,KAAe,CAAC;AACjC,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AAC5F,IAAA,IAAI,SAAS,EAAE;QACb,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAQ,CAAC;AAC3C,QAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;AACnB,QAAA,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACxB,QAAA,OAAO,GAAuB,CAAC;AAChC,KAAA;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,IAAA,OAAO,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,yBAAyB,CAAC,OAA8B,EAAA;AAC/D,IAAA,IAAI,OAAO,EAAE;AACX,QAAA,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3B,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAE,CAAC;AACzD,SAAA;AACF,KAAA;AAAM,SAAA;QACL,OAAO,GAAG,EAAE,CAAC;AACd,KAAA;AACD,IAAA,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB,EAAE,KAAa,EAAE,MAAmB,EAAA;AACzE,IAAA,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAC,CAAC;AACnC;;SChjBgB,yBAAyB,CACrC,OAAY,EAAE,SAA+B,EAAE,aAAuB,EACtE,cAAwB,EAAE,QAAgB,EAAE,KAAa,EAAE,SAAsB,IAAI,EACrF,cAAuB,KAAK,EAAA;IAC9B,OAAO;AACL,QAAA,IAAI,EAAsD,CAAA;QAC1D,OAAO;QACP,SAAS;QACT,aAAa;QACb,cAAc;QACd,QAAQ;QACR,KAAK;QACL,SAAS,EAAE,QAAQ,GAAG,KAAK;QAC3B,MAAM;QACN,WAAW;KACZ,CAAC;AACJ;;MC/Ba,qBAAqB,CAAA;AAAlC,IAAA,WAAA,GAAA;AACU,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,GAAG,EAAuC,CAAC;KAqB/D;AAnBC,IAAA,GAAG,CAAC,OAAY,EAAA;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACrC;IAED,MAAM,CAAC,OAAY,EAAE,YAA4C,EAAA;QAC/D,IAAI,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,oBAAoB,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,oBAAoB,GAAG,EAAE,CAAC,CAAC;AACnD,SAAA;AACD,QAAA,oBAAoB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;KAC5C;AAED,IAAA,GAAG,CAAC,OAAY,EAAA;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAC/B;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KACnB;AACF;;ACdD,MAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAC7B,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACvD,MAAM,WAAW,GAAG,QAAQ,CAAC;AAC7B,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8EG;AACa,SAAA,uBAAuB,CACnC,MAAuB,EAAE,WAAgB,EAAE,GAA+B,EAC1E,cAAsB,EAAE,cAAsB,EAAE,cAAA,GAAgC,IAAI,GAAG,EAAE,EACzF,WAA6B,GAAA,IAAI,GAAG,EAAE,EAAE,OAAyB,EACjE,eAAuC,EAAE,MAAA,GAAkB,EAAE,EAAA;IAC/D,OAAO,IAAI,+BAA+B,EAAE,CAAC,cAAc,CACvD,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EACrF,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC;MAEY,+BAA+B,CAAA;IAC1C,cAAc,CACV,MAAuB,EAAE,WAAgB,EAAE,GAA+B,EAC1E,cAAsB,EAAE,cAAsB,EAAE,cAA6B,EAC7E,WAA0B,EAAE,OAAyB,EACrD,eAAuC,EACvC,SAAkB,EAAE,EAAA;AACtB,QAAA,eAAe,GAAG,eAAe,IAAI,IAAI,qBAAqB,EAAE,CAAC;AACjE,QAAA,MAAM,OAAO,GAAG,IAAI,wBAAwB,CACxC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACtF,QAAA,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;AAC1B,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpE,QAAA,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7C,QAAA,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnF,QAAA,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;;AAGjC,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;;;;;AAMrF,QAAA,IAAI,SAAS,CAAC,MAAM,IAAI,WAAW,CAAC,IAAI,EAAE;AACxC,YAAA,IAAI,gBAA2C,CAAC;AAChD,YAAA,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9C,gBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC9B,gBAAA,IAAI,QAAQ,CAAC,OAAO,KAAK,WAAW,EAAE;oBACpC,gBAAgB,GAAG,QAAQ,CAAC;oBAC5B,MAAM;AACP,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,EAAE;AACnE,gBAAA,gBAAgB,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1E,aAAA;AACF,SAAA;AACD,QAAA,OAAO,SAAS,CAAC,MAAM;AACnB,YAAA,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;AACpD,YAAA,CAAC,yBAAyB,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;KAC/E;IAED,YAAY,CAAC,GAAe,EAAE,OAAiC,EAAA;;KAE9D;IAED,UAAU,CAAC,GAAa,EAAE,OAAiC,EAAA;;KAE1D;IAED,eAAe,CAAC,GAAkB,EAAE,OAAiC,EAAA;;KAEpE;IAED,iBAAiB,CAAC,GAAoB,EAAE,OAAiC,EAAA;AACvE,QAAA,MAAM,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACzE,QAAA,IAAI,mBAAmB,EAAE;YACvB,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3D,YAAA,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC;AACtD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CACtC,mBAAmB,EAAE,YAAY,EAAE,YAAY,CAAC,OAA8B,CAAC,CAAC;YACpF,IAAI,SAAS,IAAI,OAAO,EAAE;;;AAGxB,gBAAA,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAC3C,aAAA;AACF,SAAA;AACD,QAAA,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC;KAC5B;IAED,eAAe,CAAC,GAAkB,EAAE,OAAiC,EAAA;QACnE,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3D,YAAY,CAAC,wBAAwB,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAC3F,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACjD,OAAO,CAAC,wBAAwB,CAAC,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AAC3E,QAAA,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC;KAC5B;AAEO,IAAA,wBAAwB,CAC5B,qBAAgD,EAAE,OAAiC,EACnF,YAAsC,EAAA;AACxC,QAAA,KAAK,MAAM,mBAAmB,IAAI,qBAAqB,EAAE;AACvD,YAAA,MAAM,cAAc,GAAG,mBAAmB,EAAE,KAAK,CAAC;AAClD,YAAA,IAAI,cAAc,EAAE;AAClB,gBAAA,MAAM,mBAAmB,GAAG,OAAO,cAAc,KAAK,QAAQ;AAC1D,oBAAA,cAAc;AACd,oBAAA,kBAAkB,CAAC,iBAAiB,CAChC,cAAc,EAAE,mBAAmB,EAAE,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5E,gBAAA,YAAY,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;AACjD,aAAA;AACF,SAAA;KACF;AAEO,IAAA,qBAAqB,CACzB,YAA4C,EAAE,OAAiC,EAC/E,OAA4B,EAAA;AAC9B,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC;QACtD,IAAI,YAAY,GAAG,SAAS,CAAC;;;QAI7B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QACxF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAC/E,IAAI,QAAQ,KAAK,CAAC,EAAE;AAClB,YAAA,YAAY,CAAC,OAAO,CAAC,WAAW,IAAG;AACjC,gBAAA,MAAM,kBAAkB,GACpB,OAAO,CAAC,2BAA2B,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACtE,YAAY;AACR,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,kBAAkB,CAAC,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACrF,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,OAAO,YAAY,CAAC;KACrB;IAED,cAAc,CAAC,GAAiB,EAAE,OAAiC,EAAA;QACjE,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAA,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC;KAC5B;IAED,aAAa,CAAC,GAAgB,EAAE,OAAiC,EAAA;AAC/D,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAChD,IAAI,GAAG,GAAG,OAAO,CAAC;AAClB,QAAA,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAE5B,IAAI,OAAO,KAAK,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AAChD,YAAA,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACxC,GAAG,CAAC,wBAAwB,EAAE,CAAC;AAE/B,YAAA,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE;AACzB,gBAAA,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,yCAAiC;AACxD,oBAAA,GAAG,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;AAC5C,oBAAA,GAAG,CAAC,YAAY,GAAG,0BAA0B,CAAC;AAC/C,iBAAA;gBAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChD,gBAAA,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1B,aAAA;AACF,SAAA;AAED,QAAA,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE;AACpB,YAAA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;;AAGnD,YAAA,GAAG,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;;;;AAK5C,YAAA,IAAI,GAAG,CAAC,eAAe,GAAG,eAAe,EAAE;gBACzC,GAAG,CAAC,wBAAwB,EAAE,CAAC;AAChC,aAAA;AACF,SAAA;AAED,QAAA,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC;KAC5B;IAED,UAAU,CAAC,GAAa,EAAE,OAAiC,EAAA;QACzD,MAAM,cAAc,GAAsB,EAAE,CAAC;AAC7C,QAAA,IAAI,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC;QACvD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE3F,QAAA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;YACpB,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3D,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACnC,aAAA;AAED,YAAA,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AACpC,YAAA,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AAChF,YAAA,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;AACpD,SAAC,CAAC,CAAC;;;;AAKH,QAAA,cAAc,CAAC,OAAO,CAClB,QAAQ,IAAI,OAAO,CAAC,eAAe,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChF,QAAA,OAAO,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;AAC/C,QAAA,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC;KAC5B;IAEO,YAAY,CAAC,GAAc,EAAE,OAAiC,EAAA;QACpE,IAAK,GAAwB,CAAC,OAAO,EAAE;AACrC,YAAA,MAAM,QAAQ,GAAI,GAAwB,CAAC,QAAQ,CAAC;YACpD,MAAM,WAAW,GACb,OAAO,CAAC,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;YAC5F,OAAO,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACnD,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,EAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAC,CAAC;AACvE,SAAA;KACF;IAED,YAAY,CAAC,GAAe,EAAE,OAAiC,EAAA;AAC7D,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACxF,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;QACzC,IAAI,OAAO,CAAC,KAAK,EAAE;AACjB,YAAA,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;AAClC,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,KAAK,CAAC,IAAI,IAAA,CAAA,wCAAqC;AACjD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrC,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,UAAU,CAAC,KAAiB,EAAE,OAAO,CAAC,CAAC;YAC5C,QAAQ,CAAC,qBAAqB,EAAE,CAAC;AAClC,SAAA;AAED,QAAA,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACrC,QAAA,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC;KAC5B;IAED,UAAU,CAAC,GAAa,EAAE,OAAiC,EAAA;AACzD,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;AACzC,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,qBAAsB,CAAC;;;AAI/C,QAAA,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,yBAAyB,EAAE,EAAE;YACpD,QAAQ,CAAC,YAAY,EAAE,CAAC;AACzB,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC;QACzD,IAAI,GAAG,CAAC,WAAW,EAAE;AACnB,YAAA,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACjC,SAAA;AAAM,aAAA;AACL,YAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACzE,SAAA;AAED,QAAA,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC;KAC5B;IAED,cAAc,CAAC,GAAiB,EAAE,OAAiC,EAAA;AACjE,QAAA,MAAM,qBAAqB,GAAG,OAAO,CAAC,qBAAsB,CAAC;QAC7D,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,eAAgB,EAAE,QAAQ,CAAC;AACtD,QAAA,MAAM,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC;AAChD,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;AAChD,QAAA,MAAM,aAAa,GAAG,YAAY,CAAC,eAAe,CAAC;AACnD,QAAA,aAAa,CAAC,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC;AAEpD,QAAA,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAG;AACxB,YAAA,MAAM,MAAM,GAAW,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AACxC,YAAA,aAAa,CAAC,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;AAC7C,YAAA,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACnF,aAAa,CAAC,qBAAqB,EAAE,CAAC;AACxC,SAAC,CAAC,CAAC;;;AAIH,QAAA,OAAO,CAAC,eAAe,CAAC,4BAA4B,CAAC,aAAa,CAAC,CAAC;;;AAIpE,QAAA,OAAO,CAAC,wBAAwB,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;AACvD,QAAA,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC;KAC5B;IAED,UAAU,CAAC,GAAa,EAAE,OAAiC,EAAA;;;AAGzD,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC;QACtD,MAAM,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,CAA0B,CAAC;AAC7D,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEpE,QAAA,IAAI,KAAK;AACL,aAAC,OAAO,CAAC,YAAY,CAAC,IAAI,KAAgC,CAAA;AACzD,iBAAC,SAAS,IAAI,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,yBAAyB,EAAE,CAAC,CAAC,EAAE;AAC7E,YAAA,OAAO,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;AAChD,YAAA,OAAO,CAAC,YAAY,GAAG,0BAA0B,CAAC;AACnD,SAAA;QAED,IAAI,YAAY,GAAG,SAAS,CAAC;AAC7B,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAC5B,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAC9D,OAAO,CAAC,QAAQ,GAAG,IAAI,GAAG,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAErD,QAAA,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC;QACxC,IAAI,mBAAmB,GAAyB,IAAI,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,KAAI;AAC1B,YAAA,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC9B,YAAA,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACpE,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACnC,aAAA;AAED,YAAA,IAAI,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE;AAC/B,gBAAA,mBAAmB,GAAG,YAAY,CAAC,eAAe,CAAC;AACpD,aAAA;YAED,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;;;;AAKhD,YAAA,YAAY,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;AAErD,YAAA,MAAM,OAAO,GAAG,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC;YACzD,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AACjD,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC9B,QAAA,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC9B,QAAA,OAAO,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;AAE/C,QAAA,IAAI,mBAAmB,EAAE;AACvB,YAAA,OAAO,CAAC,eAAe,CAAC,4BAA4B,CAAC,mBAAmB,CAAC,CAAC;AAC1E,YAAA,OAAO,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;AACjD,SAAA;AAED,QAAA,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC;KAC5B;IAED,YAAY,CAAC,GAAe,EAAE,OAAiC,EAAA;AAC7D,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,aAAc,CAAC;AAC7C,QAAA,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;AACnC,QAAA,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,QAAQ,IAAI,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;AAC3D,QAAA,IAAI,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC;AAEjD,QAAA,IAAI,kBAAkB,GAAG,OAAO,CAAC,QAAQ,GAAG,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;AAC3E,QAAA,QAAQ,kBAAkB;AACxB,YAAA,KAAK,SAAS;AACZ,gBAAA,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC;gBACxB,MAAM;AACR,YAAA,KAAK,MAAM;AACT,gBAAA,KAAK,GAAG,aAAa,CAAC,kBAAkB,CAAC;gBACzC,MAAM;AACT,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;AACzC,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC1C,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAA,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC;;;;;AAM3B,QAAA,aAAa,CAAC,kBAAkB;AAC5B,YAAA,CAAC,EAAE,CAAC,WAAW,GAAG,YAAY,KAAK,EAAE,CAAC,SAAS,GAAG,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;KAChG;AACF,CAAA;AAMD,MAAM,0BAA0B,GAA+B,EAAE,CAAC;MACrD,wBAAwB,CAAA;AAWnC,IAAA,WAAA,CACY,OAAwB,EAAS,OAAY,EAC9C,eAAsC,EAAU,eAAuB,EACtE,eAAuB,EAAS,MAAe,EAAS,SAA4B,EAC5F,eAAiC,EAAA;QAHzB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QAAS,IAAO,CAAA,OAAA,GAAP,OAAO,CAAK;QAC9C,IAAe,CAAA,eAAA,GAAf,eAAe,CAAuB;QAAU,IAAe,CAAA,eAAA,GAAf,eAAe,CAAQ;QACtE,IAAe,CAAA,eAAA,GAAf,eAAe,CAAQ;QAAS,IAAM,CAAA,MAAA,GAAN,MAAM,CAAS;QAAS,IAAS,CAAA,SAAA,GAAT,SAAS,CAAmB;QAbzF,IAAa,CAAA,aAAA,GAAkC,IAAI,CAAC;QAEpD,IAAqB,CAAA,qBAAA,GAAwB,IAAI,CAAC;QAClD,IAAY,CAAA,YAAA,GAA+B,0BAA0B,CAAC;QACtE,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;QACpB,IAAO,CAAA,OAAA,GAAqB,EAAE,CAAC;QAC/B,IAAiB,CAAA,iBAAA,GAAW,CAAC,CAAC;QAC9B,IAAiB,CAAA,iBAAA,GAAW,CAAC,CAAC;QAC9B,IAAkB,CAAA,kBAAA,GAAW,CAAC,CAAC;AAOpC,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AACxF,QAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KACtC;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;KAC5B;IAED,aAAa,CAAC,OAA8B,EAAE,YAAsB,EAAA;AAClE,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,UAAU,GAAG,OAAc,CAAC;AAClC,QAAA,IAAI,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;;AAGnC,QAAA,IAAI,UAAU,CAAC,QAAQ,IAAI,IAAI,EAAE;YAC9B,eAAuB,CAAC,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC7E,SAAA;AAED,QAAA,IAAI,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE;YAC5B,eAAe,CAAC,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9D,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;AACpC,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,cAAc,GAA0B,eAAe,CAAC,MAAO,CAAC;YACpE,IAAI,CAAC,cAAc,EAAE;gBACnB,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;AAC3C,aAAA;YAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;gBACpC,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AACzD,oBAAA,cAAc,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACxF,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAEO,YAAY,GAAA;QAClB,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACtC,YAAA,IAAI,SAAS,EAAE;gBACb,MAAM,MAAM,GAA0B,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;gBAC7D,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;oBACpC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACjC,iBAAC,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;AAED,IAAA,gBAAgB,CAAC,OAAiC,GAAA,IAAI,EAAE,OAAa,EAAE,OAAgB,EAAA;AAErF,QAAA,MAAM,MAAM,GAAG,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,wBAAwB,CACxC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EACtF,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;AAClF,QAAA,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACzC,QAAA,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AAE3D,QAAA,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACtC,QAAA,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAE/B,QAAA,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACnD,QAAA,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACnD,QAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,OAAO,OAAO,CAAC;KAChB;AAED,IAAA,wBAAwB,CAAC,OAAgB,EAAA;AACvC,QAAA,IAAI,CAAC,YAAY,GAAG,0BAA0B,CAAC;AAC/C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AAED,IAAA,2BAA2B,CACvB,WAAyC,EAAE,QAAqB,EAChE,KAAkB,EAAA;AACpB,QAAA,MAAM,cAAc,GAAmB;AACrC,YAAA,QAAQ,EAAE,QAAQ,IAAI,IAAI,GAAG,QAAQ,GAAG,WAAW,CAAC,QAAQ;YAC5D,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK;AACzF,YAAA,MAAM,EAAE,EAAE;SACX,CAAC;AACF,QAAA,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAClC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,aAAa,EACnF,WAAW,CAAC,cAAc,EAAE,cAAc,EAAE,WAAW,CAAC,uBAAuB,CAAC,CAAC;AACrF,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,QAAA,OAAO,cAAc,CAAC;KACvB;AAED,IAAA,aAAa,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;KACxE;AAED,IAAA,aAAa,CAAC,KAAa,EAAA;;QAEzB,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC3C,SAAA;KACF;IAED,WAAW,CACP,QAAgB,EAAE,gBAAwB,EAAE,KAAa,EAAE,WAAoB,EAC/E,QAAiB,EAAE,MAAe,EAAA;QACpC,IAAI,OAAO,GAAU,EAAE,CAAC;AACxB,QAAA,IAAI,WAAW,EAAE;AACf,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5B,SAAA;AACD,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,YAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;AAC3E,YAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;AAC3E,YAAA,MAAM,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;AACzB,YAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACjE,IAAI,KAAK,KAAK,CAAC,EAAE;gBACf,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;AACxD,oBAAA,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjD,aAAA;AACD,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC3B,SAAA;QAED,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YACpC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC7C,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;AACF,CAAA;MAEY,eAAe,CAAA;AAc1B,IAAA,WAAA,CACY,OAAwB,EAAS,OAAY,EAAS,SAAiB,EACvE,4BAAsD,EAAA;QADtD,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QAAS,IAAO,CAAA,OAAA,GAAP,OAAO,CAAK;QAAS,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;QACvE,IAA4B,CAAA,4BAAA,GAA5B,4BAA4B,CAA0B;QAf3D,IAAQ,CAAA,QAAA,GAAW,CAAC,CAAC;AAGpB,QAAA,IAAA,CAAA,iBAAiB,GAAkB,IAAI,GAAG,EAAE,CAAC;AAC7C,QAAA,IAAA,CAAA,gBAAgB,GAAkB,IAAI,GAAG,EAAE,CAAC;AAC5C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;AAC9C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;AAC/C,QAAA,IAAA,CAAA,oBAAoB,GAAkB,IAAI,GAAG,EAAE,CAAC;AAEhD,QAAA,IAAA,CAAA,cAAc,GAAkB,IAAI,GAAG,EAAE,CAAC;AAC1C,QAAA,IAAA,CAAA,SAAS,GAAkB,IAAI,GAAG,EAAE,CAAC;QACrC,IAAyB,CAAA,yBAAA,GAAuB,IAAI,CAAC;AAK3D,QAAA,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;AACtC,YAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,GAAG,EAAsB,CAAC;AACnE,SAAA;QAED,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;AAC7E,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC/B,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACvD,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC3E,SAAA;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,iBAAiB,GAAA;AACf,QAAA,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI;AAC1B,YAAA,KAAK,CAAC;AACJ,gBAAA,OAAO,KAAK,CAAC;AACf,YAAA,KAAK,CAAC;AACJ,gBAAA,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAC1C,YAAA;AACE,gBAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACF;IAED,yBAAyB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAAC;KACvC;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;KACvC;AAED,IAAA,aAAa,CAAC,KAAa,EAAA;;;;;AAKzB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAE/E,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,eAAe,EAAE;YACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;AAC3C,YAAA,IAAI,eAAe,EAAE;gBACnB,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC9B,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;AACzB,SAAA;KACF;IAED,IAAI,CAAC,OAAY,EAAE,WAAoB,EAAA;QACrC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,QAAA,OAAO,IAAI,eAAe,CACtB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;KAChG;IAEO,aAAa,GAAA;QACnB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAChD,SAAA;AACD,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAE,CAAC;AAC5D,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC3D,SAAA;KACF;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,IAAI,yBAAyB,CAAC;QAC3C,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;AAED,IAAA,WAAW,CAAC,IAAY,EAAA;QACtB,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAEO,YAAY,CAAC,IAAY,EAAE,KAAoB,EAAA;QACrD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAC,CAAC,CAAC;KAC/D;IAED,uBAAuB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,yBAAyB,KAAK,IAAI,CAAC,gBAAgB,CAAC;KACjE;AAED,IAAA,cAAc,CAAC,MAAmB,EAAA;AAChC,QAAA,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC9C,SAAA;;;;;;;QAQD,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE;YACpD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,UAAU,CAAC,CAAC;YAC9C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC7C,SAAA;AACD,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KACxD;AAED,IAAA,SAAS,CACL,KAAsC,EAAE,MAAmB,EAAE,MAAe,EAC5E,OAA0B,EAAA;AAC5B,QAAA,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC9C,SAAA;QACD,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAChE,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;YAChC,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACrD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACxC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC;AAC9E,aAAA;AACD,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9B,SAAA;KACF;IAED,qBAAqB,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;YAAE,OAAO;QAE1C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;YACxC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAE5B,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;YAC9C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACpC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,qBAAqB,GAAA;QACnB,KAAK,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,oBAAoB,EAAE;YACjD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9B,SAAA;KACF;IAED,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC3C;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,MAAM,UAAU,GAAa,EAAE,CAAC;AAChC,QAAA,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACtC,YAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,SAAA;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;AAED,IAAA,4BAA4B,CAAC,QAAyB,EAAA;QACpD,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAI;YAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE;gBAC9C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,cAAc,GAAA;QACZ,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,QAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;AACxC,QAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;AACzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;QAElE,IAAI,cAAc,GAAyB,EAAE,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAI;AACzC,YAAA,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACtE,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;gBACpC,IAAI,KAAK,KAAKA,UAAS,EAAE;AACvB,oBAAA,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzB,iBAAA;qBAAM,IAAI,KAAK,KAAK,UAAU,EAAE;AAC/B,oBAAA,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,iBAAA;AACH,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,EAAE;gBACZ,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD,aAAA;AACD,YAAA,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,QAAQ,GAAa,aAAa,CAAC,IAAI,GAAG,eAAe,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;AAC7F,QAAA,MAAM,SAAS,GAAa,cAAc,CAAC,IAAI,GAAG,eAAe,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;;AAGhG,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACzB,YAAA,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACrB,YAAA,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACrB,YAAA,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,SAAA;QAED,OAAO,yBAAyB,CAC5B,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAChF,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KACzB;AACF,CAAA;AAED,MAAM,kBAAmB,SAAQ,eAAe,CAAA;AAG9C,IAAA,WAAA,CACI,MAAuB,EAAE,OAAY,EAAS,SAA+B,EACtE,aAAuB,EAAS,cAAwB,EAAE,OAAuB,EAChF,2BAAoC,KAAK,EAAA;QACnD,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAHU,IAAS,CAAA,SAAA,GAAT,SAAS,CAAsB;QACtE,IAAa,CAAA,aAAA,GAAb,aAAa,CAAU;QAAS,IAAc,CAAA,cAAA,GAAd,cAAc,CAAU;QACvD,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAAiB;QAEnD,IAAI,CAAC,OAAO,GAAG,EAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,CAAC;KAC3F;IAEQ,iBAAiB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;KAClC;IAEQ,cAAc,GAAA;AACrB,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,IAAI,EAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC,OAAO,CAAC;AAC7C,QAAA,IAAI,IAAI,CAAC,wBAAwB,IAAI,KAAK,EAAE;YAC1C,MAAM,YAAY,GAAyB,EAAE,CAAC;AAC9C,YAAA,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;AACnC,YAAA,MAAM,WAAW,GAAG,KAAK,GAAG,SAAS,CAAC;;YAGtC,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,YAAA,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAClC,YAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAEpC,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AACzD,YAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAEpC;;;;;;;;;;;;;AAaG;;AAGH,YAAA,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC/B,IAAI,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC;AAC7C,gBAAA,MAAM,cAAc,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;AACpD,gBAAA,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC;AAC1D,gBAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,aAAA;;YAGD,QAAQ,GAAG,SAAS,CAAC;YACrB,KAAK,GAAG,CAAC,CAAC;YACV,MAAM,GAAG,EAAE,CAAC;YAEZ,SAAS,GAAG,YAAY,CAAC;AAC1B,SAAA;QAED,OAAO,yBAAyB,CAC5B,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EACzF,IAAI,CAAC,CAAC;KACX;AACF,CAAA;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,aAAa,GAAG,CAAC,EAAA;AACpD,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AAC1C,CAAC;AAED,SAAS,aAAa,CAAC,KAAsC,EAAE,SAAwB,EAAA;AACrF,IAAA,MAAM,MAAM,GAAkB,IAAI,GAAG,EAAE,CAAC;AACxC,IAAA,IAAI,aAAgD,CAAC;AACrD,IAAA,KAAK,CAAC,OAAO,CAAC,KAAK,IAAG;QACpB,IAAI,KAAK,KAAK,GAAG,EAAE;AACjB,YAAA,aAAa,GAAG,aAAa,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;AAClD,YAAA,KAAK,IAAI,IAAI,IAAI,aAAa,EAAE;AAC9B,gBAAA,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC9B,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,UAAU,CAAC,KAAsB,EAAE,MAAM,CAAC,CAAC;AAC5C,SAAA;AACH,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,MAAM,CAAC;AAChB;;MC34Ba,SAAS,CAAA;IAEpB,WAAoB,CAAA,OAAwB,EAAE,KAA4C,EAAA;QAAtE,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QAC1C,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC;AAC9B,QAAA,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAChC,SAAA;QACD,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC1B,SAAA;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;KAC1B;IAED,cAAc,CACV,OAAY,EAAE,cAAkD,EAChE,iBAAqD,EAAE,OAAyB,EAChF,eAAuC,EAAA;AACzC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,eAAe,CAAC,cAAc,CAAC;AAChB,YAAA,cAAc,CAAC;AAC5E,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,eAAe,CAAC,iBAAiB,CAAC;AACnB,YAAA,iBAAiB,CAAC;QACjF,MAAM,MAAM,GAAQ,EAAE,CAAC;AACvB,QAAA,eAAe,GAAG,eAAe,IAAI,IAAI,qBAAqB,EAAE,CAAC;AACjE,QAAA,MAAM,MAAM,GAAG,uBAAuB,CAClC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EACxF,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;AAC9B,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AACF;;AC7CD;;AAEG;MACmB,wBAAwB,CAAA;AAK7C,CAAA;AAED;;AAEG;MACU,4BAA4B,CAAA;IACvC,qBAAqB,CAAC,YAAoB,EAAE,MAAe,EAAA;AACzD,QAAA,OAAO,YAAY,CAAC;KACrB;AAED,IAAA,mBAAmB,CACf,oBAA4B,EAAE,kBAA0B,EAAE,KAAoB,EAC9E,MAAe,EAAA;AACjB,QAAA,OAAY,KAAK,CAAC;KACnB;AACF;;ACnBD,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,OAAO;IACP,QAAQ;IACR,UAAU;IACV,WAAW;IACX,UAAU;IACV,WAAW;IACX,MAAM;IACN,KAAK;IACL,QAAQ;IACR,OAAO;IACP,UAAU;IACV,cAAc;IACd,eAAe;IACf,YAAY;IACZ,aAAa;IACb,eAAe;IACf,cAAc;IACd,WAAW;IACX,YAAY;IACZ,cAAc;IACd,aAAa;IACb,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;IAClB,mBAAmB;IACnB,YAAY;IACZ,aAAa;AACd,CAAA,CAAC,CAAC;AAEG,MAAO,4BAA6B,SAAQ,wBAAwB,CAAA;IAC/D,qBAAqB,CAAC,YAAoB,EAAE,MAAe,EAAA;AAClE,QAAA,OAAO,mBAAmB,CAAC,YAAY,CAAC,CAAC;KAC1C;AAEQ,IAAA,mBAAmB,CACxB,oBAA4B,EAAE,kBAA0B,EAAE,KAAoB,EAC9E,MAAe,EAAA;QACjB,IAAI,IAAI,GAAW,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;AAEvC,QAAA,IAAI,oBAAoB,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,EAAE;AAChF,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC7B,IAAI,GAAG,IAAI,CAAC;AACb,aAAA;AAAM,iBAAA;gBACL,MAAM,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAChE,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;oBACzD,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/D,iBAAA;AACF,aAAA;AACF,SAAA;QACD,OAAO,MAAM,GAAG,IAAI,CAAC;KACtB;AACF;;ACrCK,SAAU,2BAA2B,CACvC,OAAY,EAAE,WAAmB,EAAE,SAAiB,EAAE,OAAe,EACrE,mBAA4B,EAAE,UAAyB,EAAE,QAAuB,EAChF,SAAyC,EAAE,eAAsB,EACjE,aAAoC,EAAE,cAAqC,EAAE,SAAiB,EAC9F,MAAgB,EAAA;IAClB,OAAO;AACL,QAAA,IAAI,EAAwD,CAAA;QAC5D,OAAO;QACP,WAAW;QACX,mBAAmB;QACnB,SAAS;QACT,UAAU;QACV,OAAO;QACP,QAAQ;QACR,SAAS;QACT,eAAe;QACf,aAAa;QACb,cAAc;QACd,SAAS;QACT,MAAM;KACP,CAAC;AACJ;;AC/BA,MAAM,YAAY,GAAG,EAAE,CAAC;MAEX,0BAA0B,CAAA;AACrC,IAAA,WAAA,CACY,YAAoB,EAAS,GAAkB,EAC/C,YAA+C,EAAA;QAD/C,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAQ;QAAS,IAAG,CAAA,GAAA,GAAH,GAAG,CAAe;QAC/C,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAmC;KAAI;AAE/D,IAAA,KAAK,CAAC,YAAiB,EAAE,SAAc,EAAE,OAAY,EAAE,MAA4B,EAAA;AACjF,QAAA,OAAO,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KAC/F;AAED,IAAA,WAAW,CAAC,SAAmC,EAAE,MAA4B,EAAE,MAAe,EAAA;QAE5F,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,SAAS,KAAK,SAAS,EAAE;AAC3B,YAAA,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC;AACjE,SAAA;AACD,QAAA,OAAO,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;KAChE;AAED,IAAA,KAAK,CACD,MAAuB,EAAE,OAAY,EAAE,YAAiB,EAAE,SAAc,EACxE,cAAsB,EAAE,cAAsB,EAAE,cAAiC,EACjF,WAA8B,EAAE,eAAuC,EACvE,YAAsB,EAAA;QACxB,MAAM,MAAM,GAAY,EAAE,CAAC;AAE3B,QAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC;QAC9F,MAAM,sBAAsB,GAAG,cAAc,IAAI,cAAc,CAAC,MAAM,IAAI,YAAY,CAAC;AACvF,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC;QAC1F,MAAM,mBAAmB,GAAG,WAAW,IAAI,WAAW,CAAC,MAAM,IAAI,YAAY,CAAC;AAC9E,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAEjF,QAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAO,CAAC;AACvC,QAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAC;AAChD,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;AACjD,QAAA,MAAM,SAAS,GAAG,SAAS,KAAK,MAAM,CAAC;AAEvC,QAAA,MAAM,gBAAgB,GAAqB;AACzC,YAAA,MAAM,EAAE,kBAAkB,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;AAC1E,YAAA,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK;SAC/B,CAAC;AAEF,QAAA,MAAM,SAAS,GAAG,YAAY;AAC1B,YAAA,EAAE;YACF,uBAAuB,CACnB,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EACvF,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QAEpE,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,QAAA,SAAS,CAAC,OAAO,CAAC,EAAE,IAAG;AACrB,YAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC1D,SAAC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,OAAO,2BAA2B,CAC9B,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAClF,eAAe,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC5E,SAAA;AAED,QAAA,SAAS,CAAC,OAAO,CAAC,EAAE,IAAG;AACrB,YAAA,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;AACvB,YAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,GAAG,EAAU,CAAC,CAAC;AAC3E,YAAA,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAErD,YAAA,MAAM,SAAS,GAAG,oBAAoB,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,GAAG,EAAU,CAAC,CAAC;AAC7E,YAAA,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAEvD,IAAI,GAAG,KAAK,OAAO,EAAE;AACnB,gBAAA,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;YACjD,6BAA6B,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACrE,SAAA;QAED,MAAM,mBAAmB,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;AACtE,QAAA,OAAO,2BAA2B,CAC9B,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAClF,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;KAC5F;AACF,CAAA;AAED;;;;;;;;;;;;;AAaG;AACH,SAAS,6BAA6B,CAClC,SAAyC,EAAE,WAAmB,EAAE,MAAuB,EAAA;AACzF,IAAA,IAAI,CAAC,MAAM,CAAC,+BAA+B,EAAE;QAC3C,OAAO;AACR,KAAA;AAED,IAAA,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAS;;;;;QAKhD,QAAQ;AACT,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpD,SAAS,CAAC,OAAO,CAAC,CAAC,EAAC,SAAS,EAAC,KAAI;AAChC,QAAA,MAAM,+BAA+B,GAAG,IAAI,GAAG,EAAyB,CAAC;AACzE,QAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAC3B,YAAA,MAAM,cAAc,GAChB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5F,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE;AAC1C,gBAAA,IAAI,CAAC,MAAM,CAAC,+BAAgC,CAAC,IAAI,CAAC,EAAE;AAClD,oBAAA,IAAI,+BAA+B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;wBACrF,MAAM,gBAAgB,GAAG,+BAA+B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACnE,IAAI,gBAAgB,KAAK,KAAK,EAAE;AAC9B,4BAAA,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrC,yBAAA;AACF,qBAAA;AAAM,yBAAA;AACL,wBAAA,+BAA+B,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClD,qBAAA;AACF,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;AAEH,IAAA,IAAI,yBAAyB,CAAC,IAAI,GAAG,CAAC,EAAE;AACtC,QAAA,OAAO,CAAC,IAAI,CACR,CAAA,gCAAA,EAAmC,WAAW,CAA0C,wCAAA,CAAA;AACxF,YAAA,8BAA8B,GAAG,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;AACxF,YAAA,iIAAiI,CAAC,CAAC;AACxI,KAAA;AACH,CAAC;AAED,SAAS,yBAAyB,CAC9B,QAA+B,EAAE,YAAiB,EAAE,SAAc,EAAE,OAAY,EAChF,MAA4B,EAAA;AAC9B,IAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,kBAAkB,CAAC,UAA+B,EAAE,QAA6B,EAAA;AACxF,IAAA,MAAM,MAAM,GAAwB,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEtD,IAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AAC5B,QAAA,IAAI,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;YAC7D,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC/B,SAAA;AACF,KAAA;AAED,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;MAEY,oBAAoB,CAAA;AAC/B,IAAA,WAAA,CACY,MAAgB,EAAU,aAAmC,EAC7D,UAAoC,EAAA;QADpC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAU;QAAU,IAAa,CAAA,aAAA,GAAb,aAAa,CAAsB;QAC7D,IAAU,CAAA,UAAA,GAAV,UAAU,CAA0B;KAAI;IAEpD,WAAW,CAAC,MAA4B,EAAE,MAAe,EAAA;AACvD,QAAA,MAAM,WAAW,GAAkB,IAAI,GAAG,EAAE,CAAC;QAC7C,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AAChC,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,gBAAA,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC7B,aAAA;AACH,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AACjC,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC7B,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AAC1B,oBAAA,IAAI,GAAG,EAAE;wBACP,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;AACtD,qBAAA;AACD,oBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3E,oBAAA,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC7E,oBAAA,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC7B,iBAAC,CAAC,CAAC;AACJ,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,WAAW,CAAC;KACpB;AACF;;SClMe,YAAY,CACxB,IAAY,EAAE,GAAe,EAAE,UAAoC,EAAA;IACrE,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACrD,CAAC;MAEY,gBAAgB,CAAA;AAK3B,IAAA,WAAA,CACW,IAAY,EAAS,GAAe,EAAU,WAAqC,EAAA;QAAnF,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAAS,IAAG,CAAA,GAAA,GAAH,GAAG,CAAY;QAAU,IAAW,CAAA,WAAA,GAAX,WAAW,CAA0B;QALvF,IAAmB,CAAA,mBAAA,GAAiC,EAAE,CAAC;AAEvD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,GAAG,EAAgC,CAAC;AAItD,QAAA,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAG;AACvB,YAAA,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,EAAE,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAC7F,SAAC,CAAC,CAAC;QAEH,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5C,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AAE7C,QAAA,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,IAAG;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,0BAA0B,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACxF,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,kBAAkB,GAAG,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACzF;AAED,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;KAChC;AAED,IAAA,eAAe,CAAC,YAAiB,EAAE,SAAc,EAAE,OAAY,EAAE,MAA4B,EAAA;QAE3F,MAAM,KAAK,GACP,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1F,OAAO,KAAK,IAAI,IAAI,CAAC;KACtB;AAED,IAAA,WAAW,CAAC,YAAiB,EAAE,MAA4B,EAAE,MAAe,EAAA;AAC1E,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;KAC1E;AACF,CAAA;AAED,SAAS,wBAAwB,CAC7B,WAAmB,EAAE,MAAyC,EAC9D,UAAoC,EAAA;AACtC,IAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAc,EAAE,OAAY,KAAK,IAAI,CAAC,CAAC;AAC1D,IAAA,MAAM,SAAS,GAAgB,EAAC,IAAI,0CAAkC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;AAChG,IAAA,MAAM,UAAU,GAAkB;AAChC,QAAA,IAAI,EAAkC,CAAA;QACtC,SAAS;QACT,QAAQ;AACR,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,QAAQ,EAAE,CAAC;KACZ,CAAC;IACF,OAAO,IAAI,0BAA0B,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,iBAAiB,CACtB,QAA2C,EAAE,IAAY,EAAE,IAAY,EAAA;AACzE,IAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACvB,YAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC;AACzC,SAAA;AACF,KAAA;AAAM,SAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC7B,QAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC;AACzC,KAAA;AACH;;AC5DA,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,EAAE,CAAC;MAE7C,uBAAuB,CAAA;AAKlC,IAAA,WAAA,CACW,QAAa,EAAU,OAAwB,EAC9C,WAAqC,EAAA;QADtC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAK;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QAC9C,IAAW,CAAA,WAAA,GAAX,WAAW,CAA0B;AANzC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAAsC,CAAC;AAC5D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAA2B,CAAC;QACnD,IAAO,CAAA,OAAA,GAAsB,EAAE,CAAC;KAIc;IAErD,QAAQ,CAAC,EAAU,EAAE,QAA+C,EAAA;QAClE,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC;AAC9B,QAAA,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACxE,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;AAC9B,SAAA;AAAM,aAAA;YACL,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,YAAY,CAAC,QAAQ,CAAC,CAAC;AACxB,aAAA;YACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC/B,SAAA;KACF;AAEO,IAAA,YAAY,CAChB,CAA+B,EAAE,SAAwB,EACzD,UAA0B,EAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QAC1B,MAAM,SAAS,GAAGD,oBAAkB,CAChC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;KAC1F;AAED,IAAA,MAAM,CAAC,EAAU,EAAE,OAAY,EAAE,UAA4B,EAAE,EAAA;QAC7D,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACrC,QAAA,IAAI,YAA4C,CAAC;AAEjD,QAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAsB,CAAC;AAEpD,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,YAAY,GAAG,uBAAuB,CAClC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,eAAe,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAC5C,YAAA,YAAY,CAAC,OAAO,CAAC,IAAI,IAAG;AAC1B,gBAAA,MAAM,MAAM,GAAG,oBAAoB,CAC/B,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,EAA8B,CAAC,CAAC;AACxE,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9D,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC;YAC3C,YAAY,GAAG,EAAE,CAAC;AACnB,SAAA;QAED,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACrC,SAAA;QAED,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,OAAO,KAAI;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,KAAI;AACzB,gBAAA,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AACzE,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAG;YACnC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC5C,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;AACjD,SAAC,CAAC,CAAC;AACH,QAAA,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAClC,QAAA,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,OAAO,CAAC,EAAU,EAAA;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B,SAAA;KACF;AAEO,IAAA,UAAU,CAAC,EAAU,EAAA;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC;AACzB,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,MAAM,CAAC,EAAU,EAAE,OAAe,EAAE,SAAiB,EAAE,QAA6B,EAAA;;AAGlF,QAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1D,QAAA,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACpE,QAAA,OAAO,MAAO,GAAC,CAAC;KACjB;AAED,IAAA,OAAO,CAAC,EAAU,EAAE,OAAY,EAAE,OAAe,EAAE,IAAW,EAAA;QAC5D,IAAI,OAAO,IAAI,UAAU,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAA4C,CAAC,CAAC;YACtE,OAAO;AACR,SAAA;QAED,IAAI,OAAO,IAAI,QAAQ,EAAE;YACvB,MAAM,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAqB,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO;AACR,SAAA;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACnC,QAAA,QAAQ,OAAO;AACb,YAAA,KAAK,MAAM;gBACT,MAAM,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM;AACR,YAAA,KAAK,OAAO;gBACV,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM;AACR,YAAA,KAAK,OAAO;gBACV,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM;AACR,YAAA,KAAK,SAAS;gBACZ,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM;AACR,YAAA,KAAK,QAAQ;gBACX,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM;AACR,YAAA,KAAK,MAAM;gBACT,MAAM,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM;AACR,YAAA,KAAK,aAAa;gBAChB,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAW,CAAC,CAAC,CAAC;gBAClD,MAAM;AACR,YAAA,KAAK,SAAS;AACZ,gBAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACjB,MAAM;AACT,SAAA;KACF;AACF;;AChJD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAC7C,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAC7C,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AACjD,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;AACjD,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAC1C,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAE1C,MAAM,kBAAkB,GAAgC,EAAE,CAAC;AAC3D,MAAM,kBAAkB,GAA0B;AAChD,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,YAAY,EAAE,KAAK;AACnB,IAAA,oBAAoB,EAAE,KAAK;CAC5B,CAAC;AACF,MAAM,0BAA0B,GAA0B;AACxD,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,YAAY,EAAE,KAAK;AACnB,IAAA,oBAAoB,EAAE,IAAI;CAC3B,CAAC;AAkBK,MAAM,YAAY,GAAG,cAAc,CAAC;MAW9B,UAAU,CAAA;AAIrB,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAA8B,CAAC;KACpD;IAED,WAAY,CAAA,KAAU,EAAS,WAAA,GAAsB,EAAE,EAAA;QAAxB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACrD,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACrD,QAAA,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAY,CAAC,CAAC;AACtC,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,OAA2B,CAAC;AAC5C,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACnB,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;AAC1B,SAAA;KACF;AAED,IAAA,aAAa,CAAC,OAAyB,EAAA;AACrC,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;AACjC,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAO,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AACpC,gBAAA,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;oBAC3B,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACnC,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AACF,CAAA;AAEM,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,mBAAmB,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;MAEjD,4BAA4B,CAAA;AAUvC,IAAA,WAAA,CACW,EAAU,EAAS,WAAgB,EAAU,OAAkC,EAAA;QAA/E,IAAE,CAAA,EAAA,GAAF,EAAE,CAAQ;QAAS,IAAW,CAAA,WAAA,GAAX,WAAW,CAAK;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAA2B;QAVnF,IAAO,CAAA,OAAA,GAAgC,EAAE,CAAC;AAEzC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;QAChD,IAAM,CAAA,MAAA,GAAuB,EAAE,CAAC;AAEhC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAA0B,CAAC;AAM5D,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,GAAG,EAAE,CAAC;AACrC,QAAA,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KAC5C;AAED,IAAA,MAAM,CAAC,OAAY,EAAE,IAAY,EAAE,KAAa,EAAE,QAAiC,EAAA;QACjF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC7B,YAAA,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACnC,SAAA;QAED,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;AACtC,YAAA,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAA;AAED,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;AAC/B,YAAA,MAAM,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5C,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,EAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC;AACrC,QAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAErB,QAAA,MAAM,kBAAkB,GACpB,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,EAAE,IAAI,GAAG,EAAsB,CAAC,CAAC;AAC/F,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACjC,YAAA,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;YACxC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACrD,YAAA,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AACnD,SAAA;AAED,QAAA,OAAO,MAAK;;;;AAIV,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAK;gBAC3B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,oBAAA,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC5B,iBAAA;gBAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC7B,oBAAA,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjC,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC;KACH;IAED,QAAQ,CAAC,IAAY,EAAE,GAAqB,EAAA;QAC1C,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;;AAE5B,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9B,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;KACF;AAEO,IAAA,WAAW,CAAC,IAAY,EAAA;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACjC,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;IAED,OAAO,CAAC,OAAY,EAAE,WAAmB,EAAE,KAAU,EAAE,oBAA6B,IAAI,EAAA;QAEtF,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC9C,QAAA,MAAM,MAAM,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAE5E,QAAA,IAAI,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,CAAC,kBAAkB,EAAE;AACvB,YAAA,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;YACxC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,GAAG,GAAG,WAAW,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,GAAG,EAAsB,CAAC,CAAC;AAC/F,SAAA;QAED,IAAI,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE;AACvB,YAAA,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC,SAAS,EAAE;YACd,SAAS,GAAG,mBAAmB,CAAC;AACjC,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC;;;;;;;QAQ/C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE;;;YAGnD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;gBAChD,MAAM,MAAM,GAAY,EAAE,CAAC;AAC3B,gBAAA,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAClF,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC5E,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,oBAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAClC,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAK;AAC3B,wBAAA,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACjC,wBAAA,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC/B,qBAAC,CAAC,CAAC;AACJ,iBAAA;AACF,aAAA;YACD,OAAO;AACR,SAAA;AAED,QAAA,MAAM,gBAAgB,GAClB,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AACrE,QAAA,gBAAgB,CAAC,OAAO,CAAC,MAAM,IAAG;;;;;AAKhC,YAAA,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,WAAW,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE;gBACvF,MAAM,CAAC,OAAO,EAAE,CAAC;AAClB,aAAA;AACH,SAAC,CAAC,CAAC;QAEH,IAAI,UAAU,GACV,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACrF,IAAI,oBAAoB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,IAAI,CAAC,iBAAiB;gBAAE,OAAO;AAC/B,YAAA,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC;YACxC,oBAAoB,GAAG,IAAI,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,EAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAC,CAAC,CAAC;QAE1F,IAAI,CAAC,oBAAoB,EAAE;AACzB,YAAA,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACpC,YAAA,MAAM,CAAC,OAAO,CAAC,MAAK;AAClB,gBAAA,WAAW,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACzC,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,MAAM,CAAC,MAAM,CAAC,MAAK;YACjB,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B,aAAA;AAED,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3D,YAAA,IAAI,OAAO,EAAE;gBACX,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACpC,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,oBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,QAAA,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE9B,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAE5B,QAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAExE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,OAAO,KAAI;AACpD,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,IAAG;AAC3D,gBAAA,OAAO,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC;aAC3B,CAAC,CAAC,CAAC;AACN,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,iBAAiB,CAAC,OAAY,EAAA;QAC5B,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAClE,QAAA,IAAI,cAAc,EAAE;AAClB,YAAA,cAAc,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/C,SAAA;KACF;IAEO,8BAA8B,CAAC,WAAgB,EAAE,OAAY,EAAA;AACnE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;;;;AAKnF,QAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAG;;;YAGrB,IAAI,GAAG,CAAC,YAAY,CAAC;gBAAE,OAAO;YAE9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;YAC9D,IAAI,UAAU,CAAC,IAAI,EAAE;gBACnB,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/E,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC7B,aAAA;AACH,SAAC,CAAC,CAAC;;;QAIH,IAAI,CAAC,OAAO,CAAC,wBAAwB,CACjC,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACjE;AAED,IAAA,qBAAqB,CACjB,OAAY,EAAE,OAAY,EAAE,oBAA8B,EAC1D,iBAA2B,EAAA;AAC7B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAChE,QAAA,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAkB,CAAC;AACzD,QAAA,IAAI,aAAa,EAAE;YACjB,MAAM,OAAO,GAAgC,EAAE,CAAC;YAChD,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,WAAW,KAAI;gBAC3C,sBAAsB,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;;;gBAGrD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AACnC,oBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;AACjF,oBAAA,IAAI,MAAM,EAAE;AACV,wBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,gBAAA,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC;AAC3F,gBAAA,IAAI,oBAAoB,EAAE;AACxB,oBAAA,mBAAmB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AACnF,iBAAA;AACD,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,8BAA8B,CAAC,OAAY,EAAA;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;;;QAIhE,IAAI,SAAS,IAAI,aAAa,EAAE;AAC9B,YAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;AAC1C,YAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAC3B,gBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;AAClC,gBAAA,IAAI,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC;oBAAE,OAAO;AAC7C,gBAAA,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;AACjD,gBAAA,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC;gBAC9C,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,mBAAmB,CAAC;AACxE,gBAAA,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;AAC3C,gBAAA,MAAM,MAAM,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAE5E,gBAAA,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;AAClC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,OAAO;oBACP,WAAW;oBACX,UAAU;oBACV,SAAS;oBACT,OAAO;oBACP,MAAM;AACN,oBAAA,oBAAoB,EAAE,IAAI;AAC3B,iBAAA,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAED,UAAU,CAAC,OAAY,EAAE,OAAY,EAAA;AACnC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,OAAO,CAAC,iBAAiB,EAAE;AAC7B,YAAA,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACvD,SAAA;;QAGD,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;YAAE,OAAO;;;QAI/D,IAAI,iCAAiC,GAAG,KAAK,CAAC;QAC9C,IAAI,MAAM,CAAC,eAAe,EAAE;YAC1B,MAAM,cAAc,GAChB,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;;;;;AAM7E,YAAA,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,EAAE;gBAC3C,iCAAiC,GAAG,IAAI,CAAC;AAC1C,aAAA;AAAM,iBAAA;gBACL,IAAI,MAAM,GAAG,OAAO,CAAC;AACrB,gBAAA,OAAO,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE;oBACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACpD,oBAAA,IAAI,QAAQ,EAAE;wBACZ,iCAAiC,GAAG,IAAI,CAAC;wBACzC,MAAM;AACP,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;;;;;AAMD,QAAA,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;;;AAI7C,QAAA,IAAI,iCAAiC,EAAE;AACrC,YAAA,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/D,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAC1C,YAAA,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,kBAAkB,EAAE;;;AAGtD,gBAAA,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;AACzD,gBAAA,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AACvC,gBAAA,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7C,aAAA;AACF,SAAA;KACF;IAED,UAAU,CAAC,OAAY,EAAE,MAAW,EAAA;AAClC,QAAA,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KACxC;AAED,IAAA,sBAAsB,CAAC,WAAmB,EAAA;QACxC,MAAM,YAAY,GAAuB,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AAC1B,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,IAAI,MAAM,CAAC,SAAS;gBAAE,OAAO;AAE7B,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtD,YAAA,IAAI,SAAS,EAAE;AACb,gBAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAAyB,KAAI;AAC9C,oBAAA,IAAI,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE;wBACtC,MAAM,SAAS,GAAG,kBAAkB,CAChC,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3E,wBAAA,SAAiB,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC;AAC1C,wBAAA,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC5E,qBAAA;AACH,iBAAC,CAAC,CAAC;AACJ,aAAA;YAED,IAAI,MAAM,CAAC,gBAAgB,EAAE;AAC3B,gBAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAK;;;oBAG3B,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,iBAAC,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;AACL,gBAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;;;YAGhC,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;YACrC,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AACrC,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;gBACtB,OAAO,EAAE,GAAG,EAAE,CAAC;AAChB,aAAA;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5E,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,OAAO,CAAC,OAAY,EAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;KAChE;AAED,IAAA,mBAAmB,CAAC,OAAY,EAAA;QAC9B,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,YAAY,GAAG,IAAI,CAAC;QAC7D,YAAY;YACR,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,IAAI,GAAG,KAAK,KAAK,YAAY,CAAC;AAC1F,QAAA,OAAO,YAAY,CAAC;KACrB;AACF,CAAA;MAQY,yBAAyB,CAAA;;IAwBpC,kBAAkB,CAAC,OAAY,EAAE,OAAY,EAAA;AAC3C,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KAC1C;AAED,IAAA,WAAA,CACW,QAAa,EAAS,MAAuB,EAC5C,WAAqC,EAAA;QADtC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAK;QAAS,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QAC5C,IAAW,CAAA,WAAA,GAAX,WAAW,CAA0B;QA7B1C,IAAO,CAAA,OAAA,GAAgC,EAAE,CAAC;AAC1C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,GAAG,EAAqC,CAAC;AAC/D,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,GAAG,EAAoC,CAAC;AAC/D,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,GAAG,EAAoC,CAAC;AACtE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,GAAG,EAAgC,CAAC;AAC1D,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAO,CAAC;QAE/B,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;QACpB,IAAkB,CAAA,kBAAA,GAAG,CAAC,CAAC;QAEtB,IAAgB,CAAA,gBAAA,GAAiD,EAAE,CAAC;QACpE,IAAc,CAAA,cAAA,GAAmC,EAAE,CAAC;QACpD,IAAS,CAAA,SAAA,GAAkB,EAAE,CAAC;QAC9B,IAAa,CAAA,aAAA,GAAkB,EAAE,CAAC;AAEnC,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,GAAG,EAAqC,CAAC;QACvE,IAAsB,CAAA,sBAAA,GAAU,EAAE,CAAC;QACnC,IAAsB,CAAA,sBAAA,GAAU,EAAE,CAAC;;QAGnC,IAAiB,CAAA,iBAAA,GAAG,CAAC,OAAY,EAAE,OAAY,KAAM,GAAC,CAAC;KAST;AAErD,IAAA,IAAI,aAAa,GAAA;QACf,MAAM,OAAO,GAAgC,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAG;AAC/B,YAAA,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;gBAC1B,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,oBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,OAAO,CAAC;KAChB;IAED,eAAe,CAAC,WAAmB,EAAE,WAAgB,EAAA;QACnD,MAAM,EAAE,GAAG,IAAI,4BAA4B,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AAC5E,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE;AAC5E,YAAA,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AAC7C,SAAA;AAAM,aAAA;;;;YAIL,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;;;;;;AAO1C,YAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;AACvC,SAAA;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;KAChD;IAEO,qBAAqB,CAAC,EAAgC,EAAE,WAAgB,EAAA;AAC9E,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;AAC1C,QAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC;AAC7D,QAAA,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,IAAI,KAAK,GAAG,KAAK,CAAC;;;YAGlB,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACzD,YAAA,OAAO,QAAQ,EAAE;gBACf,MAAM,UAAU,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzD,gBAAA,IAAI,UAAU,EAAE;;;oBAGd,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBAChD,aAAa,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACvC,KAAK,GAAG,IAAI,CAAC;oBACb,MAAM;AACP,iBAAA;gBACD,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACnD,aAAA;YACD,IAAI,CAAC,KAAK,EAAE;;;;AAIV,gBAAA,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC3B,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,SAAA;AAED,QAAA,uBAAuB,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC7C,QAAA,OAAO,EAAE,CAAC;KACX;IAED,QAAQ,CAAC,WAAmB,EAAE,WAAgB,EAAA;QAC5C,IAAI,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,EAAE;YACP,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACrD,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,eAAe,CAAC,WAAmB,EAAE,IAAY,EAAE,OAAyB,EAAA;QAC1E,IAAI,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;YACpC,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAA;KACF;IAED,OAAO,CAAC,WAAmB,EAAE,OAAY,EAAA;AACvC,QAAA,IAAI,CAAC,WAAW;YAAE,OAAO;QAEzB,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AAE7C,QAAA,IAAI,CAAC,UAAU,CAAC,MAAK;YACnB,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;AACpD,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC9C,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACtC,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;KAC1D;AAEO,IAAA,eAAe,CAAC,EAAU,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;KAClC;AAED,IAAA,wBAAwB,CAAC,OAAY,EAAA;;;;;;AAMnC,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAgC,CAAC;QAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACxD,QAAA,IAAI,aAAa,EAAE;AACjB,YAAA,KAAK,IAAI,UAAU,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE;gBAC7C,IAAI,UAAU,CAAC,WAAW,EAAE;oBAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACxD,oBAAA,IAAI,EAAE,EAAE;AACN,wBAAA,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpB,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;AAED,IAAA,OAAO,CAAC,WAAmB,EAAE,OAAY,EAAE,IAAY,EAAE,KAAU,EAAA;AACjE,QAAA,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;YAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AAC7C,YAAA,IAAI,EAAE,EAAE;gBACN,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACjC,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,UAAU,CAAC,WAAmB,EAAE,OAAY,EAAE,MAAW,EAAE,YAAqB,EAAA;AAC9E,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAAE,OAAO;;;AAIpC,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAA0B,CAAC;AAC/D,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE;AACpC,YAAA,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;AAC9B,YAAA,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC3D,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9C,aAAA;AACF,SAAA;;;;AAKD,QAAA,IAAI,WAAW,EAAE;YACf,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;;;;;;;AAO7C,YAAA,IAAI,EAAE,EAAE;AACN,gBAAA,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAChC,aAAA;AACF,SAAA;;AAGD,QAAA,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACnC,SAAA;KACF;AAED,IAAA,mBAAmB,CAAC,OAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3C;IAED,qBAAqB,CAAC,OAAY,EAAE,KAAc,EAAA;AAChD,QAAA,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACpC,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAChC,gBAAA,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACvC,aAAA;AACF,SAAA;aAAM,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACnC,YAAA,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAC1C,SAAA;KACF;AAED,IAAA,UAAU,CAAC,WAAmB,EAAE,OAAY,EAAE,aAAsB,EAAE,OAAY,EAAA;AAChF,QAAA,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;AAC1B,YAAA,MAAM,EAAE,GAAG,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;AAClE,YAAA,IAAI,EAAE,EAAE;AACN,gBAAA,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACjC,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACjE,aAAA;AAED,YAAA,IAAI,aAAa,EAAE;gBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzD,gBAAA,IAAI,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,WAAW,EAAE;AACvC,oBAAA,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACrC,iBAAA;AACF,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3C,SAAA;KACF;IAED,oBAAoB,CAChB,WAAmB,EAAE,OAAY,EAAE,YAAsB,EAAE,OAAa,EACxE,sBAA4C,EAAA;AAC9C,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,CAAC,YAAY,CAAC,GAAG;YACtB,WAAW;AACX,YAAA,aAAa,EAAE,OAAO;YACtB,YAAY;AACZ,YAAA,oBAAoB,EAAE,KAAK;YAC3B,sBAAsB;SACvB,CAAC;KACH;IAED,MAAM,CACF,WAAmB,EAAE,OAAY,EAAE,IAAY,EAAE,KAAa,EAC9D,QAAiC,EAAA;AACnC,QAAA,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACjF,SAAA;AACD,QAAA,OAAO,MAAO,GAAC,CAAC;KACjB;IAEO,iBAAiB,CACrB,KAAuB,EAAE,YAAmC,EAAE,cAAsB,EACpF,cAAsB,EAAE,YAAsB,EAAA;QAChD,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,CACzB,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,EACtF,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;KACjG;AAED,IAAA,sBAAsB,CAAC,gBAAqB,EAAA;AAC1C,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;AAC9E,QAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,iCAAiC,CAAC,OAAO,CAAC,CAAC,CAAC;AAE7E,QAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC;YAAE,OAAO;AAEnD,QAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC;AAC5E,QAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC,CAAC;KAClF;AAED,IAAA,iCAAiC,CAAC,OAAY,EAAA;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnD,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;;;;gBAIvB,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,oBAAA,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAChC,iBAAA;AAAM,qBAAA;oBACL,MAAM,CAAC,OAAO,EAAE,CAAC;AAClB,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED,IAAA,qCAAqC,CAAC,OAAY,EAAA;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC1D,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5C,SAAA;KACF;IAED,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,OAAO,CAAO,OAAO,IAAG;AACjC,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACvB,gBAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;AAClE,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,gBAAgB,CAAC,OAAY,EAAA;AAC3B,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAA0B,CAAC;AAC/D,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE;;AAEpC,YAAA,OAAO,CAAC,YAAY,CAAC,GAAG,kBAAkB,CAAC;YAC3C,IAAI,OAAO,CAAC,WAAW,EAAE;AACvB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACrD,gBAAA,IAAI,EAAE,EAAE;AACN,oBAAA,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC/B,iBAAA;AACF,aAAA;YACD,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;AACzD,SAAA;QAED,IAAI,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AACnD,YAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5C,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AACjE,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1C,SAAC,CAAC,CAAC;KACJ;IAED,KAAK,CAAC,WAAsB,GAAA,CAAC,CAAC,EAAA;QAC5B,IAAI,OAAO,GAAsB,EAAE,CAAC;AACpC,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;YAC7B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACvF,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;AAC9B,SAAA;QAED,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE;AAC9D,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAC3C,gBAAA,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;AAC/B,aAAA;AACF,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM;aACzB,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE;YACnE,MAAM,UAAU,GAAe,EAAE,CAAC;YAClC,IAAI;gBACF,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC1D,aAAA;AAAS,oBAAA;AACR,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,oBAAA,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACjB,iBAAA;AACF,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAC/C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAChC,aAAA;AACF,SAAA;AAED,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AAEpB,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;;;;AAI7B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;AACpC,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YAExB,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,gBAAA,mBAAmB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAK;oBACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC/B,iBAAC,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;gBACL,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC9B,aAAA;AACF,SAAA;KACF;AAED,IAAA,WAAW,CAAC,MAAe,EAAA;AACzB,QAAA,MAAM,wBAAwB,CAAC,MAAM,CAAC,CAAC;KACxC;IAEO,gBAAgB,CAAC,UAAsB,EAAE,WAAmB,EAAA;AAElE,QAAA,MAAM,YAAY,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACjD,MAAM,cAAc,GAAgC,EAAE,CAAC;AACvD,QAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC5D,MAAM,kBAAkB,GAAuB,EAAE,CAAC;AAClD,QAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAoC,CAAC;AACpE,QAAA,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAoB,CAAC;AACxD,QAAA,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAoB,CAAC;AAEzD,QAAA,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAO,CAAC;AAC3C,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,IAAG;AAChC,YAAA,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;AAC5E,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpD,mBAAmB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QACnE,MAAM,YAAY,GAAG,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;;;;AAKnF,QAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAe,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;AACnC,YAAA,MAAM,SAAS,GAAG,eAAe,GAAG,CAAC,EAAE,CAAC;AACxC,YAAA,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACrC,YAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACnD,SAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAU,EAAE,CAAC;AAChC,QAAA,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAO,CAAC;AACxC,QAAA,MAAM,2BAA2B,GAAG,IAAI,GAAG,EAAO,CAAC;AACnD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAC/C,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAA0B,CAAC;AAC/D,YAAA,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE;AACpC,gBAAA,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5B,gBAAA,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC9B,IAAI,OAAO,CAAC,YAAY,EAAE;oBACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3F,iBAAA;AAAM,qBAAA;AACL,oBAAA,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC1C,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAe,CAAC;AAC/C,QAAA,MAAM,YAAY,GAAG,YAAY,CAAC,kBAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACpF,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;AACnC,YAAA,MAAM,SAAS,GAAG,eAAe,GAAG,CAAC,EAAE,CAAC;AACxC,YAAA,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACrC,YAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACnD,SAAC,CAAC,CAAC;AAEH,QAAA,UAAU,CAAC,IAAI,CAAC,MAAK;YACnB,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;gBACnC,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;AAC7C,gBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACtD,aAAC,CAAC,CAAC;YAEH,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;gBACnC,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;AAC7C,gBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACtD,aAAC,CAAC,CAAC;AAEH,YAAA,aAAa,CAAC,OAAO,CAAC,OAAO,IAAG;AAC9B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACjC,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAgC,EAAE,CAAC;QACnD,MAAM,oBAAoB,GAAqC,EAAE,CAAC;AAClE,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACxD,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAClC,EAAE,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,IAAG;AACrD,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC5B,gBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC9B,gBAAA,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAExB,gBAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE;AACtC,oBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAA0B,CAAC;;;AAG/D,oBAAA,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE;wBACjC,IAAI,OAAO,CAAC,sBAAsB;4BAC9B,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AACzD,4BAAA,MAAM,aAAa,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAW,CAAC;;;AAItF,4BAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;4BACnE,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;gCACnE,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAE,CAAC;AACzD,gCAAA,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC;gCAC5B,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAClD,6BAAA;AACF,yBAAA;wBAED,MAAM,CAAC,OAAO,EAAE,CAAC;wBACjB,OAAO;AACR,qBAAA;AACF,iBAAA;AAED,gBAAA,MAAM,cAAc,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACpF,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;gBACrD,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;AACrD,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CACtC,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,CAAE,CAAC;gBAC1E,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE;AACnD,oBAAA,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACvC,OAAO;AACR,iBAAA;;;;;AAMD,gBAAA,IAAI,cAAc,EAAE;AAClB,oBAAA,MAAM,CAAC,OAAO,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;AACnE,oBAAA,MAAM,CAAC,SAAS,CAAC,MAAM,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjE,oBAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5B,OAAO;AACR,iBAAA;;;;gBAKD,IAAI,KAAK,CAAC,oBAAoB,EAAE;AAC9B,oBAAA,MAAM,CAAC,OAAO,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;AACnE,oBAAA,MAAM,CAAC,SAAS,CAAC,MAAM,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjE,oBAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5B,OAAO;AACR,iBAAA;;;;;;gBAOD,MAAM,SAAS,GAAmC,EAAE,CAAC;AACrD,gBAAA,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAG;AACjC,oBAAA,EAAE,CAAC,uBAAuB,GAAG,IAAI,CAAC;oBAClC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE;AACvC,wBAAA,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB,qBAAA;AACH,iBAAC,CAAC,CAAC;AACH,gBAAA,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;gBAElC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;gBAEpD,MAAM,KAAK,GAAG,EAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAC,CAAC;AAE7C,gBAAA,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAE/B,WAAW,CAAC,eAAe,CAAC,OAAO,CAC/B,OAAO,IAAI,oBAAoB,CAAC,eAAe,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAEhF,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,OAAO,KAAI;oBACvD,IAAI,SAAS,CAAC,IAAI,EAAE;wBAClB,IAAI,MAAM,GAAgB,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;wBAC5D,IAAI,CAAC,MAAM,EAAE;4BACX,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC,CAAC;AAC9D,yBAAA;AACD,wBAAA,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,qBAAA;AACH,iBAAC,CAAC,CAAC;gBAEH,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,OAAO,KAAI;oBACxD,IAAI,MAAM,GAAgB,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;oBAC7D,IAAI,CAAC,MAAM,EAAE;wBACX,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC,CAAC;AAC/D,qBAAA;AACD,oBAAA,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACJ,SAAA;QAED,IAAI,oBAAoB,CAAC,MAAM,EAAE;YAC/B,MAAM,MAAM,GAAY,EAAE,CAAC;AAC3B,YAAA,oBAAoB,CAAC,OAAO,CAAC,WAAW,IAAG;AACzC,gBAAA,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,MAAO,CAAC,CAAC,CAAC;AAC9E,aAAC,CAAC,CAAC;AAEH,YAAA,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1B,SAAA;AAED,QAAA,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAoC,CAAC;;;;;AAK1E,QAAA,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAY,CAAC;AAChD,QAAA,kBAAkB,CAAC,OAAO,CAAC,KAAK,IAAG;AACjC,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC9B,YAAA,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC7B,gBAAA,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1C,gBAAA,IAAI,CAAC,qBAAqB,CACtB,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;AACzE,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,cAAc,CAAC,OAAO,CAAC,MAAM,IAAG;AAC9B,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/B,MAAM,eAAe,GACjB,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC3F,YAAA,eAAe,CAAC,OAAO,CAAC,UAAU,IAAG;AACnC,gBAAA,oBAAoB,CAAC,qBAAqB,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1E,UAAU,CAAC,OAAO,EAAE,CAAC;AACvB,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;;;;;;;;QASH,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,IAAG;YAC/C,OAAO,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;AACjF,SAAC,CAAC,CAAC;;AAGH,QAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAsB,CAAC;AACpD,QAAA,MAAM,oBAAoB,GAAG,qBAAqB,CAC9C,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,UAAU,CAAC,CAAC;AAE/F,QAAA,oBAAoB,CAAC,OAAO,CAAC,IAAI,IAAG;YAClC,IAAI,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,EAAE;AAC3E,gBAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,aAAA;AACH,SAAC,CAAC,CAAC;;AAGH,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,EAAsB,CAAC;QACnD,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;AACnC,YAAA,qBAAqB,CACjB,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,mBAAmB,EAAEC,UAAS,CAAC,CAAC;AACjF,SAAC,CAAC,CAAC;AAEH,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,IAAG;YAC1B,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,YAAA,aAAa,CAAC,GAAG,CACb,IAAI,EACJ,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,SAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAgC,EAAE,CAAC;QACpD,MAAM,UAAU,GAAgC,EAAE,CAAC;QACnD,MAAM,oCAAoC,GAAG,EAAE,CAAC;AAChD,QAAA,kBAAkB,CAAC,OAAO,CAAC,KAAK,IAAG;YACjC,MAAM,EAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAC,GAAG,KAAK,CAAC;;;AAG7C,YAAA,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC7B,gBAAA,IAAI,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACpC,oBAAA,MAAM,CAAC,SAAS,CAAC,MAAM,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjE,oBAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB,oBAAA,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAChD,oBAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5B,OAAO;AACR,iBAAA;;;;;;;gBAQD,IAAI,mBAAmB,GAAQ,oCAAoC,CAAC;AACpE,gBAAA,IAAI,mBAAmB,CAAC,IAAI,GAAG,CAAC,EAAE;oBAChC,IAAI,GAAG,GAAG,OAAO,CAAC;oBAClB,MAAM,YAAY,GAAU,EAAE,CAAC;AAC/B,oBAAA,OAAO,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE;wBAC3B,MAAM,cAAc,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpD,wBAAA,IAAI,cAAc,EAAE;4BAClB,mBAAmB,GAAG,cAAc,CAAC;4BACrC,MAAM;AACP,yBAAA;AACD,wBAAA,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,qBAAA;AACD,oBAAA,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACtF,iBAAA;gBAED,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CACpC,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,YAAY,EACvF,aAAa,CAAC,CAAC;AAEnB,gBAAA,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBAElC,IAAI,mBAAmB,KAAK,oCAAoC,EAAE;AAChE,oBAAA,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,iBAAA;AAAM,qBAAA;oBACL,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACrE,oBAAA,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,EAAE;AACzC,wBAAA,MAAM,CAAC,YAAY,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAC1D,qBAAA;AACD,oBAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,iBAAA;AACF,aAAA;AAAM,iBAAA;AACL,gBAAA,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;AAC7C,gBAAA,MAAM,CAAC,SAAS,CAAC,MAAM,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;;;;AAIjE,gBAAA,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxB,gBAAA,IAAI,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACpC,oBAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;;AAGH,QAAA,UAAU,CAAC,OAAO,CAAC,MAAM,IAAG;;;YAG1B,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChE,YAAA,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,EAAE;AACjD,gBAAA,MAAM,WAAW,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AAC3D,gBAAA,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACnC,aAAA;AACH,SAAC,CAAC,CAAC;;;;AAKH,QAAA,cAAc,CAAC,OAAO,CAAC,MAAM,IAAG;YAC9B,IAAI,MAAM,CAAC,YAAY,EAAE;AACvB,gBAAA,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC9C,aAAA;AAAM,iBAAA;gBACL,MAAM,CAAC,OAAO,EAAE,CAAC;AAClB,aAAA;AACH,SAAC,CAAC,CAAC;;;;AAKH,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,YAAA,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AACjC,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAA0B,CAAC;AAC/D,YAAA,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;;;;AAKtC,YAAA,IAAI,OAAO,IAAI,OAAO,CAAC,YAAY;gBAAE,SAAS;YAE9C,IAAI,OAAO,GAAgC,EAAE,CAAC;;;;YAK9C,IAAI,eAAe,CAAC,IAAI,EAAE;gBACxB,IAAI,oBAAoB,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACxD,gBAAA,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,MAAM,EAAE;AACvD,oBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC;AACvC,iBAAA;AAED,gBAAA,IAAI,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC;AACnF,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACpD,IAAI,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,oBAAA,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,EAAE;AAC3C,wBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;AACjC,qBAAA;AACF,iBAAA;AACF,aAAA;AAED,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACxD,IAAI,aAAa,CAAC,MAAM,EAAE;AACxB,gBAAA,6BAA6B,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AAC7D,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAChC,aAAA;AACF,SAAA;;AAGD,QAAA,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;AAEzB,QAAA,WAAW,CAAC,OAAO,CAAC,MAAM,IAAG;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,YAAA,MAAM,CAAC,MAAM,CAAC,MAAK;gBACjB,MAAM,CAAC,OAAO,EAAE,CAAC;gBAEjB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAChC,aAAC,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,EAAE,CAAC;AAChB,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,WAAW,CAAC;KACpB;IAED,mBAAmB,CAAC,WAAmB,EAAE,OAAY,EAAA;QACnD,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAA0B,CAAC;AAC/D,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa;YAAE,YAAY,GAAG,IAAI,CAAC;AAC1D,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,YAAY,GAAG,IAAI,CAAC;AAC5D,QAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,YAAY,GAAG,IAAI,CAAC;AACnE,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,YAAY,GAAG,IAAI,CAAC;AAC3D,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC;KACvF;AAED,IAAA,UAAU,CAAC,QAAmB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC/B;AAED,IAAA,wBAAwB,CAAC,QAAmB,EAAA;AAC1C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACnC;IAEO,mBAAmB,CACvB,OAAe,EAAE,gBAAyB,EAAE,WAAoB,EAAE,WAAoB,EACtF,YAAkB,EAAA;QACpB,IAAI,OAAO,GAAgC,EAAE,CAAC;AAC9C,QAAA,IAAI,gBAAgB,EAAE;YACpB,MAAM,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACxE,YAAA,IAAI,qBAAqB,EAAE;gBACzB,OAAO,GAAG,qBAAqB,CAAC;AACjC,aAAA;AACF,SAAA;AAAM,aAAA;YACL,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC1D,YAAA,IAAI,cAAc,EAAE;gBAClB,MAAM,kBAAkB,GAAG,CAAC,YAAY,IAAI,YAAY,IAAI,UAAU,CAAC;AACvE,gBAAA,cAAc,CAAC,OAAO,CAAC,MAAM,IAAG;oBAC9B,IAAI,MAAM,CAAC,MAAM;wBAAE,OAAO;AAC1B,oBAAA,IAAI,CAAC,kBAAkB,IAAI,MAAM,CAAC,WAAW,IAAI,WAAW;wBAAE,OAAO;AACrE,oBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvB,iBAAC,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;QACD,IAAI,WAAW,IAAI,WAAW,EAAE;AAC9B,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,IAAG;AAChC,gBAAA,IAAI,WAAW,IAAI,WAAW,IAAI,MAAM,CAAC,WAAW;AAAE,oBAAA,OAAO,KAAK,CAAC;AACnE,gBAAA,IAAI,WAAW,IAAI,WAAW,IAAI,MAAM,CAAC,WAAW;AAAE,oBAAA,OAAO,KAAK,CAAC;AACnE,gBAAA,OAAO,IAAI,CAAC;AACd,aAAC,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;AAEO,IAAA,qBAAqB,CACzB,WAAmB,EAAE,WAA2C,EAChE,qBAA4D,EAAA;AAC9D,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;AAC5C,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;;;AAIxC,QAAA,MAAM,iBAAiB,GACnB,WAAW,CAAC,mBAAmB,GAAG,SAAS,GAAG,WAAW,CAAC;AAC9D,QAAA,MAAM,iBAAiB,GACnB,WAAW,CAAC,mBAAmB,GAAG,SAAS,GAAG,WAAW,CAAC;AAE9D,QAAA,KAAK,MAAM,mBAAmB,IAAI,WAAW,CAAC,SAAS,EAAE;AACvD,YAAA,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAC5C,YAAA,MAAM,gBAAgB,GAAG,OAAO,KAAK,WAAW,CAAC;YACjD,MAAM,OAAO,GAAG,oBAAoB,CAAC,qBAAqB,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AACzE,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAC5C,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;AAC1F,YAAA,eAAe,CAAC,OAAO,CAAC,MAAM,IAAG;AAC/B,gBAAA,MAAM,UAAU,GAAI,MAAoC,CAAC,aAAa,EAAS,CAAC;gBAChF,IAAI,UAAU,CAAC,aAAa,EAAE;oBAC5B,UAAU,CAAC,aAAa,EAAE,CAAC;AAC5B,iBAAA;gBACD,MAAM,CAAC,OAAO,EAAE,CAAC;AACjB,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvB,aAAC,CAAC,CAAC;AACJ,SAAA;;;AAID,QAAA,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;KAClD;IAEO,eAAe,CACnB,WAAmB,EAAE,WAA2C,EAChE,qBAA4D,EAC5D,iBAA8C,EAAE,YAAqC,EACrF,aAAsC,EAAA;AACxC,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;AAC5C,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;;;QAIxC,MAAM,iBAAiB,GAAgC,EAAE,CAAC;AAC1D,QAAA,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAO,CAAC;AAC3C,QAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAO,CAAC;QACtC,MAAM,aAAa,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,IAAG;AACpE,YAAA,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAC5C,YAAA,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;;AAGjC,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AACtC,YAAA,IAAI,OAAO,IAAI,OAAO,CAAC,oBAAoB;gBACzC,OAAO,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC1F,YAAA,MAAM,gBAAgB,GAAG,OAAO,KAAK,WAAW,CAAC;AACjD,YAAA,MAAM,eAAe,GACjB,mBAAmB,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,kBAAkB;iBACpD,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;iBAChD,MAAM,CAAC,CAAC,IAAG;;;;;gBAKV,MAAM,EAAE,GAAG,CAAQ,CAAC;AACpB,gBAAA,OAAO,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,KAAK,OAAO,GAAG,KAAK,CAAC;AACrD,aAAC,CAAC,CAAC;YAEX,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAE9C,MAAM,SAAS,GAAGD,oBAAkB,CAChC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAChF,UAAU,CAAC,CAAC;AAChB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;;;AAIlF,YAAA,IAAI,mBAAmB,CAAC,WAAW,IAAI,iBAAiB,EAAE;AACxD,gBAAA,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7B,aAAA;AAED,YAAA,IAAI,gBAAgB,EAAE;gBACpB,MAAM,aAAa,GAAG,IAAI,yBAAyB,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AACvF,gBAAA,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACpC,gBAAA,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACvC,aAAA;AAED,YAAA,OAAO,MAAM,CAAC;AAChB,SAAC,CAAC,CAAC;AAEH,QAAA,iBAAiB,CAAC,OAAO,CAAC,MAAM,IAAG;AACjC,YAAA,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpF,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAChG,SAAC,CAAC,CAAC;AAEH,QAAA,mBAAmB,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC;AAClF,QAAA,MAAM,MAAM,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAClD,QAAA,MAAM,CAAC,SAAS,CAAC,MAAK;AACpB,YAAA,mBAAmB,CAAC,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC;AACrF,YAAA,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/C,SAAC,CAAC,CAAC;;;AAIH,QAAA,cAAc,CAAC,OAAO,CAAC,OAAO,IAAG;AAC/B,YAAA,oBAAoB,CAAC,iBAAiB,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpE,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,YAAY,CAChB,WAAyC,EAAE,SAA+B,EAC1E,eAAkC,EAAA;AACpC,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,EACvE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAC1C,SAAA;;;QAID,OAAO,IAAI,mBAAmB,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;KACzE;AACF,CAAA;MAEY,yBAAyB,CAAA;AAepC,IAAA,WAAA,CAAmB,WAAmB,EAAS,WAAmB,EAAS,OAAY,EAAA;QAApE,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;QAAS,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;QAAS,IAAO,CAAA,OAAA,GAAP,OAAO,CAAK;AAd/E,QAAA,IAAA,CAAA,OAAO,GAAoB,IAAI,mBAAmB,EAAE,CAAC;QACrD,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAE5B,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,GAAG,EAAmC,CAAC;QACtD,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAI3B,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;QAClC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAEf,IAAM,CAAA,MAAA,GAAY,IAAI,CAAC;QAChB,IAAS,CAAA,SAAA,GAAW,CAAC,CAAC;KAEqD;AAE3F,IAAA,aAAa,CAAC,MAAuB,EAAA;QACnC,IAAI,IAAI,CAAC,mBAAmB;YAAE,OAAO;AAErC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,KAAI;AACjD,YAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AACpF,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACxC,QAAA,IAA0B,CAAC,MAAM,GAAG,KAAK,CAAC;KAC5C;IAED,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED,IAAA,iBAAiB,CAAC,SAAiB,EAAA;AAChC,QAAA,IAAY,CAAC,SAAS,GAAG,SAAS,CAAC;KACrC;AAED,IAAA,gBAAgB,CAAC,MAAuB,EAAA;AACtC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAc,CAAC;QAC9B,IAAI,CAAC,CAAC,eAAe,EAAE;AACrB,YAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AACnD,SAAA;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACnC,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KACxC;IAEO,WAAW,CAAC,IAAY,EAAE,QAA6B,EAAA;AAC7D,QAAA,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtE;AAED,IAAA,MAAM,CAAC,EAAc,EAAA;QACnB,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC9B,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KACzB;AAED,IAAA,OAAO,CAAC,EAAc,EAAA;QACpB,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KAC1B;AAED,IAAA,SAAS,CAAC,EAAc,EAAA;QACtB,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACjC,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;KAC5B;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACrB;IAED,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;KACxD;IAED,IAAI,GAAA;QACF,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACrC;IAED,KAAK,GAAA;QACH,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtC;IAED,OAAO,GAAA;QACL,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;KACxC;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;KACvB;IAED,OAAO,GAAA;AACJ,QAAA,IAA6B,CAAC,SAAS,GAAG,IAAI,CAAC;AAChD,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;KACxB;IAED,KAAK,GAAA;QACH,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtC;AAED,IAAA,WAAW,CAAC,CAAM,EAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC7B,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;KACrD;;AAGD,IAAA,eAAe,CAAC,SAAiB,EAAA;AAC/B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAc,CAAC;QAC9B,IAAI,CAAC,CAAC,eAAe,EAAE;AACrB,YAAA,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AAC9B,SAAA;KACF;AACF,CAAA;AAED,SAAS,kBAAkB,CAAO,GAAgB,EAAE,GAAM,EAAE,KAAQ,EAAA;IAClE,IAAI,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC,IAAA,IAAI,aAAa,EAAE;QACjB,IAAI,aAAa,CAAC,MAAM,EAAE;YACxB,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3C,YAAA,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAChC,SAAA;AACD,QAAA,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;AAC7B,YAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACjB,SAAA;AACF,KAAA;AACD,IAAA,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAU,EAAA;;;;IAIvC,OAAO,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;AACtC,CAAC;AAED,SAAS,aAAa,CAAC,IAAS,EAAA;IAC9B,OAAO,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,mBAAmB,CAAC,SAAiB,EAAA;AAC5C,IAAA,OAAO,SAAS,IAAI,OAAO,IAAI,SAAS,IAAI,MAAM,CAAC;AACrD,CAAC;AAED,SAAS,YAAY,CAAC,OAAY,EAAE,KAAc,EAAA;AAChD,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;AACvC,IAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC;AACvD,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAC1B,SAAkC,EAAE,MAAuB,EAAE,QAAkB,EAC/E,eAAsC,EAAE,YAAoB,EAAA;IAC9D,MAAM,SAAS,GAAa,EAAE,CAAC;AAC/B,IAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEnE,MAAM,cAAc,GAAU,EAAE,CAAC;IAEjC,eAAe,CAAC,OAAO,CAAC,CAAC,KAAkB,EAAE,OAAY,KAAI;AAC3D,QAAA,MAAM,MAAM,GAAkB,IAAI,GAAG,EAAE,CAAC;AACxC,QAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACnB,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AAC/D,YAAA,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;;YAIxB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;AAC/B,gBAAA,OAAO,CAAC,YAAY,CAAC,GAAG,0BAA0B,CAAC;AACnD,gBAAA,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9B,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACjC,KAAC,CAAC,CAAC;;;IAIH,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEnE,IAAA,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;;;AASG;AACH,SAAS,YAAY,CAAC,KAAY,EAAE,KAAY,EAAA;AAC9C,IAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAc,CAAC;AACtC,IAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAE7C,IAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;AAAE,QAAA,OAAO,OAAO,CAAC;IAEtC,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,IAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,IAAA,MAAM,YAAY,GAAG,IAAI,GAAG,EAAY,CAAC;IAEzC,SAAS,OAAO,CAAC,IAAS,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,SAAS,CAAC;QAE5B,IAAI,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,QAAA,IAAI,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;AAEtB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACvB,IAAI,GAAG,MAAM,CAAC;AACf,SAAA;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC9B,IAAI,GAAG,SAAS,CAAC;AAClB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACxB,SAAA;AAED,QAAA,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACnB,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,SAAA;AACH,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ,CAAC,OAAY,EAAE,SAAiB,EAAA;AAC/C,IAAA,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,WAAW,CAAC,OAAY,EAAE,SAAiB,EAAA;AAClD,IAAA,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,6BAA6B,CAClC,MAAiC,EAAE,OAAY,EAAE,OAA0B,EAAA;AAC7E,IAAA,mBAAmB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,mBAAmB,CAAC,OAA0B,EAAA;IACrD,MAAM,YAAY,GAAsB,EAAE,CAAC;AAC3C,IAAA,yBAAyB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACjD,IAAA,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,yBAAyB,CAAC,OAA0B,EAAE,YAA+B,EAAA;AAC5F,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,MAAM,YAAYE,qBAAoB,EAAE;AAC1C,YAAA,yBAAyB,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACzD,SAAA;AAAM,aAAA;AACL,YAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,SAAA;AACF,KAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,CAAuB,EAAE,CAAuB,EAAA;IACjE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAA,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM;AAAE,QAAA,OAAO,KAAK,CAAC;AACzC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClC,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACnB,QAAA,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;AAClE,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAC3B,OAAY,EAAE,mBAA0C,EACxD,oBAA2C,EAAA;IAC7C,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACpD,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,KAAK,CAAC;IAE7B,IAAI,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAChD,IAAA,IAAI,QAAQ,EAAE;AACZ,QAAA,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,QAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,KAAA;AAAM,SAAA;AACL,QAAA,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC7C,KAAA;AAED,IAAA,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrC,IAAA,OAAO,IAAI,CAAC;AACd;;MC3uDa,eAAe,CAAA;AAS1B,IAAA,WAAA,CACY,QAAa,EAAU,OAAwB,EAC/C,WAAqC,EAAA;QADrC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAK;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QAC/C,IAAW,CAAA,WAAA,GAAX,WAAW,CAA0B;QAPzC,IAAa,CAAA,aAAA,GAAsC,EAAE,CAAC;;QAGvD,IAAiB,CAAA,iBAAA,GAAG,CAAC,OAAY,EAAE,OAAY,KAAM,GAAC,CAAC;AAK5D,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAEnF,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,CAAC,OAAY,EAAE,OAAY,KAClE,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KAC9C;IAED,eAAe,CACX,WAAmB,EAAE,WAAmB,EAAE,WAAgB,EAAE,IAAY,EACxE,QAAkC,EAAA;AACpC,QAAA,MAAM,QAAQ,GAAG,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC;QAC1C,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,MAAM,GAAY,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC;AAC9B,YAAA,MAAM,GAAG,GAAG,iBAAiB,CACb,IAAI,CAAC,OAAO,EAAE,QAA6B,EAAE,MAAM,EAAE,QAAQ,CAAe,CAAC;YAC7F,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,gBAAA,MAAM,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACxC,aAAA;YACD,IAAI,QAAQ,CAAC,MAAM,EAAE;AACnB,gBAAA,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAClC,aAAA;YACD,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;AACxC,SAAA;QACD,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KACpE;IAED,QAAQ,CAAC,WAAmB,EAAE,WAAgB,EAAA;QAC5C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;KAC3D;IAED,OAAO,CAAC,WAAmB,EAAE,OAAY,EAAA;QACvC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;KACtD;AAED,IAAA,QAAQ,CAAC,WAAmB,EAAE,OAAY,EAAE,MAAW,EAAE,YAAqB,EAAA;AAC5E,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;KAC/E;AAED,IAAA,QAAQ,CAAC,WAAmB,EAAE,OAAY,EAAE,OAAY,EAAE,aAAuB,EAAA;AAC/E,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,IAAI,KAAK,EAAE,OAAO,CAAC,CAAC;KAC1F;IAED,iBAAiB,CAAC,OAAY,EAAE,OAAgB,EAAA;QAC9C,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KAChE;AAED,IAAA,OAAO,CAAC,WAAmB,EAAE,OAAY,EAAE,QAAgB,EAAE,KAAU,EAAA;QACrE,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;YAC7B,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,KAAc,CAAC;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACzD,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACvE,SAAA;KACF;IAED,MAAM,CACF,WAAmB,EAAE,OAAY,EAAE,SAAiB,EAAE,UAAkB,EACxE,QAA6B,EAAA;;QAE/B,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;YAC9B,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;AACrD,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACnE,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;KAC7F;IAED,KAAK,CAAC,WAAsB,GAAA,CAAC,CAAC,EAAA;AAC5B,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;KAC3C;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAQ,IAAI,CAAC,iBAAiB,CAAC,OAA6B;AACvD,aAAA,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,OAA4B,CAAC,CAAC;KAChE;IAED,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;KACnD;AACF;;ACxGD;;;;;;;;;;AAUG;AACa,SAAA,0BAA0B,CACtC,OAAY,EAAE,MAA0C,EAAA;IAC1D,IAAI,WAAW,GAAuB,IAAI,CAAC;IAC3C,IAAI,SAAS,GAAuB,IAAI,CAAC;IACzC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;QAC1C,WAAW,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,SAAS,GAAG,yBAAyB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE,SAAA;AACF,KAAA;SAAM,IAAI,MAAM,YAAY,GAAG,EAAE;AAChC,QAAA,WAAW,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;AACjD,KAAA;AAED,IAAA,OAAO,CAAC,WAAW,IAAI,SAAS,IAAI,IAAI,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC;AACvD,QAAA,IAAI,CAAC;AAC3C,CAAC;AAED;;;;;;;AAOG;MACU,kBAAkB,CAAA;AAM7B,IAAA,WAAA,CACY,QAAa,EAAU,YAAgC,EACvD,UAA8B,EAAA;QAD9B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAK;QAAU,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAoB;QACvD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAoB;AALlC,QAAA,IAAA,CAAA,MAAM,GAAmC,CAAA,uCAAA;QAM/C,IAAI,aAAa,GAAG,kBAAkB,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5E,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,kBAAkB,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;AACpF,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;KACrC;IAED,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,MAAM,GAAA,CAAA,wCAAoC;YACjD,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAClE,aAAA;YACD,IAAI,CAAC,MAAM,GAAA,CAAA,uCAAmC;AAC/C,SAAA;KACF;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,QAAA,IAAI,IAAI,CAAC,MAAM,GAAA,CAAA,yCAAqC;YAClD,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1C,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,aAAA;YACD,IAAI,CAAC,MAAM,GAAA,CAAA,uCAAmC;AAC/C,SAAA;KACF;IAED,OAAO,GAAA;QACL,IAAI,CAAC,MAAM,EAAE,CAAC;AACd,QAAA,IAAI,IAAI,CAAC,MAAM,GAAA,CAAA,0CAAsC;YACnD,kBAAkB,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChE,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,aAAA;YACD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,aAAA;YACD,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,GAAA,CAAA,yCAAqC;AACjD,SAAA;KACF;;AAnDM,kBAAA,CAAA,sBAAsB,oBAAoB,IAAI,OAAO,EAAsB,CAAC,CAAC;AAuEtF,SAAS,yBAAyB,CAAC,MAAqB,EAAA;IACtD,IAAI,MAAM,GAAuB,IAAI,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AAC3B,QAAA,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE;AAC9B,YAAA,MAAM,GAAG,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;AAC7B,YAAA,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACvB,SAAA;AACH,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAA;AACxC,IAAA,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,UAAU,CAAC;AACnD;;MCtHa,mBAAmB,CAAA;AAyB9B,IAAA,WAAA,CACW,OAAY,EAAS,SAA+B,EACpD,OAAuC,EACtC,cAAwC,EAAA;QAFzC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAK;QAAS,IAAS,CAAA,SAAA,GAAT,SAAS,CAAsB;QACpD,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgC;QACtC,IAAc,CAAA,cAAA,GAAd,cAAc,CAA0B;QA3B5C,IAAU,CAAA,UAAA,GAAe,EAAE,CAAC;QAC5B,IAAW,CAAA,WAAA,GAAe,EAAE,CAAC;QAC7B,IAAa,CAAA,aAAA,GAAe,EAAE,CAAC;QAG/B,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;;;;QAMnB,IAAkB,CAAA,kBAAA,GAAe,EAAE,CAAC;QACpC,IAAmB,CAAA,mBAAA,GAAe,EAAE,CAAC;QAItC,IAAI,CAAA,IAAA,GAAG,CAAC,CAAC;QAET,IAAY,CAAA,YAAA,GAAyB,IAAI,CAAC;AAC1C,QAAA,IAAA,CAAA,eAAe,GAAkB,IAAI,GAAG,EAAE,CAAC;AAMhD,QAAA,IAAI,CAAC,SAAS,GAAW,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAW,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;KAC1C;IAEO,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACtB,SAAA;KACF;IAED,IAAI,GAAA;QACF,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAClC;IAEO,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO;AAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAEzB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,QAAA,IAAkC,CAAC,SAAS;AACzC,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;AACrF,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;KACnE;IAEO,yBAAyB,GAAA;;QAE/B,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC7B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACxB,SAAA;KACF;AAEO,IAAA,yBAAyB,CAAC,SAA+B,EAAA;QAC/D,MAAM,GAAG,GAAU,EAAE,CAAC;AACtB,QAAA,SAAS,CAAC,OAAO,CAAC,KAAK,IAAG;YACxB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,GAAG,CAAC;KACZ;;AAGD,IAAA,oBAAoB,CAAC,OAAY,EAAE,SAA+B,EAAE,OAAY,EAAA;;;AAG9E,QAAA,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAiB,CAAC;KAC/F;AAED,IAAA,OAAO,CAAC,EAAc,EAAA;AACpB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC3B;AAED,IAAA,MAAM,CAAC,EAAc,EAAA;AACnB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC1B;AAED,IAAA,SAAS,CAAC,EAAc,EAAA;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC7B;IAED,IAAI,GAAA;QACF,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAC7B,aAAA;AACF,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACvB;IAED,KAAK,GAAA;QACH,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;KACxB;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;AAC9B,SAAA;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;KACzB;IAED,KAAK,GAAA;QACH,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAC5C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC;KAC3C;IAEO,oBAAoB,GAAA;QAC1B,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;AACzB,SAAA;KACF;IAED,OAAO,GAAA;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;IAED,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AAC/B,aAAA;AACD,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACzB,SAAA;KACF;AAED,IAAA,WAAW,CAAC,CAAS,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YAChC,IAAI,CAAC,IAAI,EAAE,CAAC;AACb,SAAA;QACD,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;KAC5C;IAED,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;KAC/C;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;KACrC;IAED,aAAa,GAAA;AACX,QAAA,MAAM,MAAM,GAAkB,IAAI,GAAG,EAAE,CAAC;AACxC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;;;;AAIrB,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAe,CAAC;YAC3C,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;gBAClC,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACrB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3E,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;KAC/B;;AAGD,IAAA,eAAe,CAAC,SAAiB,EAAA;AAC/B,QAAA,MAAM,OAAO,GAAG,SAAS,KAAK,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;QAC3E,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC5B,QAAA,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;KACpB;AACF;;MCpMY,mBAAmB,CAAA;AAC9B,IAAA,qBAAqB,CAAC,IAAY,EAAA;;AAEhC,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,YAAA,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACpC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,+BAA+B,CAAC,IAAY,EAAA;;AAE1C,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,YAAA,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC1C,YAAA,OAAO,kCAAkC,CAAC,OAAO,CAAC,CAAC;AACpD,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,cAAc,CAAC,QAAa,EAAE,SAAiB,EAAA;;AAE7C,QAAA,OAAO,KAAK,CAAC;KACd;IAED,eAAe,CAAC,IAAS,EAAE,IAAS,EAAA;AAClC,QAAA,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACpC;AAED,IAAA,gBAAgB,CAAC,OAAgB,EAAA;AAC/B,QAAA,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;KAClC;AAED,IAAA,KAAK,CAAC,OAAY,EAAE,QAAgB,EAAE,KAAc,EAAA;QAClD,OAAO,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;KAC9C;AAED,IAAA,YAAY,CAAC,OAAY,EAAE,IAAY,EAAE,YAAqB,EAAA;QAC5D,OAAQ,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAS,CAAC,IAAI,CAAW,CAAC;KAClE;AAED,IAAA,OAAO,CACH,OAAY,EAAE,SAA4C,EAAE,QAAgB,EAAE,KAAa,EAC3F,MAAc,EAAE,eAAA,GAAqC,EAAE,EAAA;AACzD,QAAA,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC;QAC9C,MAAM,aAAa,GAAmC,EAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC;;;AAG9E,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,aAAa,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AAClC,SAAA;AAED,QAAA,MAAM,cAAc,GAAkB,IAAI,GAAG,EAAE,CAAC;AAChD,QAAA,MAAM,2BAA2B,GAA0B,eAAe,CAAC,MAAM,CAC7E,MAAM,IAAI,MAAM,YAAY,mBAAmB,CAAC,CAAC;AACrD,QAAA,IAAI,8BAA8B,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;AACnD,YAAA,2BAA2B,CAAC,OAAO,CAAC,MAAM,IAAG;gBAC3C,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAC/E,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,UAAU,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACjF,UAAU,GAAG,kCAAkC,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;QACrF,MAAM,aAAa,GAAG,0BAA0B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACtE,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;KACnF;AACF;;ACxED;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;ACRA;;AAEG;;;;"}
-------------------- SECTION 162 --------------------
{"version":3,"file":"testing.mjs","sources":["../../../../../../../packages/animations/browser/src/error_helpers.ts","../../../../../../../packages/animations/browser/src/render/web_animations/animatable_props_set.ts","../../../../../../../packages/animations/browser/src/render/shared.ts","../../../../../../../packages/animations/browser/src/util.ts","../../../../../../../packages/animations/browser/testing/src/mock_animation_driver.ts","../../../../../../../packages/animations/browser/testing/public_api.ts","../../../../../../../packages/animations/browser/testing/index.ts","../../../../../../../packages/animations/browser/testing/testing.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from './errors';  const LINE_START = '\  - ';  export function invalidTimingValue(exp: string|number): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_TIMING_VALUE,       ngDevMode && `The provided timing value \"${exp}\" is invalid.`); }  export function negativeStepValue(): Error {   return new RuntimeError(       RuntimeErrorCode.NEGATIVE_STEP_VALUE,       ngDevMode && 'Duration values below 0 are not allowed for this animation step.'); }  export function negativeDelayValue(): Error {   return new RuntimeError(       RuntimeErrorCode.NEGATIVE_DELAY_VALUE,       ngDevMode && 'Delay values below 0 are not allowed for this animation step.'); }  export function invalidStyleParams(varName: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STYLE_PARAMS,       ngDevMode &&           `Unable to resolve the local animation param ${varName} in the given list of values`); }  export function invalidParamValue(varName: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_PARAM_VALUE,       ngDevMode && `Please provide a value for the animation param ${varName}`); }  export function invalidNodeType(nodeType: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_NODE_TYPE,       ngDevMode && `Unable to resolve animation metadata node #${nodeType}`); }  export function invalidCssUnitValue(userProvidedProperty: string, value: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_CSS_UNIT_VALUE,       ngDevMode && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`); }  export function invalidTrigger(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_TRIGGER,       ngDevMode &&           'animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))'); }  export function invalidDefinition(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_DEFINITION,       ngDevMode && 'only state() and transition() definitions can sit inside of a trigger()'); }  export function invalidState(metadataName: string, missingSubs: string[]): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STATE,       ngDevMode &&           `state(\"${               metadataName}\", ...) must define default values for all the following style substitutions: ${               missingSubs.join(', ')}`); }  export function invalidStyleValue(value: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STYLE_VALUE,       ngDevMode && `The provided style string value ${value} is not allowed.`); }  export function invalidProperty(prop: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_PROPERTY,       ngDevMode &&           `The provided animation property \"${               prop}\" is not a supported CSS property for animations`); }  export function invalidParallelAnimation(     prop: string, firstStart: number, firstEnd: number, secondStart: number,     secondEnd: number): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_PARALLEL_ANIMATION,       ngDevMode &&           `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${               firstEnd}ms\" is also being animated in a parallel animation between the times of \"${               secondStart}ms\" and \"${secondEnd}ms\"`); }  export function invalidKeyframes(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_KEYFRAMES,       ngDevMode && `keyframes() must be placed inside of a call to animate()`); }  export function invalidOffset(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_OFFSET,       ngDevMode && `Please ensure that all keyframe offsets are between 0 and 1`); }  export function keyframeOffsetsOutOfOrder(): Error {   return new RuntimeError(       RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER,       ngDevMode && `Please ensure that all keyframe offsets are in order`); }  export function keyframesMissingOffsets(): Error {   return new RuntimeError(       RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS,       ngDevMode && `Not all style() steps within the declared keyframes() contain offsets`); }  export function invalidStagger(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STAGGER,       ngDevMode && `stagger() can only be used inside of query()`); }  export function invalidQuery(selector: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_QUERY,       ngDevMode &&           `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${               selector}\", { optional: true })\\` if you wish to allow this.)`); }  export function invalidExpression(expr: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_EXPRESSION,       ngDevMode && `The provided transition expression \"${expr}\" is not supported`); }  export function invalidTransitionAlias(alias: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_TRANSITION_ALIAS,       ngDevMode && `The transition alias value \"${alias}\" is not supported`); }  export function validationFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.VALIDATION_FAILED,       ngDevMode && `animation validation failed:\ ${errors.map(err => err.message).join('\ ')}`); }  export function buildingFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.BUILDING_FAILED,       ngDevMode && `animation building failed:\ ${errors.map(err => err.message).join('\ ')}`); }  export function triggerBuildFailed(name: string, errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRIGGER_BUILD_FAILED,       ngDevMode &&           `The animation trigger \"${name}\" has failed to build due to the following errors:\  - ${               errors.map(err => err.message).join('\  - ')}`); }  export function animationFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.ANIMATION_FAILED,       ngDevMode &&           `Unable to animate due to the following errors:${LINE_START}${               errors.map(err => err.message).join(LINE_START)}`); }  export function registerFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.REGISTRATION_FAILED,       ngDevMode &&           `Unable to build the animation due to the following errors: ${               errors.map(err => err.message).join('\ ')}`); }  export function missingOrDestroyedAnimation(): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION,       ngDevMode && 'The requested animation doesn\\'t exist or has already been destroyed'); }  export function createAnimationFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.CREATE_ANIMATION_FAILED,       ngDevMode &&           `Unable to create the animation due to the following errors:${               errors.map(err => err.message).join('\ ')}`); }  export function missingPlayer(id: string): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_PLAYER,       ngDevMode && `Unable to find the timeline player referenced by ${id}`); }  export function missingTrigger(phase: string, name: string): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_TRIGGER,       ngDevMode &&           `Unable to listen on the animation trigger event \"${               phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`); }  export function missingEvent(name: string): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_EVENT,       ngDevMode &&           `Unable to listen on the animation trigger \"${               name}\" because the provided event is undefined!`); }  export function unsupportedTriggerEvent(phase: string, name: string): Error {   return new RuntimeError(       RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT,       ngDevMode &&           `The provided animation trigger event \"${phase}\" for the animation trigger \"${               name}\" is not supported!`); }  export function unregisteredTrigger(name: string): Error {   return new RuntimeError(       RuntimeErrorCode.UNREGISTERED_TRIGGER,       ngDevMode && `The provided animation trigger \"${name}\" has not been registered!`); }  export function triggerTransitionsFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED,       ngDevMode &&           `Unable to process animations due to the following failed trigger transitions\  ${               errors.map(err => err.message).join('\ ')}`); }  export function triggerParsingFailed(name: string, errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRIGGER_PARSING_FAILED,       ngDevMode &&           `Animation parsing for the ${name} trigger have failed:${LINE_START}${               errors.map(err => err.message).join(LINE_START)}`); }  export function transitionFailed(name: string, errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRANSITION_FAILED,       ngDevMode && `@${name} has failed due to:\  ${errors.map(err => err.message).join('\ - ')}`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Set of all animatable CSS properties  *  * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties  */ export const ANIMATABLE_PROP_SET = new Set([   '-moz-outline-radius',   '-moz-outline-radius-bottomleft',   '-moz-outline-radius-bottomright',   '-moz-outline-radius-topleft',   '-moz-outline-radius-topright',   '-ms-grid-columns',   '-ms-grid-rows',   '-webkit-line-clamp',   '-webkit-text-fill-color',   '-webkit-text-stroke',   '-webkit-text-stroke-color',   'accent-color',   'all',   'backdrop-filter',   'background',   'background-color',   'background-position',   'background-size',   'block-size',   'border',   'border-block-end',   'border-block-end-color',   'border-block-end-width',   'border-block-start',   'border-block-start-color',   'border-block-start-width',   'border-bottom',   'border-bottom-color',   'border-bottom-left-radius',   'border-bottom-right-radius',   'border-bottom-width',   'border-color',   'border-end-end-radius',   'border-end-start-radius',   'border-image-outset',   'border-image-slice',   'border-image-width',   'border-inline-end',   'border-inline-end-color',   'border-inline-end-width',   'border-inline-start',   'border-inline-start-color',   'border-inline-start-width',   'border-left',   'border-left-color',   'border-left-width',   'border-radius',   'border-right',   'border-right-color',   'border-right-width',   'border-start-end-radius',   'border-start-start-radius',   'border-top',   'border-top-color',   'border-top-left-radius',   'border-top-right-radius',   'border-top-width',   'border-width',   'bottom',   'box-shadow',   'caret-color',   'clip',   'clip-path',   'color',   'column-count',   'column-gap',   'column-rule',   'column-rule-color',   'column-rule-width',   'column-width',   'columns',   'filter',   'flex',   'flex-basis',   'flex-grow',   'flex-shrink',   'font',   'font-size',   'font-size-adjust',   'font-stretch',   'font-variation-settings',   'font-weight',   'gap',   'grid-column-gap',   'grid-gap',   'grid-row-gap',   'grid-template-columns',   'grid-template-rows',   'height',   'inline-size',   'input-security',   'inset',   'inset-block',   'inset-block-end',   'inset-block-start',   'inset-inline',   'inset-inline-end',   'inset-inline-start',   'left',   'letter-spacing',   'line-clamp',   'line-height',   'margin',   'margin-block-end',   'margin-block-start',   'margin-bottom',   'margin-inline-end',   'margin-inline-start',   'margin-left',   'margin-right',   'margin-top',   'mask',   'mask-border',   'mask-position',   'mask-size',   'max-block-size',   'max-height',   'max-inline-size',   'max-lines',   'max-width',   'min-block-size',   'min-height',   'min-inline-size',   'min-width',   'object-position',   'offset',   'offset-anchor',   'offset-distance',   'offset-path',   'offset-position',   'offset-rotate',   'opacity',   'order',   'outline',   'outline-color',   'outline-offset',   'outline-width',   'padding',   'padding-block-end',   'padding-block-start',   'padding-bottom',   'padding-inline-end',   'padding-inline-start',   'padding-left',   'padding-right',   'padding-top',   'perspective',   'perspective-origin',   'right',   'rotate',   'row-gap',   'scale',   'scroll-margin',   'scroll-margin-block',   'scroll-margin-block-end',   'scroll-margin-block-start',   'scroll-margin-bottom',   'scroll-margin-inline',   'scroll-margin-inline-end',   'scroll-margin-inline-start',   'scroll-margin-left',   'scroll-margin-right',   'scroll-margin-top',   'scroll-padding',   'scroll-padding-block',   'scroll-padding-block-end',   'scroll-padding-block-start',   'scroll-padding-bottom',   'scroll-padding-inline',   'scroll-padding-inline-end',   'scroll-padding-inline-start',   'scroll-padding-left',   'scroll-padding-right',   'scroll-padding-top',   'scroll-snap-coordinate',   'scroll-snap-destination',   'scrollbar-color',   'shape-image-threshold',   'shape-margin',   'shape-outside',   'tab-size',   'text-decoration',   'text-decoration-color',   'text-decoration-thickness',   'text-emphasis',   'text-emphasis-color',   'text-indent',   'text-shadow',   'text-underline-offset',   'top',   'transform',   'transform-origin',   'translate',   'vertical-align',   'visibility',   'width',   'word-spacing',   'z-index',   'zoom', ]); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationEvent, AnimationPlayer, AUTO_STYLE, NoopAnimationPlayer, ɵAnimationGroupPlayer, ɵPRE_STYLE as PRE_STYLE, ɵStyleDataMap} from '@angular/animations';  import {AnimationStyleNormalizer} from '../../src/dsl/style_normalization/animation_style_normalizer'; import {AnimationDriver} from '../../src/render/animation_driver'; import {animationFailed} from '../error_helpers';  import {ANIMATABLE_PROP_SET} from './web_animations/animatable_props_set';  // We don't include ambient node types here since @angular/animations/browser // is meant to target the browser so technically it should not depend on node // types. `process` is just declared locally here as a result. declare const process: any;  export function isBrowser(): boolean {   return (typeof window !== 'undefined' && typeof window.document !== 'undefined'); }  export function isNode(): boolean {   // Checking only for `process` isn't enough to identify whether or not we're in a Node   // environment, because Webpack by default will polyfill the `process`. While we can discern   // that Webpack polyfilled it by looking at `process.browser`, it's very Webpack-specific and   // might not be future-proof. Instead we look at the stringified version of `process` which   // is `[object process]` in Node and `[object Object]` when polyfilled.   return typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; }  export function optimizeGroupPlayer(players: AnimationPlayer[]): AnimationPlayer {   switch (players.length) {     case 0:       return new NoopAnimationPlayer();     case 1:       return players[0];     default:       return new ɵAnimationGroupPlayer(players);   } }  export function normalizeKeyframes(     driver: AnimationDriver, normalizer: AnimationStyleNormalizer, element: any,     keyframes: Array<ɵStyleDataMap>, preStyles: ɵStyleDataMap = new Map(),     postStyles: ɵStyleDataMap = new Map()): Array<ɵStyleDataMap> {   const errors: Error[] = [];   const normalizedKeyframes: Array<ɵStyleDataMap> = [];   let previousOffset = -1;   let previousKeyframe: ɵStyleDataMap|null = null;   keyframes.forEach(kf => {     const offset = kf.get('offset') as number;     const isSameOffset = offset == previousOffset;     const normalizedKeyframe: ɵStyleDataMap = (isSameOffset && previousKeyframe) || new Map();     kf.forEach((val, prop) => {       let normalizedProp = prop;       let normalizedValue = val;       if (prop !== 'offset') {         normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);         switch (normalizedValue) {           case PRE_STYLE:             normalizedValue = preStyles.get(prop)!;             break;            case AUTO_STYLE:             normalizedValue = postStyles.get(prop)!;             break;            default:             normalizedValue =                 normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);             break;         }       }       normalizedKeyframe.set(normalizedProp, normalizedValue);     });     if (!isSameOffset) {       normalizedKeyframes.push(normalizedKeyframe);     }     previousKeyframe = normalizedKeyframe;     previousOffset = offset;   });   if (errors.length) {     throw animationFailed(errors);   }    return normalizedKeyframes; }  export function listenOnPlayer(     player: AnimationPlayer, eventName: string, event: AnimationEvent|undefined,     callback: (event: any) => any) {   switch (eventName) {     case 'start':       player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));       break;     case 'done':       player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));       break;     case 'destroy':       player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));       break;   } }  export function copyAnimationEvent(     e: AnimationEvent, phaseName: string, player: AnimationPlayer): AnimationEvent {   const totalTime = player.totalTime;   const disabled = (player as any).disabled ? true : false;   const event = makeAnimationEvent(       e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName,       totalTime == undefined ? e.totalTime : totalTime, disabled);   const data = (e as any)['_data'];   if (data != null) {     (event as any)['_data'] = data;   }   return event; }  export function makeAnimationEvent(     element: any, triggerName: string, fromState: string, toState: string, phaseName: string = '',     totalTime: number = 0, disabled?: boolean): AnimationEvent {   return {element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled}; }  export function getOrSetDefaultValue<T, V>(map: Map<T, V>, key: T, defaultValue: V) {   let value = map.get(key);   if (!value) {     map.set(key, value = defaultValue);   }   return value; }  export function parseTimelineCommand(command: string): [string, string] {   const separatorPos = command.indexOf(':');   const id = command.substring(1, separatorPos);   const action = command.slice(separatorPos + 1);   return [id, action]; }  let _contains: (elm1: any, elm2: any) => boolean = (elm1: any, elm2: any) => false; let _query: (element: any, selector: string, multi: boolean) => any[] =     (element: any, selector: string, multi: boolean) => {       return [];     }; let _documentElement: unknown|null = null;  export function getParentElement(element: any): unknown|null {   const parent = element.parentNode || element.host;  // consider host to support shadow DOM   if (parent === _documentElement) {     return null;   }   return parent; }  // Define utility methods for browsers and platform-server(domino) where Element // and utility methods exist. const _isNode = isNode(); if (_isNode || typeof Element !== 'undefined') {   if (!isBrowser()) {     _contains = (elm1, elm2) => elm1.contains(elm2);   } else {     // Read the document element in an IIFE that's been marked pure to avoid a top-level property     // read that may prevent tree-shaking.     _documentElement = /* @__PURE__ */ (() => document.documentElement)();     _contains = (elm1, elm2) => {       while (elm2) {         if (elm2 === elm1) {           return true;         }         elm2 = getParentElement(elm2);       }       return false;     };   }    _query = (element: any, selector: string, multi: boolean): any[] => {     if (multi) {       return Array.from(element.querySelectorAll(selector));     }     const elem = element.querySelector(selector);     return elem ? [elem] : [];   }; }  function containsVendorPrefix(prop: string): boolean {   // Webkit is the only real popular vendor prefix nowadays   // cc: http://shouldiprefix.com/   return prop.substring(1, 6) == 'ebkit';  // webkit or Webkit }  let _CACHED_BODY: {style: any}|null = null; let _IS_WEBKIT = false; export function validateStyleProperty(prop: string): boolean {   if (!_CACHED_BODY) {     _CACHED_BODY = getBodyNode() || {};     _IS_WEBKIT = _CACHED_BODY!.style ? ('WebkitAppearance' in _CACHED_BODY!.style) : false;   }    let result = true;   if (_CACHED_BODY!.style && !containsVendorPrefix(prop)) {     result = prop in _CACHED_BODY!.style;     if (!result && _IS_WEBKIT) {       const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1);       result = camelProp in _CACHED_BODY!.style;     }   }    return result; }  export function validateWebAnimatableStyleProperty(prop: string): boolean {   return ANIMATABLE_PROP_SET.has(prop); }  export function getBodyNode(): any|null {   if (typeof document != 'undefined') {     return document.body;   }   return null; }  export const containsElement = _contains; export const invokeQuery = _query;  export function hypenatePropsKeys(original: ɵStyleDataMap): ɵStyleDataMap {   const newMap: ɵStyleDataMap = new Map();   original.forEach((val, prop) => {     const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');     newMap.set(newProp, val);   });   return newMap; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimateTimings, AnimationMetadata, AnimationMetadataType, AnimationOptions, sequence, ɵStyleData, ɵStyleDataMap} from '@angular/animations';  import {Ast as AnimationAst, AstVisitor as AnimationAstVisitor} from './dsl/animation_ast'; import {AnimationDslVisitor} from './dsl/animation_dsl_visitor'; import {invalidNodeType, invalidParamValue, invalidStyleParams, invalidTimingValue, negativeDelayValue, negativeStepValue} from './error_helpers'; import {isNode} from './render/shared';  export const ONE_SECOND = 1000;  export const SUBSTITUTION_EXPR_START = '{{'; export const SUBSTITUTION_EXPR_END = '}}'; export const ENTER_CLASSNAME = 'ng-enter'; export const LEAVE_CLASSNAME = 'ng-leave'; export const NG_TRIGGER_CLASSNAME = 'ng-trigger'; export const NG_TRIGGER_SELECTOR = '.ng-trigger'; export const NG_ANIMATING_CLASSNAME = 'ng-animating'; export const NG_ANIMATING_SELECTOR = '.ng-animating';  export function resolveTimingValue(value: string|number) {   if (typeof value == 'number') return value;    const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);   if (!matches || matches.length < 2) return 0;    return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]); }  function _convertTimeValueToMS(value: number, unit: string): number {   switch (unit) {     case 's':       return value * ONE_SECOND;     default:  // ms or something else       return value;   } }  export function resolveTiming(     timings: string|number|AnimateTimings, errors: Error[], allowNegativeValues?: boolean) {   return timings.hasOwnProperty('duration') ?       <AnimateTimings>timings :       parseTimeExpression(<string|number>timings, errors, allowNegativeValues); }  function parseTimeExpression(     exp: string|number, errors: Error[], allowNegativeValues?: boolean): AnimateTimings {   const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;   let duration: number;   let delay: number = 0;   let easing: string = '';   if (typeof exp === 'string') {     const matches = exp.match(regex);     if (matches === null) {       errors.push(invalidTimingValue(exp));       return {duration: 0, delay: 0, easing: ''};     }      duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);      const delayMatch = matches[3];     if (delayMatch != null) {       delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);     }      const easingVal = matches[5];     if (easingVal) {       easing = easingVal;     }   } else {     duration = exp;   }    if (!allowNegativeValues) {     let containsErrors = false;     let startIndex = errors.length;     if (duration < 0) {       errors.push(negativeStepValue());       containsErrors = true;     }     if (delay < 0) {       errors.push(negativeDelayValue());       containsErrors = true;     }     if (containsErrors) {       errors.splice(startIndex, 0, invalidTimingValue(exp));     }   }    return {duration, delay, easing}; }  export function copyObj(     obj: {[key: string]: any}, destination: {[key: string]: any} = {}): {[key: string]: any} {   Object.keys(obj).forEach(prop => {     destination[prop] = obj[prop];   });   return destination; }  export function convertToMap(obj: ɵStyleData): ɵStyleDataMap {   const styleMap: ɵStyleDataMap = new Map();   Object.keys(obj).forEach(prop => {     const val = obj[prop];     styleMap.set(prop, val);   });   return styleMap; }  export function normalizeKeyframes(keyframes: Array<ɵStyleData>|                                    Array<ɵStyleDataMap>): Array<ɵStyleDataMap> {   if (!keyframes.length) {     return [];   }   if (keyframes[0] instanceof Map) {     return keyframes as Array<ɵStyleDataMap>;   }   return keyframes.map(kf => convertToMap(kf as ɵStyleData)); }  export function normalizeStyles(styles: ɵStyleDataMap|Array<ɵStyleDataMap>): ɵStyleDataMap {   const normalizedStyles: ɵStyleDataMap = new Map();   if (Array.isArray(styles)) {     styles.forEach(data => copyStyles(data, normalizedStyles));   } else {     copyStyles(styles, normalizedStyles);   }   return normalizedStyles; }  export function copyStyles(     styles: ɵStyleDataMap, destination: ɵStyleDataMap = new Map(),     backfill?: ɵStyleDataMap): ɵStyleDataMap {   if (backfill) {     for (let [prop, val] of backfill) {       destination.set(prop, val);     }   }   for (let [prop, val] of styles) {     destination.set(prop, val);   }   return destination; }  function getStyleAttributeString(element: any, key: string, value: string) {   // Return the key-value pair string to be added to the style attribute for the   // given CSS style key.   if (value) {     return key + ':' + value + ';';   } else {     return '';   } }  function writeStyleAttribute(element: any) {   // Read the style property of the element and manually reflect it to the   // style attribute. This is needed because Domino on platform-server doesn't   // understand the full set of allowed CSS properties and doesn't reflect some   // of them automatically.   let styleAttrValue = '';   for (let i = 0; i < element.style.length; i++) {     const key = element.style.item(i);     styleAttrValue += getStyleAttributeString(element, key, element.style.getPropertyValue(key));   }   for (const key in element.style) {     // Skip internal Domino properties that don't need to be reflected.     if (!element.style.hasOwnProperty(key) || key.startsWith('_')) {       continue;     }     const dashKey = camelCaseToDashCase(key);     styleAttrValue += getStyleAttributeString(element, dashKey, element.style[key]);   }   element.setAttribute('style', styleAttrValue); }  export function setStyles(element: any, styles: ɵStyleDataMap, formerStyles?: ɵStyleDataMap) {   if (element['style']) {     styles.forEach((val, prop) => {       const camelProp = dashCaseToCamelCase(prop);       if (formerStyles && !formerStyles.has(prop)) {         formerStyles.set(prop, element.style[camelProp]);       }       element.style[camelProp] = val;     });     // On the server set the 'style' attribute since it's not automatically reflected.     if (isNode()) {       writeStyleAttribute(element);     }   } }  export function eraseStyles(element: any, styles: ɵStyleDataMap) {   if (element['style']) {     styles.forEach((_, prop) => {       const camelProp = dashCaseToCamelCase(prop);       element.style[camelProp] = '';     });     // On the server set the 'style' attribute since it's not automatically reflected.     if (isNode()) {       writeStyleAttribute(element);     }   } }  export function normalizeAnimationEntry(steps: AnimationMetadata|                                         AnimationMetadata[]): AnimationMetadata {   if (Array.isArray(steps)) {     if (steps.length == 1) return steps[0];     return sequence(steps);   }   return steps as AnimationMetadata; }  export function validateStyleParams(     value: string|number|null|undefined, options: AnimationOptions, errors: Error[]) {   const params = options.params || {};   const matches = extractStyleParams(value);   if (matches.length) {     matches.forEach(varName => {       if (!params.hasOwnProperty(varName)) {         errors.push(invalidStyleParams(varName));       }     });   } }  const PARAM_REGEX =     new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g'); export function extractStyleParams(value: string|number|null|undefined): string[] {   let params: string[] = [];   if (typeof value === 'string') {     let match: any;     while (match = PARAM_REGEX.exec(value)) {       params.push(match[1] as string);     }     PARAM_REGEX.lastIndex = 0;   }   return params; }  export function interpolateParams(     value: string|number, params: {[name: string]: any}, errors: Error[]): string|number {   const original = value.toString();   const str = original.replace(PARAM_REGEX, (_, varName) => {     let localVal = params[varName];     // this means that the value was never overridden by the data passed in by the user     if (localVal == null) {       errors.push(invalidParamValue(varName));       localVal = '';     }     return localVal.toString();   });    // we do this to assert that numeric values stay as they are   return str == original ? value : str; }  export function iteratorToArray(iterator: any): any[] {   const arr: any[] = [];   let item = iterator.next();   while (!item.done) {     arr.push(item.value);     item = iterator.next();   }   return arr; }  const DASH_CASE_REGEXP = /-+([a-z0-9])/g; export function dashCaseToCamelCase(input: string): string {   return input.replace(DASH_CASE_REGEXP, (...m: any[]) => m[1].toUpperCase()); }  export function camelCaseToDashCase(input: string): string {   return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); }  export function allowPreviousPlayerStylesMerge(duration: number, delay: number) {   return duration === 0 || delay === 0; }  export function balancePreviousStylesIntoKeyframes(     element: any, keyframes: Array<ɵStyleDataMap>, previousStyles: ɵStyleDataMap) {   if (previousStyles.size && keyframes.length) {     let startingKeyframe = keyframes[0];     let missingStyleProps: string[] = [];     previousStyles.forEach((val, prop) => {       if (!startingKeyframe.has(prop)) {         missingStyleProps.push(prop);       }       startingKeyframe.set(prop, val);     });      if (missingStyleProps.length) {       for (let i = 1; i < keyframes.length; i++) {         let kf = keyframes[i];         missingStyleProps.forEach(prop => kf.set(prop, computeStyle(element, prop)));       }     }   }   return keyframes; }  export function visitDslNode(     visitor: AnimationDslVisitor, node: AnimationMetadata, context: any): any; export function visitDslNode(     visitor: AnimationAstVisitor, node: AnimationAst<AnimationMetadataType>, context: any): any; export function visitDslNode(visitor: any, node: any, context: any): any {   switch (node.type) {     case AnimationMetadataType.Trigger:       return visitor.visitTrigger(node, context);     case AnimationMetadataType.State:       return visitor.visitState(node, context);     case AnimationMetadataType.Transition:       return visitor.visitTransition(node, context);     case AnimationMetadataType.Sequence:       return visitor.visitSequence(node, context);     case AnimationMetadataType.Group:       return visitor.visitGroup(node, context);     case AnimationMetadataType.Animate:       return visitor.visitAnimate(node, context);     case AnimationMetadataType.Keyframes:       return visitor.visitKeyframes(node, context);     case AnimationMetadataType.Style:       return visitor.visitStyle(node, context);     case AnimationMetadataType.Reference:       return visitor.visitReference(node, context);     case AnimationMetadataType.AnimateChild:       return visitor.visitAnimateChild(node, context);     case AnimationMetadataType.AnimateRef:       return visitor.visitAnimateRef(node, context);     case AnimationMetadataType.Query:       return visitor.visitQuery(node, context);     case AnimationMetadataType.Stagger:       return visitor.visitStagger(node, context);     default:       throw invalidNodeType(node.type);   } }  export function computeStyle(element: any, prop: string): string {   return (<any>window.getComputedStyle(element))[prop]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationPlayer, AUTO_STYLE, NoopAnimationPlayer, ɵStyleDataMap} from '@angular/animations'; import {AnimationDriver, ɵallowPreviousPlayerStylesMerge as allowPreviousPlayerStylesMerge, ɵcontainsElement as containsElement, ɵgetParentElement as getParentElement, ɵinvokeQuery as invokeQuery, ɵnormalizeKeyframes as normalizeKeyframes, ɵvalidateStyleProperty as validateStyleProperty,} from '@angular/animations/browser';  import {validateWebAnimatableStyleProperty} from '../../src/render/shared'; import {camelCaseToDashCase} from '../../src/util';  /**  * @publicApi  */ export class MockAnimationDriver implements AnimationDriver {   static log: AnimationPlayer[] = [];    validateStyleProperty(prop: string): boolean {     return validateStyleProperty(prop);   }    validateAnimatableStyleProperty(prop: string): boolean {     const cssProp = camelCaseToDashCase(prop);     return validateWebAnimatableStyleProperty(cssProp);   }    matchesElement(_element: any, _selector: string): boolean {     return false;   }    containsElement(elm1: any, elm2: any): boolean {     return containsElement(elm1, elm2);   }    getParentElement(element: unknown): unknown {     return getParentElement(element);   }    query(element: any, selector: string, multi: boolean): any[] {     return invokeQuery(element, selector, multi);   }    computeStyle(element: any, prop: string, defaultValue?: string): string {     return defaultValue || '';   }    animate(       element: any, keyframes: Array<ɵStyleDataMap>, duration: number, delay: number,       easing: string, previousPlayers: any[] = []): MockAnimationPlayer {     const player =         new MockAnimationPlayer(element, keyframes, duration, delay, easing, previousPlayers);     MockAnimationDriver.log.push(<AnimationPlayer>player);     return player;   } }  /**  * @publicApi  */ export class MockAnimationPlayer extends NoopAnimationPlayer {   private __finished = false;   private __started = false;   public previousStyles: ɵStyleDataMap = new Map();   private _onInitFns: (() => any)[] = [];   public currentSnapshot: ɵStyleDataMap = new Map();   private _keyframes: Array<ɵStyleDataMap> = [];    constructor(       public element: any, public keyframes: Array<ɵStyleDataMap>, public duration: number,       public delay: number, public easing: string, public previousPlayers: any[]) {     super(duration, delay);      this._keyframes = normalizeKeyframes(keyframes);      if (allowPreviousPlayerStylesMerge(duration, delay)) {       previousPlayers.forEach(player => {         if (player instanceof MockAnimationPlayer) {           const styles = player.currentSnapshot;           styles.forEach((val, prop) => this.previousStyles.set(prop, val));         }       });     }   }    /* @internal */   onInit(fn: () => any) {     this._onInitFns.push(fn);   }    /* @internal */   override init() {     super.init();     this._onInitFns.forEach(fn => fn());     this._onInitFns = [];   }    override reset() {     super.reset();     this.__started = false;   }    override finish(): void {     super.finish();     this.__finished = true;   }    override destroy(): void {     super.destroy();     this.__finished = true;   }    /* @internal */   triggerMicrotask() {}    override play(): void {     super.play();     this.__started = true;   }    override hasStarted() {     return this.__started;   }    beforeDestroy() {     const captures: ɵStyleDataMap = new Map();      this.previousStyles.forEach((val, prop) => captures.set(prop, val));      if (this.hasStarted()) {       // when assembling the captured styles, it's important that       // we build the keyframe styles in the following order:       // {other styles within keyframes, ... previousStyles }       this._keyframes.forEach(kf => {         for (let [prop, val] of kf) {           if (prop !== 'offset') {             captures.set(prop, this.__finished ? val : AUTO_STYLE);           }         }       });     }      this.currentSnapshot = captures;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/testing'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verifcation. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["RuntimeError","normalizeKeyframes","PRE_STYLE","validateStyleProperty","containsElement","getParentElement","invokeQuery","allowPreviousPlayerStylesMerge"],"mappings":"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"}
-------------------- SECTION 163 --------------------
{"version":3,"file":"browser.mjs","sources":["../../../../../../packages/animations/browser/src/error_helpers.ts","../../../../../../packages/animations/browser/src/render/web_animations/animatable_props_set.ts","../../../../../../packages/animations/browser/src/render/shared.ts","../../../../../../packages/animations/browser/src/render/animation_driver.ts","../../../../../../packages/animations/browser/src/util.ts","../../../../../../packages/animations/browser/src/warning_helpers.ts","../../../../../../packages/animations/browser/src/dsl/animation_transition_expr.ts","../../../../../../packages/animations/browser/src/dsl/animation_ast_builder.ts","../../../../../../packages/animations/browser/src/dsl/animation_timeline_instruction.ts","../../../../../../packages/animations/browser/src/dsl/element_instruction_map.ts","../../../../../../packages/animations/browser/src/dsl/animation_timeline_builder.ts","../../../../../../packages/animations/browser/src/dsl/animation.ts","../../../../../../packages/animations/browser/src/dsl/style_normalization/animation_style_normalizer.ts","../../../../../../packages/animations/browser/src/dsl/style_normalization/web_animations_style_normalizer.ts","../../../../../../packages/animations/browser/src/dsl/animation_transition_instruction.ts","../../../../../../packages/animations/browser/src/dsl/animation_transition_factory.ts","../../../../../../packages/animations/browser/src/dsl/animation_trigger.ts","../../../../../../packages/animations/browser/src/render/timeline_animation_engine.ts","../../../../../../packages/animations/browser/src/render/transition_animation_engine.ts","../../../../../../packages/animations/browser/src/render/animation_engine_next.ts","../../../../../../packages/animations/browser/src/render/special_cased_styles.ts","../../../../../../packages/animations/browser/src/render/web_animations/web_animations_player.ts","../../../../../../packages/animations/browser/src/render/web_animations/web_animations_driver.ts","../../../../../../packages/animations/browser/src/browser.ts","../../../../../../packages/animations/browser/public_api.ts","../../../../../../packages/animations/browser/index.ts","../../../../../../packages/animations/browser/browser.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from './errors';  const LINE_START = '\  - ';  export function invalidTimingValue(exp: string|number): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_TIMING_VALUE,       ngDevMode && `The provided timing value \"${exp}\" is invalid.`); }  export function negativeStepValue(): Error {   return new RuntimeError(       RuntimeErrorCode.NEGATIVE_STEP_VALUE,       ngDevMode && 'Duration values below 0 are not allowed for this animation step.'); }  export function negativeDelayValue(): Error {   return new RuntimeError(       RuntimeErrorCode.NEGATIVE_DELAY_VALUE,       ngDevMode && 'Delay values below 0 are not allowed for this animation step.'); }  export function invalidStyleParams(varName: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STYLE_PARAMS,       ngDevMode &&           `Unable to resolve the local animation param ${varName} in the given list of values`); }  export function invalidParamValue(varName: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_PARAM_VALUE,       ngDevMode && `Please provide a value for the animation param ${varName}`); }  export function invalidNodeType(nodeType: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_NODE_TYPE,       ngDevMode && `Unable to resolve animation metadata node #${nodeType}`); }  export function invalidCssUnitValue(userProvidedProperty: string, value: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_CSS_UNIT_VALUE,       ngDevMode && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`); }  export function invalidTrigger(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_TRIGGER,       ngDevMode &&           'animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))'); }  export function invalidDefinition(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_DEFINITION,       ngDevMode && 'only state() and transition() definitions can sit inside of a trigger()'); }  export function invalidState(metadataName: string, missingSubs: string[]): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STATE,       ngDevMode &&           `state(\"${               metadataName}\", ...) must define default values for all the following style substitutions: ${               missingSubs.join(', ')}`); }  export function invalidStyleValue(value: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STYLE_VALUE,       ngDevMode && `The provided style string value ${value} is not allowed.`); }  export function invalidProperty(prop: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_PROPERTY,       ngDevMode &&           `The provided animation property \"${               prop}\" is not a supported CSS property for animations`); }  export function invalidParallelAnimation(     prop: string, firstStart: number, firstEnd: number, secondStart: number,     secondEnd: number): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_PARALLEL_ANIMATION,       ngDevMode &&           `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${               firstEnd}ms\" is also being animated in a parallel animation between the times of \"${               secondStart}ms\" and \"${secondEnd}ms\"`); }  export function invalidKeyframes(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_KEYFRAMES,       ngDevMode && `keyframes() must be placed inside of a call to animate()`); }  export function invalidOffset(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_OFFSET,       ngDevMode && `Please ensure that all keyframe offsets are between 0 and 1`); }  export function keyframeOffsetsOutOfOrder(): Error {   return new RuntimeError(       RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER,       ngDevMode && `Please ensure that all keyframe offsets are in order`); }  export function keyframesMissingOffsets(): Error {   return new RuntimeError(       RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS,       ngDevMode && `Not all style() steps within the declared keyframes() contain offsets`); }  export function invalidStagger(): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_STAGGER,       ngDevMode && `stagger() can only be used inside of query()`); }  export function invalidQuery(selector: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_QUERY,       ngDevMode &&           `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${               selector}\", { optional: true })\\` if you wish to allow this.)`); }  export function invalidExpression(expr: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_EXPRESSION,       ngDevMode && `The provided transition expression \"${expr}\" is not supported`); }  export function invalidTransitionAlias(alias: string): Error {   return new RuntimeError(       RuntimeErrorCode.INVALID_TRANSITION_ALIAS,       ngDevMode && `The transition alias value \"${alias}\" is not supported`); }  export function validationFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.VALIDATION_FAILED,       ngDevMode && `animation validation failed:\ ${errors.map(err => err.message).join('\ ')}`); }  export function buildingFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.BUILDING_FAILED,       ngDevMode && `animation building failed:\ ${errors.map(err => err.message).join('\ ')}`); }  export function triggerBuildFailed(name: string, errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRIGGER_BUILD_FAILED,       ngDevMode &&           `The animation trigger \"${name}\" has failed to build due to the following errors:\  - ${               errors.map(err => err.message).join('\  - ')}`); }  export function animationFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.ANIMATION_FAILED,       ngDevMode &&           `Unable to animate due to the following errors:${LINE_START}${               errors.map(err => err.message).join(LINE_START)}`); }  export function registerFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.REGISTRATION_FAILED,       ngDevMode &&           `Unable to build the animation due to the following errors: ${               errors.map(err => err.message).join('\ ')}`); }  export function missingOrDestroyedAnimation(): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION,       ngDevMode && 'The requested animation doesn\\'t exist or has already been destroyed'); }  export function createAnimationFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.CREATE_ANIMATION_FAILED,       ngDevMode &&           `Unable to create the animation due to the following errors:${               errors.map(err => err.message).join('\ ')}`); }  export function missingPlayer(id: string): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_PLAYER,       ngDevMode && `Unable to find the timeline player referenced by ${id}`); }  export function missingTrigger(phase: string, name: string): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_TRIGGER,       ngDevMode &&           `Unable to listen on the animation trigger event \"${               phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`); }  export function missingEvent(name: string): Error {   return new RuntimeError(       RuntimeErrorCode.MISSING_EVENT,       ngDevMode &&           `Unable to listen on the animation trigger \"${               name}\" because the provided event is undefined!`); }  export function unsupportedTriggerEvent(phase: string, name: string): Error {   return new RuntimeError(       RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT,       ngDevMode &&           `The provided animation trigger event \"${phase}\" for the animation trigger \"${               name}\" is not supported!`); }  export function unregisteredTrigger(name: string): Error {   return new RuntimeError(       RuntimeErrorCode.UNREGISTERED_TRIGGER,       ngDevMode && `The provided animation trigger \"${name}\" has not been registered!`); }  export function triggerTransitionsFailed(errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED,       ngDevMode &&           `Unable to process animations due to the following failed trigger transitions\  ${               errors.map(err => err.message).join('\ ')}`); }  export function triggerParsingFailed(name: string, errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRIGGER_PARSING_FAILED,       ngDevMode &&           `Animation parsing for the ${name} trigger have failed:${LINE_START}${               errors.map(err => err.message).join(LINE_START)}`); }  export function transitionFailed(name: string, errors: Error[]): Error {   return new RuntimeError(       RuntimeErrorCode.TRANSITION_FAILED,       ngDevMode && `@${name} has failed due to:\  ${errors.map(err => err.message).join('\ - ')}`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Set of all animatable CSS properties  *  * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties  */ export const ANIMATABLE_PROP_SET = new Set([   '-moz-outline-radius',   '-moz-outline-radius-bottomleft',   '-moz-outline-radius-bottomright',   '-moz-outline-radius-topleft',   '-moz-outline-radius-topright',   '-ms-grid-columns',   '-ms-grid-rows',   '-webkit-line-clamp',   '-webkit-text-fill-color',   '-webkit-text-stroke',   '-webkit-text-stroke-color',   'accent-color',   'all',   'backdrop-filter',   'background',   'background-color',   'background-position',   'background-size',   'block-size',   'border',   'border-block-end',   'border-block-end-color',   'border-block-end-width',   'border-block-start',   'border-block-start-color',   'border-block-start-width',   'border-bottom',   'border-bottom-color',   'border-bottom-left-radius',   'border-bottom-right-radius',   'border-bottom-width',   'border-color',   'border-end-end-radius',   'border-end-start-radius',   'border-image-outset',   'border-image-slice',   'border-image-width',   'border-inline-end',   'border-inline-end-color',   'border-inline-end-width',   'border-inline-start',   'border-inline-start-color',   'border-inline-start-width',   'border-left',   'border-left-color',   'border-left-width',   'border-radius',   'border-right',   'border-right-color',   'border-right-width',   'border-start-end-radius',   'border-start-start-radius',   'border-top',   'border-top-color',   'border-top-left-radius',   'border-top-right-radius',   'border-top-width',   'border-width',   'bottom',   'box-shadow',   'caret-color',   'clip',   'clip-path',   'color',   'column-count',   'column-gap',   'column-rule',   'column-rule-color',   'column-rule-width',   'column-width',   'columns',   'filter',   'flex',   'flex-basis',   'flex-grow',   'flex-shrink',   'font',   'font-size',   'font-size-adjust',   'font-stretch',   'font-variation-settings',   'font-weight',   'gap',   'grid-column-gap',   'grid-gap',   'grid-row-gap',   'grid-template-columns',   'grid-template-rows',   'height',   'inline-size',   'input-security',   'inset',   'inset-block',   'inset-block-end',   'inset-block-start',   'inset-inline',   'inset-inline-end',   'inset-inline-start',   'left',   'letter-spacing',   'line-clamp',   'line-height',   'margin',   'margin-block-end',   'margin-block-start',   'margin-bottom',   'margin-inline-end',   'margin-inline-start',   'margin-left',   'margin-right',   'margin-top',   'mask',   'mask-border',   'mask-position',   'mask-size',   'max-block-size',   'max-height',   'max-inline-size',   'max-lines',   'max-width',   'min-block-size',   'min-height',   'min-inline-size',   'min-width',   'object-position',   'offset',   'offset-anchor',   'offset-distance',   'offset-path',   'offset-position',   'offset-rotate',   'opacity',   'order',   'outline',   'outline-color',   'outline-offset',   'outline-width',   'padding',   'padding-block-end',   'padding-block-start',   'padding-bottom',   'padding-inline-end',   'padding-inline-start',   'padding-left',   'padding-right',   'padding-top',   'perspective',   'perspective-origin',   'right',   'rotate',   'row-gap',   'scale',   'scroll-margin',   'scroll-margin-block',   'scroll-margin-block-end',   'scroll-margin-block-start',   'scroll-margin-bottom',   'scroll-margin-inline',   'scroll-margin-inline-end',   'scroll-margin-inline-start',   'scroll-margin-left',   'scroll-margin-right',   'scroll-margin-top',   'scroll-padding',   'scroll-padding-block',   'scroll-padding-block-end',   'scroll-padding-block-start',   'scroll-padding-bottom',   'scroll-padding-inline',   'scroll-padding-inline-end',   'scroll-padding-inline-start',   'scroll-padding-left',   'scroll-padding-right',   'scroll-padding-top',   'scroll-snap-coordinate',   'scroll-snap-destination',   'scrollbar-color',   'shape-image-threshold',   'shape-margin',   'shape-outside',   'tab-size',   'text-decoration',   'text-decoration-color',   'text-decoration-thickness',   'text-emphasis',   'text-emphasis-color',   'text-indent',   'text-shadow',   'text-underline-offset',   'top',   'transform',   'transform-origin',   'translate',   'vertical-align',   'visibility',   'width',   'word-spacing',   'z-index',   'zoom', ]); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationEvent, AnimationPlayer, AUTO_STYLE, NoopAnimationPlayer, ɵAnimationGroupPlayer, ɵPRE_STYLE as PRE_STYLE, ɵStyleDataMap} from '@angular/animations';  import {AnimationStyleNormalizer} from '../../src/dsl/style_normalization/animation_style_normalizer'; import {AnimationDriver} from '../../src/render/animation_driver'; import {animationFailed} from '../error_helpers';  import {ANIMATABLE_PROP_SET} from './web_animations/animatable_props_set';  // We don't include ambient node types here since @angular/animations/browser // is meant to target the browser so technically it should not depend on node // types. `process` is just declared locally here as a result. declare const process: any;  export function isBrowser(): boolean {   return (typeof window !== 'undefined' && typeof window.document !== 'undefined'); }  export function isNode(): boolean {   // Checking only for `process` isn't enough to identify whether or not we're in a Node   // environment, because Webpack by default will polyfill the `process`. While we can discern   // that Webpack polyfilled it by looking at `process.browser`, it's very Webpack-specific and   // might not be future-proof. Instead we look at the stringified version of `process` which   // is `[object process]` in Node and `[object Object]` when polyfilled.   return typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; }  export function optimizeGroupPlayer(players: AnimationPlayer[]): AnimationPlayer {   switch (players.length) {     case 0:       return new NoopAnimationPlayer();     case 1:       return players[0];     default:       return new ɵAnimationGroupPlayer(players);   } }  export function normalizeKeyframes(     driver: AnimationDriver, normalizer: AnimationStyleNormalizer, element: any,     keyframes: Array<ɵStyleDataMap>, preStyles: ɵStyleDataMap = new Map(),     postStyles: ɵStyleDataMap = new Map()): Array<ɵStyleDataMap> {   const errors: Error[] = [];   const normalizedKeyframes: Array<ɵStyleDataMap> = [];   let previousOffset = -1;   let previousKeyframe: ɵStyleDataMap|null = null;   keyframes.forEach(kf => {     const offset = kf.get('offset') as number;     const isSameOffset = offset == previousOffset;     const normalizedKeyframe: ɵStyleDataMap = (isSameOffset && previousKeyframe) || new Map();     kf.forEach((val, prop) => {       let normalizedProp = prop;       let normalizedValue = val;       if (prop !== 'offset') {         normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);         switch (normalizedValue) {           case PRE_STYLE:             normalizedValue = preStyles.get(prop)!;             break;            case AUTO_STYLE:             normalizedValue = postStyles.get(prop)!;             break;            default:             normalizedValue =                 normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);             break;         }       }       normalizedKeyframe.set(normalizedProp, normalizedValue);     });     if (!isSameOffset) {       normalizedKeyframes.push(normalizedKeyframe);     }     previousKeyframe = normalizedKeyframe;     previousOffset = offset;   });   if (errors.length) {     throw animationFailed(errors);   }    return normalizedKeyframes; }  export function listenOnPlayer(     player: AnimationPlayer, eventName: string, event: AnimationEvent|undefined,     callback: (event: any) => any) {   switch (eventName) {     case 'start':       player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));       break;     case 'done':       player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));       break;     case 'destroy':       player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));       break;   } }  export function copyAnimationEvent(     e: AnimationEvent, phaseName: string, player: AnimationPlayer): AnimationEvent {   const totalTime = player.totalTime;   const disabled = (player as any).disabled ? true : false;   const event = makeAnimationEvent(       e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName,       totalTime == undefined ? e.totalTime : totalTime, disabled);   const data = (e as any)['_data'];   if (data != null) {     (event as any)['_data'] = data;   }   return event; }  export function makeAnimationEvent(     element: any, triggerName: string, fromState: string, toState: string, phaseName: string = '',     totalTime: number = 0, disabled?: boolean): AnimationEvent {   return {element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled}; }  export function getOrSetDefaultValue<T, V>(map: Map<T, V>, key: T, defaultValue: V) {   let value = map.get(key);   if (!value) {     map.set(key, value = defaultValue);   }   return value; }  export function parseTimelineCommand(command: string): [string, string] {   const separatorPos = command.indexOf(':');   const id = command.substring(1, separatorPos);   const action = command.slice(separatorPos + 1);   return [id, action]; }  let _contains: (elm1: any, elm2: any) => boolean = (elm1: any, elm2: any) => false; let _query: (element: any, selector: string, multi: boolean) => any[] =     (element: any, selector: string, multi: boolean) => {       return [];     }; let _documentElement: unknown|null = null;  export function getParentElement(element: any): unknown|null {   const parent = element.parentNode || element.host;  // consider host to support shadow DOM   if (parent === _documentElement) {     return null;   }   return parent; }  // Define utility methods for browsers and platform-server(domino) where Element // and utility methods exist. const _isNode = isNode(); if (_isNode || typeof Element !== 'undefined') {   if (!isBrowser()) {     _contains = (elm1, elm2) => elm1.contains(elm2);   } else {     // Read the document element in an IIFE that's been marked pure to avoid a top-level property     // read that may prevent tree-shaking.     _documentElement = /* @__PURE__ */ (() => document.documentElement)();     _contains = (elm1, elm2) => {       while (elm2) {         if (elm2 === elm1) {           return true;         }         elm2 = getParentElement(elm2);       }       return false;     };   }    _query = (element: any, selector: string, multi: boolean): any[] => {     if (multi) {       return Array.from(element.querySelectorAll(selector));     }     const elem = element.querySelector(selector);     return elem ? [elem] : [];   }; }  function containsVendorPrefix(prop: string): boolean {   // Webkit is the only real popular vendor prefix nowadays   // cc: http://shouldiprefix.com/   return prop.substring(1, 6) == 'ebkit';  // webkit or Webkit }  let _CACHED_BODY: {style: any}|null = null; let _IS_WEBKIT = false; export function validateStyleProperty(prop: string): boolean {   if (!_CACHED_BODY) {     _CACHED_BODY = getBodyNode() || {};     _IS_WEBKIT = _CACHED_BODY!.style ? ('WebkitAppearance' in _CACHED_BODY!.style) : false;   }    let result = true;   if (_CACHED_BODY!.style && !containsVendorPrefix(prop)) {     result = prop in _CACHED_BODY!.style;     if (!result && _IS_WEBKIT) {       const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1);       result = camelProp in _CACHED_BODY!.style;     }   }    return result; }  export function validateWebAnimatableStyleProperty(prop: string): boolean {   return ANIMATABLE_PROP_SET.has(prop); }  export function getBodyNode(): any|null {   if (typeof document != 'undefined') {     return document.body;   }   return null; }  export const containsElement = _contains; export const invokeQuery = _query;  export function hypenatePropsKeys(original: ɵStyleDataMap): ɵStyleDataMap {   const newMap: ɵStyleDataMap = new Map();   original.forEach((val, prop) => {     const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');     newMap.set(newProp, val);   });   return newMap; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationPlayer, NoopAnimationPlayer} from '@angular/animations'; import {Injectable} from '@angular/core';  import {containsElement, getParentElement, invokeQuery, validateStyleProperty} from './shared';  /**  * @publicApi  */ @Injectable() export class NoopAnimationDriver implements AnimationDriver {   validateStyleProperty(prop: string): boolean {     return validateStyleProperty(prop);   }    matchesElement(_element: any, _selector: string): boolean {     // This method is deprecated and no longer in use so we return false.     return false;   }    containsElement(elm1: any, elm2: any): boolean {     return containsElement(elm1, elm2);   }    getParentElement(element: unknown): unknown {     return getParentElement(element);   }    query(element: any, selector: string, multi: boolean): any[] {     return invokeQuery(element, selector, multi);   }    computeStyle(element: any, prop: string, defaultValue?: string): string {     return defaultValue || '';   }    animate(       element: any, keyframes: Array<Map<string, string|number>>, duration: number, delay: number,       easing: string, previousPlayers: any[] = [],       scrubberAccessRequested?: boolean): AnimationPlayer {     return new NoopAnimationPlayer(duration, delay);   } }  /**  * @publicApi  */ export abstract class AnimationDriver {   static NOOP: AnimationDriver = (/* @__PURE__ */ new NoopAnimationDriver());    abstract validateStyleProperty(prop: string): boolean;    abstract validateAnimatableStyleProperty?: (prop: string) => boolean;    /**    * @deprecated No longer in use. Will be removed.    */   abstract matchesElement(element: any, selector: string): boolean;    abstract containsElement(elm1: any, elm2: any): boolean;    /**    * Obtains the parent element, if any. `null` is returned if the element does not have a parent.    */   abstract getParentElement(element: unknown): unknown;    abstract query(element: any, selector: string, multi: boolean): any[];    abstract computeStyle(element: any, prop: string, defaultValue?: string): string;    abstract animate(       element: any, keyframes: Array<Map<string, string|number>>, duration: number, delay: number,       easing?: string|null, previousPlayers?: any[], scrubberAccessRequested?: boolean): any; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimateTimings, AnimationMetadata, AnimationMetadataType, AnimationOptions, sequence, ɵStyleData, ɵStyleDataMap} from '@angular/animations';  import {Ast as AnimationAst, AstVisitor as AnimationAstVisitor} from './dsl/animation_ast'; import {AnimationDslVisitor} from './dsl/animation_dsl_visitor'; import {invalidNodeType, invalidParamValue, invalidStyleParams, invalidTimingValue, negativeDelayValue, negativeStepValue} from './error_helpers'; import {isNode} from './render/shared';  export const ONE_SECOND = 1000;  export const SUBSTITUTION_EXPR_START = '{{'; export const SUBSTITUTION_EXPR_END = '}}'; export const ENTER_CLASSNAME = 'ng-enter'; export const LEAVE_CLASSNAME = 'ng-leave'; export const NG_TRIGGER_CLASSNAME = 'ng-trigger'; export const NG_TRIGGER_SELECTOR = '.ng-trigger'; export const NG_ANIMATING_CLASSNAME = 'ng-animating'; export const NG_ANIMATING_SELECTOR = '.ng-animating';  export function resolveTimingValue(value: string|number) {   if (typeof value == 'number') return value;    const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);   if (!matches || matches.length < 2) return 0;    return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]); }  function _convertTimeValueToMS(value: number, unit: string): number {   switch (unit) {     case 's':       return value * ONE_SECOND;     default:  // ms or something else       return value;   } }  export function resolveTiming(     timings: string|number|AnimateTimings, errors: Error[], allowNegativeValues?: boolean) {   return timings.hasOwnProperty('duration') ?       <AnimateTimings>timings :       parseTimeExpression(<string|number>timings, errors, allowNegativeValues); }  function parseTimeExpression(     exp: string|number, errors: Error[], allowNegativeValues?: boolean): AnimateTimings {   const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;   let duration: number;   let delay: number = 0;   let easing: string = '';   if (typeof exp === 'string') {     const matches = exp.match(regex);     if (matches === null) {       errors.push(invalidTimingValue(exp));       return {duration: 0, delay: 0, easing: ''};     }      duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);      const delayMatch = matches[3];     if (delayMatch != null) {       delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);     }      const easingVal = matches[5];     if (easingVal) {       easing = easingVal;     }   } else {     duration = exp;   }    if (!allowNegativeValues) {     let containsErrors = false;     let startIndex = errors.length;     if (duration < 0) {       errors.push(negativeStepValue());       containsErrors = true;     }     if (delay < 0) {       errors.push(negativeDelayValue());       containsErrors = true;     }     if (containsErrors) {       errors.splice(startIndex, 0, invalidTimingValue(exp));     }   }    return {duration, delay, easing}; }  export function copyObj(     obj: {[key: string]: any}, destination: {[key: string]: any} = {}): {[key: string]: any} {   Object.keys(obj).forEach(prop => {     destination[prop] = obj[prop];   });   return destination; }  export function convertToMap(obj: ɵStyleData): ɵStyleDataMap {   const styleMap: ɵStyleDataMap = new Map();   Object.keys(obj).forEach(prop => {     const val = obj[prop];     styleMap.set(prop, val);   });   return styleMap; }  export function normalizeKeyframes(keyframes: Array<ɵStyleData>|                                    Array<ɵStyleDataMap>): Array<ɵStyleDataMap> {   if (!keyframes.length) {     return [];   }   if (keyframes[0] instanceof Map) {     return keyframes as Array<ɵStyleDataMap>;   }   return keyframes.map(kf => convertToMap(kf as ɵStyleData)); }  export function normalizeStyles(styles: ɵStyleDataMap|Array<ɵStyleDataMap>): ɵStyleDataMap {   const normalizedStyles: ɵStyleDataMap = new Map();   if (Array.isArray(styles)) {     styles.forEach(data => copyStyles(data, normalizedStyles));   } else {     copyStyles(styles, normalizedStyles);   }   return normalizedStyles; }  export function copyStyles(     styles: ɵStyleDataMap, destination: ɵStyleDataMap = new Map(),     backfill?: ɵStyleDataMap): ɵStyleDataMap {   if (backfill) {     for (let [prop, val] of backfill) {       destination.set(prop, val);     }   }   for (let [prop, val] of styles) {     destination.set(prop, val);   }   return destination; }  function getStyleAttributeString(element: any, key: string, value: string) {   // Return the key-value pair string to be added to the style attribute for the   // given CSS style key.   if (value) {     return key + ':' + value + ';';   } else {     return '';   } }  function writeStyleAttribute(element: any) {   // Read the style property of the element and manually reflect it to the   // style attribute. This is needed because Domino on platform-server doesn't   // understand the full set of allowed CSS properties and doesn't reflect some   // of them automatically.   let styleAttrValue = '';   for (let i = 0; i < element.style.length; i++) {     const key = element.style.item(i);     styleAttrValue += getStyleAttributeString(element, key, element.style.getPropertyValue(key));   }   for (const key in element.style) {     // Skip internal Domino properties that don't need to be reflected.     if (!element.style.hasOwnProperty(key) || key.startsWith('_')) {       continue;     }     const dashKey = camelCaseToDashCase(key);     styleAttrValue += getStyleAttributeString(element, dashKey, element.style[key]);   }   element.setAttribute('style', styleAttrValue); }  export function setStyles(element: any, styles: ɵStyleDataMap, formerStyles?: ɵStyleDataMap) {   if (element['style']) {     styles.forEach((val, prop) => {       const camelProp = dashCaseToCamelCase(prop);       if (formerStyles && !formerStyles.has(prop)) {         formerStyles.set(prop, element.style[camelProp]);       }       element.style[camelProp] = val;     });     // On the server set the 'style' attribute since it's not automatically reflected.     if (isNode()) {       writeStyleAttribute(element);     }   } }  export function eraseStyles(element: any, styles: ɵStyleDataMap) {   if (element['style']) {     styles.forEach((_, prop) => {       const camelProp = dashCaseToCamelCase(prop);       element.style[camelProp] = '';     });     // On the server set the 'style' attribute since it's not automatically reflected.     if (isNode()) {       writeStyleAttribute(element);     }   } }  export function normalizeAnimationEntry(steps: AnimationMetadata|                                         AnimationMetadata[]): AnimationMetadata {   if (Array.isArray(steps)) {     if (steps.length == 1) return steps[0];     return sequence(steps);   }   return steps as AnimationMetadata; }  export function validateStyleParams(     value: string|number|null|undefined, options: AnimationOptions, errors: Error[]) {   const params = options.params || {};   const matches = extractStyleParams(value);   if (matches.length) {     matches.forEach(varName => {       if (!params.hasOwnProperty(varName)) {         errors.push(invalidStyleParams(varName));       }     });   } }  const PARAM_REGEX =     new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g'); export function extractStyleParams(value: string|number|null|undefined): string[] {   let params: string[] = [];   if (typeof value === 'string') {     let match: any;     while (match = PARAM_REGEX.exec(value)) {       params.push(match[1] as string);     }     PARAM_REGEX.lastIndex = 0;   }   return params; }  export function interpolateParams(     value: string|number, params: {[name: string]: any}, errors: Error[]): string|number {   const original = value.toString();   const str = original.replace(PARAM_REGEX, (_, varName) => {     let localVal = params[varName];     // this means that the value was never overridden by the data passed in by the user     if (localVal == null) {       errors.push(invalidParamValue(varName));       localVal = '';     }     return localVal.toString();   });    // we do this to assert that numeric values stay as they are   return str == original ? value : str; }  export function iteratorToArray(iterator: any): any[] {   const arr: any[] = [];   let item = iterator.next();   while (!item.done) {     arr.push(item.value);     item = iterator.next();   }   return arr; }  const DASH_CASE_REGEXP = /-+([a-z0-9])/g; export function dashCaseToCamelCase(input: string): string {   return input.replace(DASH_CASE_REGEXP, (...m: any[]) => m[1].toUpperCase()); }  export function camelCaseToDashCase(input: string): string {   return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); }  export function allowPreviousPlayerStylesMerge(duration: number, delay: number) {   return duration === 0 || delay === 0; }  export function balancePreviousStylesIntoKeyframes(     element: any, keyframes: Array<ɵStyleDataMap>, previousStyles: ɵStyleDataMap) {   if (previousStyles.size && keyframes.length) {     let startingKeyframe = keyframes[0];     let missingStyleProps: string[] = [];     previousStyles.forEach((val, prop) => {       if (!startingKeyframe.has(prop)) {         missingStyleProps.push(prop);       }       startingKeyframe.set(prop, val);     });      if (missingStyleProps.length) {       for (let i = 1; i < keyframes.length; i++) {         let kf = keyframes[i];         missingStyleProps.forEach(prop => kf.set(prop, computeStyle(element, prop)));       }     }   }   return keyframes; }  export function visitDslNode(     visitor: AnimationDslVisitor, node: AnimationMetadata, context: any): any; export function visitDslNode(     visitor: AnimationAstVisitor, node: AnimationAst<AnimationMetadataType>, context: any): any; export function visitDslNode(visitor: any, node: any, context: any): any {   switch (node.type) {     case AnimationMetadataType.Trigger:       return visitor.visitTrigger(node, context);     case AnimationMetadataType.State:       return visitor.visitState(node, context);     case AnimationMetadataType.Transition:       return visitor.visitTransition(node, context);     case AnimationMetadataType.Sequence:       return visitor.visitSequence(node, context);     case AnimationMetadataType.Group:       return visitor.visitGroup(node, context);     case AnimationMetadataType.Animate:       return visitor.visitAnimate(node, context);     case AnimationMetadataType.Keyframes:       return visitor.visitKeyframes(node, context);     case AnimationMetadataType.Style:       return visitor.visitStyle(node, context);     case AnimationMetadataType.Reference:       return visitor.visitReference(node, context);     case AnimationMetadataType.AnimateChild:       return visitor.visitAnimateChild(node, context);     case AnimationMetadataType.AnimateRef:       return visitor.visitAnimateRef(node, context);     case AnimationMetadataType.Query:       return visitor.visitQuery(node, context);     case AnimationMetadataType.Stagger:       return visitor.visitStagger(node, context);     default:       throw invalidNodeType(node.type);   } }  export function computeStyle(element: any, prop: string): string {   return (<any>window.getComputedStyle(element))[prop]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  function createListOfWarnings(warnings: string[]): string {   const LINE_START = '\  - ';   return `${LINE_START}${warnings.filter(Boolean).map(warning => warning).join(LINE_START)}`; }  export function warnValidation(warnings: string[]): void {   NG_DEV_MODE && console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`); }  export function warnTriggerBuild(name: string, warnings: string[]): void {   NG_DEV_MODE &&       console.warn(`The animation trigger \"${name}\" has built with the following warnings:${           createListOfWarnings(warnings)}`); }  export function warnRegister(warnings: string[]): void {   NG_DEV_MODE &&       console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`); }  export function triggerParsingWarnings(name: string, warnings: string[]): void {   NG_DEV_MODE &&       console.warn(`Animation parsing for the ${name} trigger presents the following warnings:${           createListOfWarnings(warnings)}`); }  export function pushUnrecognizedPropertiesWarning(warnings: string[], props: string[]): void {   if (props.length) {     warnings.push(`The following provided properties are not recognized: ${props.join(', ')}`);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {invalidExpression, invalidTransitionAlias} from '../error_helpers';  export const ANY_STATE = '*'; export declare type TransitionMatcherFn =     (fromState: any, toState: any, element: any, params: {[key: string]: any}) => boolean;  export function parseTransitionExpr(     transitionValue: string|TransitionMatcherFn, errors: Error[]): TransitionMatcherFn[] {   const expressions: TransitionMatcherFn[] = [];   if (typeof transitionValue == 'string') {     transitionValue.split(/\\s*,\\s*/).forEach(         str => parseInnerTransitionStr(str, expressions, errors));   } else {     expressions.push(<TransitionMatcherFn>transitionValue);   }   return expressions; }  function parseInnerTransitionStr(     eventStr: string, expressions: TransitionMatcherFn[], errors: Error[]) {   if (eventStr[0] == ':') {     const result = parseAnimationAlias(eventStr, errors);     if (typeof result == 'function') {       expressions.push(result);       return;     }     eventStr = result;   }    const match = eventStr.match(/^(\\*|[-\\w]+)\\s*(<?[=-]>)\\s*(\\*|[-\\w]+)$/);   if (match == null || match.length < 4) {     errors.push(invalidExpression(eventStr));     return expressions;   }    const fromState = match[1];   const separator = match[2];   const toState = match[3];   expressions.push(makeLambdaFromStates(fromState, toState));    const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;   if (separator[0] == '<' && !isFullAnyStateExpr) {     expressions.push(makeLambdaFromStates(toState, fromState));   } }  function parseAnimationAlias(alias: string, errors: Error[]): string|TransitionMatcherFn {   switch (alias) {     case ':enter':       return 'void => *';     case ':leave':       return '* => void';     case ':increment':       return (fromState: any, toState: any): boolean => parseFloat(toState) > parseFloat(fromState);     case ':decrement':       return (fromState: any, toState: any): boolean => parseFloat(toState) < parseFloat(fromState);     default:       errors.push(invalidTransitionAlias(alias));       return '* => *';   } }  // DO NOT REFACTOR ... keep the follow set instantiations // with the values intact (closure compiler for some reason // removes follow-up lines that add the values outside of // the constructor... const TRUE_BOOLEAN_VALUES = new Set<string>(['true', '1']); const FALSE_BOOLEAN_VALUES = new Set<string>(['false', '0']);  function makeLambdaFromStates(lhs: string, rhs: string): TransitionMatcherFn {   const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);   const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);    return (fromState: any, toState: any): boolean => {     let lhsMatch = lhs == ANY_STATE || lhs == fromState;     let rhsMatch = rhs == ANY_STATE || rhs == toState;      if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {       lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);     }     if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {       rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);     }      return lhsMatch && rhsMatch;   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimateTimings, AnimationAnimateChildMetadata, AnimationAnimateMetadata, AnimationAnimateRefMetadata, AnimationGroupMetadata, AnimationKeyframesSequenceMetadata, AnimationMetadata, AnimationMetadataType, AnimationOptions, AnimationQueryMetadata, AnimationQueryOptions, AnimationReferenceMetadata, AnimationSequenceMetadata, AnimationStaggerMetadata, AnimationStateMetadata, AnimationStyleMetadata, AnimationTransitionMetadata, AnimationTriggerMetadata, AUTO_STYLE, style, ɵStyleDataMap} from '@angular/animations';  import {invalidDefinition, invalidKeyframes, invalidOffset, invalidParallelAnimation, invalidProperty, invalidStagger, invalidState, invalidStyleValue, invalidTrigger, keyframeOffsetsOutOfOrder, keyframesMissingOffsets} from '../error_helpers'; import {AnimationDriver} from '../render/animation_driver'; import {getOrSetDefaultValue} from '../render/shared'; import {convertToMap, copyObj, extractStyleParams, iteratorToArray, NG_ANIMATING_SELECTOR, NG_TRIGGER_SELECTOR, normalizeAnimationEntry, resolveTiming, SUBSTITUTION_EXPR_START, validateStyleParams, visitDslNode} from '../util'; import {pushUnrecognizedPropertiesWarning} from '../warning_helpers';  import {AnimateAst, AnimateChildAst, AnimateRefAst, Ast, DynamicTimingAst, GroupAst, KeyframesAst, QueryAst, ReferenceAst, SequenceAst, StaggerAst, StateAst, StyleAst, TimingAst, TransitionAst, TriggerAst} from './animation_ast'; import {AnimationDslVisitor} from './animation_dsl_visitor'; import {parseTransitionExpr} from './animation_transition_expr';  const SELF_TOKEN = ':self'; const SELF_TOKEN_REGEX = new RegExp(`\\s*${SELF_TOKEN}\\s*,?`, 'g');  /*  * [Validation]  * The visitor code below will traverse the animation AST generated by the animation verb functions  * (the output is a tree of objects) and attempt to perform a series of validations on the data. The  * following corner-cases will be validated:  *  * 1. Overlap of animations  * Given that a CSS property cannot be animated in more than one place at the same time, it's  * important that this behavior is detected and validated. The way in which this occurs is that  * each time a style property is examined, a string-map containing the property will be updated with  * the start and end times for when the property is used within an animation step.  *  * If there are two or more parallel animations that are currently running (these are invoked by the  * group()) on the same element then the validator will throw an error. Since the start/end timing  * values are collected for each property then if the current animation step is animating the same  * property and its timing values fall anywhere into the window of time that the property is  * currently being animated within then this is what causes an error.  *  * 2. Timing values  * The validator will validate to see if a timing value of `duration delay easing` or  * `durationNumber` is valid or not.  *  * (note that upon validation the code below will replace the timing data with an object containing  * {duration,delay,easing}.  *  * 3. Offset Validation  * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().  * Offsets within keyframes() are considered valid when:  *  *   - No offsets are used at all  *   - Each style() entry contains an offset value  *   - Each offset is between 0 and 1  *   - Each offset is greater to or equal than the previous one  *  * Otherwise an error will be thrown.  */ export function buildAnimationAst(     driver: AnimationDriver, metadata: AnimationMetadata|AnimationMetadata[], errors: Error[],     warnings: string[]): Ast<AnimationMetadataType> {   return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings); }  const ROOT_SELECTOR = '';  export class AnimationAstBuilderVisitor implements AnimationDslVisitor {   constructor(private _driver: AnimationDriver) {}    build(metadata: AnimationMetadata|AnimationMetadata[], errors: Error[], warnings: string[]):       Ast<AnimationMetadataType> {     const context = new AnimationAstBuilderContext(errors);     this._resetContextStyleTimingState(context);     const ast =         <Ast<AnimationMetadataType>>visitDslNode(this, normalizeAnimationEntry(metadata), context);      if (typeof ngDevMode === 'undefined' || ngDevMode) {       if (context.unsupportedCSSPropertiesFound.size) {         pushUnrecognizedPropertiesWarning(             warnings,             [...context.unsupportedCSSPropertiesFound.keys()],         );       }     }      return ast;   }    private _resetContextStyleTimingState(context: AnimationAstBuilderContext) {     context.currentQuerySelector = ROOT_SELECTOR;     context.collectedStyles = new Map<string, Map<string, StyleTimeTuple>>();     context.collectedStyles.set(ROOT_SELECTOR, new Map());     context.currentTime = 0;   }    visitTrigger(metadata: AnimationTriggerMetadata, context: AnimationAstBuilderContext):       TriggerAst {     let queryCount = context.queryCount = 0;     let depCount = context.depCount = 0;     const states: StateAst[] = [];     const transitions: TransitionAst[] = [];     if (metadata.name.charAt(0) == '@') {       context.errors.push(invalidTrigger());     }      metadata.definitions.forEach(def => {       this._resetContextStyleTimingState(context);       if (def.type == AnimationMetadataType.State) {         const stateDef = def as AnimationStateMetadata;         const name = stateDef.name;         name.toString().split(/\\s*,\\s*/).forEach(n => {           stateDef.name = n;           states.push(this.visitState(stateDef, context));         });         stateDef.name = name;       } else if (def.type == AnimationMetadataType.Transition) {         const transition = this.visitTransition(def as AnimationTransitionMetadata, context);         queryCount += transition.queryCount;         depCount += transition.depCount;         transitions.push(transition);       } else {         context.errors.push(invalidDefinition());       }     });      return {       type: AnimationMetadataType.Trigger,       name: metadata.name,       states,       transitions,       queryCount,       depCount,       options: null     };   }    visitState(metadata: AnimationStateMetadata, context: AnimationAstBuilderContext): StateAst {     const styleAst = this.visitStyle(metadata.styles, context);     const astParams = (metadata.options && metadata.options.params) || null;     if (styleAst.containsDynamicStyles) {       const missingSubs = new Set<string>();       const params = astParams || {};       styleAst.styles.forEach(style => {         if (style instanceof Map) {           style.forEach(value => {             extractStyleParams(value).forEach(sub => {               if (!params.hasOwnProperty(sub)) {                 missingSubs.add(sub);               }             });           });         }       });       if (missingSubs.size) {         const missingSubsArr = iteratorToArray(missingSubs.values());         context.errors.push(invalidState(metadata.name, missingSubsArr));       }     }      return {       type: AnimationMetadataType.State,       name: metadata.name,       style: styleAst,       options: astParams ? {params: astParams} : null     };   }    visitTransition(metadata: AnimationTransitionMetadata, context: AnimationAstBuilderContext):       TransitionAst {     context.queryCount = 0;     context.depCount = 0;     const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);     const matchers = parseTransitionExpr(metadata.expr, context.errors);      return {       type: AnimationMetadataType.Transition,       matchers,       animation,       queryCount: context.queryCount,       depCount: context.depCount,       options: normalizeAnimationOptions(metadata.options)     };   }    visitSequence(metadata: AnimationSequenceMetadata, context: AnimationAstBuilderContext):       SequenceAst {     return {       type: AnimationMetadataType.Sequence,       steps: metadata.steps.map(s => visitDslNode(this, s, context)),       options: normalizeAnimationOptions(metadata.options)     };   }    visitGroup(metadata: AnimationGroupMetadata, context: AnimationAstBuilderContext): GroupAst {     const currentTime = context.currentTime;     let furthestTime = 0;     const steps = metadata.steps.map(step => {       context.currentTime = currentTime;       const innerAst = visitDslNode(this, step, context);       furthestTime = Math.max(furthestTime, context.currentTime);       return innerAst;     });      context.currentTime = furthestTime;     return {       type: AnimationMetadataType.Group,       steps,       options: normalizeAnimationOptions(metadata.options)     };   }    visitAnimate(metadata: AnimationAnimateMetadata, context: AnimationAstBuilderContext):       AnimateAst {     const timingAst = constructTimingAst(metadata.timings, context.errors);     context.currentAnimateTimings = timingAst;     let styleAst: StyleAst|KeyframesAst;     let styleMetadata: AnimationStyleMetadata|AnimationKeyframesSequenceMetadata =         metadata.styles ? metadata.styles : style({});     if (styleMetadata.type == AnimationMetadataType.Keyframes) {       styleAst = this.visitKeyframes(styleMetadata as AnimationKeyframesSequenceMetadata, context);     } else {       let styleMetadata = metadata.styles as AnimationStyleMetadata;       let isEmpty = false;       if (!styleMetadata) {         isEmpty = true;         const newStyleData: {[prop: string]: string|number} = {};         if (timingAst.easing) {           newStyleData['easing'] = timingAst.easing;         }         styleMetadata = style(newStyleData);       }       context.currentTime += timingAst.duration + timingAst.delay;       const _styleAst = this.visitStyle(styleMetadata, context);       _styleAst.isEmptyStep = isEmpty;       styleAst = _styleAst;     }      context.currentAnimateTimings = null;     return {       type: AnimationMetadataType.Animate,       timings: timingAst,       style: styleAst,       options: null     };   }    visitStyle(metadata: AnimationStyleMetadata, context: AnimationAstBuilderContext): StyleAst {     const ast = this._makeStyleAst(metadata, context);     this._validateStyleAst(ast, context);     return ast;   }    private _makeStyleAst(metadata: AnimationStyleMetadata, context: AnimationAstBuilderContext):       StyleAst {     const styles: Array<(ɵStyleDataMap | string)> = [];     const metadataStyles = Array.isArray(metadata.styles) ? metadata.styles : [metadata.styles];      for (let styleTuple of metadataStyles) {       if (typeof styleTuple === 'string') {         if (styleTuple === AUTO_STYLE) {           styles.push(styleTuple);         } else {           context.errors.push(invalidStyleValue(styleTuple));         }       } else {         styles.push(convertToMap(styleTuple));       }     }      let containsDynamicStyles = false;     let collectedEasing: string|null = null;     styles.forEach(styleData => {       if (styleData instanceof Map) {         if (styleData.has('easing')) {           collectedEasing = styleData.get('easing') as string;           styleData.delete('easing');         }         if (!containsDynamicStyles) {           for (let value of styleData.values()) {             if (value!.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {               containsDynamicStyles = true;               break;             }           }         }       }     });      return {       type: AnimationMetadataType.Style,       styles,       easing: collectedEasing,       offset: metadata.offset,       containsDynamicStyles,       options: null     };   }    private _validateStyleAst(ast: StyleAst, context: AnimationAstBuilderContext): void {     const timings = context.currentAnimateTimings;     let endTime = context.currentTime;     let startTime = context.currentTime;     if (timings && startTime > 0) {       startTime -= timings.duration + timings.delay;     }      ast.styles.forEach(tuple => {       if (typeof tuple === 'string') return;        tuple.forEach((value, prop) => {         if (typeof ngDevMode === 'undefined' || ngDevMode) {           if (!this._driver.validateStyleProperty(prop)) {             tuple.delete(prop);             context.unsupportedCSSPropertiesFound.add(prop);             return;           }         }          // This is guaranteed to have a defined Map at this querySelector location making it         // safe to add the assertion here. It is set as a default empty map in prior methods.         const collectedStyles = context.collectedStyles.get(context.currentQuerySelector!)!;         const collectedEntry = collectedStyles.get(prop);         let updateCollectedStyle = true;         if (collectedEntry) {           if (startTime != endTime && startTime >= collectedEntry.startTime &&               endTime <= collectedEntry.endTime) {             context.errors.push(invalidParallelAnimation(                 prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime));             updateCollectedStyle = false;           }            // we always choose the smaller start time value since we           // want to have a record of the entire animation window where           // the style property is being animated in between           startTime = collectedEntry.startTime;         }          if (updateCollectedStyle) {           collectedStyles.set(prop, {startTime, endTime});         }          if (context.options) {           validateStyleParams(value, context.options, context.errors);         }       });     });   }    visitKeyframes(metadata: AnimationKeyframesSequenceMetadata, context: AnimationAstBuilderContext):       KeyframesAst {     const ast: KeyframesAst = {type: AnimationMetadataType.Keyframes, styles: [], options: null};     if (!context.currentAnimateTimings) {       context.errors.push(invalidKeyframes());       return ast;     }      const MAX_KEYFRAME_OFFSET = 1;      let totalKeyframesWithOffsets = 0;     const offsets: number[] = [];     let offsetsOutOfOrder = false;     let keyframesOutOfRange = false;     let previousOffset: number = 0;      const keyframes: StyleAst[] = metadata.steps.map(styles => {       const style = this._makeStyleAst(styles, context);       let offsetVal: number|null =           style.offset != null ? style.offset : consumeOffset(style.styles);       let offset: number = 0;       if (offsetVal != null) {         totalKeyframesWithOffsets++;         offset = style.offset = offsetVal;       }       keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;       offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;       previousOffset = offset;       offsets.push(offset);       return style;     });      if (keyframesOutOfRange) {       context.errors.push(invalidOffset());     }      if (offsetsOutOfOrder) {       context.errors.push(keyframeOffsetsOutOfOrder());     }      const length = metadata.steps.length;     let generatedOffset = 0;     if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {       context.errors.push(keyframesMissingOffsets());     } else if (totalKeyframesWithOffsets == 0) {       generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);     }      const limit = length - 1;     const currentTime = context.currentTime;     const currentAnimateTimings = context.currentAnimateTimings!;     const animateDuration = currentAnimateTimings.duration;     keyframes.forEach((kf, i) => {       const offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];       const durationUpToThisFrame = offset * animateDuration;       context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;       currentAnimateTimings.duration = durationUpToThisFrame;       this._validateStyleAst(kf, context);       kf.offset = offset;        ast.styles.push(kf);     });      return ast;   }    visitReference(metadata: AnimationReferenceMetadata, context: AnimationAstBuilderContext):       ReferenceAst {     return {       type: AnimationMetadataType.Reference,       animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),       options: normalizeAnimationOptions(metadata.options)     };   }    visitAnimateChild(metadata: AnimationAnimateChildMetadata, context: AnimationAstBuilderContext):       AnimateChildAst {     context.depCount++;     return {       type: AnimationMetadataType.AnimateChild,       options: normalizeAnimationOptions(metadata.options)     };   }    visitAnimateRef(metadata: AnimationAnimateRefMetadata, context: AnimationAstBuilderContext):       AnimateRefAst {     return {       type: AnimationMetadataType.AnimateRef,       animation: this.visitReference(metadata.animation, context),       options: normalizeAnimationOptions(metadata.options)     };   }    visitQuery(metadata: AnimationQueryMetadata, context: AnimationAstBuilderContext): QueryAst {     const parentSelector = context.currentQuerySelector!;     const options = (metadata.options || {}) as AnimationQueryOptions;      context.queryCount++;     context.currentQuery = metadata;     const [selector, includeSelf] = normalizeSelector(metadata.selector);     context.currentQuerySelector =         parentSelector.length ? (parentSelector + ' ' + selector) : selector;     getOrSetDefaultValue(context.collectedStyles, context.currentQuerySelector, new Map());      const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);     context.currentQuery = null;     context.currentQuerySelector = parentSelector;      return {       type: AnimationMetadataType.Query,       selector,       limit: options.limit || 0,       optional: !!options.optional,       includeSelf,       animation,       originalSelector: metadata.selector,       options: normalizeAnimationOptions(metadata.options)     };   }    visitStagger(metadata: AnimationStaggerMetadata, context: AnimationAstBuilderContext):       StaggerAst {     if (!context.currentQuery) {       context.errors.push(invalidStagger());     }     const timings = metadata.timings === 'full' ?         {duration: 0, delay: 0, easing: 'full'} :         resolveTiming(metadata.timings, context.errors, true);      return {       type: AnimationMetadataType.Stagger,       animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),       timings,       options: null     };   } }  function normalizeSelector(selector: string): [string, boolean] {   const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;   if (hasAmpersand) {     selector = selector.replace(SELF_TOKEN_REGEX, '');   }    // Note: the :enter and :leave aren't normalized here since those   // selectors are filled in at runtime during timeline building   selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR)                  .replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.slice(1))                  .replace(/:animating/g, NG_ANIMATING_SELECTOR);    return [selector, hasAmpersand]; }   function normalizeParams(obj: {[key: string]: any}|any): {[key: string]: any}|null {   return obj ? copyObj(obj) : null; }  export type StyleTimeTuple = {   startTime: number; endTime: number; };  export class AnimationAstBuilderContext {   public queryCount: number = 0;   public depCount: number = 0;   public currentTransition: AnimationTransitionMetadata|null = null;   public currentQuery: AnimationQueryMetadata|null = null;   public currentQuerySelector: string|null = null;   public currentAnimateTimings: TimingAst|null = null;   public currentTime: number = 0;   public collectedStyles = new Map<string, Map<string, StyleTimeTuple>>();   public options: AnimationOptions|null = null;   public unsupportedCSSPropertiesFound: Set<string> = new Set<string>();   constructor(public errors: Error[]) {} }  type OffsetStyles = string|ɵStyleDataMap;  function consumeOffset(styles: OffsetStyles|Array<OffsetStyles>): number|null {   if (typeof styles == 'string') return null;    let offset: number|null = null;    if (Array.isArray(styles)) {     styles.forEach(styleTuple => {       if (styleTuple instanceof Map && styleTuple.has('offset')) {         const obj = styleTuple as ɵStyleDataMap;         offset = parseFloat(obj.get('offset') as string);         obj.delete('offset');       }     });   } else if (styles instanceof Map && styles.has('offset')) {     const obj = styles;     offset = parseFloat(obj.get('offset') as string);     obj.delete('offset');   }   return offset; }  function constructTimingAst(value: string|number|AnimateTimings, errors: Error[]) {   if (value.hasOwnProperty('duration')) {     return value as AnimateTimings;   }    if (typeof value == 'number') {     const duration = resolveTiming(value, errors).duration;     return makeTimingAst(duration, 0, '');   }    const strValue = value as string;   const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');   if (isDynamic) {     const ast = makeTimingAst(0, 0, '') as any;     ast.dynamic = true;     ast.strValue = strValue;     return ast as DynamicTimingAst;   }    const timings = resolveTiming(strValue, errors);   return makeTimingAst(timings.duration, timings.delay, timings.easing); }  function normalizeAnimationOptions(options: AnimationOptions|null): AnimationOptions {   if (options) {     options = copyObj(options);     if (options['params']) {       options['params'] = normalizeParams(options['params'])!;     }   } else {     options = {};   }   return options; }  function makeTimingAst(duration: number, delay: number, easing: string|null): TimingAst {   return {duration, delay, easing}; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {ɵStyleDataMap} from '@angular/animations';  import {AnimationEngineInstruction, AnimationTransitionInstructionType} from '../render/animation_engine_instruction';  export interface AnimationTimelineInstruction extends AnimationEngineInstruction {   element: any;   keyframes: Array<ɵStyleDataMap>;   preStyleProps: string[];   postStyleProps: string[];   duration: number;   delay: number;   totalTime: number;   easing: string|null;   stretchStartingKeyframe?: boolean;   subTimeline: boolean; }  export function createTimelineInstruction(     element: any, keyframes: Array<ɵStyleDataMap>, preStyleProps: string[],     postStyleProps: string[], duration: number, delay: number, easing: string|null = null,     subTimeline: boolean = false): AnimationTimelineInstruction {   return {     type: AnimationTransitionInstructionType.TimelineAnimation,     element,     keyframes,     preStyleProps,     postStyleProps,     duration,     delay,     totalTime: duration + delay,     easing,     subTimeline   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationTimelineInstruction} from './animation_timeline_instruction';  export class ElementInstructionMap {   private _map = new Map<any, AnimationTimelineInstruction[]>();    get(element: any): AnimationTimelineInstruction[] {     return this._map.get(element) || [];   }    append(element: any, instructions: AnimationTimelineInstruction[]) {     let existingInstructions = this._map.get(element);     if (!existingInstructions) {       this._map.set(element, existingInstructions = []);     }     existingInstructions.push(...instructions);   }    has(element: any): boolean {     return this._map.has(element);   }    clear() {     this._map.clear();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimateChildOptions, AnimateTimings, AnimationMetadataType, AnimationOptions, AnimationQueryOptions, AUTO_STYLE, ɵPRE_STYLE as PRE_STYLE, ɵStyleDataMap} from '@angular/animations';  import {invalidQuery} from '../error_helpers'; import {AnimationDriver} from '../render/animation_driver'; import {copyStyles, interpolateParams, iteratorToArray, resolveTiming, resolveTimingValue, visitDslNode} from '../util';  import {AnimateAst, AnimateChildAst, AnimateRefAst, Ast, AstVisitor, DynamicTimingAst, GroupAst, KeyframesAst, QueryAst, ReferenceAst, SequenceAst, StaggerAst, StateAst, StyleAst, TimingAst, TransitionAst, TriggerAst} from './animation_ast'; import {AnimationTimelineInstruction, createTimelineInstruction} from './animation_timeline_instruction'; import {ElementInstructionMap} from './element_instruction_map';  const ONE_FRAME_IN_MILLISECONDS = 1; const ENTER_TOKEN = ':enter'; const ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g'); const LEAVE_TOKEN = ':leave'; const LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');  /*  * The code within this file aims to generate web-animations-compatible keyframes from Angular's  * animation DSL code.  *  * The code below will be converted from:  *  * ```  * sequence([  *   style({ opacity: 0 }),  *   animate(1000, style({ opacity: 0 }))  * ])  * ```  *  * To:  * ```  * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]  * duration = 1000  * delay = 0  * easing = ''  * ```  *  * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a  * combination of AST traversal and merge-sort-like algorithms are used.  *  * [AST Traversal]  * Each of the animation verbs, when executed, will return an string-map object representing what  * type of action it is (style, animate, group, etc...) and the data associated with it. This means  * that when functional composition mix of these functions is evaluated (like in the example above)  * then it will end up producing a tree of objects representing the animation itself.  *  * When this animation object tree is processed by the visitor code below it will visit each of the  * verb statements within the visitor. And during each visit it will build the context of the  * animation keyframes by interacting with the `TimelineBuilder`.  *  * [TimelineBuilder]  * This class is responsible for tracking the styles and building a series of keyframe objects for a  * timeline between a start and end time. The builder starts off with an initial timeline and each  * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a  * `sequence()` then it will generate a sub timeline for each step as well as a new one after  * they are complete.  *  * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub  * timeline was created (based on one of the cases above) then the parent timeline will attempt to  * merge the styles used within the sub timelines into itself (only with group() this will happen).  * This happens with a merge operation (much like how the merge works in mergeSort) and it will only  * copy the most recently used styles from the sub timelines into the parent timeline. This ensures  * that if the styles are used later on in another phase of the animation then they will be the most  * up-to-date values.  *  * [How Missing Styles Are Updated]  * Each timeline has a `backFill` property which is responsible for filling in new styles into  * already processed keyframes if a new style shows up later within the animation sequence.  *  * ```  * sequence([  *   style({ width: 0 }),  *   animate(1000, style({ width: 100 })),  *   animate(1000, style({ width: 200 })),  *   animate(1000, style({ width: 300 }))  *   animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere  * else  * ])  * ```  *  * What is happening here is that the `height` value is added later in the sequence, but is missing  * from all previous animation steps. Therefore when a keyframe is created it would also be missing  * from all previous keyframes up until where it is first used. For the timeline keyframe generation  * to properly fill in the style it will place the previous value (the value from the parent  * timeline) or a default value of `*` into the backFill map. The `copyStyles` method in util.ts  * handles propagating that backfill map to the styles object.  *  * When a sub-timeline is created it will have its own backFill property. This is done so that  * styles present within the sub-timeline do not accidentally seep into the previous/future timeline  * keyframes  *  * [Validation]  * The code in this file is not responsible for validation. That functionality happens with within  * the `AnimationValidatorVisitor` code.  */ export function buildAnimationTimelines(     driver: AnimationDriver, rootElement: any, ast: Ast<AnimationMetadataType>,     enterClassName: string, leaveClassName: string, startingStyles: ɵStyleDataMap = new Map(),     finalStyles: ɵStyleDataMap = new Map(), options: AnimationOptions,     subInstructions?: ElementInstructionMap, errors: Error[] = []): AnimationTimelineInstruction[] {   return new AnimationTimelineBuilderVisitor().buildKeyframes(       driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles,       options, subInstructions, errors); }  export class AnimationTimelineBuilderVisitor implements AstVisitor {   buildKeyframes(       driver: AnimationDriver, rootElement: any, ast: Ast<AnimationMetadataType>,       enterClassName: string, leaveClassName: string, startingStyles: ɵStyleDataMap,       finalStyles: ɵStyleDataMap, options: AnimationOptions,       subInstructions?: ElementInstructionMap,       errors: Error[] = []): AnimationTimelineInstruction[] {     subInstructions = subInstructions || new ElementInstructionMap();     const context = new AnimationTimelineContext(         driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);     context.options = options;     const delay = options.delay ? resolveTimingValue(options.delay) : 0;     context.currentTimeline.delayNextStep(delay);     context.currentTimeline.setStyles([startingStyles], null, context.errors, options);      visitDslNode(this, ast, context);      // this checks to see if an actual animation happened     const timelines = context.timelines.filter(timeline => timeline.containsAnimation());      // note: we just want to apply the final styles for the rootElement, so we do not     //       just apply the styles to the last timeline but the last timeline which     //       element is the root one (basically `*`-styles are replaced with the actual     //       state style values only for the root element)     if (timelines.length && finalStyles.size) {       let lastRootTimeline: TimelineBuilder|undefined;       for (let i = timelines.length - 1; i >= 0; i--) {         const timeline = timelines[i];         if (timeline.element === rootElement) {           lastRootTimeline = timeline;           break;         }       }       if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {         lastRootTimeline.setStyles([finalStyles], null, context.errors, options);       }     }     return timelines.length ?         timelines.map(timeline => timeline.buildKeyframes()) :         [createTimelineInstruction(rootElement, [], [], [], 0, delay, '', false)];   }    visitTrigger(ast: TriggerAst, context: AnimationTimelineContext): any {     // these values are not visited in this AST   }    visitState(ast: StateAst, context: AnimationTimelineContext): any {     // these values are not visited in this AST   }    visitTransition(ast: TransitionAst, context: AnimationTimelineContext): any {     // these values are not visited in this AST   }    visitAnimateChild(ast: AnimateChildAst, context: AnimationTimelineContext): any {     const elementInstructions = context.subInstructions.get(context.element);     if (elementInstructions) {       const innerContext = context.createSubContext(ast.options);       const startTime = context.currentTimeline.currentTime;       const endTime = this._visitSubInstructions(           elementInstructions, innerContext, innerContext.options as AnimateChildOptions);       if (startTime != endTime) {         // we do this on the upper context because we created a sub context for         // the sub child animations         context.transformIntoNewTimeline(endTime);       }     }     context.previousNode = ast;   }    visitAnimateRef(ast: AnimateRefAst, context: AnimationTimelineContext): any {     const innerContext = context.createSubContext(ast.options);     innerContext.transformIntoNewTimeline();     this._applyAnimationRefDelays([ast.options, ast.animation.options], context, innerContext);     this.visitReference(ast.animation, innerContext);     context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);     context.previousNode = ast;   }    private _applyAnimationRefDelays(       animationsRefsOptions: (AnimationOptions|null)[], context: AnimationTimelineContext,       innerContext: AnimationTimelineContext) {     for (const animationRefOptions of animationsRefsOptions) {       const animationDelay = animationRefOptions?.delay;       if (animationDelay) {         const animationDelayValue = typeof animationDelay === 'number' ?             animationDelay :             resolveTimingValue(interpolateParams(                 animationDelay, animationRefOptions?.params ?? {}, context.errors));         innerContext.delayNextStep(animationDelayValue);       }     }   }    private _visitSubInstructions(       instructions: AnimationTimelineInstruction[], context: AnimationTimelineContext,       options: AnimateChildOptions): number {     const startTime = context.currentTimeline.currentTime;     let furthestTime = startTime;      // this is a special-case for when a user wants to skip a sub     // animation from being fired entirely.     const duration = options.duration != null ? resolveTimingValue(options.duration) : null;     const delay = options.delay != null ? resolveTimingValue(options.delay) : null;     if (duration !== 0) {       instructions.forEach(instruction => {         const instructionTimings =             context.appendInstructionToTimeline(instruction, duration, delay);         furthestTime =             Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);       });     }      return furthestTime;   }    visitReference(ast: ReferenceAst, context: AnimationTimelineContext) {     context.updateOptions(ast.options, true);     visitDslNode(this, ast.animation, context);     context.previousNode = ast;   }    visitSequence(ast: SequenceAst, context: AnimationTimelineContext) {     const subContextCount = context.subContextCount;     let ctx = context;     const options = ast.options;      if (options && (options.params || options.delay)) {       ctx = context.createSubContext(options);       ctx.transformIntoNewTimeline();        if (options.delay != null) {         if (ctx.previousNode.type == AnimationMetadataType.Style) {           ctx.currentTimeline.snapshotCurrentStyles();           ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;         }          const delay = resolveTimingValue(options.delay);         ctx.delayNextStep(delay);       }     }      if (ast.steps.length) {       ast.steps.forEach(s => visitDslNode(this, s, ctx));        // this is here just in case the inner steps only contain or end with a style() call       ctx.currentTimeline.applyStylesToKeyframe();        // this means that some animation function within the sequence       // ended up creating a sub timeline (which means the current       // timeline cannot overlap with the contents of the sequence)       if (ctx.subContextCount > subContextCount) {         ctx.transformIntoNewTimeline();       }     }      context.previousNode = ast;   }    visitGroup(ast: GroupAst, context: AnimationTimelineContext) {     const innerTimelines: TimelineBuilder[] = [];     let furthestTime = context.currentTimeline.currentTime;     const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;      ast.steps.forEach(s => {       const innerContext = context.createSubContext(ast.options);       if (delay) {         innerContext.delayNextStep(delay);       }        visitDslNode(this, s, innerContext);       furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);       innerTimelines.push(innerContext.currentTimeline);     });      // this operation is run after the AST loop because otherwise     // if the parent timeline's collected styles were updated then     // it would pass in invalid data into the new-to-be forked items     innerTimelines.forEach(         timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));     context.transformIntoNewTimeline(furthestTime);     context.previousNode = ast;   }    private _visitTiming(ast: TimingAst, context: AnimationTimelineContext): AnimateTimings {     if ((ast as DynamicTimingAst).dynamic) {       const strValue = (ast as DynamicTimingAst).strValue;       const timingValue =           context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;       return resolveTiming(timingValue, context.errors);     } else {       return {duration: ast.duration, delay: ast.delay, easing: ast.easing};     }   }    visitAnimate(ast: AnimateAst, context: AnimationTimelineContext) {     const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);     const timeline = context.currentTimeline;     if (timings.delay) {       context.incrementTime(timings.delay);       timeline.snapshotCurrentStyles();     }      const style = ast.style;     if (style.type == AnimationMetadataType.Keyframes) {       this.visitKeyframes(style, context);     } else {       context.incrementTime(timings.duration);       this.visitStyle(style as StyleAst, context);       timeline.applyStylesToKeyframe();     }      context.currentAnimateTimings = null;     context.previousNode = ast;   }    visitStyle(ast: StyleAst, context: AnimationTimelineContext) {     const timeline = context.currentTimeline;     const timings = context.currentAnimateTimings!;      // this is a special case for when a style() call     // directly follows  an animate() call (but not inside of an animate() call)     if (!timings && timeline.hasCurrentStyleProperties()) {       timeline.forwardFrame();     }      const easing = (timings && timings.easing) || ast.easing;     if (ast.isEmptyStep) {       timeline.applyEmptyStep(easing);     } else {       timeline.setStyles(ast.styles, easing, context.errors, context.options);     }      context.previousNode = ast;   }    visitKeyframes(ast: KeyframesAst, context: AnimationTimelineContext) {     const currentAnimateTimings = context.currentAnimateTimings!;     const startTime = (context.currentTimeline!).duration;     const duration = currentAnimateTimings.duration;     const innerContext = context.createSubContext();     const innerTimeline = innerContext.currentTimeline;     innerTimeline.easing = currentAnimateTimings.easing;      ast.styles.forEach(step => {       const offset: number = step.offset || 0;       innerTimeline.forwardTime(offset * duration);       innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);       innerTimeline.applyStylesToKeyframe();     });      // this will ensure that the parent timeline gets all the styles from     // the child even if the new timeline below is not used     context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);      // we do this because the window between this timeline and the sub timeline     // should ensure that the styles within are exactly the same as they were before     context.transformIntoNewTimeline(startTime + duration);     context.previousNode = ast;   }    visitQuery(ast: QueryAst, context: AnimationTimelineContext) {     // in the event that the first step before this is a style step we need     // to ensure the styles are applied before the children are animated     const startTime = context.currentTimeline.currentTime;     const options = (ast.options || {}) as AnimationQueryOptions;     const delay = options.delay ? resolveTimingValue(options.delay) : 0;      if (delay &&         (context.previousNode.type === AnimationMetadataType.Style ||          (startTime == 0 && context.currentTimeline.hasCurrentStyleProperties()))) {       context.currentTimeline.snapshotCurrentStyles();       context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;     }      let furthestTime = startTime;     const elms = context.invokeQuery(         ast.selector, ast.originalSelector, ast.limit, ast.includeSelf,         options.optional ? true : false, context.errors);      context.currentQueryTotal = elms.length;     let sameElementTimeline: TimelineBuilder|null = null;     elms.forEach((element, i) => {       context.currentQueryIndex = i;       const innerContext = context.createSubContext(ast.options, element);       if (delay) {         innerContext.delayNextStep(delay);       }        if (element === context.element) {         sameElementTimeline = innerContext.currentTimeline;       }        visitDslNode(this, ast.animation, innerContext);        // this is here just incase the inner steps only contain or end       // with a style() call (which is here to signal that this is a preparatory       // call to style an element before it is animated again)       innerContext.currentTimeline.applyStylesToKeyframe();        const endTime = innerContext.currentTimeline.currentTime;       furthestTime = Math.max(furthestTime, endTime);     });      context.currentQueryIndex = 0;     context.currentQueryTotal = 0;     context.transformIntoNewTimeline(furthestTime);      if (sameElementTimeline) {       context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);       context.currentTimeline.snapshotCurrentStyles();     }      context.previousNode = ast;   }    visitStagger(ast: StaggerAst, context: AnimationTimelineContext) {     const parentContext = context.parentContext!;     const tl = context.currentTimeline;     const timings = ast.timings;     const duration = Math.abs(timings.duration);     const maxTime = duration * (context.currentQueryTotal - 1);     let delay = duration * context.currentQueryIndex;      let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;     switch (staggerTransformer) {       case 'reverse':         delay = maxTime - delay;         break;       case 'full':         delay = parentContext.currentStaggerTime;         break;     }      const timeline = context.currentTimeline;     if (delay) {       timeline.delayNextStep(delay);     }      const startingTime = timeline.currentTime;     visitDslNode(this, ast.animation, context);     context.previousNode = ast;      // time = duration + delay     // the reason why this computation is so complex is because     // the inner timeline may either have a delay value or a stretched     // keyframe depending on if a subtimeline is not used or is used.     parentContext.currentStaggerTime =         (tl.currentTime - startingTime) + (tl.startTime - parentContext.currentTimeline.startTime);   } }  export declare type StyleAtTime = {   time: number; value: string | number; };  const DEFAULT_NOOP_PREVIOUS_NODE = <Ast<AnimationMetadataType>>{}; export class AnimationTimelineContext {   public parentContext: AnimationTimelineContext|null = null;   public currentTimeline: TimelineBuilder;   public currentAnimateTimings: AnimateTimings|null = null;   public previousNode: Ast<AnimationMetadataType> = DEFAULT_NOOP_PREVIOUS_NODE;   public subContextCount = 0;   public options: AnimationOptions = {};   public currentQueryIndex: number = 0;   public currentQueryTotal: number = 0;   public currentStaggerTime: number = 0;    constructor(       private _driver: AnimationDriver, public element: any,       public subInstructions: ElementInstructionMap, private _enterClassName: string,       private _leaveClassName: string, public errors: Error[], public timelines: TimelineBuilder[],       initialTimeline?: TimelineBuilder) {     this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);     timelines.push(this.currentTimeline);   }    get params() {     return this.options.params;   }    updateOptions(options: AnimationOptions|null, skipIfExists?: boolean) {     if (!options) return;      const newOptions = options as any;     let optionsToUpdate = this.options;      // NOTE: this will get patched up when other animation methods support duration overrides     if (newOptions.duration != null) {       (optionsToUpdate as any).duration = resolveTimingValue(newOptions.duration);     }      if (newOptions.delay != null) {       optionsToUpdate.delay = resolveTimingValue(newOptions.delay);     }      const newParams = newOptions.params;     if (newParams) {       let paramsToUpdate: {[name: string]: any} = optionsToUpdate.params!;       if (!paramsToUpdate) {         paramsToUpdate = this.options.params = {};       }        Object.keys(newParams).forEach(name => {         if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {           paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);         }       });     }   }    private _copyOptions() {     const options: AnimationOptions = {};     if (this.options) {       const oldParams = this.options.params;       if (oldParams) {         const params: {[name: string]: any} = options['params'] = {};         Object.keys(oldParams).forEach(name => {           params[name] = oldParams[name];         });       }     }     return options;   }    createSubContext(options: AnimationOptions|null = null, element?: any, newTime?: number):       AnimationTimelineContext {     const target = element || this.element;     const context = new AnimationTimelineContext(         this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName,         this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));     context.previousNode = this.previousNode;     context.currentAnimateTimings = this.currentAnimateTimings;      context.options = this._copyOptions();     context.updateOptions(options);      context.currentQueryIndex = this.currentQueryIndex;     context.currentQueryTotal = this.currentQueryTotal;     context.parentContext = this;     this.subContextCount++;     return context;   }    transformIntoNewTimeline(newTime?: number) {     this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;     this.currentTimeline = this.currentTimeline.fork(this.element, newTime);     this.timelines.push(this.currentTimeline);     return this.currentTimeline;   }    appendInstructionToTimeline(       instruction: AnimationTimelineInstruction, duration: number|null,       delay: number|null): AnimateTimings {     const updatedTimings: AnimateTimings = {       duration: duration != null ? duration : instruction.duration,       delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,       easing: ''     };     const builder = new SubTimelineBuilder(         this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps,         instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);     this.timelines.push(builder);     return updatedTimings;   }    incrementTime(time: number) {     this.currentTimeline.forwardTime(this.currentTimeline.duration + time);   }    delayNextStep(delay: number) {     // negative delays are not yet supported     if (delay > 0) {       this.currentTimeline.delayNextStep(delay);     }   }    invokeQuery(       selector: string, originalSelector: string, limit: number, includeSelf: boolean,       optional: boolean, errors: Error[]): any[] {     let results: any[] = [];     if (includeSelf) {       results.push(this.element);     }     if (selector.length > 0) {  // only if :self is used then the selector can be empty       selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);       selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);       const multi = limit != 1;       let elements = this._driver.query(this.element, selector, multi);       if (limit !== 0) {         elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) :                                elements.slice(0, limit);       }       results.push(...elements);     }      if (!optional && results.length == 0) {       errors.push(invalidQuery(originalSelector));     }     return results;   } }  export class TimelineBuilder {   public duration: number = 0;   // TODO(issue/24571): remove '!'.   public easing!: string|null;   private _previousKeyframe: ɵStyleDataMap = new Map();   private _currentKeyframe: ɵStyleDataMap = new Map();   private _keyframes = new Map<number, ɵStyleDataMap>();   private _styleSummary = new Map<string, StyleAtTime>();   private _localTimelineStyles: ɵStyleDataMap = new Map();   private _globalTimelineStyles: ɵStyleDataMap;   private _pendingStyles: ɵStyleDataMap = new Map();   private _backFill: ɵStyleDataMap = new Map();   private _currentEmptyStepKeyframe: ɵStyleDataMap|null = null;    constructor(       private _driver: AnimationDriver, public element: any, public startTime: number,       private _elementTimelineStylesLookup?: Map<any, ɵStyleDataMap>) {     if (!this._elementTimelineStylesLookup) {       this._elementTimelineStylesLookup = new Map<any, ɵStyleDataMap>();     }      this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element)!;     if (!this._globalTimelineStyles) {       this._globalTimelineStyles = this._localTimelineStyles;       this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);     }     this._loadKeyframe();   }    containsAnimation(): boolean {     switch (this._keyframes.size) {       case 0:         return false;       case 1:         return this.hasCurrentStyleProperties();       default:         return true;     }   }    hasCurrentStyleProperties(): boolean {     return this._currentKeyframe.size > 0;   }    get currentTime() {     return this.startTime + this.duration;   }    delayNextStep(delay: number) {     // in the event that a style() step is placed right before a stagger()     // and that style() step is the very first style() value in the animation     // then we need to make a copy of the keyframe [0, copy, 1] so that the delay     // properly applies the style() values to work with the stagger...     const hasPreStyleStep = this._keyframes.size === 1 && this._pendingStyles.size;      if (this.duration || hasPreStyleStep) {       this.forwardTime(this.currentTime + delay);       if (hasPreStyleStep) {         this.snapshotCurrentStyles();       }     } else {       this.startTime += delay;     }   }    fork(element: any, currentTime?: number): TimelineBuilder {     this.applyStylesToKeyframe();     return new TimelineBuilder(         this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);   }    private _loadKeyframe() {     if (this._currentKeyframe) {       this._previousKeyframe = this._currentKeyframe;     }     this._currentKeyframe = this._keyframes.get(this.duration)!;     if (!this._currentKeyframe) {       this._currentKeyframe = new Map();       this._keyframes.set(this.duration, this._currentKeyframe);     }   }    forwardFrame() {     this.duration += ONE_FRAME_IN_MILLISECONDS;     this._loadKeyframe();   }    forwardTime(time: number) {     this.applyStylesToKeyframe();     this.duration = time;     this._loadKeyframe();   }    private _updateStyle(prop: string, value: string|number) {     this._localTimelineStyles.set(prop, value);     this._globalTimelineStyles.set(prop, value);     this._styleSummary.set(prop, {time: this.currentTime, value});   }    allowOnlyTimelineStyles() {     return this._currentEmptyStepKeyframe !== this._currentKeyframe;   }    applyEmptyStep(easing: string|null) {     if (easing) {       this._previousKeyframe.set('easing', easing);     }      // special case for animate(duration):     // all missing styles are filled with a `*` value then     // if any destination styles are filled in later on the same     // keyframe then they will override the overridden styles     // We use `_globalTimelineStyles` here because there may be     // styles in previous keyframes that are not present in this timeline     for (let [prop, value] of this._globalTimelineStyles) {       this._backFill.set(prop, value || AUTO_STYLE);       this._currentKeyframe.set(prop, AUTO_STYLE);     }     this._currentEmptyStepKeyframe = this._currentKeyframe;   }    setStyles(       input: Array<(ɵStyleDataMap | string)>, easing: string|null, errors: Error[],       options?: AnimationOptions) {     if (easing) {       this._previousKeyframe.set('easing', easing);     }     const params = (options && options.params) || {};     const styles = flattenStyles(input, this._globalTimelineStyles);     for (let [prop, value] of styles) {       const val = interpolateParams(value, params, errors);       this._pendingStyles.set(prop, val);       if (!this._localTimelineStyles.has(prop)) {         this._backFill.set(prop, this._globalTimelineStyles.get(prop) ?? AUTO_STYLE);       }       this._updateStyle(prop, val);     }   }    applyStylesToKeyframe() {     if (this._pendingStyles.size == 0) return;      this._pendingStyles.forEach((val, prop) => {       this._currentKeyframe.set(prop, val);     });     this._pendingStyles.clear();      this._localTimelineStyles.forEach((val, prop) => {       if (!this._currentKeyframe.has(prop)) {         this._currentKeyframe.set(prop, val);       }     });   }    snapshotCurrentStyles() {     for (let [prop, val] of this._localTimelineStyles) {       this._pendingStyles.set(prop, val);       this._updateStyle(prop, val);     }   }    getFinalKeyframe() {     return this._keyframes.get(this.duration);   }    get properties() {     const properties: string[] = [];     for (let prop in this._currentKeyframe) {       properties.push(prop);     }     return properties;   }    mergeTimelineCollectedStyles(timeline: TimelineBuilder) {     timeline._styleSummary.forEach((details1, prop) => {       const details0 = this._styleSummary.get(prop);       if (!details0 || details1.time > details0.time) {         this._updateStyle(prop, details1.value);       }     });   }    buildKeyframes(): AnimationTimelineInstruction {     this.applyStylesToKeyframe();     const preStyleProps = new Set<string>();     const postStyleProps = new Set<string>();     const isEmpty = this._keyframes.size === 1 && this.duration === 0;      let finalKeyframes: Array<ɵStyleDataMap> = [];     this._keyframes.forEach((keyframe, time) => {       const finalKeyframe = copyStyles(keyframe, new Map(), this._backFill);       finalKeyframe.forEach((value, prop) => {         if (value === PRE_STYLE) {           preStyleProps.add(prop);         } else if (value === AUTO_STYLE) {           postStyleProps.add(prop);         }       });       if (!isEmpty) {         finalKeyframe.set('offset', time / this.duration);       }       finalKeyframes.push(finalKeyframe);     });      const preProps: string[] = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : [];     const postProps: string[] = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : [];      // special case for a 0-second animation (which is designed just to place styles onscreen)     if (isEmpty) {       const kf0 = finalKeyframes[0];       const kf1 = new Map(kf0);       kf0.set('offset', 0);       kf1.set('offset', 1);       finalKeyframes = [kf0, kf1];     }      return createTimelineInstruction(         this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime,         this.easing, false);   } }  class SubTimelineBuilder extends TimelineBuilder {   public timings: AnimateTimings;    constructor(       driver: AnimationDriver, element: any, public keyframes: Array<ɵStyleDataMap>,       public preStyleProps: string[], public postStyleProps: string[], timings: AnimateTimings,       private _stretchStartingKeyframe: boolean = false) {     super(driver, element, timings.delay);     this.timings = {duration: timings.duration, delay: timings.delay, easing: timings.easing};   }    override containsAnimation(): boolean {     return this.keyframes.length > 1;   }    override buildKeyframes(): AnimationTimelineInstruction {     let keyframes = this.keyframes;     let {delay, duration, easing} = this.timings;     if (this._stretchStartingKeyframe && delay) {       const newKeyframes: Array<ɵStyleDataMap> = [];       const totalTime = duration + delay;       const startingGap = delay / totalTime;        // the original starting keyframe now starts once the delay is done       const newFirstKeyframe = copyStyles(keyframes[0]);       newFirstKeyframe.set('offset', 0);       newKeyframes.push(newFirstKeyframe);        const oldFirstKeyframe = copyStyles(keyframes[0]);       oldFirstKeyframe.set('offset', roundOffset(startingGap));       newKeyframes.push(oldFirstKeyframe);        /*         When the keyframe is stretched then it means that the delay before the animation         starts is gone. Instead the first keyframe is placed at the start of the animation         and it is then copied to where it starts when the original delay is over. This basically         means nothing animates during that delay, but the styles are still rendered. For this         to work the original offset values that exist in the original keyframes must be \"warped\"         so that they can take the new keyframe + delay into account.          delay=1000, duration=1000, keyframes = 0 .5 1          turns into          delay=0, duration=2000, keyframes = 0 .33 .66 1        */        // offsets between 1 ... n -1 are all warped by the keyframe stretch       const limit = keyframes.length - 1;       for (let i = 1; i <= limit; i++) {         let kf = copyStyles(keyframes[i]);         const oldOffset = kf.get('offset') as number;         const timeAtKeyframe = delay + oldOffset * duration;         kf.set('offset', roundOffset(timeAtKeyframe / totalTime));         newKeyframes.push(kf);       }        // the new starting keyframe should be added at the start       duration = totalTime;       delay = 0;       easing = '';        keyframes = newKeyframes;     }      return createTimelineInstruction(         this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing,         true);   } }  function roundOffset(offset: number, decimalPoints = 3): number {   const mult = Math.pow(10, decimalPoints - 1);   return Math.round(offset * mult) / mult; }  function flattenStyles(input: Array<(ɵStyleDataMap | string)>, allStyles: ɵStyleDataMap) {   const styles: ɵStyleDataMap = new Map();   let allProperties: string[]|IterableIterator<string>;   input.forEach(token => {     if (token === '*') {       allProperties = allProperties || allStyles.keys();       for (let prop of allProperties) {         styles.set(prop, AUTO_STYLE);       }     } else {       copyStyles(token as ɵStyleDataMap, styles);     }   });   return styles; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationMetadata, AnimationMetadataType, AnimationOptions, ɵStyleDataMap} from '@angular/animations';  import {buildingFailed, validationFailed} from '../error_helpers'; import {AnimationDriver} from '../render/animation_driver'; import {ENTER_CLASSNAME, LEAVE_CLASSNAME, normalizeStyles} from '../util'; import {warnValidation} from '../warning_helpers';  import {Ast} from './animation_ast'; import {buildAnimationAst} from './animation_ast_builder'; import {buildAnimationTimelines} from './animation_timeline_builder'; import {AnimationTimelineInstruction} from './animation_timeline_instruction'; import {ElementInstructionMap} from './element_instruction_map';  export class Animation {   private _animationAst: Ast<AnimationMetadataType>;   constructor(private _driver: AnimationDriver, input: AnimationMetadata|AnimationMetadata[]) {     const errors: Error[] = [];     const warnings: string[] = [];     const ast = buildAnimationAst(_driver, input, errors, warnings);     if (errors.length) {       throw validationFailed(errors);     }     if (warnings.length) {       warnValidation(warnings);     }     this._animationAst = ast;   }    buildTimelines(       element: any, startingStyles: ɵStyleDataMap|Array<ɵStyleDataMap>,       destinationStyles: ɵStyleDataMap|Array<ɵStyleDataMap>, options: AnimationOptions,       subInstructions?: ElementInstructionMap): AnimationTimelineInstruction[] {     const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) :                                                   <ɵStyleDataMap>startingStyles;     const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) :                                                     <ɵStyleDataMap>destinationStyles;     const errors: any = [];     subInstructions = subInstructions || new ElementInstructionMap();     const result = buildAnimationTimelines(         this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest,         options, subInstructions, errors);     if (errors.length) {       throw buildingFailed(errors);     }     return result;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @publicApi  */ export abstract class AnimationStyleNormalizer {   abstract normalizePropertyName(propertyName: string, errors: Error[]): string;   abstract normalizeStyleValue(       userProvidedProperty: string, normalizedProperty: string, value: string|number,       errors: Error[]): string; }  /**  * @publicApi  */ export class NoopAnimationStyleNormalizer {   normalizePropertyName(propertyName: string, errors: Error[]): string {     return propertyName;   }    normalizeStyleValue(       userProvidedProperty: string, normalizedProperty: string, value: string|number,       errors: Error[]): string {     return <any>value;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {invalidCssUnitValue} from '../../error_helpers'; import {dashCaseToCamelCase} from '../../util';  import {AnimationStyleNormalizer} from './animation_style_normalizer';  const DIMENSIONAL_PROP_SET = new Set([   'width',   'height',   'minWidth',   'minHeight',   'maxWidth',   'maxHeight',   'left',   'top',   'bottom',   'right',   'fontSize',   'outlineWidth',   'outlineOffset',   'paddingTop',   'paddingLeft',   'paddingBottom',   'paddingRight',   'marginTop',   'marginLeft',   'marginBottom',   'marginRight',   'borderRadius',   'borderWidth',   'borderTopWidth',   'borderLeftWidth',   'borderRightWidth',   'borderBottomWidth',   'textIndent',   'perspective' ]);  export class WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {   override normalizePropertyName(propertyName: string, errors: Error[]): string {     return dashCaseToCamelCase(propertyName);   }    override normalizeStyleValue(       userProvidedProperty: string, normalizedProperty: string, value: string|number,       errors: Error[]): string {     let unit: string = '';     const strVal = value.toString().trim();      if (DIMENSIONAL_PROP_SET.has(normalizedProperty) && value !== 0 && value !== '0') {       if (typeof value === 'number') {         unit = 'px';       } else {         const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);         if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {           errors.push(invalidCssUnitValue(userProvidedProperty, value));         }       }     }     return strVal + unit;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵStyleDataMap} from '@angular/animations';  import {AnimationEngineInstruction, AnimationTransitionInstructionType} from '../render/animation_engine_instruction';  import {AnimationTimelineInstruction} from './animation_timeline_instruction';  export interface AnimationTransitionInstruction extends AnimationEngineInstruction {   element: any;   triggerName: string;   isRemovalTransition: boolean;   fromState: string;   fromStyles: ɵStyleDataMap;   toState: string;   toStyles: ɵStyleDataMap;   timelines: AnimationTimelineInstruction[];   queriedElements: any[];   preStyleProps: Map<any, Set<string>>;   postStyleProps: Map<any, Set<string>>;   totalTime: number;   errors?: Error[]; }  export function createTransitionInstruction(     element: any, triggerName: string, fromState: string, toState: string,     isRemovalTransition: boolean, fromStyles: ɵStyleDataMap, toStyles: ɵStyleDataMap,     timelines: AnimationTimelineInstruction[], queriedElements: any[],     preStyleProps: Map<any, Set<string>>, postStyleProps: Map<any, Set<string>>, totalTime: number,     errors?: Error[]): AnimationTransitionInstruction {   return {     type: AnimationTransitionInstructionType.TransitionAnimation,     element,     triggerName,     isRemovalTransition,     fromState,     fromStyles,     toState,     toStyles,     timelines,     queriedElements,     preStyleProps,     postStyleProps,     totalTime,     errors   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationOptions, ɵStyleDataMap} from '@angular/animations';  import {AnimationDriver} from '../render/animation_driver'; import {getOrSetDefaultValue} from '../render/shared'; import {copyObj, interpolateParams, iteratorToArray} from '../util';  import {StyleAst, TransitionAst} from './animation_ast'; import {buildAnimationTimelines} from './animation_timeline_builder'; import {AnimationTimelineInstruction} from './animation_timeline_instruction'; import {TransitionMatcherFn} from './animation_transition_expr'; import {AnimationTransitionInstruction, createTransitionInstruction} from './animation_transition_instruction'; import {ElementInstructionMap} from './element_instruction_map'; import {AnimationStyleNormalizer} from './style_normalization/animation_style_normalizer';  const EMPTY_OBJECT = {};  export class AnimationTransitionFactory {   constructor(       private _triggerName: string, public ast: TransitionAst,       private _stateStyles: Map<string, AnimationStateStyles>) {}    match(currentState: any, nextState: any, element: any, params: {[key: string]: any}): boolean {     return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);   }    buildStyles(stateName: string|boolean|undefined, params: {[key: string]: any}, errors: Error[]):       ɵStyleDataMap {     let styler = this._stateStyles.get('*');     if (stateName !== undefined) {       styler = this._stateStyles.get(stateName?.toString()) || styler;     }     return styler ? styler.buildStyles(params, errors) : new Map();   }    build(       driver: AnimationDriver, element: any, currentState: any, nextState: any,       enterClassName: string, leaveClassName: string, currentOptions?: AnimationOptions,       nextOptions?: AnimationOptions, subInstructions?: ElementInstructionMap,       skipAstBuild?: boolean): AnimationTransitionInstruction {     const errors: Error[] = [];      const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;     const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;     const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);     const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;     const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);      const queriedElements = new Set<any>();     const preStyleMap = new Map<any, Set<string>>();     const postStyleMap = new Map<any, Set<string>>();     const isRemoval = nextState === 'void';      const animationOptions: AnimationOptions = {       params: applyParamDefaults(nextAnimationParams, transitionAnimationParams),       delay: this.ast.options?.delay,     };      const timelines = skipAstBuild ?         [] :         buildAnimationTimelines(             driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles,             nextStateStyles, animationOptions, subInstructions, errors);      let totalTime = 0;     timelines.forEach(tl => {       totalTime = Math.max(tl.duration + tl.delay, totalTime);     });      if (errors.length) {       return createTransitionInstruction(           element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles,           nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);     }      timelines.forEach(tl => {       const elm = tl.element;       const preProps = getOrSetDefaultValue(preStyleMap, elm, new Set<string>());       tl.preStyleProps.forEach(prop => preProps.add(prop));        const postProps = getOrSetDefaultValue(postStyleMap, elm, new Set<string>());       tl.postStyleProps.forEach(prop => postProps.add(prop));        if (elm !== element) {         queriedElements.add(elm);       }     });      if (typeof ngDevMode === 'undefined' || ngDevMode) {       checkNonAnimatableInTimelines(timelines, this._triggerName, driver);     }      const queriedElementsList = iteratorToArray(queriedElements.values());     return createTransitionInstruction(         element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles,         nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime);   } }  /**  * Checks inside a set of timelines if they try to animate a css property which is not considered  * animatable, in that case it prints a warning on the console.  * Besides that the function doesn't have any other effect.  *  * Note: this check is done here after the timelines are built instead of doing on a lower level so  * that we can make sure that the warning appears only once per instruction (we can aggregate here  * all the issues instead of finding them separately).  *  * @param timelines The built timelines for the current instruction.  * @param triggerName The name of the trigger for the current instruction.  * @param driver Animation driver used to perform the check.  *  */ function checkNonAnimatableInTimelines(     timelines: AnimationTimelineInstruction[], triggerName: string, driver: AnimationDriver): void {   if (!driver.validateAnimatableStyleProperty) {     return;   }    const allowedNonAnimatableProps = new Set<string>([     // 'easing' is a utility/synthetic prop we use to represent     // easing functions, it represents a property of the animation     // which is not animatable but different values can be used     // in different steps     'easing'   ]);    const invalidNonAnimatableProps = new Set<string>();    timelines.forEach(({keyframes}) => {     const nonAnimatablePropsInitialValues = new Map<string, string|number>();     keyframes.forEach(keyframe => {       const entriesToCheck =           Array.from(keyframe.entries()).filter(([prop]) => !allowedNonAnimatableProps.has(prop));       for (const [prop, value] of entriesToCheck) {         if (!driver.validateAnimatableStyleProperty!(prop)) {           if (nonAnimatablePropsInitialValues.has(prop) && !invalidNonAnimatableProps.has(prop)) {             const propInitialValue = nonAnimatablePropsInitialValues.get(prop);             if (propInitialValue !== value) {               invalidNonAnimatableProps.add(prop);             }           } else {             nonAnimatablePropsInitialValues.set(prop, value);           }         }       }     });   });    if (invalidNonAnimatableProps.size > 0) {     console.warn(         `Warning: The animation trigger \"${triggerName}\" is attempting to animate the following` +         ' not animatable properties: ' + Array.from(invalidNonAnimatableProps).join(', ') + '\ ' +         '(to check the list of all animatable properties visit https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties)');   } }  function oneOrMoreTransitionsMatch(     matchFns: TransitionMatcherFn[], currentState: any, nextState: any, element: any,     params: {[key: string]: any}): boolean {   return matchFns.some(fn => fn(currentState, nextState, element, params)); }  function applyParamDefaults(userParams: Record<string, any>, defaults: Record<string, any>) {   const result: Record<string, any> = copyObj(defaults);    for (const key in userParams) {     if (userParams.hasOwnProperty(key) && userParams[key] != null) {       result[key] = userParams[key];     }   }    return result; }  export class AnimationStateStyles {   constructor(       private styles: StyleAst, private defaultParams: {[key: string]: any},       private normalizer: AnimationStyleNormalizer) {}    buildStyles(params: {[key: string]: any}, errors: Error[]): ɵStyleDataMap {     const finalStyles: ɵStyleDataMap = new Map();     const combinedParams = copyObj(this.defaultParams);     Object.keys(params).forEach(key => {       const value = params[key];       if (value !== null) {         combinedParams[key] = value;       }     });     this.styles.styles.forEach(value => {       if (typeof value !== 'string') {         value.forEach((val, prop) => {           if (val) {             val = interpolateParams(val, combinedParams, errors);           }           const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);           val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);           finalStyles.set(prop, val);         });       }     });     return finalStyles;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationMetadataType, ɵStyleDataMap} from '@angular/animations';  import {SequenceAst, TransitionAst, TriggerAst} from './animation_ast'; import {AnimationStateStyles, AnimationTransitionFactory} from './animation_transition_factory'; import {AnimationStyleNormalizer} from './style_normalization/animation_style_normalizer';    export function buildTrigger(     name: string, ast: TriggerAst, normalizer: AnimationStyleNormalizer): AnimationTrigger {   return new AnimationTrigger(name, ast, normalizer); }  export class AnimationTrigger {   public transitionFactories: AnimationTransitionFactory[] = [];   public fallbackTransition: AnimationTransitionFactory;   public states = new Map<string, AnimationStateStyles>();    constructor(       public name: string, public ast: TriggerAst, private _normalizer: AnimationStyleNormalizer) {     ast.states.forEach(ast => {       const defaultParams = (ast.options && ast.options.params) || {};       this.states.set(ast.name, new AnimationStateStyles(ast.style, defaultParams, _normalizer));     });      balanceProperties(this.states, 'true', '1');     balanceProperties(this.states, 'false', '0');      ast.transitions.forEach(ast => {       this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));     });     this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);   }    get containsQueries() {     return this.ast.queryCount > 0;   }    matchTransition(currentState: any, nextState: any, element: any, params: {[key: string]: any}):       AnimationTransitionFactory|null {     const entry =         this.transitionFactories.find(f => f.match(currentState, nextState, element, params));     return entry || null;   }    matchStyles(currentState: any, params: {[key: string]: any}, errors: Error[]): ɵStyleDataMap {     return this.fallbackTransition.buildStyles(currentState, params, errors);   } }  function createFallbackTransition(     triggerName: string, states: Map<string, AnimationStateStyles>,     normalizer: AnimationStyleNormalizer): AnimationTransitionFactory {   const matchers = [(fromState: any, toState: any) => true];   const animation: SequenceAst = {type: AnimationMetadataType.Sequence, steps: [], options: null};   const transition: TransitionAst = {     type: AnimationMetadataType.Transition,     animation,     matchers,     options: null,     queryCount: 0,     depCount: 0   };   return new AnimationTransitionFactory(triggerName, transition, states); }  function balanceProperties(     stateMap: Map<string, AnimationStateStyles>, key1: string, key2: string) {   if (stateMap.has(key1)) {     if (!stateMap.has(key2)) {       stateMap.set(key2, stateMap.get(key1)!);     }   } else if (stateMap.has(key2)) {     stateMap.set(key1, stateMap.get(key2)!);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationMetadata, AnimationMetadataType, AnimationOptions, AnimationPlayer, AUTO_STYLE, ɵStyleDataMap} from '@angular/animations';  import {Ast} from '../dsl/animation_ast'; import {buildAnimationAst} from '../dsl/animation_ast_builder'; import {buildAnimationTimelines} from '../dsl/animation_timeline_builder'; import {AnimationTimelineInstruction} from '../dsl/animation_timeline_instruction'; import {ElementInstructionMap} from '../dsl/element_instruction_map'; import {AnimationStyleNormalizer} from '../dsl/style_normalization/animation_style_normalizer'; import {createAnimationFailed, missingOrDestroyedAnimation, missingPlayer, registerFailed} from '../error_helpers'; import {ENTER_CLASSNAME, LEAVE_CLASSNAME} from '../util'; import {warnRegister} from '../warning_helpers';  import {AnimationDriver} from './animation_driver'; import {getOrSetDefaultValue, listenOnPlayer, makeAnimationEvent, normalizeKeyframes, optimizeGroupPlayer} from './shared';  const EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();  export class TimelineAnimationEngine {   private _animations = new Map<string, Ast<AnimationMetadataType>>();   private _playersById = new Map<string, AnimationPlayer>();   public players: AnimationPlayer[] = [];    constructor(       public bodyNode: any, private _driver: AnimationDriver,       private _normalizer: AnimationStyleNormalizer) {}    register(id: string, metadata: AnimationMetadata|AnimationMetadata[]) {     const errors: Error[] = [];     const warnings: string[] = [];     const ast = buildAnimationAst(this._driver, metadata, errors, warnings);     if (errors.length) {       throw registerFailed(errors);     } else {       if (warnings.length) {         warnRegister(warnings);       }       this._animations.set(id, ast);     }   }    private _buildPlayer(       i: AnimationTimelineInstruction, preStyles: ɵStyleDataMap,       postStyles?: ɵStyleDataMap): AnimationPlayer {     const element = i.element;     const keyframes = normalizeKeyframes(         this._driver, this._normalizer, element, i.keyframes, preStyles, postStyles);     return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);   }    create(id: string, element: any, options: AnimationOptions = {}): AnimationPlayer {     const errors: Error[] = [];     const ast = this._animations.get(id);     let instructions: AnimationTimelineInstruction[];      const autoStylesMap = new Map<any, ɵStyleDataMap>();      if (ast) {       instructions = buildAnimationTimelines(           this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, new Map(), new Map(),           options, EMPTY_INSTRUCTION_MAP, errors);       instructions.forEach(inst => {         const styles = getOrSetDefaultValue(             autoStylesMap, inst.element, new Map<string, string|number|null>());         inst.postStyleProps.forEach(prop => styles.set(prop, null));       });     } else {       errors.push(missingOrDestroyedAnimation());       instructions = [];     }      if (errors.length) {       throw createAnimationFailed(errors);     }      autoStylesMap.forEach((styles, element) => {       styles.forEach((_, prop) => {         styles.set(prop, this._driver.computeStyle(element, prop, AUTO_STYLE));       });     });      const players = instructions.map(i => {       const styles = autoStylesMap.get(i.element);       return this._buildPlayer(i, new Map(), styles);     });     const player = optimizeGroupPlayer(players);     this._playersById.set(id, player);     player.onDestroy(() => this.destroy(id));      this.players.push(player);     return player;   }    destroy(id: string) {     const player = this._getPlayer(id);     player.destroy();     this._playersById.delete(id);     const index = this.players.indexOf(player);     if (index >= 0) {       this.players.splice(index, 1);     }   }    private _getPlayer(id: string): AnimationPlayer {     const player = this._playersById.get(id);     if (!player) {       throw missingPlayer(id);     }     return player;   }    listen(id: string, element: string, eventName: string, callback: (event: any) => any):       () => void {     // triggerName, fromState, toState are all ignored for timeline animations     const baseEvent = makeAnimationEvent(element, '', '', '');     listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);     return () => {};   }    command(id: string, element: any, command: string, args: any[]): void {     if (command == 'register') {       this.register(id, args[0] as AnimationMetadata | AnimationMetadata[]);       return;     }      if (command == 'create') {       const options = (args[0] || {}) as AnimationOptions;       this.create(id, element, options);       return;     }      const player = this._getPlayer(id);     switch (command) {       case 'play':         player.play();         break;       case 'pause':         player.pause();         break;       case 'reset':         player.reset();         break;       case 'restart':         player.restart();         break;       case 'finish':         player.finish();         break;       case 'init':         player.init();         break;       case 'setPosition':         player.setPosition(parseFloat(args[0] as string));         break;       case 'destroy':         this.destroy(id);         break;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationOptions, AnimationPlayer, AUTO_STYLE, NoopAnimationPlayer, ɵAnimationGroupPlayer as AnimationGroupPlayer, ɵPRE_STYLE as PRE_STYLE, ɵStyleDataMap} from '@angular/animations';  import {AnimationTimelineInstruction} from '../dsl/animation_timeline_instruction'; import {AnimationTransitionFactory} from '../dsl/animation_transition_factory'; import {AnimationTransitionInstruction} from '../dsl/animation_transition_instruction'; import {AnimationTrigger} from '../dsl/animation_trigger'; import {ElementInstructionMap} from '../dsl/element_instruction_map'; import {AnimationStyleNormalizer} from '../dsl/style_normalization/animation_style_normalizer'; import {missingEvent, missingTrigger, transitionFailed, triggerTransitionsFailed, unregisteredTrigger, unsupportedTriggerEvent} from '../error_helpers'; import {copyObj, ENTER_CLASSNAME, eraseStyles, LEAVE_CLASSNAME, NG_ANIMATING_CLASSNAME, NG_ANIMATING_SELECTOR, NG_TRIGGER_CLASSNAME, NG_TRIGGER_SELECTOR, setStyles} from '../util';  import {AnimationDriver} from './animation_driver'; import {getOrSetDefaultValue, listenOnPlayer, makeAnimationEvent, normalizeKeyframes, optimizeGroupPlayer} from './shared';  const QUEUED_CLASSNAME = 'ng-animate-queued'; const QUEUED_SELECTOR = '.ng-animate-queued'; const DISABLED_CLASSNAME = 'ng-animate-disabled'; const DISABLED_SELECTOR = '.ng-animate-disabled'; const STAR_CLASSNAME = 'ng-star-inserted'; const STAR_SELECTOR = '.ng-star-inserted';  const EMPTY_PLAYER_ARRAY: TransitionAnimationPlayer[] = []; const NULL_REMOVAL_STATE: ElementAnimationState = {   namespaceId: '',   setForRemoval: false,   setForMove: false,   hasAnimation: false,   removedBeforeQueried: false }; const NULL_REMOVED_QUERIED_STATE: ElementAnimationState = {   namespaceId: '',   setForMove: false,   setForRemoval: false,   hasAnimation: false,   removedBeforeQueried: true };  interface TriggerListener {   name: string;   phase: string;   callback: (event: any) => any; }  export interface QueueInstruction {   element: any;   triggerName: string;   fromState: StateValue;   toState: StateValue;   transition: AnimationTransitionFactory;   player: TransitionAnimationPlayer;   isFallbackTransition: boolean; }  export const REMOVAL_FLAG = '__ng_removed';  export interface ElementAnimationState {   setForRemoval: boolean;   setForMove: boolean;   hasAnimation: boolean;   namespaceId: string;   removedBeforeQueried: boolean;   previousTriggersValues?: Map<string, string>; }  export class StateValue {   public value: string;   public options: AnimationOptions;    get params(): {[key: string]: any} {     return this.options.params as {[key: string]: any};   }    constructor(input: any, public namespaceId: string = '') {     const isObj = input && input.hasOwnProperty('value');     const value = isObj ? input['value'] : input;     this.value = normalizeTriggerValue(value);     if (isObj) {       const options = copyObj(input as any);       delete options['value'];       this.options = options as AnimationOptions;     } else {       this.options = {};     }     if (!this.options.params) {       this.options.params = {};     }   }    absorbOptions(options: AnimationOptions) {     const newParams = options.params;     if (newParams) {       const oldParams = this.options.params!;       Object.keys(newParams).forEach(prop => {         if (oldParams[prop] == null) {           oldParams[prop] = newParams[prop];         }       });     }   } }  export const VOID_VALUE = 'void'; export const DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);  export class AnimationTransitionNamespace {   public players: TransitionAnimationPlayer[] = [];    private _triggers = new Map<string, AnimationTrigger>();   private _queue: QueueInstruction[] = [];    private _elementListeners = new Map<any, TriggerListener[]>();    private _hostClassName: string;    constructor(       public id: string, public hostElement: any, private _engine: TransitionAnimationEngine) {     this._hostClassName = 'ng-tns-' + id;     addClass(hostElement, this._hostClassName);   }    listen(element: any, name: string, phase: string, callback: (event: any) => boolean): () => any {     if (!this._triggers.has(name)) {       throw missingTrigger(phase, name);     }      if (phase == null || phase.length == 0) {       throw missingEvent(name);     }      if (!isTriggerEventValid(phase)) {       throw unsupportedTriggerEvent(phase, name);     }      const listeners = getOrSetDefaultValue(this._elementListeners, element, []);     const data = {name, phase, callback};     listeners.push(data);      const triggersWithStates =         getOrSetDefaultValue(this._engine.statesByElement, element, new Map<string, StateValue>());     if (!triggersWithStates.has(name)) {       addClass(element, NG_TRIGGER_CLASSNAME);       addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);       triggersWithStates.set(name, DEFAULT_STATE_VALUE);     }      return () => {       // the event listener is removed AFTER the flush has occurred such       // that leave animations callbacks can fire (otherwise if the node       // is removed in between then the listeners would be deregistered)       this._engine.afterFlush(() => {         const index = listeners.indexOf(data);         if (index >= 0) {           listeners.splice(index, 1);         }          if (!this._triggers.has(name)) {           triggersWithStates.delete(name);         }       });     };   }    register(name: string, ast: AnimationTrigger): boolean {     if (this._triggers.has(name)) {       // throw       return false;     } else {       this._triggers.set(name, ast);       return true;     }   }    private _getTrigger(name: string) {     const trigger = this._triggers.get(name);     if (!trigger) {       throw unregisteredTrigger(name);     }     return trigger;   }    trigger(element: any, triggerName: string, value: any, defaultToFallback: boolean = true):       TransitionAnimationPlayer|undefined {     const trigger = this._getTrigger(triggerName);     const player = new TransitionAnimationPlayer(this.id, triggerName, element);      let triggersWithStates = this._engine.statesByElement.get(element);     if (!triggersWithStates) {       addClass(element, NG_TRIGGER_CLASSNAME);       addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);       this._engine.statesByElement.set(element, triggersWithStates = new Map<string, StateValue>());     }      let fromState = triggersWithStates.get(triggerName);     const toState = new StateValue(value, this.id);     const isObj = value && value.hasOwnProperty('value');     if (!isObj && fromState) {       toState.absorbOptions(fromState.options);     }      triggersWithStates.set(triggerName, toState);      if (!fromState) {       fromState = DEFAULT_STATE_VALUE;     }      const isRemoval = toState.value === VOID_VALUE;      // normally this isn't reached by here, however, if an object expression     // is passed in then it may be a new object each time. Comparing the value     // is important since that will stay the same despite there being a new object.     // The removal arc here is special cased because the same element is triggered     // twice in the event that it contains animations on the outer/inner portions     // of the host container     if (!isRemoval && fromState.value === toState.value) {       // this means that despite the value not changing, some inner params       // have changed which means that the animation final styles need to be applied       if (!objEquals(fromState.params, toState.params)) {         const errors: Error[] = [];         const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);         const toStyles = trigger.matchStyles(toState.value, toState.params, errors);         if (errors.length) {           this._engine.reportError(errors);         } else {           this._engine.afterFlush(() => {             eraseStyles(element, fromStyles);             setStyles(element, toStyles);           });         }       }       return;     }      const playersOnElement: TransitionAnimationPlayer[] =         getOrSetDefaultValue(this._engine.playersByElement, element, []);     playersOnElement.forEach(player => {       // only remove the player if it is queued on the EXACT same trigger/namespace       // we only also deal with queued players here because if the animation has       // started then we want to keep the player alive until the flush happens       // (which is where the previousPlayers are passed into the new player)       if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {         player.destroy();       }     });      let transition =         trigger.matchTransition(fromState.value, toState.value, element, toState.params);     let isFallbackTransition = false;     if (!transition) {       if (!defaultToFallback) return;       transition = trigger.fallbackTransition;       isFallbackTransition = true;     }      this._engine.totalQueuedPlayers++;     this._queue.push(         {element, triggerName, transition, fromState, toState, player, isFallbackTransition});      if (!isFallbackTransition) {       addClass(element, QUEUED_CLASSNAME);       player.onStart(() => {         removeClass(element, QUEUED_CLASSNAME);       });     }      player.onDone(() => {       let index = this.players.indexOf(player);       if (index >= 0) {         this.players.splice(index, 1);       }        const players = this._engine.playersByElement.get(element);       if (players) {         let index = players.indexOf(player);         if (index >= 0) {           players.splice(index, 1);         }       }     });      this.players.push(player);     playersOnElement.push(player);      return player;   }    deregister(name: string) {     this._triggers.delete(name);      this._engine.statesByElement.forEach(stateMap => stateMap.delete(name));      this._elementListeners.forEach((listeners, element) => {       this._elementListeners.set(element, listeners.filter(entry => {         return entry.name != name;       }));     });   }    clearElementCache(element: any) {     this._engine.statesByElement.delete(element);     this._elementListeners.delete(element);     const elementPlayers = this._engine.playersByElement.get(element);     if (elementPlayers) {       elementPlayers.forEach(player => player.destroy());       this._engine.playersByElement.delete(element);     }   }    private _signalRemovalForInnerTriggers(rootElement: any, context: any) {     const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);      // emulate a leave animation for all inner nodes within this node.     // If there are no animations found for any of the nodes then clear the cache     // for the element.     elements.forEach(elm => {       // this means that an inner remove() operation has already kicked off       // the animation on this element...       if (elm[REMOVAL_FLAG]) return;        const namespaces = this._engine.fetchNamespacesByElement(elm);       if (namespaces.size) {         namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));       } else {         this.clearElementCache(elm);       }     });      // If the child elements were removed along with the parent, their animations might not     // have completed. Clear all the elements from the cache so we don't end up with a memory leak.     this._engine.afterFlushAnimationsDone(         () => elements.forEach(elm => this.clearElementCache(elm)));   }    triggerLeaveAnimation(       element: any, context: any, destroyAfterComplete?: boolean,       defaultToFallback?: boolean): boolean {     const triggerStates = this._engine.statesByElement.get(element);     const previousTriggersValues = new Map<string, string>();     if (triggerStates) {       const players: TransitionAnimationPlayer[] = [];       triggerStates.forEach((state, triggerName) => {         previousTriggersValues.set(triggerName, state.value);         // this check is here in the event that an element is removed         // twice (both on the host level and the component level)         if (this._triggers.has(triggerName)) {           const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);           if (player) {             players.push(player);           }         }       });        if (players.length) {         this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);         if (destroyAfterComplete) {           optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));         }         return true;       }     }     return false;   }    prepareLeaveAnimationListeners(element: any) {     const listeners = this._elementListeners.get(element);     const elementStates = this._engine.statesByElement.get(element);      // if this statement fails then it means that the element was picked up     // by an earlier flush (or there are no listeners at all to track the leave).     if (listeners && elementStates) {       const visitedTriggers = new Set<string>();       listeners.forEach(listener => {         const triggerName = listener.name;         if (visitedTriggers.has(triggerName)) return;         visitedTriggers.add(triggerName);          const trigger = this._triggers.get(triggerName)!;         const transition = trigger.fallbackTransition;         const fromState = elementStates.get(triggerName) || DEFAULT_STATE_VALUE;         const toState = new StateValue(VOID_VALUE);         const player = new TransitionAnimationPlayer(this.id, triggerName, element);          this._engine.totalQueuedPlayers++;         this._queue.push({           element,           triggerName,           transition,           fromState,           toState,           player,           isFallbackTransition: true         });       });     }   }    removeNode(element: any, context: any): void {     const engine = this._engine;     if (element.childElementCount) {       this._signalRemovalForInnerTriggers(element, context);     }      // this means that a * => VOID animation was detected and kicked off     if (this.triggerLeaveAnimation(element, context, true)) return;      // find the player that is animating and make sure that the     // removal is delayed until that player has completed     let containsPotentialParentTransition = false;     if (engine.totalAnimations) {       const currentPlayers =           engine.players.length ? engine.playersByQueriedElement.get(element) : [];        // when this `if statement` does not continue forward it means that       // a previous animation query has selected the current element and       // is animating it. In this situation want to continue forwards and       // allow the element to be queued up for animation later.       if (currentPlayers && currentPlayers.length) {         containsPotentialParentTransition = true;       } else {         let parent = element;         while (parent = parent.parentNode) {           const triggers = engine.statesByElement.get(parent);           if (triggers) {             containsPotentialParentTransition = true;             break;           }         }       }     }      // at this stage we know that the element will either get removed     // during flush or will be picked up by a parent query. Either way     // we need to fire the listeners for this element when it DOES get     // removed (once the query parent animation is done or after flush)     this.prepareLeaveAnimationListeners(element);      // whether or not a parent has an animation we need to delay the deferral of the leave     // operation until we have more information (which we do after flush() has been called)     if (containsPotentialParentTransition) {       engine.markElementAsRemoved(this.id, element, false, context);     } else {       const removalFlag = element[REMOVAL_FLAG];       if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {         // we do this after the flush has occurred such         // that the callbacks can be fired         engine.afterFlush(() => this.clearElementCache(element));         engine.destroyInnerAnimations(element);         engine._onRemovalComplete(element, context);       }     }   }    insertNode(element: any, parent: any): void {     addClass(element, this._hostClassName);   }    drainQueuedTransitions(microtaskId: number): QueueInstruction[] {     const instructions: QueueInstruction[] = [];     this._queue.forEach(entry => {       const player = entry.player;       if (player.destroyed) return;        const element = entry.element;       const listeners = this._elementListeners.get(element);       if (listeners) {         listeners.forEach((listener: TriggerListener) => {           if (listener.name == entry.triggerName) {             const baseEvent = makeAnimationEvent(                 element, entry.triggerName, entry.fromState.value, entry.toState.value);             (baseEvent as any)['_data'] = microtaskId;             listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);           }         });       }        if (player.markedForDestroy) {         this._engine.afterFlush(() => {           // now we can destroy the element properly since the event listeners have           // been bound to the player           player.destroy();         });       } else {         instructions.push(entry);       }     });      this._queue = [];      return instructions.sort((a, b) => {       // if depCount == 0 them move to front       // otherwise if a contains b then move back       const d0 = a.transition.ast.depCount;       const d1 = b.transition.ast.depCount;       if (d0 == 0 || d1 == 0) {         return d0 - d1;       }       return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;     });   }    destroy(context: any) {     this.players.forEach(p => p.destroy());     this._signalRemovalForInnerTriggers(this.hostElement, context);   }    elementContainsData(element: any): boolean {     let containsData = false;     if (this._elementListeners.has(element)) containsData = true;     containsData =         (this._queue.find(entry => entry.element === element) ? true : false) || containsData;     return containsData;   } }  export interface QueuedTransition {   element: any;   instruction: AnimationTransitionInstruction;   player: TransitionAnimationPlayer; }  export class TransitionAnimationEngine {   public players: TransitionAnimationPlayer[] = [];   public newHostElements = new Map<any, AnimationTransitionNamespace>();   public playersByElement = new Map<any, TransitionAnimationPlayer[]>();   public playersByQueriedElement = new Map<any, TransitionAnimationPlayer[]>();   public statesByElement = new Map<any, Map<string, StateValue>>();   public disabledNodes = new Set<any>();    public totalAnimations = 0;   public totalQueuedPlayers = 0;    private _namespaceLookup: {[id: string]: AnimationTransitionNamespace} = {};   private _namespaceList: AnimationTransitionNamespace[] = [];   private _flushFns: (() => any)[] = [];   private _whenQuietFns: (() => any)[] = [];    public namespacesByHostElement = new Map<any, AnimationTransitionNamespace>();   public collectedEnterElements: any[] = [];   public collectedLeaveElements: any[] = [];    // this method is designed to be overridden by the code that uses this engine   public onRemovalComplete = (element: any, context: any) => {};    /** @internal */   _onRemovalComplete(element: any, context: any) {     this.onRemovalComplete(element, context);   }    constructor(       public bodyNode: any, public driver: AnimationDriver,       private _normalizer: AnimationStyleNormalizer) {}    get queuedPlayers(): TransitionAnimationPlayer[] {     const players: TransitionAnimationPlayer[] = [];     this._namespaceList.forEach(ns => {       ns.players.forEach(player => {         if (player.queued) {           players.push(player);         }       });     });     return players;   }    createNamespace(namespaceId: string, hostElement: any) {     const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);     if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {       this._balanceNamespaceList(ns, hostElement);     } else {       // defer this later until flush during when the host element has       // been inserted so that we know exactly where to place it in       // the namespace list       this.newHostElements.set(hostElement, ns);        // given that this host element is a part of the animation code, it       // may or may not be inserted by a parent node that is of an       // animation renderer type. If this happens then we can still have       // access to this item when we query for :enter nodes. If the parent       // is a renderer then the set data-structure will normalize the entry       this.collectEnterElement(hostElement);     }     return this._namespaceLookup[namespaceId] = ns;   }    private _balanceNamespaceList(ns: AnimationTransitionNamespace, hostElement: any) {     const namespaceList = this._namespaceList;     const namespacesByHostElement = this.namespacesByHostElement;     const limit = namespaceList.length - 1;     if (limit >= 0) {       let found = false;       // Find the closest ancestor with an existing namespace so we can then insert `ns` after it,       // establishing a top-down ordering of namespaces in `this._namespaceList`.       let ancestor = this.driver.getParentElement(hostElement);       while (ancestor) {         const ancestorNs = namespacesByHostElement.get(ancestor);         if (ancestorNs) {           // An animation namespace has been registered for this ancestor, so we insert `ns`           // right after it to establish top-down ordering of animation namespaces.           const index = namespaceList.indexOf(ancestorNs);           namespaceList.splice(index + 1, 0, ns);           found = true;           break;         }         ancestor = this.driver.getParentElement(ancestor);       }       if (!found) {         // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to         // ensure that any existing descendants are ordered after `ns`, retaining the desired         // top-down ordering.         namespaceList.unshift(ns);       }     } else {       namespaceList.push(ns);     }      namespacesByHostElement.set(hostElement, ns);     return ns;   }    register(namespaceId: string, hostElement: any) {     let ns = this._namespaceLookup[namespaceId];     if (!ns) {       ns = this.createNamespace(namespaceId, hostElement);     }     return ns;   }    registerTrigger(namespaceId: string, name: string, trigger: AnimationTrigger) {     let ns = this._namespaceLookup[namespaceId];     if (ns && ns.register(name, trigger)) {       this.totalAnimations++;     }   }    destroy(namespaceId: string, context: any) {     if (!namespaceId) return;      const ns = this._fetchNamespace(namespaceId);      this.afterFlush(() => {       this.namespacesByHostElement.delete(ns.hostElement);       delete this._namespaceLookup[namespaceId];       const index = this._namespaceList.indexOf(ns);       if (index >= 0) {         this._namespaceList.splice(index, 1);       }     });      this.afterFlushAnimationsDone(() => ns.destroy(context));   }    private _fetchNamespace(id: string) {     return this._namespaceLookup[id];   }    fetchNamespacesByElement(element: any): Set<AnimationTransitionNamespace> {     // normally there should only be one namespace per element, however     // if @triggers are placed on both the component element and then     // its host element (within the component code) then there will be     // two namespaces returned. We use a set here to simply deduplicate     // the namespaces in case (for the reason described above) there are multiple triggers     const namespaces = new Set<AnimationTransitionNamespace>();     const elementStates = this.statesByElement.get(element);     if (elementStates) {       for (let stateValue of elementStates.values()) {         if (stateValue.namespaceId) {           const ns = this._fetchNamespace(stateValue.namespaceId);           if (ns) {             namespaces.add(ns);           }         }       }     }     return namespaces;   }    trigger(namespaceId: string, element: any, name: string, value: any): boolean {     if (isElementNode(element)) {       const ns = this._fetchNamespace(namespaceId);       if (ns) {         ns.trigger(element, name, value);         return true;       }     }     return false;   }    insertNode(namespaceId: string, element: any, parent: any, insertBefore: boolean): void {     if (!isElementNode(element)) return;      // special case for when an element is removed and reinserted (move operation)     // when this occurs we do not want to use the element for deletion later     const details = element[REMOVAL_FLAG] as ElementAnimationState;     if (details && details.setForRemoval) {       details.setForRemoval = false;       details.setForMove = true;       const index = this.collectedLeaveElements.indexOf(element);       if (index >= 0) {         this.collectedLeaveElements.splice(index, 1);       }     }      // in the event that the namespaceId is blank then the caller     // code does not contain any animation code in it, but it is     // just being called so that the node is marked as being inserted     if (namespaceId) {       const ns = this._fetchNamespace(namespaceId);       // This if-statement is a workaround for router issue #21947.       // The router sometimes hits a race condition where while a route       // is being instantiated a new navigation arrives, triggering leave       // animation of DOM that has not been fully initialized, until this       // is resolved, we need to handle the scenario when DOM is not in a       // consistent state during the animation.       if (ns) {         ns.insertNode(element, parent);       }     }      // only *directives and host elements are inserted before     if (insertBefore) {       this.collectEnterElement(element);     }   }    collectEnterElement(element: any) {     this.collectedEnterElements.push(element);   }    markElementAsDisabled(element: any, value: boolean) {     if (value) {       if (!this.disabledNodes.has(element)) {         this.disabledNodes.add(element);         addClass(element, DISABLED_CLASSNAME);       }     } else if (this.disabledNodes.has(element)) {       this.disabledNodes.delete(element);       removeClass(element, DISABLED_CLASSNAME);     }   }    removeNode(namespaceId: string, element: any, isHostElement: boolean, context: any): void {     if (isElementNode(element)) {       const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;       if (ns) {         ns.removeNode(element, context);       } else {         this.markElementAsRemoved(namespaceId, element, false, context);       }        if (isHostElement) {         const hostNS = this.namespacesByHostElement.get(element);         if (hostNS && hostNS.id !== namespaceId) {           hostNS.removeNode(element, context);         }       }     } else {       this._onRemovalComplete(element, context);     }   }    markElementAsRemoved(       namespaceId: string, element: any, hasAnimation?: boolean, context?: any,       previousTriggersValues?: Map<string, string>) {     this.collectedLeaveElements.push(element);     element[REMOVAL_FLAG] = {       namespaceId,       setForRemoval: context,       hasAnimation,       removedBeforeQueried: false,       previousTriggersValues     };   }    listen(       namespaceId: string, element: any, name: string, phase: string,       callback: (event: any) => boolean): () => any {     if (isElementNode(element)) {       return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);     }     return () => {};   }    private _buildInstruction(       entry: QueueInstruction, subTimelines: ElementInstructionMap, enterClassName: string,       leaveClassName: string, skipBuildAst?: boolean) {     return entry.transition.build(         this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName,         leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);   }    destroyInnerAnimations(containerElement: any) {     let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);     elements.forEach(element => this.destroyActiveAnimationsForElement(element));      if (this.playersByQueriedElement.size == 0) return;      elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);     elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));   }    destroyActiveAnimationsForElement(element: any) {     const players = this.playersByElement.get(element);     if (players) {       players.forEach(player => {         // special case for when an element is set for destruction, but hasn't started.         // in this situation we want to delay the destruction until the flush occurs         // so that any event listeners attached to the player are triggered.         if (player.queued) {           player.markedForDestroy = true;         } else {           player.destroy();         }       });     }   }    finishActiveQueriedAnimationOnElement(element: any) {     const players = this.playersByQueriedElement.get(element);     if (players) {       players.forEach(player => player.finish());     }   }    whenRenderingDone(): Promise<any> {     return new Promise<void>(resolve => {       if (this.players.length) {         return optimizeGroupPlayer(this.players).onDone(() => resolve());       } else {         resolve();       }     });   }    processLeaveNode(element: any) {     const details = element[REMOVAL_FLAG] as ElementAnimationState;     if (details && details.setForRemoval) {       // this will prevent it from removing it twice       element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;       if (details.namespaceId) {         this.destroyInnerAnimations(element);         const ns = this._fetchNamespace(details.namespaceId);         if (ns) {           ns.clearElementCache(element);         }       }       this._onRemovalComplete(element, details.setForRemoval);     }      if (element.classList?.contains(DISABLED_CLASSNAME)) {       this.markElementAsDisabled(element, false);     }      this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {       this.markElementAsDisabled(node, false);     });   }    flush(microtaskId: number = -1) {     let players: AnimationPlayer[] = [];     if (this.newHostElements.size) {       this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));       this.newHostElements.clear();     }      if (this.totalAnimations && this.collectedEnterElements.length) {       for (let i = 0; i < this.collectedEnterElements.length; i++) {         const elm = this.collectedEnterElements[i];         addClass(elm, STAR_CLASSNAME);       }     }      if (this._namespaceList.length &&         (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {       const cleanupFns: Function[] = [];       try {         players = this._flushAnimations(cleanupFns, microtaskId);       } finally {         for (let i = 0; i < cleanupFns.length; i++) {           cleanupFns[i]();         }       }     } else {       for (let i = 0; i < this.collectedLeaveElements.length; i++) {         const element = this.collectedLeaveElements[i];         this.processLeaveNode(element);       }     }      this.totalQueuedPlayers = 0;     this.collectedEnterElements.length = 0;     this.collectedLeaveElements.length = 0;     this._flushFns.forEach(fn => fn());     this._flushFns = [];      if (this._whenQuietFns.length) {       // we move these over to a variable so that       // if any new callbacks are registered in another       // flush they do not populate the existing set       const quietFns = this._whenQuietFns;       this._whenQuietFns = [];        if (players.length) {         optimizeGroupPlayer(players).onDone(() => {           quietFns.forEach(fn => fn());         });       } else {         quietFns.forEach(fn => fn());       }     }   }    reportError(errors: Error[]) {     throw triggerTransitionsFailed(errors);   }    private _flushAnimations(cleanupFns: Function[], microtaskId: number):       TransitionAnimationPlayer[] {     const subTimelines = new ElementInstructionMap();     const skippedPlayers: TransitionAnimationPlayer[] = [];     const skippedPlayersMap = new Map<any, AnimationPlayer[]>();     const queuedInstructions: QueuedTransition[] = [];     const queriedElements = new Map<any, TransitionAnimationPlayer[]>();     const allPreStyleElements = new Map<any, Set<string>>();     const allPostStyleElements = new Map<any, Set<string>>();      const disabledElementsSet = new Set<any>();     this.disabledNodes.forEach(node => {       disabledElementsSet.add(node);       const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);       for (let i = 0; i < nodesThatAreDisabled.length; i++) {         disabledElementsSet.add(nodesThatAreDisabled[i]);       }     });      const bodyNode = this.bodyNode;     const allTriggerElements = Array.from(this.statesByElement.keys());     const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);      // this must occur before the instructions are built below such that     // the :enter queries match the elements (since the timeline queries     // are fired during instruction building).     const enterNodeMapIds = new Map<any, string>();     let i = 0;     enterNodeMap.forEach((nodes, root) => {       const className = ENTER_CLASSNAME + i++;       enterNodeMapIds.set(root, className);       nodes.forEach(node => addClass(node, className));     });      const allLeaveNodes: any[] = [];     const mergedLeaveNodes = new Set<any>();     const leaveNodesWithoutAnimations = new Set<any>();     for (let i = 0; i < this.collectedLeaveElements.length; i++) {       const element = this.collectedLeaveElements[i];       const details = element[REMOVAL_FLAG] as ElementAnimationState;       if (details && details.setForRemoval) {         allLeaveNodes.push(element);         mergedLeaveNodes.add(element);         if (details.hasAnimation) {           this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));         } else {           leaveNodesWithoutAnimations.add(element);         }       }     }      const leaveNodeMapIds = new Map<any, string>();     const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));     leaveNodeMap.forEach((nodes, root) => {       const className = LEAVE_CLASSNAME + i++;       leaveNodeMapIds.set(root, className);       nodes.forEach(node => addClass(node, className));     });      cleanupFns.push(() => {       enterNodeMap.forEach((nodes, root) => {         const className = enterNodeMapIds.get(root)!;         nodes.forEach(node => removeClass(node, className));       });        leaveNodeMap.forEach((nodes, root) => {         const className = leaveNodeMapIds.get(root)!;         nodes.forEach(node => removeClass(node, className));       });        allLeaveNodes.forEach(element => {         this.processLeaveNode(element);       });     });      const allPlayers: TransitionAnimationPlayer[] = [];     const erroneousTransitions: AnimationTransitionInstruction[] = [];     for (let i = this._namespaceList.length - 1; i >= 0; i--) {       const ns = this._namespaceList[i];       ns.drainQueuedTransitions(microtaskId).forEach(entry => {         const player = entry.player;         const element = entry.element;         allPlayers.push(player);          if (this.collectedEnterElements.length) {           const details = element[REMOVAL_FLAG] as ElementAnimationState;           // animations for move operations (elements being removed and reinserted,           // e.g. when the order of an *ngFor list changes) are currently not supported           if (details && details.setForMove) {             if (details.previousTriggersValues &&                 details.previousTriggersValues.has(entry.triggerName)) {               const previousValue = details.previousTriggersValues.get(entry.triggerName) as string;                // we need to restore the previous trigger value since the element has               // only been moved and hasn't actually left the DOM               const triggersWithStates = this.statesByElement.get(entry.element);               if (triggersWithStates && triggersWithStates.has(entry.triggerName)) {                 const state = triggersWithStates.get(entry.triggerName)!;                 state.value = previousValue;                 triggersWithStates.set(entry.triggerName, state);               }             }              player.destroy();             return;           }         }          const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);         const leaveClassName = leaveNodeMapIds.get(element)!;         const enterClassName = enterNodeMapIds.get(element)!;         const instruction = this._buildInstruction(             entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned)!;         if (instruction.errors && instruction.errors.length) {           erroneousTransitions.push(instruction);           return;         }          // even though the element may not be in the DOM, it may still         // be added at a later point (due to the mechanics of content         // projection and/or dynamic component insertion) therefore it's         // important to still style the element.         if (nodeIsOrphaned) {           player.onStart(() => eraseStyles(element, instruction.fromStyles));           player.onDestroy(() => setStyles(element, instruction.toStyles));           skippedPlayers.push(player);           return;         }          // if an unmatched transition is queued and ready to go         // then it SHOULD NOT render an animation and cancel the         // previously running animations.         if (entry.isFallbackTransition) {           player.onStart(() => eraseStyles(element, instruction.fromStyles));           player.onDestroy(() => setStyles(element, instruction.toStyles));           skippedPlayers.push(player);           return;         }          // this means that if a parent animation uses this animation as a sub-trigger         // then it will instruct the timeline builder not to add a player delay, but         // instead stretch the first keyframe gap until the animation starts. This is         // important in order to prevent extra initialization styles from being         // required by the user for the animation.         const timelines: AnimationTimelineInstruction[] = [];         instruction.timelines.forEach(tl => {           tl.stretchStartingKeyframe = true;           if (!this.disabledNodes.has(tl.element)) {             timelines.push(tl);           }         });         instruction.timelines = timelines;          subTimelines.append(element, instruction.timelines);          const tuple = {instruction, player, element};          queuedInstructions.push(tuple);          instruction.queriedElements.forEach(             element => getOrSetDefaultValue(queriedElements, element, []).push(player));          instruction.preStyleProps.forEach((stringMap, element) => {           if (stringMap.size) {             let setVal: Set<string> = allPreStyleElements.get(element)!;             if (!setVal) {               allPreStyleElements.set(element, setVal = new Set<string>());             }             stringMap.forEach((_, prop) => setVal.add(prop));           }         });          instruction.postStyleProps.forEach((stringMap, element) => {           let setVal: Set<string> = allPostStyleElements.get(element)!;           if (!setVal) {             allPostStyleElements.set(element, setVal = new Set<string>());           }           stringMap.forEach((_, prop) => setVal.add(prop));         });       });     }      if (erroneousTransitions.length) {       const errors: Error[] = [];       erroneousTransitions.forEach(instruction => {         errors.push(transitionFailed(instruction.triggerName, instruction.errors!));       });        allPlayers.forEach(player => player.destroy());       this.reportError(errors);     }      const allPreviousPlayersMap = new Map<any, TransitionAnimationPlayer[]>();     // this map tells us which element in the DOM tree is contained by     // which animation. Further down this map will get populated once     // the players are built and in doing so we can use it to efficiently     // figure out if a sub player is skipped due to a parent player having priority.     const animationElementMap = new Map<any, any>();     queuedInstructions.forEach(entry => {       const element = entry.element;       if (subTimelines.has(element)) {         animationElementMap.set(element, element);         this._beforeAnimationBuild(             entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);       }     });      skippedPlayers.forEach(player => {       const element = player.element;       const previousPlayers =           this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);       previousPlayers.forEach(prevPlayer => {         getOrSetDefaultValue(allPreviousPlayersMap, element, []).push(prevPlayer);         prevPlayer.destroy();       });     });      // this is a special case for nodes that will be removed either by     // having their own leave animations or by being queried in a container     // that will be removed once a parent animation is complete. The idea     // here is that * styles must be identical to ! styles because of     // backwards compatibility (* is also filled in by default in many places).     // Otherwise * styles will return an empty value or \"auto\" since the element     // passed to getComputedStyle will not be visible (since * === destination)     const replaceNodes = allLeaveNodes.filter(node => {       return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);     });      // POST STAGE: fill the * styles     const postStylesMap = new Map<any, ɵStyleDataMap>();     const allLeaveQueriedNodes = cloakAndComputeStyles(         postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);      allLeaveQueriedNodes.forEach(node => {       if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {         replaceNodes.push(node);       }     });      // PRE STAGE: fill the ! styles     const preStylesMap = new Map<any, ɵStyleDataMap>();     enterNodeMap.forEach((nodes, root) => {       cloakAndComputeStyles(           preStylesMap, this.driver, new Set(nodes), allPreStyleElements, PRE_STYLE);     });      replaceNodes.forEach(node => {       const post = postStylesMap.get(node);       const pre = preStylesMap.get(node);       postStylesMap.set(           node,           new Map([...Array.from(post?.entries() ?? []), ...Array.from(pre?.entries() ?? [])]));     });      const rootPlayers: TransitionAnimationPlayer[] = [];     const subPlayers: TransitionAnimationPlayer[] = [];     const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};     queuedInstructions.forEach(entry => {       const {element, player, instruction} = entry;       // this means that it was never consumed by a parent animation which       // means that it is independent and therefore should be set for animation       if (subTimelines.has(element)) {         if (disabledElementsSet.has(element)) {           player.onDestroy(() => setStyles(element, instruction.toStyles));           player.disabled = true;           player.overrideTotalTime(instruction.totalTime);           skippedPlayers.push(player);           return;         }          // this will flow up the DOM and query the map to figure out         // if a parent animation has priority over it. In the situation         // that a parent is detected then it will cancel the loop. If         // nothing is detected, or it takes a few hops to find a parent,         // then it will fill in the missing nodes and signal them as having         // a detected parent (or a NO_PARENT value via a special constant).         let parentWithAnimation: any = NO_PARENT_ANIMATION_ELEMENT_DETECTED;         if (animationElementMap.size > 1) {           let elm = element;           const parentsToAdd: any[] = [];           while (elm = elm.parentNode) {             const detectedParent = animationElementMap.get(elm);             if (detectedParent) {               parentWithAnimation = detectedParent;               break;             }             parentsToAdd.push(elm);           }           parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));         }          const innerPlayer = this._buildAnimation(             player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap,             postStylesMap);          player.setRealPlayer(innerPlayer);          if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {           rootPlayers.push(player);         } else {           const parentPlayers = this.playersByElement.get(parentWithAnimation);           if (parentPlayers && parentPlayers.length) {             player.parentPlayer = optimizeGroupPlayer(parentPlayers);           }           skippedPlayers.push(player);         }       } else {         eraseStyles(element, instruction.fromStyles);         player.onDestroy(() => setStyles(element, instruction.toStyles));         // there still might be a ancestor player animating this         // element therefore we will still add it as a sub player         // even if its animation may be disabled         subPlayers.push(player);         if (disabledElementsSet.has(element)) {           skippedPlayers.push(player);         }       }     });      // find all of the sub players' corresponding inner animation players     subPlayers.forEach(player => {       // even if no players are found for a sub animation it       // will still complete itself after the next tick since it's Noop       const playersForElement = skippedPlayersMap.get(player.element);       if (playersForElement && playersForElement.length) {         const innerPlayer = optimizeGroupPlayer(playersForElement);         player.setRealPlayer(innerPlayer);       }     });      // the reason why we don't actually play the animation is     // because all that a skipped player is designed to do is to     // fire the start/done transition callback events     skippedPlayers.forEach(player => {       if (player.parentPlayer) {         player.syncPlayerEvents(player.parentPlayer);       } else {         player.destroy();       }     });      // run through all of the queued removals and see if they     // were picked up by a query. If not then perform the removal     // operation right away unless a parent animation is ongoing.     for (let i = 0; i < allLeaveNodes.length; i++) {       const element = allLeaveNodes[i];       const details = element[REMOVAL_FLAG] as ElementAnimationState;       removeClass(element, LEAVE_CLASSNAME);        // this means the element has a removal animation that is being       // taken care of and therefore the inner elements will hang around       // until that animation is over (or the parent queried animation)       if (details && details.hasAnimation) continue;        let players: TransitionAnimationPlayer[] = [];        // if this element is queried or if it contains queried children       // then we want for the element not to be removed from the page       // until the queried animations have finished       if (queriedElements.size) {         let queriedPlayerResults = queriedElements.get(element);         if (queriedPlayerResults && queriedPlayerResults.length) {           players.push(...queriedPlayerResults);         }          let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);         for (let j = 0; j < queriedInnerElements.length; j++) {           let queriedPlayers = queriedElements.get(queriedInnerElements[j]);           if (queriedPlayers && queriedPlayers.length) {             players.push(...queriedPlayers);           }         }       }        const activePlayers = players.filter(p => !p.destroyed);       if (activePlayers.length) {         removeNodesAfterAnimationDone(this, element, activePlayers);       } else {         this.processLeaveNode(element);       }     }      // this is required so the cleanup method doesn't remove them     allLeaveNodes.length = 0;      rootPlayers.forEach(player => {       this.players.push(player);       player.onDone(() => {         player.destroy();          const index = this.players.indexOf(player);         this.players.splice(index, 1);       });       player.play();     });      return rootPlayers;   }    elementContainsData(namespaceId: string, element: any) {     let containsData = false;     const details = element[REMOVAL_FLAG] as ElementAnimationState;     if (details && details.setForRemoval) containsData = true;     if (this.playersByElement.has(element)) containsData = true;     if (this.playersByQueriedElement.has(element)) containsData = true;     if (this.statesByElement.has(element)) containsData = true;     return this._fetchNamespace(namespaceId).elementContainsData(element) || containsData;   }    afterFlush(callback: () => any) {     this._flushFns.push(callback);   }    afterFlushAnimationsDone(callback: () => any) {     this._whenQuietFns.push(callback);   }    private _getPreviousPlayers(       element: string, isQueriedElement: boolean, namespaceId?: string, triggerName?: string,       toStateValue?: any): TransitionAnimationPlayer[] {     let players: TransitionAnimationPlayer[] = [];     if (isQueriedElement) {       const queriedElementPlayers = this.playersByQueriedElement.get(element);       if (queriedElementPlayers) {         players = queriedElementPlayers;       }     } else {       const elementPlayers = this.playersByElement.get(element);       if (elementPlayers) {         const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;         elementPlayers.forEach(player => {           if (player.queued) return;           if (!isRemovalAnimation && player.triggerName != triggerName) return;           players.push(player);         });       }     }     if (namespaceId || triggerName) {       players = players.filter(player => {         if (namespaceId && namespaceId != player.namespaceId) return false;         if (triggerName && triggerName != player.triggerName) return false;         return true;       });     }     return players;   }    private _beforeAnimationBuild(       namespaceId: string, instruction: AnimationTransitionInstruction,       allPreviousPlayersMap: Map<any, TransitionAnimationPlayer[]>) {     const triggerName = instruction.triggerName;     const rootElement = instruction.element;      // when a removal animation occurs, ALL previous players are collected     // and destroyed (even if they are outside of the current namespace)     const targetNameSpaceId: string|undefined =         instruction.isRemovalTransition ? undefined : namespaceId;     const targetTriggerName: string|undefined =         instruction.isRemovalTransition ? undefined : triggerName;      for (const timelineInstruction of instruction.timelines) {       const element = timelineInstruction.element;       const isQueriedElement = element !== rootElement;       const players = getOrSetDefaultValue(allPreviousPlayersMap, element, []);       const previousPlayers = this._getPreviousPlayers(           element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);       previousPlayers.forEach(player => {         const realPlayer = (player as TransitionAnimationPlayer).getRealPlayer() as any;         if (realPlayer.beforeDestroy) {           realPlayer.beforeDestroy();         }         player.destroy();         players.push(player);       });     }      // this needs to be done so that the PRE/POST styles can be     // computed properly without interfering with the previous animation     eraseStyles(rootElement, instruction.fromStyles);   }    private _buildAnimation(       namespaceId: string, instruction: AnimationTransitionInstruction,       allPreviousPlayersMap: Map<any, TransitionAnimationPlayer[]>,       skippedPlayersMap: Map<any, AnimationPlayer[]>, preStylesMap: Map<any, ɵStyleDataMap>,       postStylesMap: Map<any, ɵStyleDataMap>): AnimationPlayer {     const triggerName = instruction.triggerName;     const rootElement = instruction.element;      // we first run this so that the previous animation player     // data can be passed into the successive animation players     const allQueriedPlayers: TransitionAnimationPlayer[] = [];     const allConsumedElements = new Set<any>();     const allSubElements = new Set<any>();     const allNewPlayers = instruction.timelines.map(timelineInstruction => {       const element = timelineInstruction.element;       allConsumedElements.add(element);        // FIXME (matsko): make sure to-be-removed animations are removed properly       const details = element[REMOVAL_FLAG];       if (details && details.removedBeforeQueried)         return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);       const isQueriedElement = element !== rootElement;       const previousPlayers =           flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY)                                   .map(p => p.getRealPlayer()))               .filter(p => {                 // the `element` is not apart of the AnimationPlayer definition, but                 // Mock/WebAnimations                 // use the element within their implementation. This will be added in Angular5 to                 // AnimationPlayer                 const pp = p as any;                 return pp.element ? pp.element === element : false;               });        const preStyles = preStylesMap.get(element);       const postStyles = postStylesMap.get(element);        const keyframes = normalizeKeyframes(           this.driver, this._normalizer, element, timelineInstruction.keyframes, preStyles,           postStyles);       const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);        // this means that this particular player belongs to a sub trigger. It is       // important that we match this player up with the corresponding (@trigger.listener)       if (timelineInstruction.subTimeline && skippedPlayersMap) {         allSubElements.add(element);       }        if (isQueriedElement) {         const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);         wrappedPlayer.setRealPlayer(player);         allQueriedPlayers.push(wrappedPlayer);       }        return player;     });      allQueriedPlayers.forEach(player => {       getOrSetDefaultValue(this.playersByQueriedElement, player.element, []).push(player);       player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));     });      allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));     const player = optimizeGroupPlayer(allNewPlayers);     player.onDestroy(() => {       allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));       setStyles(rootElement, instruction.toStyles);     });      // this basically makes all of the callbacks for sub element animations     // be dependent on the upper players for when they finish     allSubElements.forEach(element => {       getOrSetDefaultValue(skippedPlayersMap, element, []).push(player);     });      return player;   }    private _buildPlayer(       instruction: AnimationTimelineInstruction, keyframes: Array<ɵStyleDataMap>,       previousPlayers: AnimationPlayer[]): AnimationPlayer {     if (keyframes.length > 0) {       return this.driver.animate(           instruction.element, keyframes, instruction.duration, instruction.delay,           instruction.easing, previousPlayers);     }      // special case for when an empty transition|definition is provided     // ... there is no point in rendering an empty animation     return new NoopAnimationPlayer(instruction.duration, instruction.delay);   } }  export class TransitionAnimationPlayer implements AnimationPlayer {   private _player: AnimationPlayer = new NoopAnimationPlayer();   private _containsRealPlayer = false;    private _queuedCallbacks = new Map<string, ((event: any) => any)[]>();   public readonly destroyed = false;   // TODO(issue/24571): remove '!'.   public parentPlayer!: AnimationPlayer;    public markedForDestroy: boolean = false;   public disabled = false;    readonly queued: boolean = true;   public readonly totalTime: number = 0;    constructor(public namespaceId: string, public triggerName: string, public element: any) {}    setRealPlayer(player: AnimationPlayer) {     if (this._containsRealPlayer) return;      this._player = player;     this._queuedCallbacks.forEach((callbacks, phase) => {       callbacks.forEach(callback => listenOnPlayer(player, phase, undefined, callback));     });      this._queuedCallbacks.clear();     this._containsRealPlayer = true;     this.overrideTotalTime(player.totalTime);     (this as {queued: boolean}).queued = false;   }    getRealPlayer() {     return this._player;   }    overrideTotalTime(totalTime: number) {     (this as any).totalTime = totalTime;   }    syncPlayerEvents(player: AnimationPlayer) {     const p = this._player as any;     if (p.triggerCallback) {       player.onStart(() => p.triggerCallback!('start'));     }     player.onDone(() => this.finish());     player.onDestroy(() => this.destroy());   }    private _queueEvent(name: string, callback: (event: any) => any): void {     getOrSetDefaultValue(this._queuedCallbacks, name, []).push(callback);   }    onDone(fn: () => void): void {     if (this.queued) {       this._queueEvent('done', fn);     }     this._player.onDone(fn);   }    onStart(fn: () => void): void {     if (this.queued) {       this._queueEvent('start', fn);     }     this._player.onStart(fn);   }    onDestroy(fn: () => void): void {     if (this.queued) {       this._queueEvent('destroy', fn);     }     this._player.onDestroy(fn);   }    init(): void {     this._player.init();   }    hasStarted(): boolean {     return this.queued ? false : this._player.hasStarted();   }    play(): void {     !this.queued && this._player.play();   }    pause(): void {     !this.queued && this._player.pause();   }    restart(): void {     !this.queued && this._player.restart();   }    finish(): void {     this._player.finish();   }    destroy(): void {     (this as {destroyed: boolean}).destroyed = true;     this._player.destroy();   }    reset(): void {     !this.queued && this._player.reset();   }    setPosition(p: any): void {     if (!this.queued) {       this._player.setPosition(p);     }   }    getPosition(): number {     return this.queued ? 0 : this._player.getPosition();   }    /** @internal */   triggerCallback(phaseName: string): void {     const p = this._player as any;     if (p.triggerCallback) {       p.triggerCallback(phaseName);     }   } }  function deleteOrUnsetInMap<T, V>(map: Map<T, V[]>, key: T, value: V) {   let currentValues = map.get(key);   if (currentValues) {     if (currentValues.length) {       const index = currentValues.indexOf(value);       currentValues.splice(index, 1);     }     if (currentValues.length == 0) {       map.delete(key);     }   }   return currentValues; }  function normalizeTriggerValue(value: any): any {   // we use `!= null` here because it's the most simple   // way to test against a \"falsy\" value without mixing   // in empty strings or a zero value. DO NOT OPTIMIZE.   return value != null ? value : null; }  function isElementNode(node: any) {   return node && node['nodeType'] === 1; }  function isTriggerEventValid(eventName: string): boolean {   return eventName == 'start' || eventName == 'done'; }  function cloakElement(element: any, value?: string) {   const oldValue = element.style.display;   element.style.display = value != null ? value : 'none';   return oldValue; }  function cloakAndComputeStyles(     valuesMap: Map<any, ɵStyleDataMap>, driver: AnimationDriver, elements: Set<any>,     elementPropsMap: Map<any, Set<string>>, defaultStyle: string): any[] {   const cloakVals: string[] = [];   elements.forEach(element => cloakVals.push(cloakElement(element)));    const failedElements: any[] = [];    elementPropsMap.forEach((props: Set<string>, element: any) => {     const styles: ɵStyleDataMap = new Map();     props.forEach(prop => {       const value = driver.computeStyle(element, prop, defaultStyle);       styles.set(prop, value);        // there is no easy way to detect this because a sub element could be removed       // by a parent animation element being detached.       if (!value || value.length == 0) {         element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;         failedElements.push(element);       }     });     valuesMap.set(element, styles);   });    // we use a index variable here since Set.forEach(a, i) does not return   // an index value for the closure (but instead just the value)   let i = 0;   elements.forEach(element => cloakElement(element, cloakVals[i++]));    return failedElements; }  /* Since the Angular renderer code will return a collection of inserted nodes in all areas of a DOM tree, it's up to this algorithm to figure out which nodes are roots for each animation @trigger.  By placing each inserted node into a Set and traversing upwards, it is possible to find the @trigger elements and well any direct *star insertion nodes, if a @trigger root is found then the enter element is placed into the Map[@trigger] spot.  */ function buildRootMap(roots: any[], nodes: any[]): Map<any, any[]> {   const rootMap = new Map<any, any[]>();   roots.forEach(root => rootMap.set(root, []));    if (nodes.length == 0) return rootMap;    const NULL_NODE = 1;   const nodeSet = new Set(nodes);   const localRootMap = new Map<any, any>();    function getRoot(node: any): any {     if (!node) return NULL_NODE;      let root = localRootMap.get(node);     if (root) return root;      const parent = node.parentNode;     if (rootMap.has(parent)) {  // ngIf inside @trigger       root = parent;     } else if (nodeSet.has(parent)) {  // ngIf inside ngIf       root = NULL_NODE;     } else {  // recurse upwards       root = getRoot(parent);     }      localRootMap.set(node, root);     return root;   }    nodes.forEach(node => {     const root = getRoot(node);     if (root !== NULL_NODE) {       rootMap.get(root)!.push(node);     }   });    return rootMap; }  function addClass(element: any, className: string) {   element.classList?.add(className); }  function removeClass(element: any, className: string) {   element.classList?.remove(className); }  function removeNodesAfterAnimationDone(     engine: TransitionAnimationEngine, element: any, players: AnimationPlayer[]) {   optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element)); }  function flattenGroupPlayers(players: AnimationPlayer[]): AnimationPlayer[] {   const finalPlayers: AnimationPlayer[] = [];   _flattenGroupPlayersRecur(players, finalPlayers);   return finalPlayers; }  function _flattenGroupPlayersRecur(players: AnimationPlayer[], finalPlayers: AnimationPlayer[]) {   for (let i = 0; i < players.length; i++) {     const player = players[i];     if (player instanceof AnimationGroupPlayer) {       _flattenGroupPlayersRecur(player.players, finalPlayers);     } else {       finalPlayers.push(player);     }   } }  function objEquals(a: {[key: string]: any}, b: {[key: string]: any}): boolean {   const k1 = Object.keys(a);   const k2 = Object.keys(b);   if (k1.length != k2.length) return false;   for (let i = 0; i < k1.length; i++) {     const prop = k1[i];     if (!b.hasOwnProperty(prop) || a[prop] !== b[prop]) return false;   }   return true; }  function replacePostStylesAsPre(     element: any, allPreStyleElements: Map<any, Set<string>>,     allPostStyleElements: Map<any, Set<string>>): boolean {   const postEntry = allPostStyleElements.get(element);   if (!postEntry) return false;    let preEntry = allPreStyleElements.get(element);   if (preEntry) {     postEntry.forEach(data => preEntry!.add(data));   } else {     allPreStyleElements.set(element, postEntry);   }    allPostStyleElements.delete(element);   return true; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationMetadata, AnimationPlayer, AnimationTriggerMetadata} from '@angular/animations';  import {TriggerAst} from '../dsl/animation_ast'; import {buildAnimationAst} from '../dsl/animation_ast_builder'; import {AnimationTrigger, buildTrigger} from '../dsl/animation_trigger'; import {AnimationStyleNormalizer} from '../dsl/style_normalization/animation_style_normalizer'; import {triggerBuildFailed} from '../error_helpers'; import {warnTriggerBuild} from '../warning_helpers';  import {AnimationDriver} from './animation_driver'; import {parseTimelineCommand} from './shared'; import {TimelineAnimationEngine} from './timeline_animation_engine'; import {TransitionAnimationEngine} from './transition_animation_engine';  export class AnimationEngine {   private _transitionEngine: TransitionAnimationEngine;   private _timelineEngine: TimelineAnimationEngine;    private _triggerCache: {[key: string]: AnimationTrigger} = {};    // this method is designed to be overridden by the code that uses this engine   public onRemovalComplete = (element: any, context: any) => {};    constructor(       private bodyNode: any, private _driver: AnimationDriver,       private _normalizer: AnimationStyleNormalizer) {     this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, _normalizer);     this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, _normalizer);      this._transitionEngine.onRemovalComplete = (element: any, context: any) =>         this.onRemovalComplete(element, context);   }    registerTrigger(       componentId: string, namespaceId: string, hostElement: any, name: string,       metadata: AnimationTriggerMetadata): void {     const cacheKey = componentId + '-' + name;     let trigger = this._triggerCache[cacheKey];     if (!trigger) {       const errors: Error[] = [];       const warnings: string[] = [];       const ast = buildAnimationAst(                       this._driver, metadata as AnimationMetadata, errors, warnings) as TriggerAst;       if (errors.length) {         throw triggerBuildFailed(name, errors);       }       if (warnings.length) {         warnTriggerBuild(name, warnings);       }       trigger = buildTrigger(name, ast, this._normalizer);       this._triggerCache[cacheKey] = trigger;     }     this._transitionEngine.registerTrigger(namespaceId, name, trigger);   }    register(namespaceId: string, hostElement: any) {     this._transitionEngine.register(namespaceId, hostElement);   }    destroy(namespaceId: string, context: any) {     this._transitionEngine.destroy(namespaceId, context);   }    onInsert(namespaceId: string, element: any, parent: any, insertBefore: boolean): void {     this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);   }    onRemove(namespaceId: string, element: any, context: any, isHostElement?: boolean): void {     this._transitionEngine.removeNode(namespaceId, element, isHostElement || false, context);   }    disableAnimations(element: any, disable: boolean) {     this._transitionEngine.markElementAsDisabled(element, disable);   }    process(namespaceId: string, element: any, property: string, value: any) {     if (property.charAt(0) == '@') {       const [id, action] = parseTimelineCommand(property);       const args = value as any[];       this._timelineEngine.command(id, element, action, args);     } else {       this._transitionEngine.trigger(namespaceId, element, property, value);     }   }    listen(       namespaceId: string, element: any, eventName: string, eventPhase: string,       callback: (event: any) => any): () => any {     // @@listen     if (eventName.charAt(0) == '@') {       const [id, action] = parseTimelineCommand(eventName);       return this._timelineEngine.listen(id, element, action, callback);     }     return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);   }    flush(microtaskId: number = -1): void {     this._transitionEngine.flush(microtaskId);   }    get players(): AnimationPlayer[] {     return (this._transitionEngine.players as AnimationPlayer[])         .concat(this._timelineEngine.players as AnimationPlayer[]);   }    whenRenderingDone(): Promise<any> {     return this._transitionEngine.whenRenderingDone();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {ɵStyleDataMap} from '@angular/animations';  import {eraseStyles, setStyles} from '../util';  /**  * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are  * detected.  *  * In CSS there exist properties that cannot be animated within a keyframe animation  * (whether it be via CSS keyframes or web-animations) and the animation implementation  * will ignore them. This function is designed to detect those special cased styles and  * return a container that will be executed at the start and end of the animation.  *  * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`  */ export function packageNonAnimatableStyles(     element: any, styles: ɵStyleDataMap|Array<ɵStyleDataMap>): SpecialCasedStyles|null {   let startStyles: ɵStyleDataMap|null = null;   let endStyles: ɵStyleDataMap|null = null;   if (Array.isArray(styles) && styles.length) {     startStyles = filterNonAnimatableStyles(styles[0]);     if (styles.length > 1) {       endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);     }   } else if (styles instanceof Map) {     startStyles = filterNonAnimatableStyles(styles);   }    return (startStyles || endStyles) ? new SpecialCasedStyles(element, startStyles, endStyles) :                                       null; }  /**  * Designed to be executed during a keyframe-based animation to apply any special-cased styles.  *  * When started (when the `start()` method is run) then the provided `startStyles`  * will be applied. When finished (when the `finish()` method is called) the  * `endStyles` will be applied as well any any starting styles. Finally when  * `destroy()` is called then all styles will be removed.  */ export class SpecialCasedStyles {   static initialStylesByElement = (/* @__PURE__ */ new WeakMap<any, ɵStyleDataMap>());    private _state = SpecialCasedStylesState.Pending;   private _initialStyles!: ɵStyleDataMap;    constructor(       private _element: any, private _startStyles: ɵStyleDataMap|null,       private _endStyles: ɵStyleDataMap|null) {     let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);     if (!initialStyles) {       SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = new Map());     }     this._initialStyles = initialStyles;   }    start() {     if (this._state < SpecialCasedStylesState.Started) {       if (this._startStyles) {         setStyles(this._element, this._startStyles, this._initialStyles);       }       this._state = SpecialCasedStylesState.Started;     }   }    finish() {     this.start();     if (this._state < SpecialCasedStylesState.Finished) {       setStyles(this._element, this._initialStyles);       if (this._endStyles) {         setStyles(this._element, this._endStyles);         this._endStyles = null;       }       this._state = SpecialCasedStylesState.Started;     }   }    destroy() {     this.finish();     if (this._state < SpecialCasedStylesState.Destroyed) {       SpecialCasedStyles.initialStylesByElement.delete(this._element);       if (this._startStyles) {         eraseStyles(this._element, this._startStyles);         this._endStyles = null;       }       if (this._endStyles) {         eraseStyles(this._element, this._endStyles);         this._endStyles = null;       }       setStyles(this._element, this._initialStyles);       this._state = SpecialCasedStylesState.Destroyed;     }   } }  /**  * An enum of states reflective of what the status of `SpecialCasedStyles` is.  *  * Depending on how `SpecialCasedStyles` is interacted with, the start and end  * styles may not be applied in the same way. This enum ensures that if and when  * the ending styles are applied then the starting styles are applied. It is  * also used to reflect what the current status of the special cased styles are  * which helps prevent the starting/ending styles not be applied twice. It is  * also used to cleanup the styles once `SpecialCasedStyles` is destroyed.  */ const enum SpecialCasedStylesState {   Pending = 0,   Started = 1,   Finished = 2,   Destroyed = 3, }  function filterNonAnimatableStyles(styles: ɵStyleDataMap): ɵStyleDataMap|null {   let result: ɵStyleDataMap|null = null;   styles.forEach((val, prop) => {     if (isNonAnimatableStyle(prop)) {       result = result || new Map();       result.set(prop, val);     }   });   return result; }  function isNonAnimatableStyle(prop: string) {   return prop === 'display' || prop === 'position'; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationPlayer, ɵStyleDataMap} from '@angular/animations';  import {computeStyle} from '../../util'; import {SpecialCasedStyles} from '../special_cased_styles';  import {DOMAnimation} from './dom_animation';  export class WebAnimationsPlayer implements AnimationPlayer {   private _onDoneFns: Function[] = [];   private _onStartFns: Function[] = [];   private _onDestroyFns: Function[] = [];   private _duration: number;   private _delay: number;   private _initialized = false;   private _finished = false;   private _started = false;   private _destroyed = false;   private _finalKeyframe?: ɵStyleDataMap;    // the following original fns are persistent copies of the _onStartFns and _onDoneFns   // and are used to reset the fns to their original values upon reset()   // (since the _onStartFns and _onDoneFns get deleted after they are called)   private _originalOnDoneFns: Function[] = [];   private _originalOnStartFns: Function[] = [];    // TODO(issue/24571): remove '!'.   public readonly domPlayer!: DOMAnimation;   public time = 0;    public parentPlayer: AnimationPlayer|null = null;   public currentSnapshot: ɵStyleDataMap = new Map();    constructor(       public element: any, public keyframes: Array<ɵStyleDataMap>,       public options: {[key: string]: string|number},       private _specialStyles?: SpecialCasedStyles|null) {     this._duration = <number>options['duration'];     this._delay = <number>options['delay'] || 0;     this.time = this._duration + this._delay;   }    private _onFinish() {     if (!this._finished) {       this._finished = true;       this._onDoneFns.forEach(fn => fn());       this._onDoneFns = [];     }   }    init(): void {     this._buildPlayer();     this._preparePlayerBeforeStart();   }    private _buildPlayer(): void {     if (this._initialized) return;     this._initialized = true;      const keyframes = this.keyframes;     (this as {domPlayer: DOMAnimation}).domPlayer =         this._triggerWebAnimation(this.element, keyframes, this.options);     this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : new Map();     this.domPlayer.addEventListener('finish', () => this._onFinish());   }    private _preparePlayerBeforeStart() {     // this is required so that the player doesn't start to animate right away     if (this._delay) {       this._resetDomPlayerState();     } else {       this.domPlayer.pause();     }   }    private _convertKeyframesToObject(keyframes: Array<ɵStyleDataMap>): any[] {     const kfs: any[] = [];     keyframes.forEach(frame => {       kfs.push(Object.fromEntries(frame));     });     return kfs;   }    /** @internal */   _triggerWebAnimation(element: any, keyframes: Array<ɵStyleDataMap>, options: any): DOMAnimation {     // jscompiler doesn't seem to know animate is a native property because it's not fully     // supported yet across common browsers (we polyfill it for Edge/Safari) [CL #143630929]     return element['animate'](this._convertKeyframesToObject(keyframes), options) as DOMAnimation;   }    onStart(fn: () => void): void {     this._originalOnStartFns.push(fn);     this._onStartFns.push(fn);   }    onDone(fn: () => void): void {     this._originalOnDoneFns.push(fn);     this._onDoneFns.push(fn);   }    onDestroy(fn: () => void): void {     this._onDestroyFns.push(fn);   }    play(): void {     this._buildPlayer();     if (!this.hasStarted()) {       this._onStartFns.forEach(fn => fn());       this._onStartFns = [];       this._started = true;       if (this._specialStyles) {         this._specialStyles.start();       }     }     this.domPlayer.play();   }    pause(): void {     this.init();     this.domPlayer.pause();   }    finish(): void {     this.init();     if (this._specialStyles) {       this._specialStyles.finish();     }     this._onFinish();     this.domPlayer.finish();   }    reset(): void {     this._resetDomPlayerState();     this._destroyed = false;     this._finished = false;     this._started = false;     this._onStartFns = this._originalOnStartFns;     this._onDoneFns = this._originalOnDoneFns;   }    private _resetDomPlayerState() {     if (this.domPlayer) {       this.domPlayer.cancel();     }   }    restart(): void {     this.reset();     this.play();   }    hasStarted(): boolean {     return this._started;   }    destroy(): void {     if (!this._destroyed) {       this._destroyed = true;       this._resetDomPlayerState();       this._onFinish();       if (this._specialStyles) {         this._specialStyles.destroy();       }       this._onDestroyFns.forEach(fn => fn());       this._onDestroyFns = [];     }   }    setPosition(p: number): void {     if (this.domPlayer === undefined) {       this.init();     }     this.domPlayer.currentTime = p * this.time;   }    getPosition(): number {     return this.domPlayer.currentTime / this.time;   }    get totalTime(): number {     return this._delay + this._duration;   }    beforeDestroy() {     const styles: ɵStyleDataMap = new Map();     if (this.hasStarted()) {       // note: this code is invoked only when the `play` function was called prior to this       // (thus `hasStarted` returns true), this implies that the code that initializes       // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here       const finalKeyframe = this._finalKeyframe!;       finalKeyframe.forEach((val, prop) => {         if (prop !== 'offset') {           styles.set(prop, this._finished ? val : computeStyle(this.element, prop));         }       });     }      this.currentSnapshot = styles;   }    /** @internal */   triggerCallback(phaseName: string): void {     const methods = phaseName === 'start' ? this._onStartFns : this._onDoneFns;     methods.forEach(fn => fn());     methods.length = 0;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {AnimationPlayer, ɵStyleDataMap} from '@angular/animations';  import {allowPreviousPlayerStylesMerge, balancePreviousStylesIntoKeyframes, camelCaseToDashCase, copyStyles, normalizeKeyframes} from '../../util'; import {AnimationDriver} from '../animation_driver'; import {containsElement, getParentElement, invokeQuery, validateStyleProperty, validateWebAnimatableStyleProperty} from '../shared'; import {packageNonAnimatableStyles} from '../special_cased_styles';  import {WebAnimationsPlayer} from './web_animations_player';  export class WebAnimationsDriver implements AnimationDriver {   validateStyleProperty(prop: string): boolean {     // Perform actual validation in dev mode only, in prod mode this check is a noop.     if (typeof ngDevMode === 'undefined' || ngDevMode) {       return validateStyleProperty(prop);     }     return true;   }    validateAnimatableStyleProperty(prop: string): boolean {     // Perform actual validation in dev mode only, in prod mode this check is a noop.     if (typeof ngDevMode === 'undefined' || ngDevMode) {       const cssProp = camelCaseToDashCase(prop);       return validateWebAnimatableStyleProperty(cssProp);     }     return true;   }    matchesElement(_element: any, _selector: string): boolean {     // This method is deprecated and no longer in use so we return false.     return false;   }    containsElement(elm1: any, elm2: any): boolean {     return containsElement(elm1, elm2);   }    getParentElement(element: unknown): unknown {     return getParentElement(element);   }    query(element: any, selector: string, multi: boolean): any[] {     return invokeQuery(element, selector, multi);   }    computeStyle(element: any, prop: string, defaultValue?: string): string {     return (window.getComputedStyle(element) as any)[prop] as string;   }    animate(       element: any, keyframes: Array<Map<string, string|number>>, duration: number, delay: number,       easing: string, previousPlayers: AnimationPlayer[] = []): AnimationPlayer {     const fill = delay == 0 ? 'both' : 'forwards';     const playerOptions: {[key: string]: string|number} = {duration, delay, fill};     // we check for this to avoid having a null|undefined value be present     // for the easing (which results in an error for certain browsers #9752)     if (easing) {       playerOptions['easing'] = easing;     }      const previousStyles: ɵStyleDataMap = new Map();     const previousWebAnimationPlayers = <WebAnimationsPlayer[]>previousPlayers.filter(         player => player instanceof WebAnimationsPlayer);     if (allowPreviousPlayerStylesMerge(duration, delay)) {       previousWebAnimationPlayers.forEach(player => {         player.currentSnapshot.forEach((val, prop) => previousStyles.set(prop, val));       });     }      let _keyframes = normalizeKeyframes(keyframes).map(styles => copyStyles(styles));     _keyframes = balancePreviousStylesIntoKeyframes(element, _keyframes, previousStyles);     const specialStyles = packageNonAnimatableStyles(element, _keyframes);     return new WebAnimationsPlayer(element, _keyframes, playerOptions, specialStyles);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all animation APIs of the animation browser package.  */ export {AnimationDriver} from './render/animation_driver'; export * from './private_export'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/browser'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["RuntimeError","normalizeKeyframes","PRE_STYLE","AnimationGroupPlayer"],"mappings":"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"}
-------------------- SECTION 164 --------------------
{"version":3,"file":"upgrade.mjs","sources":["../../../../../../packages/router/upgrade/src/upgrade.ts","../../../../../../packages/router/upgrade/public_api.ts","../../../../../../packages/router/upgrade/index.ts","../../../../../../packages/router/upgrade/upgrade.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Location} from '@angular/common'; import {APP_BOOTSTRAP_LISTENER, ComponentRef, InjectionToken} from '@angular/core'; import {Router, ɵRestoredState as RestoredState} from '@angular/router'; import {UpgradeModule} from '@angular/upgrade/static';  /**  * Creates an initializer that sets up `ngRoute` integration  * along with setting up the Angular router.  *  * @usageNotes  *  * <code-example language=\"typescript\">  * @NgModule({  *  imports: [  *   RouterModule.forRoot(SOME_ROUTES),  *   UpgradeModule  * ],  * providers: [  *   RouterUpgradeInitializer  * ]  * })  * export class AppModule {  *   ngDoBootstrap() {}  * }  * </code-example>  *  * @publicApi  */ export const RouterUpgradeInitializer = {   provide: APP_BOOTSTRAP_LISTENER,   multi: true,   useFactory: locationSyncBootstrapListener as (ngUpgrade: UpgradeModule) => () => void,   deps: [UpgradeModule] };  /**  * @internal  */ export function locationSyncBootstrapListener(ngUpgrade: UpgradeModule) {   return () => {     setUpLocationSync(ngUpgrade);   }; }  /**  * Sets up a location change listener to trigger `history.pushState`.  * Works around the problem that `onPopState` does not trigger `history.pushState`.  * Must be called *after* calling `UpgradeModule.bootstrap`.  *  * @param ngUpgrade The upgrade NgModule.  * @param urlType The location strategy.  * @see `HashLocationStrategy`  * @see `PathLocationStrategy`  *  * @publicApi  */ export function setUpLocationSync(ngUpgrade: UpgradeModule, urlType: 'path'|'hash' = 'path') {   if (!ngUpgrade.$injector) {     throw new Error(`         RouterUpgradeInitializer can be used only after UpgradeModule.bootstrap has been called.         Remove RouterUpgradeInitializer and call setUpLocationSync after UpgradeModule.bootstrap.       `);   }    const router: Router = ngUpgrade.injector.get(Router);   const location: Location = ngUpgrade.injector.get(Location);    ngUpgrade.$injector.get('$rootScope')       .$on(           '$locationChangeStart',           (event: any, newUrl: string, oldUrl: string,            newState?: {[k: string]: unknown}|RestoredState,            oldState?: {[k: string]: unknown}|RestoredState) => {             // Navigations coming from Angular router have a navigationId state             // property. Don't trigger Angular router navigation again if it is             // caused by a URL change from the current Angular router             // navigation.             const currentNavigationId = router.getCurrentNavigation()?.id;             const newStateNavigationId = newState?.navigationId;             if (newStateNavigationId !== undefined &&                 newStateNavigationId === currentNavigationId) {               return;             }              let url;             if (urlType === 'path') {               url = resolveUrl(newUrl);             } else if (urlType === 'hash') {               // Remove the first hash from the URL               const hashIdx = newUrl.indexOf('#');               url = resolveUrl(newUrl.substring(0, hashIdx) + newUrl.substring(hashIdx + 1));             } else {               throw 'Invalid URLType passed to setUpLocationSync: ' + urlType;             }             const path = location.normalize(url.pathname);             router.navigateByUrl(path + url.search + url.hash);           }); }  /**  * Normalizes and parses a URL.  *  * - Normalizing means that a relative URL will be resolved into an absolute URL in the context of  *   the application document.  * - Parsing means that the anchor's `protocol`, `hostname`, `port`, `pathname` and related  *   properties are all populated to reflect the normalized URL.  *  * While this approach has wide compatibility, it doesn't work as expected on IE. On IE, normalizing  * happens similar to other browsers, but the parsed components will not be set. (E.g. if you assign  * `a.href = 'foo'`, then `a.protocol`, `a.host`, etc. will not be correctly updated.)  * We work around that by performing the parsing in a 2nd step by taking a previously normalized URL  * and assigning it again. This correctly populates all properties.  *  * See  * https://github.com/angular/angular.js/blob/2c7400e7d07b0f6cec1817dab40b9250ce8ebce6/src/ng/urlUtils.js#L26-L33  * for more info.  */ let anchor: HTMLAnchorElement|undefined; function resolveUrl(url: string): {pathname: string, search: string, hash: string} {   if (!anchor) {     anchor = document.createElement('a');   }    anchor.setAttribute('href', url);   anchor.setAttribute('href', anchor.href);    return {     // IE does not start `pathname` with `/` like other browsers.     pathname: `/${anchor.pathname.replace(/^\\//, '')}`,     search: anchor.search,     hash: anchor.hash   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/upgrade';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 165 --------------------
{"version":3,"file":"upgrade.mjs","sources":["../../../../../../packages/router/upgrade/src/upgrade.ts","../../../../../../packages/router/upgrade/public_api.ts","../../../../../../packages/router/upgrade/index.ts","../../../../../../packages/router/upgrade/upgrade.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Location} from '@angular/common'; import {APP_BOOTSTRAP_LISTENER, ComponentRef, InjectionToken} from '@angular/core'; import {Router, ɵRestoredState as RestoredState} from '@angular/router'; import {UpgradeModule} from '@angular/upgrade/static';  /**  * Creates an initializer that sets up `ngRoute` integration  * along with setting up the Angular router.  *  * @usageNotes  *  * <code-example language=\"typescript\">  * @NgModule({  *  imports: [  *   RouterModule.forRoot(SOME_ROUTES),  *   UpgradeModule  * ],  * providers: [  *   RouterUpgradeInitializer  * ]  * })  * export class AppModule {  *   ngDoBootstrap() {}  * }  * </code-example>  *  * @publicApi  */ export const RouterUpgradeInitializer = {   provide: APP_BOOTSTRAP_LISTENER,   multi: true,   useFactory: locationSyncBootstrapListener as (ngUpgrade: UpgradeModule) => () => void,   deps: [UpgradeModule] };  /**  * @internal  */ export function locationSyncBootstrapListener(ngUpgrade: UpgradeModule) {   return () => {     setUpLocationSync(ngUpgrade);   }; }  /**  * Sets up a location change listener to trigger `history.pushState`.  * Works around the problem that `onPopState` does not trigger `history.pushState`.  * Must be called *after* calling `UpgradeModule.bootstrap`.  *  * @param ngUpgrade The upgrade NgModule.  * @param urlType The location strategy.  * @see `HashLocationStrategy`  * @see `PathLocationStrategy`  *  * @publicApi  */ export function setUpLocationSync(ngUpgrade: UpgradeModule, urlType: 'path'|'hash' = 'path') {   if (!ngUpgrade.$injector) {     throw new Error(`         RouterUpgradeInitializer can be used only after UpgradeModule.bootstrap has been called.         Remove RouterUpgradeInitializer and call setUpLocationSync after UpgradeModule.bootstrap.       `);   }    const router: Router = ngUpgrade.injector.get(Router);   const location: Location = ngUpgrade.injector.get(Location);    ngUpgrade.$injector.get('$rootScope')       .$on(           '$locationChangeStart',           (event: any, newUrl: string, oldUrl: string,            newState?: {[k: string]: unknown}|RestoredState,            oldState?: {[k: string]: unknown}|RestoredState) => {             // Navigations coming from Angular router have a navigationId state             // property. Don't trigger Angular router navigation again if it is             // caused by a URL change from the current Angular router             // navigation.             const currentNavigationId = router.getCurrentNavigation()?.id;             const newStateNavigationId = newState?.navigationId;             if (newStateNavigationId !== undefined &&                 newStateNavigationId === currentNavigationId) {               return;             }              let url;             if (urlType === 'path') {               url = resolveUrl(newUrl);             } else if (urlType === 'hash') {               // Remove the first hash from the URL               const hashIdx = newUrl.indexOf('#');               url = resolveUrl(newUrl.substring(0, hashIdx) + newUrl.substring(hashIdx + 1));             } else {               throw 'Invalid URLType passed to setUpLocationSync: ' + urlType;             }             const path = location.normalize(url.pathname);             router.navigateByUrl(path + url.search + url.hash);           }); }  /**  * Normalizes and parses a URL.  *  * - Normalizing means that a relative URL will be resolved into an absolute URL in the context of  *   the application document.  * - Parsing means that the anchor's `protocol`, `hostname`, `port`, `pathname` and related  *   properties are all populated to reflect the normalized URL.  *  * While this approach has wide compatibility, it doesn't work as expected on IE. On IE, normalizing  * happens similar to other browsers, but the parsed components will not be set. (E.g. if you assign  * `a.href = 'foo'`, then `a.protocol`, `a.host`, etc. will not be correctly updated.)  * We work around that by performing the parsing in a 2nd step by taking a previously normalized URL  * and assigning it again. This correctly populates all properties.  *  * See  * https://github.com/angular/angular.js/blob/2c7400e7d07b0f6cec1817dab40b9250ce8ebce6/src/ng/urlUtils.js#L26-L33  * for more info.  */ let anchor: HTMLAnchorElement|undefined; function resolveUrl(url: string): {pathname: string, search: string, hash: string} {   if (!anchor) {     anchor = document.createElement('a');   }    anchor.setAttribute('href', url);   anchor.setAttribute('href', anchor.href);    return {     // IE does not start `pathname` with `/` like other browsers.     pathname: `/${anchor.pathname.replace(/^\\//, '')}`,     search: anchor.search,     hash: anchor.hash   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/upgrade';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 166 --------------------
// Copyright 2023 Google Inc. Use of this source code is governed by an
// MIT-style license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT.
-------------------- SECTION 167 --------------------
Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ /**  *
-------------------- SECTION 168 --------------------
// Copyright 2022 Google LLC. Use of this source code is governed by an
// MIT-style license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT.
-------------------- SECTION 169 --------------------
// Copyright 2023 Google LLC. Use of this source code is governed by an
// MIT-style license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT.
-------------------- SECTION 170 --------------------
{"version":3,"file":"testing.mjs","sources":["../../../../../../../packages/common/http/testing/src/api.ts","../../../../../../../packages/common/http/testing/src/request.ts","../../../../../../../packages/common/http/testing/src/backend.ts","../../../../../../../packages/common/http/testing/src/provider.ts","../../../../../../../packages/common/http/testing/src/module.ts","../../../../../../../packages/common/http/testing/testing.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HttpRequest} from '@angular/common/http';  import {TestRequest} from './request';  /**  * Defines a matcher for requests based on URL, method, or both.  *  * @publicApi  */ export interface RequestMatch {   method?: string;   url?: string; }  /**  * Controller to be injected into tests, that allows for mocking and flushing  * of requests.  *  * @publicApi  */ export abstract class HttpTestingController {   /**    * Search for requests that match the given parameter, without any expectations.    */   abstract match(match: string|RequestMatch|((req: HttpRequest<any>) => boolean)): TestRequest[];    /**    * Expect that a single request has been made which matches the given URL, and return its    * mock.    *    * If no such request has been made, or more than one such request has been made, fail with an    * error message including the given request description, if any.    */   abstract expectOne(url: string, description?: string): TestRequest;    /**    * Expect that a single request has been made which matches the given parameters, and return    * its mock.    *    * If no such request has been made, or more than one such request has been made, fail with an    * error message including the given request description, if any.    */   abstract expectOne(params: RequestMatch, description?: string): TestRequest;    /**    * Expect that a single request has been made which matches the given predicate function, and    * return its mock.    *    * If no such request has been made, or more than one such request has been made, fail with an    * error message including the given request description, if any.    */   abstract expectOne(matchFn: ((req: HttpRequest<any>) => boolean), description?: string):       TestRequest;    /**    * Expect that a single request has been made which matches the given condition, and return    * its mock.    *    * If no such request has been made, or more than one such request has been made, fail with an    * error message including the given request description, if any.    */   abstract expectOne(       match: string|RequestMatch|((req: HttpRequest<any>) => boolean),       description?: string): TestRequest;    /**    * Expect that no requests have been made which match the given URL.    *    * If a matching request has been made, fail with an error message including the given request    * description, if any.    */   abstract expectNone(url: string, description?: string): void;    /**    * Expect that no requests have been made which match the given parameters.    *    * If a matching request has been made, fail with an error message including the given request    * description, if any.    */   abstract expectNone(params: RequestMatch, description?: string): void;    /**    * Expect that no requests have been made which match the given predicate function.    *    * If a matching request has been made, fail with an error message including the given request    * description, if any.    */   abstract expectNone(matchFn: ((req: HttpRequest<any>) => boolean), description?: string): void;    /**    * Expect that no requests have been made which match the given condition.    *    * If a matching request has been made, fail with an error message including the given request    * description, if any.    */   abstract expectNone(       match: string|RequestMatch|((req: HttpRequest<any>) => boolean), description?: string): void;    /**    * Verify that no unmatched requests are outstanding.    *    * If any requests are outstanding, fail with an error message indicating which requests were not    * handled.    *    * If `ignoreCancelled` is not set (the default), `verify()` will also fail if cancelled requests    * were not explicitly matched.    */   abstract verify(opts?: {ignoreCancelled?: boolean}): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HttpErrorResponse, HttpEvent, HttpHeaders, HttpRequest, HttpResponse, HttpStatusCode} from '@angular/common/http'; import {Observer} from 'rxjs';  /**  * Type that describes options that can be used to create an error  * in `TestRequest`.  */ type TestRequestErrorOptions = {   headers?: HttpHeaders|{[name: string]: string | string[]},   status?: number,   statusText?: string, };  /**  * A mock requests that was received and is ready to be answered.  *  * This interface allows access to the underlying `HttpRequest`, and allows  * responding with `HttpEvent`s or `HttpErrorResponse`s.  *  * @publicApi  */ export class TestRequest {   /**    * Whether the request was cancelled after it was sent.    */   get cancelled(): boolean {     return this._cancelled;   }    /**    * @internal set by `HttpClientTestingBackend`    */   _cancelled = false;    constructor(public request: HttpRequest<any>, private observer: Observer<HttpEvent<any>>) {}    /**    * Resolve the request by returning a body plus additional HTTP information (such as response    * headers) if provided.    * If the request specifies an expected body type, the body is converted into the requested type.    * Otherwise, the body is converted to `JSON` by default.    *    * Both successful and unsuccessful responses can be delivered via `flush()`.    */   flush(       body: ArrayBuffer|Blob|boolean|string|number|Object|(boolean|string|number|Object|null)[]|       null,       opts: {         headers?: HttpHeaders|{[name: string]: string | string[]},         status?: number,         statusText?: string,       } = {}): void {     if (this.cancelled) {       throw new Error(`Cannot flush a cancelled request.`);     }     const url = this.request.urlWithParams;     const headers =         (opts.headers instanceof HttpHeaders) ? opts.headers : new HttpHeaders(opts.headers);     body = _maybeConvertBody(this.request.responseType, body);     let statusText: string|undefined = opts.statusText;     let status: number = opts.status !== undefined ? opts.status : HttpStatusCode.Ok;     if (opts.status === undefined) {       if (body === null) {         status = HttpStatusCode.NoContent;         statusText = statusText || 'No Content';       } else {         statusText = statusText || 'OK';       }     }     if (statusText === undefined) {       throw new Error('statusText is required when setting a custom status.');     }     if (status >= 200 && status < 300) {       this.observer.next(new HttpResponse<any>({body, headers, status, statusText, url}));       this.observer.complete();     } else {       this.observer.error(new HttpErrorResponse({error: body, headers, status, statusText, url}));     }   }    /**    * Resolve the request by returning an `ErrorEvent` (e.g. simulating a network failure).    * @deprecated Http requests never emit an `ErrorEvent`. Please specify a `ProgressEvent`.    */   error(error: ErrorEvent, opts?: TestRequestErrorOptions): void;   /**    * Resolve the request by returning an `ProgressEvent` (e.g. simulating a network failure).    */   error(error: ProgressEvent, opts?: TestRequestErrorOptions): void;   error(error: ProgressEvent|ErrorEvent, opts: TestRequestErrorOptions = {}): void {     if (this.cancelled) {       throw new Error(`Cannot return an error for a cancelled request.`);     }     if (opts.status && opts.status >= 200 && opts.status < 300) {       throw new Error(`error() called with a successful status.`);     }     const headers =         (opts.headers instanceof HttpHeaders) ? opts.headers : new HttpHeaders(opts.headers);     this.observer.error(new HttpErrorResponse({       error,       headers,       status: opts.status || 0,       statusText: opts.statusText || '',       url: this.request.urlWithParams,     }));   }    /**    * Deliver an arbitrary `HttpEvent` (such as a progress event) on the response stream for this    * request.    */   event(event: HttpEvent<any>): void {     if (this.cancelled) {       throw new Error(`Cannot send events to a cancelled request.`);     }     this.observer.next(event);   } }   /**  * Helper function to convert a response body to an ArrayBuffer.  */ function _toArrayBufferBody(body: ArrayBuffer|Blob|string|number|Object|                             (string | number | Object | null)[]): ArrayBuffer {   if (typeof ArrayBuffer === 'undefined') {     throw new Error('ArrayBuffer responses are not supported on this platform.');   }   if (body instanceof ArrayBuffer) {     return body;   }   throw new Error('Automatic conversion to ArrayBuffer is not supported for response type.'); }  /**  * Helper function to convert a response body to a Blob.  */ function _toBlob(body: ArrayBuffer|Blob|string|number|Object|                  (string | number | Object | null)[]): Blob {   if (typeof Blob === 'undefined') {     throw new Error('Blob responses are not supported on this platform.');   }   if (body instanceof Blob) {     return body;   }   if (ArrayBuffer && body instanceof ArrayBuffer) {     return new Blob([body]);   }   throw new Error('Automatic conversion to Blob is not supported for response type.'); }  /**  * Helper function to convert a response body to JSON data.  */ function _toJsonBody(     body: ArrayBuffer|Blob|boolean|string|number|Object|     (boolean | string | number | Object | null)[],     format: string = 'JSON'): Object|string|number|(Object | string | number)[] {   if (typeof ArrayBuffer !== 'undefined' && body instanceof ArrayBuffer) {     throw new Error(`Automatic conversion to ${format} is not supported for ArrayBuffers.`);   }   if (typeof Blob !== 'undefined' && body instanceof Blob) {     throw new Error(`Automatic conversion to ${format} is not supported for Blobs.`);   }   if (typeof body === 'string' || typeof body === 'number' || typeof body === 'object' ||       typeof body === 'boolean' || Array.isArray(body)) {     return body;   }   throw new Error(`Automatic conversion to ${format} is not supported for response type.`); }  /**  * Helper function to convert a response body to a string.  */ function _toTextBody(body: ArrayBuffer|Blob|string|number|Object|                      (string | number | Object | null)[]): string {   if (typeof body === 'string') {     return body;   }   if (typeof ArrayBuffer !== 'undefined' && body instanceof ArrayBuffer) {     throw new Error('Automatic conversion to text is not supported for ArrayBuffers.');   }   if (typeof Blob !== 'undefined' && body instanceof Blob) {     throw new Error('Automatic conversion to text is not supported for Blobs.');   }   return JSON.stringify(_toJsonBody(body, 'text')); }  /**  * Convert a response body to the requested type.  */ function _maybeConvertBody(     responseType: string,     body: ArrayBuffer|Blob|string|number|Object|(string | number | Object | null)[]|     null): ArrayBuffer|Blob|string|number|Object|(string | number | Object | null)[]|null {   if (body === null) {     return null;   }   switch (responseType) {     case 'arraybuffer':       return _toArrayBufferBody(body);     case 'blob':       return _toBlob(body);     case 'json':       return _toJsonBody(body);     case 'text':       return _toTextBody(body);     default:       throw new Error(`Unsupported responseType: ${responseType}`);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HttpBackend, HttpEvent, HttpEventType, HttpRequest} from '@angular/common/http'; import {Injectable} from '@angular/core'; import {Observable, Observer} from 'rxjs';  import {HttpTestingController, RequestMatch} from './api'; import {TestRequest} from './request';   /**  * A testing backend for `HttpClient` which both acts as an `HttpBackend`  * and as the `HttpTestingController`.  *  * `HttpClientTestingBackend` works by keeping a list of all open requests.  * As requests come in, they're added to the list. Users can assert that specific  * requests were made and then flush them. In the end, a verify() method asserts  * that no unexpected requests were made.  *  *  */ @Injectable() export class HttpClientTestingBackend implements HttpBackend, HttpTestingController {   /**    * List of pending requests which have not yet been expected.    */   private open: TestRequest[] = [];    /**    * Handle an incoming request by queueing it in the list of open requests.    */   handle(req: HttpRequest<any>): Observable<HttpEvent<any>> {     return new Observable((observer: Observer<any>) => {       const testReq = new TestRequest(req, observer);       this.open.push(testReq);       observer.next({type: HttpEventType.Sent} as HttpEvent<any>);       return () => {         testReq._cancelled = true;       };     });   }    /**    * Helper function to search for requests in the list of open requests.    */   private _match(match: string|RequestMatch|((req: HttpRequest<any>) => boolean)): TestRequest[] {     if (typeof match === 'string') {       return this.open.filter(testReq => testReq.request.urlWithParams === match);     } else if (typeof match === 'function') {       return this.open.filter(testReq => match(testReq.request));     } else {       return this.open.filter(           testReq => (!match.method || testReq.request.method === match.method.toUpperCase()) &&               (!match.url || testReq.request.urlWithParams === match.url));     }   }    /**    * Search for requests in the list of open requests, and return all that match    * without asserting anything about the number of matches.    */   match(match: string|RequestMatch|((req: HttpRequest<any>) => boolean)): TestRequest[] {     const results = this._match(match);     results.forEach(result => {       const index = this.open.indexOf(result);       if (index !== -1) {         this.open.splice(index, 1);       }     });     return results;   }    /**    * Expect that a single outstanding request matches the given matcher, and return    * it.    *    * Requests returned through this API will no longer be in the list of open requests,    * and thus will not match twice.    */   expectOne(match: string|RequestMatch|((req: HttpRequest<any>) => boolean), description?: string):       TestRequest {     description = description || this.descriptionFromMatcher(match);     const matches = this.match(match);     if (matches.length > 1) {       throw new Error(`Expected one matching request for criteria \"${description}\", found ${           matches.length} requests.`);     }     if (matches.length === 0) {       let message = `Expected one matching request for criteria \"${description}\", found none.`;       if (this.open.length > 0) {         // Show the methods and URLs of open requests in the error, for convenience.         const requests = this.open.map(describeRequest).join(', ');         message += ` Requests received are: ${requests}.`;       }       throw new Error(message);     }     return matches[0];   }    /**    * Expect that no outstanding requests match the given matcher, and throw an error    * if any do.    */   expectNone(match: string|RequestMatch|((req: HttpRequest<any>) => boolean), description?: string):       void {     description = description || this.descriptionFromMatcher(match);     const matches = this.match(match);     if (matches.length > 0) {       throw new Error(`Expected zero matching requests for criteria \"${description}\", found ${           matches.length}.`);     }   }    /**    * Validate that there are no outstanding requests.    */   verify(opts: {ignoreCancelled?: boolean} = {}): void {     let open = this.open;     // It's possible that some requests may be cancelled, and this is expected.     // The user can ask to ignore open requests which have been cancelled.     if (opts.ignoreCancelled) {       open = open.filter(testReq => !testReq.cancelled);     }     if (open.length > 0) {       // Show the methods and URLs of open requests in the error, for convenience.       const requests = open.map(describeRequest).join(', ');       throw new Error(`Expected no open requests, found ${open.length}: ${requests}`);     }   }    private descriptionFromMatcher(matcher: string|RequestMatch|                                  ((req: HttpRequest<any>) => boolean)): string {     if (typeof matcher === 'string') {       return `Match URL: ${matcher}`;     } else if (typeof matcher === 'object') {       const method = matcher.method || '(any)';       const url = matcher.url || '(any)';       return `Match method: ${method}, URL: ${url}`;     } else {       return `Match by function: ${matcher.name}`;     }   } }  function describeRequest(testRequest: TestRequest): string {   const url = testRequest.request.urlWithParams;   const method = testRequest.request.method;   return `${method} ${url}`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HttpBackend, HttpClientModule} from '@angular/common/http'; import {NgModule, Provider} from '@angular/core';  import {HttpTestingController} from './api'; import {HttpClientTestingBackend} from './backend';   export function provideHttpClientTesting(): Provider[] {   return [     HttpClientTestingBackend,     {provide: HttpBackend, useExisting: HttpClientTestingBackend},     {provide: HttpTestingController, useExisting: HttpClientTestingBackend},   ]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HttpClientModule} from '@angular/common/http'; import {NgModule} from '@angular/core';  import {provideHttpClientTesting} from './provider';   /**  * Configures `HttpClientTestingBackend` as the `HttpBackend` used by `HttpClient`.  *  * Inject `HttpTestingController` to expect and flush requests in your tests.  *  * @publicApi  */ @NgModule({   imports: [     HttpClientModule,   ],   providers: [     provideHttpClientTesting(),   ], }) export class HttpClientTestingModule { } ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 171 --------------------
{"version":3,"file":"testing.mjs","sources":["../../../../../../../packages/common/http/testing/src/api.ts","../../../../../../../packages/common/http/testing/src/request.ts","../../../../../../../packages/common/http/testing/src/backend.ts","../../../../../../../packages/common/http/testing/src/provider.ts","../../../../../../../packages/common/http/testing/src/module.ts","../../../../../../../packages/common/http/testing/testing.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HttpRequest} from '@angular/common/http';  import {TestRequest} from './request';  /**  * Defines a matcher for requests based on URL, method, or both.  *  * @publicApi  */ export interface RequestMatch {   method?: string;   url?: string; }  /**  * Controller to be injected into tests, that allows for mocking and flushing  * of requests.  *  * @publicApi  */ export abstract class HttpTestingController {   /**    * Search for requests that match the given parameter, without any expectations.    */   abstract match(match: string|RequestMatch|((req: HttpRequest<any>) => boolean)): TestRequest[];    /**    * Expect that a single request has been made which matches the given URL, and return its    * mock.    *    * If no such request has been made, or more than one such request has been made, fail with an    * error message including the given request description, if any.    */   abstract expectOne(url: string, description?: string): TestRequest;    /**    * Expect that a single request has been made which matches the given parameters, and return    * its mock.    *    * If no such request has been made, or more than one such request has been made, fail with an    * error message including the given request description, if any.    */   abstract expectOne(params: RequestMatch, description?: string): TestRequest;    /**    * Expect that a single request has been made which matches the given predicate function, and    * return its mock.    *    * If no such request has been made, or more than one such request has been made, fail with an    * error message including the given request description, if any.    */   abstract expectOne(matchFn: ((req: HttpRequest<any>) => boolean), description?: string):       TestRequest;    /**    * Expect that a single request has been made which matches the given condition, and return    * its mock.    *    * If no such request has been made, or more than one such request has been made, fail with an    * error message including the given request description, if any.    */   abstract expectOne(       match: string|RequestMatch|((req: HttpRequest<any>) => boolean),       description?: string): TestRequest;    /**    * Expect that no requests have been made which match the given URL.    *    * If a matching request has been made, fail with an error message including the given request    * description, if any.    */   abstract expectNone(url: string, description?: string): void;    /**    * Expect that no requests have been made which match the given parameters.    *    * If a matching request has been made, fail with an error message including the given request    * description, if any.    */   abstract expectNone(params: RequestMatch, description?: string): void;    /**    * Expect that no requests have been made which match the given predicate function.    *    * If a matching request has been made, fail with an error message including the given request    * description, if any.    */   abstract expectNone(matchFn: ((req: HttpRequest<any>) => boolean), description?: string): void;    /**    * Expect that no requests have been made which match the given condition.    *    * If a matching request has been made, fail with an error message including the given request    * description, if any.    */   abstract expectNone(       match: string|RequestMatch|((req: HttpRequest<any>) => boolean), description?: string): void;    /**    * Verify that no unmatched requests are outstanding.    *    * If any requests are outstanding, fail with an error message indicating which requests were not    * handled.    *    * If `ignoreCancelled` is not set (the default), `verify()` will also fail if cancelled requests    * were not explicitly matched.    */   abstract verify(opts?: {ignoreCancelled?: boolean}): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HttpErrorResponse, HttpEvent, HttpHeaders, HttpRequest, HttpResponse, HttpStatusCode} from '@angular/common/http'; import {Observer} from 'rxjs';  /**  * Type that describes options that can be used to create an error  * in `TestRequest`.  */ type TestRequestErrorOptions = {   headers?: HttpHeaders|{[name: string]: string | string[]},   status?: number,   statusText?: string, };  /**  * A mock requests that was received and is ready to be answered.  *  * This interface allows access to the underlying `HttpRequest`, and allows  * responding with `HttpEvent`s or `HttpErrorResponse`s.  *  * @publicApi  */ export class TestRequest {   /**    * Whether the request was cancelled after it was sent.    */   get cancelled(): boolean {     return this._cancelled;   }    /**    * @internal set by `HttpClientTestingBackend`    */   _cancelled = false;    constructor(public request: HttpRequest<any>, private observer: Observer<HttpEvent<any>>) {}    /**    * Resolve the request by returning a body plus additional HTTP information (such as response    * headers) if provided.    * If the request specifies an expected body type, the body is converted into the requested type.    * Otherwise, the body is converted to `JSON` by default.    *    * Both successful and unsuccessful responses can be delivered via `flush()`.    */   flush(       body: ArrayBuffer|Blob|boolean|string|number|Object|(boolean|string|number|Object|null)[]|       null,       opts: {         headers?: HttpHeaders|{[name: string]: string | string[]},         status?: number,         statusText?: string,       } = {}): void {     if (this.cancelled) {       throw new Error(`Cannot flush a cancelled request.`);     }     const url = this.request.urlWithParams;     const headers =         (opts.headers instanceof HttpHeaders) ? opts.headers : new HttpHeaders(opts.headers);     body = _maybeConvertBody(this.request.responseType, body);     let statusText: string|undefined = opts.statusText;     let status: number = opts.status !== undefined ? opts.status : HttpStatusCode.Ok;     if (opts.status === undefined) {       if (body === null) {         status = HttpStatusCode.NoContent;         statusText = statusText || 'No Content';       } else {         statusText = statusText || 'OK';       }     }     if (statusText === undefined) {       throw new Error('statusText is required when setting a custom status.');     }     if (status >= 200 && status < 300) {       this.observer.next(new HttpResponse<any>({body, headers, status, statusText, url}));       this.observer.complete();     } else {       this.observer.error(new HttpErrorResponse({error: body, headers, status, statusText, url}));     }   }    /**    * Resolve the request by returning an `ErrorEvent` (e.g. simulating a network failure).    * @deprecated Http requests never emit an `ErrorEvent`. Please specify a `ProgressEvent`.    */   error(error: ErrorEvent, opts?: TestRequestErrorOptions): void;   /**    * Resolve the request by returning an `ProgressEvent` (e.g. simulating a network failure).    */   error(error: ProgressEvent, opts?: TestRequestErrorOptions): void;   error(error: ProgressEvent|ErrorEvent, opts: TestRequestErrorOptions = {}): void {     if (this.cancelled) {       throw new Error(`Cannot return an error for a cancelled request.`);     }     if (opts.status && opts.status >= 200 && opts.status < 300) {       throw new Error(`error() called with a successful status.`);     }     const headers =         (opts.headers instanceof HttpHeaders) ? opts.headers : new HttpHeaders(opts.headers);     this.observer.error(new HttpErrorResponse({       error,       headers,       status: opts.status || 0,       statusText: opts.statusText || '',       url: this.request.urlWithParams,     }));   }    /**    * Deliver an arbitrary `HttpEvent` (such as a progress event) on the response stream for this    * request.    */   event(event: HttpEvent<any>): void {     if (this.cancelled) {       throw new Error(`Cannot send events to a cancelled request.`);     }     this.observer.next(event);   } }   /**  * Helper function to convert a response body to an ArrayBuffer.  */ function _toArrayBufferBody(body: ArrayBuffer|Blob|string|number|Object|                             (string | number | Object | null)[]): ArrayBuffer {   if (typeof ArrayBuffer === 'undefined') {     throw new Error('ArrayBuffer responses are not supported on this platform.');   }   if (body instanceof ArrayBuffer) {     return body;   }   throw new Error('Automatic conversion to ArrayBuffer is not supported for response type.'); }  /**  * Helper function to convert a response body to a Blob.  */ function _toBlob(body: ArrayBuffer|Blob|string|number|Object|                  (string | number | Object | null)[]): Blob {   if (typeof Blob === 'undefined') {     throw new Error('Blob responses are not supported on this platform.');   }   if (body instanceof Blob) {     return body;   }   if (ArrayBuffer && body instanceof ArrayBuffer) {     return new Blob([body]);   }   throw new Error('Automatic conversion to Blob is not supported for response type.'); }  /**  * Helper function to convert a response body to JSON data.  */ function _toJsonBody(     body: ArrayBuffer|Blob|boolean|string|number|Object|     (boolean | string | number | Object | null)[],     format: string = 'JSON'): Object|string|number|(Object | string | number)[] {   if (typeof ArrayBuffer !== 'undefined' && body instanceof ArrayBuffer) {     throw new Error(`Automatic conversion to ${format} is not supported for ArrayBuffers.`);   }   if (typeof Blob !== 'undefined' && body instanceof Blob) {     throw new Error(`Automatic conversion to ${format} is not supported for Blobs.`);   }   if (typeof body === 'string' || typeof body === 'number' || typeof body === 'object' ||       typeof body === 'boolean' || Array.isArray(body)) {     return body;   }   throw new Error(`Automatic conversion to ${format} is not supported for response type.`); }  /**  * Helper function to convert a response body to a string.  */ function _toTextBody(body: ArrayBuffer|Blob|string|number|Object|                      (string | number | Object | null)[]): string {   if (typeof body === 'string') {     return body;   }   if (typeof ArrayBuffer !== 'undefined' && body instanceof ArrayBuffer) {     throw new Error('Automatic conversion to text is not supported for ArrayBuffers.');   }   if (typeof Blob !== 'undefined' && body instanceof Blob) {     throw new Error('Automatic conversion to text is not supported for Blobs.');   }   return JSON.stringify(_toJsonBody(body, 'text')); }  /**  * Convert a response body to the requested type.  */ function _maybeConvertBody(     responseType: string,     body: ArrayBuffer|Blob|string|number|Object|(string | number | Object | null)[]|     null): ArrayBuffer|Blob|string|number|Object|(string | number | Object | null)[]|null {   if (body === null) {     return null;   }   switch (responseType) {     case 'arraybuffer':       return _toArrayBufferBody(body);     case 'blob':       return _toBlob(body);     case 'json':       return _toJsonBody(body);     case 'text':       return _toTextBody(body);     default:       throw new Error(`Unsupported responseType: ${responseType}`);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HttpBackend, HttpEvent, HttpEventType, HttpRequest} from '@angular/common/http'; import {Injectable} from '@angular/core'; import {Observable, Observer} from 'rxjs';  import {HttpTestingController, RequestMatch} from './api'; import {TestRequest} from './request';   /**  * A testing backend for `HttpClient` which both acts as an `HttpBackend`  * and as the `HttpTestingController`.  *  * `HttpClientTestingBackend` works by keeping a list of all open requests.  * As requests come in, they're added to the list. Users can assert that specific  * requests were made and then flush them. In the end, a verify() method asserts  * that no unexpected requests were made.  *  *  */ @Injectable() export class HttpClientTestingBackend implements HttpBackend, HttpTestingController {   /**    * List of pending requests which have not yet been expected.    */   private open: TestRequest[] = [];    /**    * Handle an incoming request by queueing it in the list of open requests.    */   handle(req: HttpRequest<any>): Observable<HttpEvent<any>> {     return new Observable((observer: Observer<any>) => {       const testReq = new TestRequest(req, observer);       this.open.push(testReq);       observer.next({type: HttpEventType.Sent} as HttpEvent<any>);       return () => {         testReq._cancelled = true;       };     });   }    /**    * Helper function to search for requests in the list of open requests.    */   private _match(match: string|RequestMatch|((req: HttpRequest<any>) => boolean)): TestRequest[] {     if (typeof match === 'string') {       return this.open.filter(testReq => testReq.request.urlWithParams === match);     } else if (typeof match === 'function') {       return this.open.filter(testReq => match(testReq.request));     } else {       return this.open.filter(           testReq => (!match.method || testReq.request.method === match.method.toUpperCase()) &&               (!match.url || testReq.request.urlWithParams === match.url));     }   }    /**    * Search for requests in the list of open requests, and return all that match    * without asserting anything about the number of matches.    */   match(match: string|RequestMatch|((req: HttpRequest<any>) => boolean)): TestRequest[] {     const results = this._match(match);     results.forEach(result => {       const index = this.open.indexOf(result);       if (index !== -1) {         this.open.splice(index, 1);       }     });     return results;   }    /**    * Expect that a single outstanding request matches the given matcher, and return    * it.    *    * Requests returned through this API will no longer be in the list of open requests,    * and thus will not match twice.    */   expectOne(match: string|RequestMatch|((req: HttpRequest<any>) => boolean), description?: string):       TestRequest {     description = description || this.descriptionFromMatcher(match);     const matches = this.match(match);     if (matches.length > 1) {       throw new Error(`Expected one matching request for criteria \"${description}\", found ${           matches.length} requests.`);     }     if (matches.length === 0) {       let message = `Expected one matching request for criteria \"${description}\", found none.`;       if (this.open.length > 0) {         // Show the methods and URLs of open requests in the error, for convenience.         const requests = this.open.map(describeRequest).join(', ');         message += ` Requests received are: ${requests}.`;       }       throw new Error(message);     }     return matches[0];   }    /**    * Expect that no outstanding requests match the given matcher, and throw an error    * if any do.    */   expectNone(match: string|RequestMatch|((req: HttpRequest<any>) => boolean), description?: string):       void {     description = description || this.descriptionFromMatcher(match);     const matches = this.match(match);     if (matches.length > 0) {       throw new Error(`Expected zero matching requests for criteria \"${description}\", found ${           matches.length}.`);     }   }    /**    * Validate that there are no outstanding requests.    */   verify(opts: {ignoreCancelled?: boolean} = {}): void {     let open = this.open;     // It's possible that some requests may be cancelled, and this is expected.     // The user can ask to ignore open requests which have been cancelled.     if (opts.ignoreCancelled) {       open = open.filter(testReq => !testReq.cancelled);     }     if (open.length > 0) {       // Show the methods and URLs of open requests in the error, for convenience.       const requests = open.map(describeRequest).join(', ');       throw new Error(`Expected no open requests, found ${open.length}: ${requests}`);     }   }    private descriptionFromMatcher(matcher: string|RequestMatch|                                  ((req: HttpRequest<any>) => boolean)): string {     if (typeof matcher === 'string') {       return `Match URL: ${matcher}`;     } else if (typeof matcher === 'object') {       const method = matcher.method || '(any)';       const url = matcher.url || '(any)';       return `Match method: ${method}, URL: ${url}`;     } else {       return `Match by function: ${matcher.name}`;     }   } }  function describeRequest(testRequest: TestRequest): string {   const url = testRequest.request.urlWithParams;   const method = testRequest.request.method;   return `${method} ${url}`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HttpBackend, HttpClientModule} from '@angular/common/http'; import {NgModule, Provider} from '@angular/core';  import {HttpTestingController} from './api'; import {HttpClientTestingBackend} from './backend';   export function provideHttpClientTesting(): Provider[] {   return [     HttpClientTestingBackend,     {provide: HttpBackend, useExisting: HttpClientTestingBackend},     {provide: HttpTestingController, useExisting: HttpClientTestingBackend},   ]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HttpClientModule} from '@angular/common/http'; import {NgModule} from '@angular/core';  import {provideHttpClientTesting} from './provider';   /**  * Configures `HttpClientTestingBackend` as the `HttpBackend` used by `HttpClient`.  *  * Inject `HttpTestingController` to expect and flush requests in your tests.  *  * @publicApi  */ @NgModule({   imports: [     HttpClientModule,   ],   providers: [     provideHttpClientTesting(),   ], }) export class HttpClientTestingModule { } ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 172 --------------------
{"version":3,"file":"testing.mjs","sources":["../../../../../../packages/common/src/location/util.ts","../../../../../../packages/common/testing/src/location_mock.ts","../../../../../../packages/common/testing/src/mock_location_strategy.ts","../../../../../../packages/common/testing/src/mock_platform_location.ts","../../../../../../packages/common/testing/src/provide_location_mocks.ts","../../../../../../packages/common/testing/src/testing.ts","../../../../../../packages/common/testing/public_api.ts","../../../../../../packages/common/testing/index.ts","../../../../../../packages/common/testing/testing.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */   /**  * Joins two parts of a URL with a slash if needed.  *  * @param start  URL string  * @param end    URL string  *  *  * @returns The joined URL string.  */ export function joinWithSlash(start: string, end: string): string {   if (start.length == 0) {     return end;   }   if (end.length == 0) {     return start;   }   let slashes = 0;   if (start.endsWith('/')) {     slashes++;   }   if (end.startsWith('/')) {     slashes++;   }   if (slashes == 2) {     return start + end.substring(1);   }   if (slashes == 1) {     return start + end;   }   return start + '/' + end; }  /**  * Removes a trailing slash from a URL string if needed.  * Looks for the first occurrence of either `#`, `?`, or the end of the  * line as `/` characters and removes the trailing slash if one exists.  *  * @param url URL string.  *  * @returns The URL string, modified if needed.  */ export function stripTrailingSlash(url: string): string {   const match = url.match(/#|\\?|$/);   const pathEndIdx = match && match.index || url.length;   const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);   return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx); }  /**  * Normalizes URL parameters by prepending with `?` if needed.  *  * @param  params String of URL parameters.  *  * @returns The normalized URL parameters string.  */ export function normalizeQueryParams(params: string): string {   return params && params[0] !== '?' ? '?' + params : params; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Location, LocationStrategy} from '@angular/common'; import {EventEmitter, Injectable} from '@angular/core'; import {SubscriptionLike} from 'rxjs';  import {normalizeQueryParams} from '../../src/location/util';  /**  * A spy for {@link Location} that allows tests to fire simulated location events.  *  * @publicApi  */ @Injectable() export class SpyLocation implements Location {   urlChanges: string[] = [];   private _history: LocationState[] = [new LocationState('', '', null)];   private _historyIndex: number = 0;   /** @internal */   _subject: EventEmitter<any> = new EventEmitter();   /** @internal */   _basePath: string = '';   /** @internal */   _locationStrategy: LocationStrategy = null!;   /** @internal */   _urlChangeListeners: ((url: string, state: unknown) => void)[] = [];   /** @internal */   _urlChangeSubscription: SubscriptionLike|null = null;    ngOnDestroy(): void {     this._urlChangeSubscription?.unsubscribe();     this._urlChangeListeners = [];   }    setInitialPath(url: string) {     this._history[this._historyIndex].path = url;   }    setBaseHref(url: string) {     this._basePath = url;   }    path(): string {     return this._history[this._historyIndex].path;   }    getState(): unknown {     return this._history[this._historyIndex].state;   }    isCurrentPathEqualTo(path: string, query: string = ''): boolean {     const givenPath = path.endsWith('/') ? path.substring(0, path.length - 1) : path;     const currPath =         this.path().endsWith('/') ? this.path().substring(0, this.path().length - 1) : this.path();      return currPath == givenPath + (query.length > 0 ? ('?' + query) : '');   }    simulateUrlPop(pathname: string) {     this._subject.emit({'url': pathname, 'pop': true, 'type': 'popstate'});   }    simulateHashChange(pathname: string) {     const path = this.prepareExternalUrl(pathname);     this.pushHistory(path, '', null);      this.urlChanges.push('hash: ' + pathname);     // the browser will automatically fire popstate event before each `hashchange` event, so we need     // to simulate it.     this._subject.emit({'url': pathname, 'pop': true, 'type': 'popstate'});     this._subject.emit({'url': pathname, 'pop': true, 'type': 'hashchange'});   }    prepareExternalUrl(url: string): string {     if (url.length > 0 && !url.startsWith('/')) {       url = '/' + url;     }     return this._basePath + url;   }    go(path: string, query: string = '', state: any = null) {     path = this.prepareExternalUrl(path);      this.pushHistory(path, query, state);      const locationState = this._history[this._historyIndex - 1];     if (locationState.path == path && locationState.query == query) {       return;     }      const url = path + (query.length > 0 ? ('?' + query) : '');     this.urlChanges.push(url);     this._notifyUrlChangeListeners(path + normalizeQueryParams(query), state);   }    replaceState(path: string, query: string = '', state: any = null) {     path = this.prepareExternalUrl(path);      const history = this._history[this._historyIndex];      history.state = state;      if (history.path == path && history.query == query) {       return;     }      history.path = path;     history.query = query;      const url = path + (query.length > 0 ? ('?' + query) : '');     this.urlChanges.push('replace: ' + url);     this._notifyUrlChangeListeners(path + normalizeQueryParams(query), state);   }    forward() {     if (this._historyIndex < (this._history.length - 1)) {       this._historyIndex++;       this._subject.emit(           {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'});     }   }    back() {     if (this._historyIndex > 0) {       this._historyIndex--;       this._subject.emit(           {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'});     }   }    historyGo(relativePosition: number = 0): void {     const nextPageIndex = this._historyIndex + relativePosition;     if (nextPageIndex >= 0 && nextPageIndex < this._history.length) {       this._historyIndex = nextPageIndex;       this._subject.emit(           {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'});     }   }    onUrlChange(fn: (url: string, state: unknown) => void): VoidFunction {     this._urlChangeListeners.push(fn);      if (!this._urlChangeSubscription) {       this._urlChangeSubscription = this.subscribe(v => {         this._notifyUrlChangeListeners(v.url, v.state);       });     }      return () => {       const fnIndex = this._urlChangeListeners.indexOf(fn);       this._urlChangeListeners.splice(fnIndex, 1);        if (this._urlChangeListeners.length === 0) {         this._urlChangeSubscription?.unsubscribe();         this._urlChangeSubscription = null;       }     };   }    /** @internal */   _notifyUrlChangeListeners(url: string = '', state: unknown) {     this._urlChangeListeners.forEach(fn => fn(url, state));   }    subscribe(       onNext: (value: any) => void, onThrow?: ((error: any) => void)|null,       onReturn?: (() => void)|null): SubscriptionLike {     return this._subject.subscribe({next: onNext, error: onThrow, complete: onReturn});   }    normalize(url: string): string {     return null!;   }    private pushHistory(path: string, query: string, state: any) {     if (this._historyIndex > 0) {       this._history.splice(this._historyIndex + 1);     }     this._history.push(new LocationState(path, query, state));     this._historyIndex = this._history.length - 1;   } }  class LocationState {   constructor(public path: string, public query: string, public state: any) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {LocationStrategy} from '@angular/common'; import {EventEmitter, Injectable} from '@angular/core';    /**  * A mock implementation of {@link LocationStrategy} that allows tests to fire simulated  * location events.  *  * @publicApi  */ @Injectable() export class MockLocationStrategy extends LocationStrategy {   internalBaseHref: string = '/';   internalPath: string = '/';   internalTitle: string = '';   urlChanges: string[] = [];   /** @internal */   _subject: EventEmitter<any> = new EventEmitter();   private stateChanges: any[] = [];   constructor() {     super();   }    simulatePopState(url: string): void {     this.internalPath = url;     this._subject.emit(new _MockPopStateEvent(this.path()));   }    path(includeHash: boolean = false): string {     return this.internalPath;   }    prepareExternalUrl(internal: string): string {     if (internal.startsWith('/') && this.internalBaseHref.endsWith('/')) {       return this.internalBaseHref + internal.substring(1);     }     return this.internalBaseHref + internal;   }    pushState(ctx: any, title: string, path: string, query: string): void {     // Add state change to changes array     this.stateChanges.push(ctx);      this.internalTitle = title;      const url = path + (query.length > 0 ? ('?' + query) : '');     this.internalPath = url;      const externalUrl = this.prepareExternalUrl(url);     this.urlChanges.push(externalUrl);   }    replaceState(ctx: any, title: string, path: string, query: string): void {     // Reset the last index of stateChanges to the ctx (state) object     this.stateChanges[(this.stateChanges.length || 1) - 1] = ctx;      this.internalTitle = title;      const url = path + (query.length > 0 ? ('?' + query) : '');     this.internalPath = url;      const externalUrl = this.prepareExternalUrl(url);     this.urlChanges.push('replace: ' + externalUrl);   }    onPopState(fn: (value: any) => void): void {     this._subject.subscribe({next: fn});   }    getBaseHref(): string {     return this.internalBaseHref;   }    back(): void {     if (this.urlChanges.length > 0) {       this.urlChanges.pop();       this.stateChanges.pop();       const nextUrl = this.urlChanges.length > 0 ? this.urlChanges[this.urlChanges.length - 1] : '';       this.simulatePopState(nextUrl);     }   }    forward(): void {     throw 'not implemented';   }    getState(): unknown {     return this.stateChanges[(this.stateChanges.length || 1) - 1];   } }  class _MockPopStateEvent {   pop: boolean = true;   type: string = 'popstate';   constructor(public newUrl: string) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {LocationChangeEvent, LocationChangeListener, PlatformLocation} from '@angular/common'; import {Inject, Injectable, InjectionToken, Optional} from '@angular/core'; import {Subject} from 'rxjs';  /**  * Parser from https://tools.ietf.org/html/rfc3986#appendix-B  * ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?  *  12            3  4          5       6  7        8 9  *  * Example: http://www.ics.uci.edu/pub/ietf/uri/#Related  *  * Results in:  *  * $1 = http:  * $2 = http  * $3 = //www.ics.uci.edu  * $4 = www.ics.uci.edu  * $5 = /pub/ietf/uri/  * $6 = <undefined>  * $7 = <undefined>  * $8 = #Related  * $9 = Related  */ const urlParse = /^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;  function parseUrl(urlStr: string, baseHref: string) {   const verifyProtocol = /^((http[s]?|ftp):\\/\\/)/;   let serverBase: string|undefined;    // URL class requires full URL. If the URL string doesn't start with protocol, we need to add   // an arbitrary base URL which can be removed afterward.   if (!verifyProtocol.test(urlStr)) {     serverBase = 'http://empty.com/';   }   let parsedUrl: {     protocol: string,     hostname: string,     port: string,     pathname: string,     search: string,     hash: string   };   try {     parsedUrl = new URL(urlStr, serverBase);   } catch (e) {     const result = urlParse.exec(serverBase || '' + urlStr);     if (!result) {       throw new Error(`Invalid URL: ${urlStr} with base: ${baseHref}`);     }     const hostSplit = result[4].split(':');     parsedUrl = {       protocol: result[1],       hostname: hostSplit[0],       port: hostSplit[1] || '',       pathname: result[5],       search: result[6],       hash: result[8],     };   }   if (parsedUrl.pathname && parsedUrl.pathname.indexOf(baseHref) === 0) {     parsedUrl.pathname = parsedUrl.pathname.substring(baseHref.length);   }   return {     hostname: !serverBase && parsedUrl.hostname || '',     protocol: !serverBase && parsedUrl.protocol || '',     port: !serverBase && parsedUrl.port || '',     pathname: parsedUrl.pathname || '/',     search: parsedUrl.search || '',     hash: parsedUrl.hash || '',   }; }  /**  * Mock platform location config  *  * @publicApi  */ export interface MockPlatformLocationConfig {   startUrl?: string;   appBaseHref?: string; }  /**  * Provider for mock platform location config  *  * @publicApi  */ export const MOCK_PLATFORM_LOCATION_CONFIG =     new InjectionToken<MockPlatformLocationConfig>('MOCK_PLATFORM_LOCATION_CONFIG');  /**  * Mock implementation of URL state.  *  * @publicApi  */ @Injectable() export class MockPlatformLocation implements PlatformLocation {   private baseHref: string = '';   private hashUpdate = new Subject<LocationChangeEvent>();   private popStateSubject = new Subject<LocationChangeEvent>();   private urlChangeIndex: number = 0;   private urlChanges: {     hostname: string,     protocol: string,     port: string,     pathname: string,     search: string,     hash: string,     state: unknown   }[] = [{hostname: '', protocol: '', port: '', pathname: '/', search: '', hash: '', state: null}];    constructor(@Inject(MOCK_PLATFORM_LOCATION_CONFIG) @Optional() config?:                   MockPlatformLocationConfig) {     if (config) {       this.baseHref = config.appBaseHref || '';        const parsedChanges =           this.parseChanges(null, config.startUrl || 'http://_empty_/', this.baseHref);       this.urlChanges[0] = {...parsedChanges};     }   }    get hostname() {     return this.urlChanges[this.urlChangeIndex].hostname;   }   get protocol() {     return this.urlChanges[this.urlChangeIndex].protocol;   }   get port() {     return this.urlChanges[this.urlChangeIndex].port;   }   get pathname() {     return this.urlChanges[this.urlChangeIndex].pathname;   }   get search() {     return this.urlChanges[this.urlChangeIndex].search;   }   get hash() {     return this.urlChanges[this.urlChangeIndex].hash;   }   get state() {     return this.urlChanges[this.urlChangeIndex].state;   }     getBaseHrefFromDOM(): string {     return this.baseHref;   }    onPopState(fn: LocationChangeListener): VoidFunction {     const subscription = this.popStateSubject.subscribe(fn);     return () => subscription.unsubscribe();   }    onHashChange(fn: LocationChangeListener): VoidFunction {     const subscription = this.hashUpdate.subscribe(fn);     return () => subscription.unsubscribe();   }    get href(): string {     let url = `${this.protocol}//${this.hostname}${this.port ? ':' + this.port : ''}`;     url += `${this.pathname === '/' ? '' : this.pathname}${this.search}${this.hash}`;     return url;   }    get url(): string {     return `${this.pathname}${this.search}${this.hash}`;   }    private parseChanges(state: unknown, url: string, baseHref: string = '') {     // When the `history.state` value is stored, it is always copied.     state = JSON.parse(JSON.stringify(state));     return {...parseUrl(url, baseHref), state};   }    replaceState(state: any, title: string, newUrl: string): void {     const {pathname, search, state: parsedState, hash} = this.parseChanges(state, newUrl);      this.urlChanges[this.urlChangeIndex] =         {...this.urlChanges[this.urlChangeIndex], pathname, search, hash, state: parsedState};   }    pushState(state: any, title: string, newUrl: string): void {     const {pathname, search, state: parsedState, hash} = this.parseChanges(state, newUrl);     if (this.urlChangeIndex > 0) {       this.urlChanges.splice(this.urlChangeIndex + 1);     }     this.urlChanges.push(         {...this.urlChanges[this.urlChangeIndex], pathname, search, hash, state: parsedState});     this.urlChangeIndex = this.urlChanges.length - 1;   }    forward(): void {     const oldUrl = this.url;     const oldHash = this.hash;     if (this.urlChangeIndex < this.urlChanges.length) {       this.urlChangeIndex++;     }     this.emitEvents(oldHash, oldUrl);   }    back(): void {     const oldUrl = this.url;     const oldHash = this.hash;     if (this.urlChangeIndex > 0) {       this.urlChangeIndex--;     }     this.emitEvents(oldHash, oldUrl);   }    historyGo(relativePosition: number = 0): void {     const oldUrl = this.url;     const oldHash = this.hash;     const nextPageIndex = this.urlChangeIndex + relativePosition;     if (nextPageIndex >= 0 && nextPageIndex < this.urlChanges.length) {       this.urlChangeIndex = nextPageIndex;     }     this.emitEvents(oldHash, oldUrl);   }    getState(): unknown {     return this.state;   }    /**    * Browsers are inconsistent in when they fire events and perform the state updates    * The most easiest thing to do in our mock is synchronous and that happens to match    * Firefox and Chrome, at least somewhat closely    *    * https://github.com/WICG/navigation-api#watching-for-navigations    * https://docs.google.com/document/d/1Pdve-DJ1JCGilj9Yqf5HxRJyBKSel5owgOvUJqTauwU/edit#heading=h.3ye4v71wsz94    * popstate is always sent before hashchange:    * https://developer.mozilla.org/en-US/docs/Web/API/Window/popstate_event#when_popstate_is_sent    */   private emitEvents(oldHash: string, oldUrl: string) {     this.popStateSubject.next(         {type: 'popstate', state: this.getState(), oldUrl, newUrl: this.url} as         LocationChangeEvent);     if (oldHash !== this.hash) {       this.hashUpdate.next(           {type: 'hashchange', state: null, oldUrl, newUrl: this.url} as LocationChangeEvent);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Location, LocationStrategy} from '@angular/common'; import {Provider} from '@angular/core';  import {SpyLocation} from './location_mock'; import {MockLocationStrategy} from './mock_location_strategy';  /**  * Returns mock providers for the `Location` and `LocationStrategy` classes.  * The mocks are helpful in tests to fire simulated location events.  *  * @publicApi  */ export function provideLocationMocks(): Provider[] {   return [     {provide: Location, useClass: SpyLocation},     {provide: LocationStrategy, useClass: MockLocationStrategy},   ]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the common/testing package.  */ export {SpyLocation} from './location_mock'; export {MockLocationStrategy} from './mock_location_strategy'; export {MOCK_PLATFORM_LOCATION_CONFIG, MockPlatformLocation, MockPlatformLocationConfig} from './mock_platform_location'; export {provideLocationMocks} from './provide_location_mocks'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/testing';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 173 --------------------
{"version":3,"file":"testing.mjs","sources":["../../../../../../packages/common/src/location/util.ts","../../../../../../packages/common/testing/src/location_mock.ts","../../../../../../packages/common/testing/src/mock_location_strategy.ts","../../../../../../packages/common/testing/src/mock_platform_location.ts","../../../../../../packages/common/testing/src/provide_location_mocks.ts","../../../../../../packages/common/testing/src/testing.ts","../../../../../../packages/common/testing/public_api.ts","../../../../../../packages/common/testing/index.ts","../../../../../../packages/common/testing/testing.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */   /**  * Joins two parts of a URL with a slash if needed.  *  * @param start  URL string  * @param end    URL string  *  *  * @returns The joined URL string.  */ export function joinWithSlash(start: string, end: string): string {   if (start.length == 0) {     return end;   }   if (end.length == 0) {     return start;   }   let slashes = 0;   if (start.endsWith('/')) {     slashes++;   }   if (end.startsWith('/')) {     slashes++;   }   if (slashes == 2) {     return start + end.substring(1);   }   if (slashes == 1) {     return start + end;   }   return start + '/' + end; }  /**  * Removes a trailing slash from a URL string if needed.  * Looks for the first occurrence of either `#`, `?`, or the end of the  * line as `/` characters and removes the trailing slash if one exists.  *  * @param url URL string.  *  * @returns The URL string, modified if needed.  */ export function stripTrailingSlash(url: string): string {   const match = url.match(/#|\\?|$/);   const pathEndIdx = match && match.index || url.length;   const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);   return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx); }  /**  * Normalizes URL parameters by prepending with `?` if needed.  *  * @param  params String of URL parameters.  *  * @returns The normalized URL parameters string.  */ export function normalizeQueryParams(params: string): string {   return params && params[0] !== '?' ? '?' + params : params; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Location, LocationStrategy} from '@angular/common'; import {EventEmitter, Injectable} from '@angular/core'; import {SubscriptionLike} from 'rxjs';  import {normalizeQueryParams} from '../../src/location/util';  /**  * A spy for {@link Location} that allows tests to fire simulated location events.  *  * @publicApi  */ @Injectable() export class SpyLocation implements Location {   urlChanges: string[] = [];   private _history: LocationState[] = [new LocationState('', '', null)];   private _historyIndex: number = 0;   /** @internal */   _subject: EventEmitter<any> = new EventEmitter();   /** @internal */   _basePath: string = '';   /** @internal */   _locationStrategy: LocationStrategy = null!;   /** @internal */   _urlChangeListeners: ((url: string, state: unknown) => void)[] = [];   /** @internal */   _urlChangeSubscription: SubscriptionLike|null = null;    ngOnDestroy(): void {     this._urlChangeSubscription?.unsubscribe();     this._urlChangeListeners = [];   }    setInitialPath(url: string) {     this._history[this._historyIndex].path = url;   }    setBaseHref(url: string) {     this._basePath = url;   }    path(): string {     return this._history[this._historyIndex].path;   }    getState(): unknown {     return this._history[this._historyIndex].state;   }    isCurrentPathEqualTo(path: string, query: string = ''): boolean {     const givenPath = path.endsWith('/') ? path.substring(0, path.length - 1) : path;     const currPath =         this.path().endsWith('/') ? this.path().substring(0, this.path().length - 1) : this.path();      return currPath == givenPath + (query.length > 0 ? ('?' + query) : '');   }    simulateUrlPop(pathname: string) {     this._subject.emit({'url': pathname, 'pop': true, 'type': 'popstate'});   }    simulateHashChange(pathname: string) {     const path = this.prepareExternalUrl(pathname);     this.pushHistory(path, '', null);      this.urlChanges.push('hash: ' + pathname);     // the browser will automatically fire popstate event before each `hashchange` event, so we need     // to simulate it.     this._subject.emit({'url': pathname, 'pop': true, 'type': 'popstate'});     this._subject.emit({'url': pathname, 'pop': true, 'type': 'hashchange'});   }    prepareExternalUrl(url: string): string {     if (url.length > 0 && !url.startsWith('/')) {       url = '/' + url;     }     return this._basePath + url;   }    go(path: string, query: string = '', state: any = null) {     path = this.prepareExternalUrl(path);      this.pushHistory(path, query, state);      const locationState = this._history[this._historyIndex - 1];     if (locationState.path == path && locationState.query == query) {       return;     }      const url = path + (query.length > 0 ? ('?' + query) : '');     this.urlChanges.push(url);     this._notifyUrlChangeListeners(path + normalizeQueryParams(query), state);   }    replaceState(path: string, query: string = '', state: any = null) {     path = this.prepareExternalUrl(path);      const history = this._history[this._historyIndex];      history.state = state;      if (history.path == path && history.query == query) {       return;     }      history.path = path;     history.query = query;      const url = path + (query.length > 0 ? ('?' + query) : '');     this.urlChanges.push('replace: ' + url);     this._notifyUrlChangeListeners(path + normalizeQueryParams(query), state);   }    forward() {     if (this._historyIndex < (this._history.length - 1)) {       this._historyIndex++;       this._subject.emit(           {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'});     }   }    back() {     if (this._historyIndex > 0) {       this._historyIndex--;       this._subject.emit(           {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'});     }   }    historyGo(relativePosition: number = 0): void {     const nextPageIndex = this._historyIndex + relativePosition;     if (nextPageIndex >= 0 && nextPageIndex < this._history.length) {       this._historyIndex = nextPageIndex;       this._subject.emit(           {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'});     }   }    onUrlChange(fn: (url: string, state: unknown) => void): VoidFunction {     this._urlChangeListeners.push(fn);      if (!this._urlChangeSubscription) {       this._urlChangeSubscription = this.subscribe(v => {         this._notifyUrlChangeListeners(v.url, v.state);       });     }      return () => {       const fnIndex = this._urlChangeListeners.indexOf(fn);       this._urlChangeListeners.splice(fnIndex, 1);        if (this._urlChangeListeners.length === 0) {         this._urlChangeSubscription?.unsubscribe();         this._urlChangeSubscription = null;       }     };   }    /** @internal */   _notifyUrlChangeListeners(url: string = '', state: unknown) {     this._urlChangeListeners.forEach(fn => fn(url, state));   }    subscribe(       onNext: (value: any) => void, onThrow?: ((error: any) => void)|null,       onReturn?: (() => void)|null): SubscriptionLike {     return this._subject.subscribe({next: onNext, error: onThrow, complete: onReturn});   }    normalize(url: string): string {     return null!;   }    private pushHistory(path: string, query: string, state: any) {     if (this._historyIndex > 0) {       this._history.splice(this._historyIndex + 1);     }     this._history.push(new LocationState(path, query, state));     this._historyIndex = this._history.length - 1;   } }  class LocationState {   constructor(public path: string, public query: string, public state: any) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {LocationStrategy} from '@angular/common'; import {EventEmitter, Injectable} from '@angular/core';    /**  * A mock implementation of {@link LocationStrategy} that allows tests to fire simulated  * location events.  *  * @publicApi  */ @Injectable() export class MockLocationStrategy extends LocationStrategy {   internalBaseHref: string = '/';   internalPath: string = '/';   internalTitle: string = '';   urlChanges: string[] = [];   /** @internal */   _subject: EventEmitter<any> = new EventEmitter();   private stateChanges: any[] = [];   constructor() {     super();   }    simulatePopState(url: string): void {     this.internalPath = url;     this._subject.emit(new _MockPopStateEvent(this.path()));   }    path(includeHash: boolean = false): string {     return this.internalPath;   }    prepareExternalUrl(internal: string): string {     if (internal.startsWith('/') && this.internalBaseHref.endsWith('/')) {       return this.internalBaseHref + internal.substring(1);     }     return this.internalBaseHref + internal;   }    pushState(ctx: any, title: string, path: string, query: string): void {     // Add state change to changes array     this.stateChanges.push(ctx);      this.internalTitle = title;      const url = path + (query.length > 0 ? ('?' + query) : '');     this.internalPath = url;      const externalUrl = this.prepareExternalUrl(url);     this.urlChanges.push(externalUrl);   }    replaceState(ctx: any, title: string, path: string, query: string): void {     // Reset the last index of stateChanges to the ctx (state) object     this.stateChanges[(this.stateChanges.length || 1) - 1] = ctx;      this.internalTitle = title;      const url = path + (query.length > 0 ? ('?' + query) : '');     this.internalPath = url;      const externalUrl = this.prepareExternalUrl(url);     this.urlChanges.push('replace: ' + externalUrl);   }    onPopState(fn: (value: any) => void): void {     this._subject.subscribe({next: fn});   }    getBaseHref(): string {     return this.internalBaseHref;   }    back(): void {     if (this.urlChanges.length > 0) {       this.urlChanges.pop();       this.stateChanges.pop();       const nextUrl = this.urlChanges.length > 0 ? this.urlChanges[this.urlChanges.length - 1] : '';       this.simulatePopState(nextUrl);     }   }    forward(): void {     throw 'not implemented';   }    getState(): unknown {     return this.stateChanges[(this.stateChanges.length || 1) - 1];   } }  class _MockPopStateEvent {   pop: boolean = true;   type: string = 'popstate';   constructor(public newUrl: string) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {LocationChangeEvent, LocationChangeListener, PlatformLocation} from '@angular/common'; import {Inject, Injectable, InjectionToken, Optional} from '@angular/core'; import {Subject} from 'rxjs';  /**  * Parser from https://tools.ietf.org/html/rfc3986#appendix-B  * ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?  *  12            3  4          5       6  7        8 9  *  * Example: http://www.ics.uci.edu/pub/ietf/uri/#Related  *  * Results in:  *  * $1 = http:  * $2 = http  * $3 = //www.ics.uci.edu  * $4 = www.ics.uci.edu  * $5 = /pub/ietf/uri/  * $6 = <undefined>  * $7 = <undefined>  * $8 = #Related  * $9 = Related  */ const urlParse = /^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;  function parseUrl(urlStr: string, baseHref: string) {   const verifyProtocol = /^((http[s]?|ftp):\\/\\/)/;   let serverBase: string|undefined;    // URL class requires full URL. If the URL string doesn't start with protocol, we need to add   // an arbitrary base URL which can be removed afterward.   if (!verifyProtocol.test(urlStr)) {     serverBase = 'http://empty.com/';   }   let parsedUrl: {     protocol: string,     hostname: string,     port: string,     pathname: string,     search: string,     hash: string   };   try {     parsedUrl = new URL(urlStr, serverBase);   } catch (e) {     const result = urlParse.exec(serverBase || '' + urlStr);     if (!result) {       throw new Error(`Invalid URL: ${urlStr} with base: ${baseHref}`);     }     const hostSplit = result[4].split(':');     parsedUrl = {       protocol: result[1],       hostname: hostSplit[0],       port: hostSplit[1] || '',       pathname: result[5],       search: result[6],       hash: result[8],     };   }   if (parsedUrl.pathname && parsedUrl.pathname.indexOf(baseHref) === 0) {     parsedUrl.pathname = parsedUrl.pathname.substring(baseHref.length);   }   return {     hostname: !serverBase && parsedUrl.hostname || '',     protocol: !serverBase && parsedUrl.protocol || '',     port: !serverBase && parsedUrl.port || '',     pathname: parsedUrl.pathname || '/',     search: parsedUrl.search || '',     hash: parsedUrl.hash || '',   }; }  /**  * Mock platform location config  *  * @publicApi  */ export interface MockPlatformLocationConfig {   startUrl?: string;   appBaseHref?: string; }  /**  * Provider for mock platform location config  *  * @publicApi  */ export const MOCK_PLATFORM_LOCATION_CONFIG =     new InjectionToken<MockPlatformLocationConfig>('MOCK_PLATFORM_LOCATION_CONFIG');  /**  * Mock implementation of URL state.  *  * @publicApi  */ @Injectable() export class MockPlatformLocation implements PlatformLocation {   private baseHref: string = '';   private hashUpdate = new Subject<LocationChangeEvent>();   private popStateSubject = new Subject<LocationChangeEvent>();   private urlChangeIndex: number = 0;   private urlChanges: {     hostname: string,     protocol: string,     port: string,     pathname: string,     search: string,     hash: string,     state: unknown   }[] = [{hostname: '', protocol: '', port: '', pathname: '/', search: '', hash: '', state: null}];    constructor(@Inject(MOCK_PLATFORM_LOCATION_CONFIG) @Optional() config?:                   MockPlatformLocationConfig) {     if (config) {       this.baseHref = config.appBaseHref || '';        const parsedChanges =           this.parseChanges(null, config.startUrl || 'http://_empty_/', this.baseHref);       this.urlChanges[0] = {...parsedChanges};     }   }    get hostname() {     return this.urlChanges[this.urlChangeIndex].hostname;   }   get protocol() {     return this.urlChanges[this.urlChangeIndex].protocol;   }   get port() {     return this.urlChanges[this.urlChangeIndex].port;   }   get pathname() {     return this.urlChanges[this.urlChangeIndex].pathname;   }   get search() {     return this.urlChanges[this.urlChangeIndex].search;   }   get hash() {     return this.urlChanges[this.urlChangeIndex].hash;   }   get state() {     return this.urlChanges[this.urlChangeIndex].state;   }     getBaseHrefFromDOM(): string {     return this.baseHref;   }    onPopState(fn: LocationChangeListener): VoidFunction {     const subscription = this.popStateSubject.subscribe(fn);     return () => subscription.unsubscribe();   }    onHashChange(fn: LocationChangeListener): VoidFunction {     const subscription = this.hashUpdate.subscribe(fn);     return () => subscription.unsubscribe();   }    get href(): string {     let url = `${this.protocol}//${this.hostname}${this.port ? ':' + this.port : ''}`;     url += `${this.pathname === '/' ? '' : this.pathname}${this.search}${this.hash}`;     return url;   }    get url(): string {     return `${this.pathname}${this.search}${this.hash}`;   }    private parseChanges(state: unknown, url: string, baseHref: string = '') {     // When the `history.state` value is stored, it is always copied.     state = JSON.parse(JSON.stringify(state));     return {...parseUrl(url, baseHref), state};   }    replaceState(state: any, title: string, newUrl: string): void {     const {pathname, search, state: parsedState, hash} = this.parseChanges(state, newUrl);      this.urlChanges[this.urlChangeIndex] =         {...this.urlChanges[this.urlChangeIndex], pathname, search, hash, state: parsedState};   }    pushState(state: any, title: string, newUrl: string): void {     const {pathname, search, state: parsedState, hash} = this.parseChanges(state, newUrl);     if (this.urlChangeIndex > 0) {       this.urlChanges.splice(this.urlChangeIndex + 1);     }     this.urlChanges.push(         {...this.urlChanges[this.urlChangeIndex], pathname, search, hash, state: parsedState});     this.urlChangeIndex = this.urlChanges.length - 1;   }    forward(): void {     const oldUrl = this.url;     const oldHash = this.hash;     if (this.urlChangeIndex < this.urlChanges.length) {       this.urlChangeIndex++;     }     this.emitEvents(oldHash, oldUrl);   }    back(): void {     const oldUrl = this.url;     const oldHash = this.hash;     if (this.urlChangeIndex > 0) {       this.urlChangeIndex--;     }     this.emitEvents(oldHash, oldUrl);   }    historyGo(relativePosition: number = 0): void {     const oldUrl = this.url;     const oldHash = this.hash;     const nextPageIndex = this.urlChangeIndex + relativePosition;     if (nextPageIndex >= 0 && nextPageIndex < this.urlChanges.length) {       this.urlChangeIndex = nextPageIndex;     }     this.emitEvents(oldHash, oldUrl);   }    getState(): unknown {     return this.state;   }    /**    * Browsers are inconsistent in when they fire events and perform the state updates    * The most easiest thing to do in our mock is synchronous and that happens to match    * Firefox and Chrome, at least somewhat closely    *    * https://github.com/WICG/navigation-api#watching-for-navigations    * https://docs.google.com/document/d/1Pdve-DJ1JCGilj9Yqf5HxRJyBKSel5owgOvUJqTauwU/edit#heading=h.3ye4v71wsz94    * popstate is always sent before hashchange:    * https://developer.mozilla.org/en-US/docs/Web/API/Window/popstate_event#when_popstate_is_sent    */   private emitEvents(oldHash: string, oldUrl: string) {     this.popStateSubject.next(         {type: 'popstate', state: this.getState(), oldUrl, newUrl: this.url} as         LocationChangeEvent);     if (oldHash !== this.hash) {       this.hashUpdate.next(           {type: 'hashchange', state: null, oldUrl, newUrl: this.url} as LocationChangeEvent);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Location, LocationStrategy} from '@angular/common'; import {Provider} from '@angular/core';  import {SpyLocation} from './location_mock'; import {MockLocationStrategy} from './mock_location_strategy';  /**  * Returns mock providers for the `Location` and `LocationStrategy` classes.  * The mocks are helpful in tests to fire simulated location events.  *  * @publicApi  */ export function provideLocationMocks(): Provider[] {   return [     {provide: Location, useClass: SpyLocation},     {provide: LocationStrategy, useClass: MockLocationStrategy},   ]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the common/testing package.  */ export {SpyLocation} from './location_mock'; export {MockLocationStrategy} from './mock_location_strategy'; export {MOCK_PLATFORM_LOCATION_CONFIG, MockPlatformLocation, MockPlatformLocationConfig} from './mock_platform_location'; export {provideLocationMocks} from './provide_location_mocks'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/testing';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":";;;;;;;;;;;AASA;;;;;;;;AAQG;AACa,SAAA,aAAa,CAAC,KAAa,EAAE,GAAW,EAAA;AACtD,IAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;AACrB,QAAA,OAAO,GAAG,CAAC;AACZ,KAAA;AACD,IAAA,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;AACnB,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;IACD,IAAI,OAAO,GAAG,CAAC,CAAC;AAChB,IAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvB,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;AACD,IAAA,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACvB,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;IACD,IAAI,OAAO,IAAI,CAAC,EAAE;QAChB,OAAO,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACjC,KAAA;IACD,IAAI,OAAO,IAAI,CAAC,EAAE;QAChB,OAAO,KAAK,GAAG,GAAG,CAAC;AACpB,KAAA;AACD,IAAA,OAAO,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3B,CAAC;AAED;;;;;;;;AAQG;AACG,SAAU,kBAAkB,CAAC,GAAW,EAAA;IAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;IACtD,MAAM,eAAe,GAAG,UAAU,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3E,IAAA,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;AAMG;AACG,SAAU,oBAAoB,CAAC,MAAc,EAAA;AACjD,IAAA,OAAO,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7D;;ACpDA;;;;AAIG;MAEU,WAAW,CAAA;AADxB,IAAA,WAAA,GAAA;AAEE,QAAA,IAAU,CAAA,UAAA,GAAa,EAAE,CAAC;AAClB,QAAA,IAAA,CAAA,QAAQ,GAAoB,CAAC,IAAI,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9D,QAAA,IAAa,CAAA,aAAA,GAAW,CAAC,CAAC;;AAElC,QAAA,IAAA,CAAA,QAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;;AAEjD,QAAA,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;;AAEvB,QAAA,IAAiB,CAAA,iBAAA,GAAqB,IAAK,CAAC;;AAE5C,QAAA,IAAmB,CAAA,mBAAA,GAA8C,EAAE,CAAC;;AAEpE,QAAA,IAAsB,CAAA,sBAAA,GAA0B,IAAI,CAAC;KA0JtD;IAxJC,WAAW,GAAA;;AACT,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;KAC/B;AAED,IAAA,cAAc,CAAC,GAAW,EAAA;QACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;KAC9C;AAED,IAAA,WAAW,CAAC,GAAW,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;KACtB;IAED,IAAI,GAAA;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC;KAC/C;IAED,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;KAChD;AAED,IAAA,oBAAoB,CAAC,IAAY,EAAE,KAAA,GAAgB,EAAE,EAAA;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AACjF,QAAA,MAAM,QAAQ,GACV,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE/F,OAAO,QAAQ,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;KACxE;AAED,IAAA,cAAc,CAAC,QAAgB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAC,CAAC,CAAC;KACxE;AAED,IAAA,kBAAkB,CAAC,QAAgB,EAAA;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAEjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;;;AAG1C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAC,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAC,CAAC,CAAC;KAC1E;AAED,IAAA,kBAAkB,CAAC,GAAW,EAAA;AAC5B,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC1C,YAAA,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACjB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;KAC7B;IAED,EAAE,CAAC,IAAY,EAAE,QAAgB,EAAE,EAAE,QAAa,IAAI,EAAA;AACpD,QAAA,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAErC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;QAC5D,IAAI,aAAa,CAAC,IAAI,IAAI,IAAI,IAAI,aAAa,CAAC,KAAK,IAAI,KAAK,EAAE;YAC9D,OAAO;AACR,SAAA;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;KAC3E;IAED,YAAY,CAAC,IAAY,EAAE,QAAgB,EAAE,EAAE,QAAa,IAAI,EAAA;AAC9D,QAAA,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAErC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAElD,QAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QAEtB,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE;YAClD,OAAO;AACR,SAAA;AAED,QAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,QAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QAEtB,MAAM,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;KAC3E;IAED,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACnD,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CACd,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAC,CAAC,CAAC;AACtF,SAAA;KACF;IAED,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CACd,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAC,CAAC,CAAC;AACtF,SAAA;KACF;IAED,SAAS,CAAC,mBAA2B,CAAC,EAAA;AACpC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC;QAC5D,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC9D,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CACd,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAC,CAAC,CAAC;AACtF,SAAA;KACF;AAED,IAAA,WAAW,CAAC,EAAyC,EAAA;AACnD,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAElC,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAChC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAG;gBAC/C,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACjD,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,OAAO,MAAK;;YACV,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAE5C,YAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;AACzC,gBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAC;AAC3C,gBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACpC,aAAA;AACH,SAAC,CAAC;KACH;;AAGD,IAAA,yBAAyB,CAAC,GAAA,GAAc,EAAE,EAAE,KAAc,EAAA;AACxD,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;KACxD;AAED,IAAA,SAAS,CACL,MAA4B,EAAE,OAAqC,EACnE,QAA4B,EAAA;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC;KACpF;AAED,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,OAAO,IAAK,CAAC;KACd;AAEO,IAAA,WAAW,CAAC,IAAY,EAAE,KAAa,EAAE,KAAU,EAAA;AACzD,QAAA,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;AAC9C,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;KAC/C;;mHAtKU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;uHAAX,WAAW,EAAA,CAAA,CAAA;sGAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;AA0KX,MAAM,aAAa,CAAA;AACjB,IAAA,WAAA,CAAmB,IAAY,EAAS,KAAa,EAAS,KAAU,EAAA;AAArD,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AAAS,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;AAAS,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAK;KAAI;AAC7E;;AClLD;;;;;AAKG;AAEG,MAAO,oBAAqB,SAAQ,gBAAgB,CAAA;AAQxD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;AARV,QAAA,IAAgB,CAAA,gBAAA,GAAW,GAAG,CAAC;AAC/B,QAAA,IAAY,CAAA,YAAA,GAAW,GAAG,CAAC;AAC3B,QAAA,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;AAC3B,QAAA,IAAU,CAAA,UAAA,GAAa,EAAE,CAAC;;AAE1B,QAAA,IAAA,CAAA,QAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;AACzC,QAAA,IAAY,CAAA,YAAA,GAAU,EAAE,CAAC;KAGhC;AAED,IAAA,gBAAgB,CAAC,GAAW,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KACzD;IAED,IAAI,CAAC,cAAuB,KAAK,EAAA;QAC/B,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED,IAAA,kBAAkB,CAAC,QAAgB,EAAA;AACjC,QAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACnE,OAAO,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtD,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;KACzC;AAED,IAAA,SAAS,CAAC,GAAQ,EAAE,KAAa,EAAE,IAAY,EAAE,KAAa,EAAA;;AAE5D,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE5B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE3B,MAAM,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QAExB,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACnC;AAED,IAAA,YAAY,CAAC,GAAQ,EAAE,KAAa,EAAE,IAAY,EAAE,KAAa,EAAA;;AAE/D,QAAA,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AAE7D,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE3B,MAAM,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QAExB,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;KACjD;AAED,IAAA,UAAU,CAAC,EAAwB,EAAA;QACjC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,EAAE,EAAC,CAAC,CAAC;KACrC;IAED,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;IAED,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;AACxB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AAC9F,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAChC,SAAA;KACF;IAED,OAAO,GAAA;AACL,QAAA,MAAM,iBAAiB,CAAC;KACzB;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC/D;;4HA7EU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gIAApB,oBAAoB,EAAA,CAAA,CAAA;sGAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;AAiFX,MAAM,kBAAkB,CAAA;AAGtB,IAAA,WAAA,CAAmB,MAAc,EAAA;AAAd,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAFjC,QAAA,IAAG,CAAA,GAAA,GAAY,IAAI,CAAC;AACpB,QAAA,IAAI,CAAA,IAAA,GAAW,UAAU,CAAC;KACW;AACtC;;AC5FD;;;;;;;;;;;;;;;;;;AAkBG;AACH,MAAM,QAAQ,GAAG,+DAA+D,CAAC;AAEjF,SAAS,QAAQ,CAAC,MAAc,EAAE,QAAgB,EAAA;IAChD,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAChD,IAAA,IAAI,UAA4B,CAAC;;;AAIjC,IAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QAChC,UAAU,GAAG,mBAAmB,CAAC;AAClC,KAAA;AACD,IAAA,IAAI,SAOH,CAAC;IACF,IAAI;QACF,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACzC,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACV,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,CAAA,aAAA,EAAgB,MAAM,CAAe,YAAA,EAAA,QAAQ,CAAE,CAAA,CAAC,CAAC;AAClE,SAAA;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvC,QAAA,SAAS,GAAG;AACV,YAAA,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACnB,YAAA,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AACtB,YAAA,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE;AACxB,YAAA,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACnB,YAAA,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACjB,YAAA,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;SAChB,CAAC;AACH,KAAA;AACD,IAAA,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpE,QAAA,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACpE,KAAA;IACD,OAAO;QACL,QAAQ,EAAE,CAAC,UAAU,IAAI,SAAS,CAAC,QAAQ,IAAI,EAAE;QACjD,QAAQ,EAAE,CAAC,UAAU,IAAI,SAAS,CAAC,QAAQ,IAAI,EAAE;QACjD,IAAI,EAAE,CAAC,UAAU,IAAI,SAAS,CAAC,IAAI,IAAI,EAAE;AACzC,QAAA,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,GAAG;AACnC,QAAA,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,EAAE;AAC9B,QAAA,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE;KAC3B,CAAC;AACJ,CAAC;AAYD;;;;AAIG;MACU,6BAA6B,GACtC,IAAI,cAAc,CAA6B,+BAA+B,EAAE;AAEpF;;;;AAIG;MAEU,oBAAoB,CAAA;AAe/B,IAAA,WAAA,CAA+D,MACrB,EAAA;AAflC,QAAA,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;AACtB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAuB,CAAC;AAChD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAuB,CAAC;AACrD,QAAA,IAAc,CAAA,cAAA,GAAW,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAQZ,CAAC,EAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;AAI/F,QAAA,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;AAEzC,YAAA,MAAM,aAAa,GACf,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjF,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAO,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,aAAa,CAAC,CAAC;AACzC,SAAA;KACF;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC;KACtD;AACD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC;KACtD;AACD,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC;KAClD;AACD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC;KACtD;AACD,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;KACpD;AACD,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC;KAClD;AACD,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;KACnD;IAGD,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AAED,IAAA,UAAU,CAAC,EAA0B,EAAA;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACxD,QAAA,OAAO,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;KACzC;AAED,IAAA,YAAY,CAAC,EAA0B,EAAA;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACnD,QAAA,OAAO,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;KACzC;AAED,IAAA,IAAI,IAAI,GAAA;QACN,IAAI,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,EAAA,EAAK,IAAI,CAAC,QAAQ,CAAA,EAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA,CAAE,CAAC;QAClF,GAAG,IAAI,CAAG,EAAA,IAAI,CAAC,QAAQ,KAAK,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;AACjF,QAAA,OAAO,GAAG,CAAC;KACZ;AAED,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAG,EAAA,IAAI,CAAC,MAAM,CAAG,EAAA,IAAI,CAAC,IAAI,EAAE,CAAC;KACrD;AAEO,IAAA,YAAY,CAAC,KAAc,EAAE,GAAW,EAAE,WAAmB,EAAE,EAAA;;AAErE,QAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,OAAW,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA,EAAA,EAAE,KAAK,EAAE,CAAA,CAAA;KAC5C;AAED,IAAA,YAAY,CAAC,KAAU,EAAE,KAAa,EAAE,MAAc,EAAA;QACpD,MAAM,EAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEtF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,GAC5B,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA,EAAA,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAA,CAAC,CAAC;KAC3F;AAED,IAAA,SAAS,CAAC,KAAU,EAAE,KAAa,EAAE,MAAc,EAAA;QACjD,MAAM,EAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtF,QAAA,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;AACjD,SAAA;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACZ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAE,EAAA,EAAA,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAA,CAAA,CAAE,CAAC;QAC3F,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;KAClD;IAED,OAAO,GAAA;AACL,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;AACxB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAChD,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAClC;IAED,IAAI,GAAA;AACF,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;AACxB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAClC;IAED,SAAS,CAAC,mBAA2B,CAAC,EAAA;AACpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;AACxB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC;QAC7D,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAChE,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACrC,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAClC;IAED,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAED;;;;;;;;;AASG;IACK,UAAU,CAAC,OAAe,EAAE,MAAc,EAAA;QAChD,IAAI,CAAC,eAAe,CAAC,IAAI,CACrB,EAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAChD,CAAC,CAAC;AACzB,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE;YACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAChB,EAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAwB,CAAC,CAAC;AACzF,SAAA;KACF;;AAlJU,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBAeX,6BAA6B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gIAftC,oBAAoB,EAAA,CAAA,CAAA;sGAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;;8BAgBI,MAAM;+BAAC,6BAA6B,CAAA;;8BAAG,QAAQ;;;;ACzG9D;;;;;AAKG;SACa,oBAAoB,GAAA;IAClC,OAAO;AACL,QAAA,EAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAC;AAC1C,QAAA,EAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAC;KAC5D,CAAC;AACJ;;ACjBA;;;;AAIG;;ACJH;;;;AAIG;AAGH;;ACPA;;ACRA;;AAEG;;;;"}
-------------------- SECTION 174 --------------------
{"version":3,"file":"http.mjs","sources":["../../../../../../packages/common/http/src/backend.ts","../../../../../../packages/common/http/src/headers.ts","../../../../../../packages/common/http/src/params.ts","../../../../../../packages/common/http/src/context.ts","../../../../../../packages/common/http/src/request.ts","../../../../../../packages/common/http/src/response.ts","../../../../../../packages/common/http/src/client.ts","../../../../../../packages/common/http/src/interceptor.ts","../../../../../../packages/common/http/src/jsonp.ts","../../../../../../packages/common/http/src/xhr.ts","../../../../../../packages/common/http/src/xsrf.ts","../../../../../../packages/common/http/src/provider.ts","../../../../../../packages/common/http/src/module.ts","../../../../../../packages/common/http/public_api.ts","../../../../../../packages/common/http/index.ts","../../../../../../packages/common/http/http.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Observable} from 'rxjs';  import {HttpRequest} from './request'; import {HttpEvent} from './response';  /**  * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a  * `HttpResponse`.  *  * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the  * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the  * `HttpBackend`.  *  * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.  *  * @publicApi  */ export abstract class HttpHandler {   abstract handle(req: HttpRequest<any>): Observable<HttpEvent<any>>; }  /**  * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.  *  * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.  *  * When injected, `HttpBackend` dispatches requests directly to the backend, without going  * through the interceptor chain.  *  * @publicApi  */ export abstract class HttpBackend implements HttpHandler {   abstract handle(req: HttpRequest<any>): Observable<HttpEvent<any>>; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  interface Update {   name: string;   value?: string|string[];   op: 'a'|'s'|'d'; }  /**  * Represents the header configuration options for an HTTP request.  * Instances are immutable. Modifying methods return a cloned  * instance with the change. The original object is never changed.  *  * @publicApi  */ export class HttpHeaders {   /**    * Internal map of lowercase header names to values.    */   // TODO(issue/24571): remove '!'.   private headers!: Map<string, string[]>;     /**    * Internal map of lowercased header names to the normalized    * form of the name (the form seen first).    */   private normalizedNames: Map<string, string> = new Map();    /**    * Complete the lazy initialization of this object (needed before reading).    */   private lazyInit!: HttpHeaders|Function|null;    /**    * Queued updates to be materialized the next initialization.    */   private lazyUpdate: Update[]|null = null;    /**  Constructs a new HTTP header object with the given values.*/    constructor(headers?: string|{[name: string]: string | string[]}) {     if (!headers) {       this.headers = new Map<string, string[]>();     } else if (typeof headers === 'string') {       this.lazyInit = () => {         this.headers = new Map<string, string[]>();         headers.split('\ ').forEach(line => {           const index = line.indexOf(':');           if (index > 0) {             const name = line.slice(0, index);             const key = name.toLowerCase();             const value = line.slice(index + 1).trim();             this.maybeSetNormalizedName(name, key);             if (this.headers.has(key)) {               this.headers.get(key)!.push(value);             } else {               this.headers.set(key, [value]);             }           }         });       };     } else {       this.lazyInit = () => {         if (typeof ngDevMode === 'undefined' || ngDevMode) {           assertValidHeaders(headers);         }         this.headers = new Map<string, string[]>();         Object.keys(headers).forEach(name => {           let values: string|string[] = headers[name];           const key = name.toLowerCase();           if (typeof values === 'string') {             values = [values];           }           if (values.length > 0) {             this.headers.set(key, values);             this.maybeSetNormalizedName(name, key);           }         });       };     }   }    /**    * Checks for existence of a given header.    *    * @param name The header name to check for existence.    *    * @returns True if the header exists, false otherwise.    */   has(name: string): boolean {     this.init();      return this.headers.has(name.toLowerCase());   }    /**    * Retrieves the first value of a given header.    *    * @param name The header name.    *    * @returns The value string if the header exists, null otherwise    */   get(name: string): string|null {     this.init();      const values = this.headers.get(name.toLowerCase());     return values && values.length > 0 ? values[0] : null;   }    /**    * Retrieves the names of the headers.    *    * @returns A list of header names.    */   keys(): string[] {     this.init();      return Array.from(this.normalizedNames.values());   }    /**    * Retrieves a list of values for a given header.    *    * @param name The header name from which to retrieve values.    *    * @returns A string of values if the header exists, null otherwise.    */   getAll(name: string): string[]|null {     this.init();      return this.headers.get(name.toLowerCase()) || null;   }    /**    * Appends a new value to the existing set of values for a header    * and returns them in a clone of the original instance.    *    * @param name The header name for which to append the values.    * @param value The value to append.    *    * @returns A clone of the HTTP headers object with the value appended to the given header.    */    append(name: string, value: string|string[]): HttpHeaders {     return this.clone({name, value, op: 'a'});   }   /**    * Sets or modifies a value for a given header in a clone of the original instance.    * If the header already exists, its value is replaced with the given value    * in the returned object.    *    * @param name The header name.    * @param value The value or values to set or override for the given header.    *    * @returns A clone of the HTTP headers object with the newly set header value.    */   set(name: string, value: string|string[]): HttpHeaders {     return this.clone({name, value, op: 's'});   }   /**    * Deletes values for a given header in a clone of the original instance.    *    * @param name The header name.    * @param value The value or values to delete for the given header.    *    * @returns A clone of the HTTP headers object with the given value deleted.    */   delete(name: string, value?: string|string[]): HttpHeaders {     return this.clone({name, value, op: 'd'});   }    private maybeSetNormalizedName(name: string, lcName: string): void {     if (!this.normalizedNames.has(lcName)) {       this.normalizedNames.set(lcName, name);     }   }    private init(): void {     if (!!this.lazyInit) {       if (this.lazyInit instanceof HttpHeaders) {         this.copyFrom(this.lazyInit);       } else {         this.lazyInit();       }       this.lazyInit = null;       if (!!this.lazyUpdate) {         this.lazyUpdate.forEach(update => this.applyUpdate(update));         this.lazyUpdate = null;       }     }   }    private copyFrom(other: HttpHeaders) {     other.init();     Array.from(other.headers.keys()).forEach(key => {       this.headers.set(key, other.headers.get(key)!);       this.normalizedNames.set(key, other.normalizedNames.get(key)!);     });   }    private clone(update: Update): HttpHeaders {     const clone = new HttpHeaders();     clone.lazyInit =         (!!this.lazyInit && this.lazyInit instanceof HttpHeaders) ? this.lazyInit : this;     clone.lazyUpdate = (this.lazyUpdate || []).concat([update]);     return clone;   }    private applyUpdate(update: Update): void {     const key = update.name.toLowerCase();     switch (update.op) {       case 'a':       case 's':         let value = update.value!;         if (typeof value === 'string') {           value = [value];         }         if (value.length === 0) {           return;         }         this.maybeSetNormalizedName(update.name, key);         const base = (update.op === 'a' ? this.headers.get(key) : undefined) || [];         base.push(...value);         this.headers.set(key, base);         break;       case 'd':         const toDelete = update.value as string | undefined;         if (!toDelete) {           this.headers.delete(key);           this.normalizedNames.delete(key);         } else {           let existing = this.headers.get(key);           if (!existing) {             return;           }           existing = existing.filter(value => toDelete.indexOf(value) === -1);           if (existing.length === 0) {             this.headers.delete(key);             this.normalizedNames.delete(key);           } else {             this.headers.set(key, existing);           }         }         break;     }   }    /**    * @internal    */   forEach(fn: (name: string, values: string[]) => void) {     this.init();     Array.from(this.normalizedNames.keys())         .forEach(key => fn(this.normalizedNames.get(key)!, this.headers.get(key)!));   } }  /**  * Verifies that the headers object has the right shape: the values  * must be either strings or arrays. Throws an error if an invalid  * header value is present.  */ function assertValidHeaders(headers: Record<string, unknown>):     asserts headers is Record<string, string|string[]> {   for (const [key, value] of Object.entries(headers)) {     if (typeof value !== 'string' && !Array.isArray(value)) {       throw new Error(           `Unexpected value of the \\`${key}\\` header provided. ` +           `Expecting either a string or an array, but got: \\`${value}\\`.`);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * A codec for encoding and decoding parameters in URLs.  *  * Used by `HttpParams`.  *  * @publicApi  **/ export interface HttpParameterCodec {   encodeKey(key: string): string;   encodeValue(value: string): string;    decodeKey(key: string): string;   decodeValue(value: string): string; }  /**  * Provides encoding and decoding of URL parameter and query-string values.  *  * Serializes and parses URL parameter keys and values to encode and decode them.  * If you pass URL query parameters without encoding,  * the query parameters can be misinterpreted at the receiving end.  *  *  * @publicApi  */ export class HttpUrlEncodingCodec implements HttpParameterCodec {   /**    * Encodes a key name for a URL parameter or query-string.    * @param key The key name.    * @returns The encoded key name.    */   encodeKey(key: string): string {     return standardEncoding(key);   }    /**    * Encodes the value of a URL parameter or query-string.    * @param value The value.    * @returns The encoded value.    */   encodeValue(value: string): string {     return standardEncoding(value);   }    /**    * Decodes an encoded URL parameter or query-string key.    * @param key The encoded key name.    * @returns The decoded key name.    */   decodeKey(key: string): string {     return decodeURIComponent(key);   }    /**    * Decodes an encoded URL parameter or query-string value.    * @param value The encoded value.    * @returns The decoded value.    */   decodeValue(value: string) {     return decodeURIComponent(value);   } }   function paramParser(rawParams: string, codec: HttpParameterCodec): Map<string, string[]> {   const map = new Map<string, string[]>();   if (rawParams.length > 0) {     // The `window.location.search` can be used while creating an instance of the `HttpParams` class     // (e.g. `new HttpParams({ fromString: window.location.search })`). The `window.location.search`     // may start with the `?` char, so we strip it if it's present.     const params: string[] = rawParams.replace(/^\\?/, '').split('&');     params.forEach((param: string) => {       const eqIdx = param.indexOf('=');       const [key, val]: string[] = eqIdx == -1 ?           [codec.decodeKey(param), ''] :           [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))];       const list = map.get(key) || [];       list.push(val);       map.set(key, list);     });   }   return map; }  /**  * Encode input string with standard encodeURIComponent and then un-encode specific characters.  */ const STANDARD_ENCODING_REGEX = /%(\\d[a-f0-9])/gi; const STANDARD_ENCODING_REPLACEMENTS: {[x: string]: string} = {   '40': '@',   '3A': ':',   '24': '$',   '2C': ',',   '3B': ';',   '3D': '=',   '3F': '?',   '2F': '/', };  function standardEncoding(v: string): string {   return encodeURIComponent(v).replace(       STANDARD_ENCODING_REGEX, (s, t) => STANDARD_ENCODING_REPLACEMENTS[t] ?? s); }  function valueToString(value: string|number|boolean): string {   return `${value}`; }  interface Update {   param: string;   value?: string|number|boolean;   op: 'a'|'d'|'s'; }  /**  * Options used to construct an `HttpParams` instance.  *  * @publicApi  */ export interface HttpParamsOptions {   /**    * String representation of the HTTP parameters in URL-query-string format.    * Mutually exclusive with `fromObject`.    */   fromString?: string;    /** Object map of the HTTP parameters. Mutually exclusive with `fromString`. */   fromObject?: {[param: string]: string|number|boolean|ReadonlyArray<string|number|boolean>};    /** Encoding codec used to parse and serialize the parameters. */   encoder?: HttpParameterCodec; }  /**  * An HTTP request/response body that represents serialized parameters,  * per the MIME type `application/x-www-form-urlencoded`.  *  * This class is immutable; all mutation operations return a new instance.  *  * @publicApi  */ export class HttpParams {   private map: Map<string, string[]>|null;   private encoder: HttpParameterCodec;   private updates: Update[]|null = null;   private cloneFrom: HttpParams|null = null;    constructor(options: HttpParamsOptions = {} as HttpParamsOptions) {     this.encoder = options.encoder || new HttpUrlEncodingCodec();     if (!!options.fromString) {       if (!!options.fromObject) {         throw new Error(`Cannot specify both fromString and fromObject.`);       }       this.map = paramParser(options.fromString, this.encoder);     } else if (!!options.fromObject) {       this.map = new Map<string, string[]>();       Object.keys(options.fromObject).forEach(key => {         const value = (options.fromObject as any)[key];         // convert the values to strings         const values = Array.isArray(value) ? value.map(valueToString) : [valueToString(value)];         this.map!.set(key, values);       });     } else {       this.map = null;     }   }    /**    * Reports whether the body includes one or more values for a given parameter.    * @param param The parameter name.    * @returns True if the parameter has one or more values,    * false if it has no value or is not present.    */   has(param: string): boolean {     this.init();     return this.map!.has(param);   }    /**    * Retrieves the first value for a parameter.    * @param param The parameter name.    * @returns The first value of the given parameter,    * or `null` if the parameter is not present.    */   get(param: string): string|null {     this.init();     const res = this.map!.get(param);     return !!res ? res[0] : null;   }    /**    * Retrieves all values for a  parameter.    * @param param The parameter name.    * @returns All values in a string array,    * or `null` if the parameter not present.    */   getAll(param: string): string[]|null {     this.init();     return this.map!.get(param) || null;   }    /**    * Retrieves all the parameters for this body.    * @returns The parameter names in a string array.    */   keys(): string[] {     this.init();     return Array.from(this.map!.keys());   }    /**    * Appends a new value to existing values for a parameter.    * @param param The parameter name.    * @param value The new value to add.    * @return A new body with the appended value.    */   append(param: string, value: string|number|boolean): HttpParams {     return this.clone({param, value, op: 'a'});   }    /**    * Constructs a new body with appended values for the given parameter name.    * @param params parameters and values    * @return A new body with the new value.    */   appendAll(params: {[param: string]: string|number|boolean|ReadonlyArray<string|number|boolean>}):       HttpParams {     const updates: Update[] = [];     Object.keys(params).forEach(param => {       const value = params[param];       if (Array.isArray(value)) {         value.forEach(_value => {           updates.push({param, value: _value, op: 'a'});         });       } else {         updates.push({param, value: value as (string | number | boolean), op: 'a'});       }     });     return this.clone(updates);   }    /**    * Replaces the value for a parameter.    * @param param The parameter name.    * @param value The new value.    * @return A new body with the new value.    */   set(param: string, value: string|number|boolean): HttpParams {     return this.clone({param, value, op: 's'});   }    /**    * Removes a given value or all values from a parameter.    * @param param The parameter name.    * @param value The value to remove, if provided.    * @return A new body with the given value removed, or with all values    * removed if no value is specified.    */   delete(param: string, value?: string|number|boolean): HttpParams {     return this.clone({param, value, op: 'd'});   }    /**    * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are    * separated by `&`s.    */   toString(): string {     this.init();     return this.keys()         .map(key => {           const eKey = this.encoder.encodeKey(key);           // `a: ['1']` produces `'a=1'`           // `b: []` produces `''`           // `c: ['1', '2']` produces `'c=1&c=2'`           return this.map!.get(key)!.map(value => eKey + '=' + this.encoder.encodeValue(value))               .join('&');         })         // filter out empty values because `b: []` produces `''`         // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't         .filter(param => param !== '')         .join('&');   }    private clone(update: Update|Update[]): HttpParams {     const clone = new HttpParams({encoder: this.encoder} as HttpParamsOptions);     clone.cloneFrom = this.cloneFrom || this;     clone.updates = (this.updates || []).concat(update);     return clone;   }    private init() {     if (this.map === null) {       this.map = new Map<string, string[]>();     }     if (this.cloneFrom !== null) {       this.cloneFrom.init();       this.cloneFrom.keys().forEach(key => this.map!.set(key, this.cloneFrom!.map!.get(key)!));       this.updates!.forEach(update => {         switch (update.op) {           case 'a':           case 's':             const base = (update.op === 'a' ? this.map!.get(update.param) : undefined) || [];             base.push(valueToString(update.value!));             this.map!.set(update.param, base);             break;           case 'd':             if (update.value !== undefined) {               let base = this.map!.get(update.param) || [];               const idx = base.indexOf(valueToString(update.value));               if (idx !== -1) {                 base.splice(idx, 1);               }               if (base.length > 0) {                 this.map!.set(update.param, base);               } else {                 this.map!.delete(update.param);               }             } else {               this.map!.delete(update.param);               break;             }         }       });       this.cloneFrom = this.updates = null;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * A token used to manipulate and access values stored in `HttpContext`.  *  * @publicApi  */ export class HttpContextToken<T> {   constructor(public readonly defaultValue: () => T) {} }  /**  * Http context stores arbitrary user defined values and ensures type safety without  * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash.  *  * This context is mutable and is shared between cloned requests unless explicitly specified.  *  * @usageNotes  *  * ### Usage Example  *  * ```typescript  * // inside cache.interceptors.ts  * export const IS_CACHE_ENABLED = new HttpContextToken<boolean>(() => false);  *  * export class CacheInterceptor implements HttpInterceptor {  *  *   intercept(req: HttpRequest<any>, delegate: HttpHandler): Observable<HttpEvent<any>> {  *     if (req.context.get(IS_CACHE_ENABLED) === true) {  *       return ...;  *     }  *     return delegate.handle(req);  *   }  * }  *  * // inside a service  *  * this.httpClient.get('/api/weather', {  *   context: new HttpContext().set(IS_CACHE_ENABLED, true)  * }).subscribe(...);  * ```  *  * @publicApi  */ export class HttpContext {   private readonly map = new Map<HttpContextToken<unknown>, unknown>();    /**    * Store a value in the context. If a value is already present it will be overwritten.    *    * @param token The reference to an instance of `HttpContextToken`.    * @param value The value to store.    *    * @returns A reference to itself for easy chaining.    */   set<T>(token: HttpContextToken<T>, value: T): HttpContext {     this.map.set(token, value);     return this;   }    /**    * Retrieve the value associated with the given token.    *    * @param token The reference to an instance of `HttpContextToken`.    *    * @returns The stored value or default if one is defined.    */   get<T>(token: HttpContextToken<T>): T {     if (!this.map.has(token)) {       this.map.set(token, token.defaultValue());     }     return this.map.get(token) as T;   }    /**    * Delete the value associated with the given token.    *    * @param token The reference to an instance of `HttpContextToken`.    *    * @returns A reference to itself for easy chaining.    */   delete(token: HttpContextToken<unknown>): HttpContext {     this.map.delete(token);     return this;   }    /**    * Checks for existence of a given token.    *    * @param token The reference to an instance of `HttpContextToken`.    *    * @returns True if the token exists, false otherwise.    */   has(token: HttpContextToken<unknown>): boolean {     return this.map.has(token);   }    /**    * @returns a list of tokens currently stored in the context.    */   keys(): IterableIterator<HttpContextToken<unknown>> {     return this.map.keys();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HttpContext} from './context'; import {HttpHeaders} from './headers'; import {HttpParams} from './params';   /**  * Construction interface for `HttpRequest`s.  *  * All values are optional and will override default values if provided.  */ interface HttpRequestInit {   headers?: HttpHeaders;   context?: HttpContext;   reportProgress?: boolean;   params?: HttpParams;   responseType?: 'arraybuffer'|'blob'|'json'|'text';   withCredentials?: boolean; }  /**  * Determine whether the given HTTP method may include a body.  */ function mightHaveBody(method: string): boolean {   switch (method) {     case 'DELETE':     case 'GET':     case 'HEAD':     case 'OPTIONS':     case 'JSONP':       return false;     default:       return true;   } }  /**  * Safely assert whether the given value is an ArrayBuffer.  *  * In some execution environments ArrayBuffer is not defined.  */ function isArrayBuffer(value: any): value is ArrayBuffer {   return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer; }  /**  * Safely assert whether the given value is a Blob.  *  * In some execution environments Blob is not defined.  */ function isBlob(value: any): value is Blob {   return typeof Blob !== 'undefined' && value instanceof Blob; }  /**  * Safely assert whether the given value is a FormData instance.  *  * In some execution environments FormData is not defined.  */ function isFormData(value: any): value is FormData {   return typeof FormData !== 'undefined' && value instanceof FormData; }  /**  * Safely assert whether the given value is a URLSearchParams instance.  *  * In some execution environments URLSearchParams is not defined.  */ function isUrlSearchParams(value: any): value is URLSearchParams {   return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams; }  /**  * An outgoing HTTP request with an optional typed body.  *  * `HttpRequest` represents an outgoing request, including URL, method,  * headers, body, and other request configuration options. Instances should be  * assumed to be immutable. To modify a `HttpRequest`, the `clone`  * method should be used.  *  * @publicApi  */ export class HttpRequest<T> {   /**    * The request body, or `null` if one isn't set.    *    * Bodies are not enforced to be immutable, as they can include a reference to any    * user-defined data type. However, interceptors should take care to preserve    * idempotence by treating them as such.    */   readonly body: T|null = null;    /**    * Outgoing headers for this request.    */   // TODO(issue/24571): remove '!'.   readonly headers!: HttpHeaders;    /**    * Shared and mutable context that can be used by interceptors    */   readonly context!: HttpContext;    /**    * Whether this request should be made in a way that exposes progress events.    *    * Progress events are expensive (change detection runs on each event) and so    * they should only be requested if the consumer intends to monitor them.    */   readonly reportProgress: boolean = false;    /**    * Whether this request should be sent with outgoing credentials (cookies).    */   readonly withCredentials: boolean = false;    /**    * The expected response type of the server.    *    * This is used to parse the response appropriately before returning it to    * the requestee.    */   readonly responseType: 'arraybuffer'|'blob'|'json'|'text' = 'json';    /**    * The outgoing HTTP request method.    */   readonly method: string;    /**    * Outgoing URL parameters.    *    * To pass a string representation of HTTP parameters in the URL-query-string format,    * the `HttpParamsOptions`' `fromString` may be used. For example:    *    * ```    * new HttpParams({fromString: 'angular=awesome'})    * ```    */   // TODO(issue/24571): remove '!'.   readonly params!: HttpParams;    /**    * The outgoing URL with all URL parameters set.    */   readonly urlWithParams: string;    constructor(method: 'DELETE'|'GET'|'HEAD'|'JSONP'|'OPTIONS', url: string, init?: {     headers?: HttpHeaders,     context?: HttpContext,     reportProgress?: boolean,     params?: HttpParams,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   });   constructor(method: 'POST'|'PUT'|'PATCH', url: string, body: T|null, init?: {     headers?: HttpHeaders,     context?: HttpContext,     reportProgress?: boolean,     params?: HttpParams,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   });   constructor(method: string, url: string, body: T|null, init?: {     headers?: HttpHeaders,     context?: HttpContext,     reportProgress?: boolean,     params?: HttpParams,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   });   constructor(       method: string, readonly url: string, third?: T|{         headers?: HttpHeaders,         context?: HttpContext,         reportProgress?: boolean,         params?: HttpParams,         responseType?: 'arraybuffer'|'blob'|'json'|'text',         withCredentials?: boolean,       }|null,       fourth?: {         headers?: HttpHeaders,         context?: HttpContext,         reportProgress?: boolean,         params?: HttpParams,         responseType?: 'arraybuffer'|'blob'|'json'|'text',         withCredentials?: boolean,       }) {     this.method = method.toUpperCase();     // Next, need to figure out which argument holds the HttpRequestInit     // options, if any.     let options: HttpRequestInit|undefined;      // Check whether a body argument is expected. The only valid way to omit     // the body argument is to use a known no-body method like GET.     if (mightHaveBody(this.method) || !!fourth) {       // Body is the third argument, options are the fourth.       this.body = (third !== undefined) ? third as T : null;       options = fourth;     } else {       // No body required, options are the third argument. The body stays null.       options = third as HttpRequestInit;     }      // If options have been passed, interpret them.     if (options) {       // Normalize reportProgress and withCredentials.       this.reportProgress = !!options.reportProgress;       this.withCredentials = !!options.withCredentials;        // Override default response type of 'json' if one is provided.       if (!!options.responseType) {         this.responseType = options.responseType;       }        // Override headers if they're provided.       if (!!options.headers) {         this.headers = options.headers;       }        if (!!options.context) {         this.context = options.context;       }        if (!!options.params) {         this.params = options.params;       }     }      // If no headers have been passed in, construct a new HttpHeaders instance.     if (!this.headers) {       this.headers = new HttpHeaders();     }      // If no context have been passed in, construct a new HttpContext instance.     if (!this.context) {       this.context = new HttpContext();     }      // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.     if (!this.params) {       this.params = new HttpParams();       this.urlWithParams = url;     } else {       // Encode the parameters to a string in preparation for inclusion in the URL.       const params = this.params.toString();       if (params.length === 0) {         // No parameters, the visible URL is just the URL given at creation time.         this.urlWithParams = url;       } else {         // Does the URL already have query parameters? Look for '?'.         const qIdx = url.indexOf('?');         // There are 3 cases to handle:         // 1) No existing parameters -> append '?' followed by params.         // 2) '?' exists and is followed by existing query string ->         //    append '&' followed by params.         // 3) '?' exists at the end of the url -> append params directly.         // This basically amounts to determining the character, if any, with         // which to join the URL and parameters.         const sep: string = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');         this.urlWithParams = url + sep + params;       }     }   }    /**    * Transform the free-form body into a serialized format suitable for    * transmission to the server.    */   serializeBody(): ArrayBuffer|Blob|FormData|string|null {     // If no body is present, no need to serialize it.     if (this.body === null) {       return null;     }     // Check whether the body is already in a serialized form. If so,     // it can just be returned directly.     if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||         isUrlSearchParams(this.body) || typeof this.body === 'string') {       return this.body;     }     // Check whether the body is an instance of HttpUrlEncodedParams.     if (this.body instanceof HttpParams) {       return this.body.toString();     }     // Check whether the body is an object or array, and serialize with JSON if so.     if (typeof this.body === 'object' || typeof this.body === 'boolean' ||         Array.isArray(this.body)) {       return JSON.stringify(this.body);     }     // Fall back on toString() for everything else.     return (this.body as any).toString();   }    /**    * Examine the body and attempt to infer an appropriate MIME type    * for it.    *    * If no such type can be inferred, this method will return `null`.    */   detectContentTypeHeader(): string|null {     // An empty body has no content type.     if (this.body === null) {       return null;     }     // FormData bodies rely on the browser's content type assignment.     if (isFormData(this.body)) {       return null;     }     // Blobs usually have their own content type. If it doesn't, then     // no type can be inferred.     if (isBlob(this.body)) {       return this.body.type || null;     }     // Array buffers have unknown contents and thus no type can be inferred.     if (isArrayBuffer(this.body)) {       return null;     }     // Technically, strings could be a form of JSON data, but it's safe enough     // to assume they're plain strings.     if (typeof this.body === 'string') {       return 'text/plain';     }     // `HttpUrlEncodedParams` has its own content-type.     if (this.body instanceof HttpParams) {       return 'application/x-www-form-urlencoded;charset=UTF-8';     }     // Arrays, objects, boolean and numbers will be encoded as JSON.     if (typeof this.body === 'object' || typeof this.body === 'number' ||         typeof this.body === 'boolean') {       return 'application/json';     }     // No type could be inferred.     return null;   }    clone(): HttpRequest<T>;   clone(update: {     headers?: HttpHeaders,     context?: HttpContext,     reportProgress?: boolean,     params?: HttpParams,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,     body?: T|null,     method?: string,     url?: string,     setHeaders?: {[name: string]: string|string[]},     setParams?: {[param: string]: string},   }): HttpRequest<T>;   clone<V>(update: {     headers?: HttpHeaders,     context?: HttpContext,     reportProgress?: boolean,     params?: HttpParams,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,     body?: V|null,     method?: string,     url?: string,     setHeaders?: {[name: string]: string|string[]},     setParams?: {[param: string]: string},   }): HttpRequest<V>;   clone(update: {     headers?: HttpHeaders,     context?: HttpContext,     reportProgress?: boolean,     params?: HttpParams,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,     body?: any|null,     method?: string,     url?: string,     setHeaders?: {[name: string]: string|string[]},     setParams?: {[param: string]: string};   } = {}): HttpRequest<any> {     // For method, url, and responseType, take the current value unless     // it is overridden in the update hash.     const method = update.method || this.method;     const url = update.url || this.url;     const responseType = update.responseType || this.responseType;      // The body is somewhat special - a `null` value in update.body means     // whatever current body is present is being overridden with an empty     // body, whereas an `undefined` value in update.body implies no     // override.     const body = (update.body !== undefined) ? update.body : this.body;      // Carefully handle the boolean options to differentiate between     // `false` and `undefined` in the update args.     const withCredentials =         (update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;     const reportProgress =         (update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;      // Headers and params may be appended to if `setHeaders` or     // `setParams` are used.     let headers = update.headers || this.headers;     let params = update.params || this.params;      // Pass on context if needed     const context = update.context ?? this.context;      // Check whether the caller has asked to add headers.     if (update.setHeaders !== undefined) {       // Set every requested header.       headers =           Object.keys(update.setHeaders)               .reduce((headers, name) => headers.set(name, update.setHeaders![name]), headers);     }      // Check whether the caller has asked to set params.     if (update.setParams) {       // Set every requested param.       params = Object.keys(update.setParams)                    .reduce((params, param) => params.set(param, update.setParams![param]), params);     }      // Finally, construct the new HttpRequest using the pieces from above.     return new HttpRequest(method, url, body, {       params,       headers,       context,       reportProgress,       responseType,       withCredentials,     });   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HttpHeaders} from './headers';  /**  * Type enumeration for the different kinds of `HttpEvent`.  *  * @publicApi  */ export enum HttpEventType {   /**    * The request was sent out over the wire.    */   Sent,    /**    * An upload progress event was received.    */   UploadProgress,    /**    * The response status code and headers were received.    */   ResponseHeader,    /**    * A download progress event was received.    */   DownloadProgress,    /**    * The full response including the body was received.    */   Response,    /**    * A custom event from an interceptor or a backend.    */   User, }  /**  * Base interface for progress events.  *  * @publicApi  */ export interface HttpProgressEvent {   /**    * Progress event type is either upload or download.    */   type: HttpEventType.DownloadProgress|HttpEventType.UploadProgress;    /**    * Number of bytes uploaded or downloaded.    */   loaded: number;    /**    * Total number of bytes to upload or download. Depending on the request or    * response, this may not be computable and thus may not be present.    */   total?: number; }  /**  * A download progress event.  *  * @publicApi  */ export interface HttpDownloadProgressEvent extends HttpProgressEvent {   type: HttpEventType.DownloadProgress;    /**    * The partial response body as downloaded so far.    *    * Only present if the responseType was `text`.    */   partialText?: string; }  /**  * An upload progress event.  *  * @publicApi  */ export interface HttpUploadProgressEvent extends HttpProgressEvent {   type: HttpEventType.UploadProgress; }  /**  * An event indicating that the request was sent to the server. Useful  * when a request may be retried multiple times, to distinguish between  * retries on the final event stream.  *  * @publicApi  */ export interface HttpSentEvent {   type: HttpEventType.Sent; }  /**  * A user-defined event.  *  * Grouping all custom events under this type ensures they will be handled  * and forwarded by all implementations of interceptors.  *  * @publicApi  */ export interface HttpUserEvent<T> {   type: HttpEventType.User; }  /**  * An error that represents a failed attempt to JSON.parse text coming back  * from the server.  *  * It bundles the Error object with the actual response body that failed to parse.  *  *  */ export interface HttpJsonParseError {   error: Error;   text: string; }  /**  * Union type for all possible events on the response stream.  *  * Typed according to the expected type of the response.  *  * @publicApi  */ export type HttpEvent<T> =     HttpSentEvent|HttpHeaderResponse|HttpResponse<T>|HttpProgressEvent|HttpUserEvent<T>;  /**  * Base class for both `HttpResponse` and `HttpHeaderResponse`.  *  * @publicApi  */ export abstract class HttpResponseBase {   /**    * All response headers.    */   readonly headers: HttpHeaders;    /**    * Response status code.    */   readonly status: number;    /**    * Textual description of response status code, defaults to OK.    *    * Do not depend on this.    */   readonly statusText: string;    /**    * URL of the resource retrieved, or null if not available.    */   readonly url: string|null;    /**    * Whether the status code falls in the 2xx range.    */   readonly ok: boolean;    /**    * Type of the response, narrowed to either the full response or the header.    */   // TODO(issue/24571): remove '!'.   readonly type!: HttpEventType.Response|HttpEventType.ResponseHeader;    /**    * Super-constructor for all responses.    *    * The single parameter accepted is an initialization hash. Any properties    * of the response passed there will override the default values.    */   constructor(       init: {         headers?: HttpHeaders,         status?: number,         statusText?: string,         url?: string,       },       defaultStatus: number = HttpStatusCode.Ok, defaultStatusText: string = 'OK') {     // If the hash has values passed, use them to initialize the response.     // Otherwise use the default values.     this.headers = init.headers || new HttpHeaders();     this.status = init.status !== undefined ? init.status : defaultStatus;     this.statusText = init.statusText || defaultStatusText;     this.url = init.url || null;      // Cache the ok value to avoid defining a getter.     this.ok = this.status >= 200 && this.status < 300;   } }  /**  * A partial HTTP response which only includes the status and header data,  * but no response body.  *  * `HttpHeaderResponse` is a `HttpEvent` available on the response  * event stream, only when progress events are requested.  *  * @publicApi  */ export class HttpHeaderResponse extends HttpResponseBase {   /**    * Create a new `HttpHeaderResponse` with the given parameters.    */   constructor(init: {     headers?: HttpHeaders,     status?: number,     statusText?: string,     url?: string,   } = {}) {     super(init);   }    override readonly type: HttpEventType.ResponseHeader = HttpEventType.ResponseHeader;    /**    * Copy this `HttpHeaderResponse`, overriding its contents with the    * given parameter hash.    */   clone(update: {headers?: HttpHeaders; status?: number; statusText?: string; url?: string;} = {}):       HttpHeaderResponse {     // Perform a straightforward initialization of the new HttpHeaderResponse,     // overriding the current parameters with new ones if given.     return new HttpHeaderResponse({       headers: update.headers || this.headers,       status: update.status !== undefined ? update.status : this.status,       statusText: update.statusText || this.statusText,       url: update.url || this.url || undefined,     });   } }  /**  * A full HTTP response, including a typed response body (which may be `null`  * if one was not returned).  *  * `HttpResponse` is a `HttpEvent` available on the response event  * stream.  *  * @publicApi  */ export class HttpResponse<T> extends HttpResponseBase {   /**    * The response body, or `null` if one was not returned.    */   readonly body: T|null;    /**    * Construct a new `HttpResponse`.    */   constructor(init: {     body?: T|null,     headers?: HttpHeaders;     status?: number;     statusText?: string;     url?: string;   } = {}) {     super(init);     this.body = init.body !== undefined ? init.body : null;   }    override readonly type: HttpEventType.Response = HttpEventType.Response;    clone(): HttpResponse<T>;   clone(update: {headers?: HttpHeaders; status?: number; statusText?: string; url?: string;}):       HttpResponse<T>;   clone<V>(update: {     body?: V|null,     headers?: HttpHeaders;     status?: number;     statusText?: string;     url?: string;   }): HttpResponse<V>;   clone(update: {     body?: any|null;     headers?: HttpHeaders;     status?: number;     statusText?: string;     url?: string;   } = {}): HttpResponse<any> {     return new HttpResponse<any>({       body: (update.body !== undefined) ? update.body : this.body,       headers: update.headers || this.headers,       status: (update.status !== undefined) ? update.status : this.status,       statusText: update.statusText || this.statusText,       url: update.url || this.url || undefined,     });   } }  /**  * A response that represents an error or failure, either from a  * non-successful HTTP status, an error while executing the request,  * or some other failure which occurred during the parsing of the response.  *  * Any error returned on the `Observable` response stream will be  * wrapped in an `HttpErrorResponse` to provide additional context about  * the state of the HTTP layer when the error occurred. The error property  * will contain either a wrapped Error object or the error response returned  * from the server.  *  * @publicApi  */ export class HttpErrorResponse extends HttpResponseBase implements Error {   readonly name = 'HttpErrorResponse';   readonly message: string;   readonly error: any|null;    /**    * Errors are never okay, even when the status code is in the 2xx success range.    */   override readonly ok = false;    constructor(init: {     error?: any;     headers?: HttpHeaders;     status?: number;     statusText?: string;     url?: string;   }) {     // Initialize with a default status of 0 / Unknown Error.     super(init, 0, 'Unknown Error');      // If the response was successful, then this was a parse error. Otherwise, it was     // a protocol-level failure of some sort. Either the request failed in transit     // or the server returned an unsuccessful status code.     if (this.status >= 200 && this.status < 300) {       this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`;     } else {       this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${           init.statusText}`;     }     this.error = init.error || null;   } }  /**  * Http status codes.  * As per https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml  * @publicApi  */ export const enum HttpStatusCode {   Continue = 100,   SwitchingProtocols = 101,   Processing = 102,   EarlyHints = 103,    Ok = 200,   Created = 201,   Accepted = 202,   NonAuthoritativeInformation = 203,   NoContent = 204,   ResetContent = 205,   PartialContent = 206,   MultiStatus = 207,   AlreadyReported = 208,   ImUsed = 226,    MultipleChoices = 300,   MovedPermanently = 301,   Found = 302,   SeeOther = 303,   NotModified = 304,   UseProxy = 305,   Unused = 306,   TemporaryRedirect = 307,   PermanentRedirect = 308,    BadRequest = 400,   Unauthorized = 401,   PaymentRequired = 402,   Forbidden = 403,   NotFound = 404,   MethodNotAllowed = 405,   NotAcceptable = 406,   ProxyAuthenticationRequired = 407,   RequestTimeout = 408,   Conflict = 409,   Gone = 410,   LengthRequired = 411,   PreconditionFailed = 412,   PayloadTooLarge = 413,   UriTooLong = 414,   UnsupportedMediaType = 415,   RangeNotSatisfiable = 416,   ExpectationFailed = 417,   ImATeapot = 418,   MisdirectedRequest = 421,   UnprocessableEntity = 422,   Locked = 423,   FailedDependency = 424,   TooEarly = 425,   UpgradeRequired = 426,   PreconditionRequired = 428,   TooManyRequests = 429,   RequestHeaderFieldsTooLarge = 431,   UnavailableForLegalReasons = 451,    InternalServerError = 500,   NotImplemented = 501,   BadGateway = 502,   ServiceUnavailable = 503,   GatewayTimeout = 504,   HttpVersionNotSupported = 505,   VariantAlsoNegotiates = 506,   InsufficientStorage = 507,   LoopDetected = 508,   NotExtended = 510,   NetworkAuthenticationRequired = 511 } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable} from '@angular/core'; import {Observable, of} from 'rxjs'; import {concatMap, filter, map} from 'rxjs/operators';  import {HttpHandler} from './backend'; import {HttpContext} from './context'; import {HttpHeaders} from './headers'; import {HttpParams, HttpParamsOptions} from './params'; import {HttpRequest} from './request'; import {HttpEvent, HttpResponse} from './response';   /**  * Constructs an instance of `HttpRequestOptions<T>` from a source `HttpMethodOptions` and  * the given `body`. This function clones the object and adds the body.  *  * Note that the `responseType` *options* value is a String that identifies the  * single data type of the response.  * A single overload version of the method handles each response type.  * The value of `responseType` cannot be a union, as the combined signature could imply.  *  */ function addBody<T>(     options: {       headers?: HttpHeaders|{[header: string]: string | string[]},       context?: HttpContext,       observe?: 'body'|'events'|'response',       params?: HttpParams|             {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},       reportProgress?: boolean,       responseType?: 'arraybuffer'|'blob'|'json'|'text',       withCredentials?: boolean,     },     body: T|null): any {   return {     body,     headers: options.headers,     context: options.context,     observe: options.observe,     params: options.params,     reportProgress: options.reportProgress,     responseType: options.responseType,     withCredentials: options.withCredentials,   }; }  /**  * Performs HTTP requests.  * This service is available as an injectable class, with methods to perform HTTP requests.  * Each request method has multiple signatures, and the return type varies based on  * the signature that is called (mainly the values of `observe` and `responseType`).  *  * Note that the `responseType` *options* value is a String that identifies the  * single data type of the response.  * A single overload version of the method handles each response type.  * The value of `responseType` cannot be a union, as the combined signature could imply.   *  * @usageNotes  * Sample HTTP requests for the [Tour of Heroes](/tutorial/tour-of-heroes/toh-pt0) application.  *  * ### HTTP Request Example  *  * ```  *  // GET heroes whose name contains search term  * searchHeroes(term: string): observable<Hero[]>{  *  *  const params = new HttpParams({fromString: 'name=term'});  *    return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});  * }  * ```  *  * Alternatively, the parameter string can be used without invoking HttpParams  * by directly joining to the URL.  * ```  * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});  * ```  *  *  * ### JSONP Example  * ```  * requestJsonp(url, callback = 'callback') {  *  return this.httpClient.jsonp(this.heroesURL, callback);  * }  * ```  *  * ### PATCH Example  * ```  * // PATCH one of the heroes' name  * patchHero (id: number, heroName: string): Observable<{}> {  * const url = `${this.heroesUrl}/${id}`;   // PATCH api/heroes/42  *  return this.httpClient.patch(url, {name: heroName}, httpOptions)  *    .pipe(catchError(this.handleError('patchHero')));  * }  * ```  *  * @see [HTTP Guide](guide/http)  * @see [HTTP Request](api/common/http/HttpRequest)  *  * @publicApi  */ @Injectable() export class HttpClient {   constructor(private handler: HttpHandler) {}    /**    * Sends an `HttpRequest` and returns a stream of `HttpEvent`s.    *    * @return An `Observable` of the response, with the response body as a stream of `HttpEvent`s.    */   request<R>(req: HttpRequest<any>): Observable<HttpEvent<R>>;    /**    * Constructs a request that interprets the body as an `ArrayBuffer` and returns the response in    * an `ArrayBuffer`.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    *    * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<ArrayBuffer>;    /**    * Constructs a request that interprets the body as a blob and returns    * the response as a blob.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type `Blob`.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<Blob>;    /**    * Constructs a request that interprets the body as a text string and    * returns a string value.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type string.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<string>;    /**    * Constructs a request that interprets the body as an `ArrayBuffer` and returns the    * the full event stream.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body as an array of `HttpEvent`s for    * the request.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},           observe: 'events',     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs a request that interprets the body as a `Blob` and returns    * the full event stream.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body of type `Blob`.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs a request which interprets the body as a text string and returns the full event    * stream.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body of type string.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpEvent<string>>;    /**    * Constructs a request which interprets the body as a JavaScript object and returns the full    * event stream.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the  request.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body of type `Object`.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     reportProgress?: boolean, observe: 'events',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<any>>;    /**    * Constructs a request which interprets the body as a JavaScript object and returns the full    * event stream.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body of type `R`.    */   request<R>(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     reportProgress?: boolean, observe: 'events',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<R>>;    /**    * Constructs a request which interprets the body as an `ArrayBuffer`    * and returns the full `HttpResponse`.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with the response body as an `ArrayBuffer`.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs a request which interprets the body as a `Blob` and returns the full `HttpResponse`.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with the response body of type `Blob`.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs a request which interprets the body as a text stream and returns the full    * `HttpResponse`.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the HTTP response, with the response body of type string.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpResponse<string>>;    /**    * Constructs a request which interprets the body as a JavaScript object and returns the full    * `HttpResponse`.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the full `HttpResponse`,    * with the response body of type `Object`.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     reportProgress?: boolean, observe: 'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<Object>>;    /**    * Constructs a request which interprets the body as a JavaScript object and returns    * the full `HttpResponse` with the response body in the requested type.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return  An `Observable` of the full `HttpResponse`, with the response body of type `R`.    */   request<R>(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     reportProgress?: boolean, observe: 'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<R>>;    /**    * Constructs a request which interprets the body as a JavaScript object and returns the full    * `HttpResponse` as a JavaScript object.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with the response body of type `Object`.    */   request(method: string, url: string, options?: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     responseType?: 'json',     reportProgress?: boolean,     withCredentials?: boolean,   }): Observable<Object>;    /**    * Constructs a request which interprets the body as a JavaScript object    * with the response body of the requested type.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with the response body of type `R`.    */   request<R>(method: string, url: string, options?: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     responseType?: 'json',     reportProgress?: boolean,     withCredentials?: boolean,   }): Observable<R>;    /**    * Constructs a request where response type and requested observable are not known statically.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the requested response, with body of type `any`.    */   request(method: string, url: string, options?: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     observe?: 'body'|'events'|'response',     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   }): Observable<any>;    /**    * Constructs an observable for a generic HTTP request that, when subscribed,    * fires the request through the chain of registered interceptors and on to the    * server.    *    * You can pass an `HttpRequest` directly as the only parameter. In this case,    * the call returns an observable of the raw `HttpEvent` stream.    *    * Alternatively you can pass an HTTP method as the first parameter,    * a URL string as the second, and an options hash containing the request body as the third.    * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the    * type of returned observable.    *   * The `responseType` value determines how a successful response body is parsed.    *   * If `responseType` is the default `json`, you can pass a type interface for the resulting    * object as a type parameter to the call.    *    * The `observe` value determines the return type, according to what you are interested in    * observing.    *   * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including    * progress events by default.    *   * An `observe` value of response returns an observable of `HttpResponse<T>`,    * where the `T` parameter depends on the `responseType` and any optionally provided type    * parameter.    *   * An `observe` value of body returns an observable of `<T>` with the same `T` body type.    *    */   request(first: string|HttpRequest<any>, url?: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   } = {}): Observable<any> {     let req: HttpRequest<any>;     // First, check whether the primary argument is an instance of `HttpRequest`.     if (first instanceof HttpRequest) {       // It is. The other arguments must be undefined (per the signatures) and can be       // ignored.       req = first;     } else {       // It's a string, so it represents a URL. Construct a request based on it,       // and incorporate the remaining arguments (assuming `GET` unless a method is       // provided.        // Figure out the headers.       let headers: HttpHeaders|undefined = undefined;       if (options.headers instanceof HttpHeaders) {         headers = options.headers;       } else {         headers = new HttpHeaders(options.headers);       }        // Sort out parameters.       let params: HttpParams|undefined = undefined;       if (!!options.params) {         if (options.params instanceof HttpParams) {           params = options.params;         } else {           params = new HttpParams({fromObject: options.params} as HttpParamsOptions);         }       }        // Construct the request.       req = new HttpRequest(first, url!, (options.body !== undefined ? options.body : null), {         headers,         context: options.context,         params,         reportProgress: options.reportProgress,         // By default, JSON is assumed to be returned for all calls.         responseType: options.responseType || 'json',         withCredentials: options.withCredentials,       });     }      // Start with an Observable.of() the initial request, and run the handler (which     // includes all interceptors) inside a concatMap(). This way, the handler runs     // inside an Observable chain, which causes interceptors to be re-run on every     // subscription (this also makes retries re-run the handler, including interceptors).     const events$: Observable<HttpEvent<any>> =         of(req).pipe(concatMap((req: HttpRequest<any>) => this.handler.handle(req)));      // If coming via the API signature which accepts a previously constructed HttpRequest,     // the only option is to get the event stream. Otherwise, return the event stream if     // that is what was requested.     if (first instanceof HttpRequest || options.observe === 'events') {       return events$;     }      // The requested stream contains either the full response or the body. In either     // case, the first step is to filter the event stream to extract a stream of     // responses(s).     const res$: Observable<HttpResponse<any>> = <Observable<HttpResponse<any>>>events$.pipe(         filter((event: HttpEvent<any>) => event instanceof HttpResponse));      // Decide which stream to return.     switch (options.observe || 'body') {       case 'body':         // The requested stream is the body. Map the response stream to the response         // body. This could be done more simply, but a misbehaving interceptor might         // transform the response body into a different format and ignore the requested         // responseType. Guard against this by validating that the response is of the         // requested type.         switch (req.responseType) {           case 'arraybuffer':             return res$.pipe(map((res: HttpResponse<any>) => {               // Validate that the body is an ArrayBuffer.               if (res.body !== null && !(res.body instanceof ArrayBuffer)) {                 throw new Error('Response is not an ArrayBuffer.');               }               return res.body;             }));           case 'blob':             return res$.pipe(map((res: HttpResponse<any>) => {               // Validate that the body is a Blob.               if (res.body !== null && !(res.body instanceof Blob)) {                 throw new Error('Response is not a Blob.');               }               return res.body;             }));           case 'text':             return res$.pipe(map((res: HttpResponse<any>) => {               // Validate that the body is a string.               if (res.body !== null && typeof res.body !== 'string') {                 throw new Error('Response is not a string.');               }               return res.body;             }));           case 'json':           default:             // No validation needed for JSON responses, as they can be of any type.             return res$.pipe(map((res: HttpResponse<any>) => res.body));         }       case 'response':         // The response stream was requested directly, so return it.         return res$;       default:         // Guard against new future observe types being added.         throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);     }   }    /**    * Constructs a `DELETE` request that interprets the body as an `ArrayBuffer`    *  and returns the response as an `ArrayBuffer`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return  An `Observable` of the response body as an `ArrayBuffer`.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,     body?: any|null,   }): Observable<ArrayBuffer>;     /**    * Constructs a `DELETE` request that interprets the body as a `Blob` and returns    * the response as a `Blob`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response body as a `Blob`.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,     body?: any|null,   }): Observable<Blob>;    /**    * Constructs a `DELETE` request that interprets the body as a text string and returns    * a string.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type string.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,     body?: any|null,   }): Observable<string>;    /**    * Constructs a `DELETE` request that interprets the body as an `ArrayBuffer`    *  and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with response body as an `ArrayBuffer`.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,     body?: any|null   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs a `DELETE` request that interprets the body as a `Blob`    *  and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all the `HttpEvent`s for the request, with the response body as a    * `Blob`.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs a `DELETE` request that interprets the body as a text string    * and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request, with the response    * body of type string.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpEvent<string>>;    /**    * Constructs a `DELETE` request that interprets the body as JSON    * and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request, with response body of    * type `Object`.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpEvent<Object>>;    /**    * Constructs a `DELETE`request that interprets the body as JSON    * and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all the `HttpEvent`s for the request, with a response    * body in the requested type.    */   delete<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | (string | number | boolean)[]},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpEvent<T>>;    /**    * Constructs a `DELETE` request that interprets the body as an `ArrayBuffer` and returns    *  the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the full `HttpResponse`, with the response body as an `ArrayBuffer`.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs a `DELETE` request that interprets the body as a `Blob` and returns the full    * `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with the response body of type `Blob`.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs a `DELETE` request that interprets the body as a text stream and    *  returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the full `HttpResponse`, with the response body of type string.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpResponse<string>>;    /**    * Constructs a `DELETE` request the interprets the body as a JavaScript object and returns    * the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with the response body of type `Object`.    *    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpResponse<Object>>;    /**    * Constructs a `DELETE` request that interprets the body as JSON    * and returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with the response body of the requested type.    */   delete<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpResponse<T>>;    /**    * Constructs a `DELETE` request that interprets the body as JSON and    * returns the response body as an object parsed from JSON.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type `Object`.    */   delete(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,     body?: any|null,   }): Observable<Object>;    /**    * Constructs a DELETE request that interprets the body as JSON and returns    * the response in a given type.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with response body in the requested type.    */   delete<T>(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,     body?: any|null,   }): Observable<T>;    /**    * Constructs an observable that, when subscribed, causes the configured    * `DELETE` request to execute on the server. See the individual overloads for    * details on the return type.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,     body?: any|null,   } = {}): Observable<any> {     return this.request<any>('DELETE', url, options as any);   }     /**    * Constructs a `GET` request that interprets the body as an `ArrayBuffer` and returns the    * response in an `ArrayBuffer`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<ArrayBuffer>;    /**    * Constructs a `GET` request that interprets the body as a `Blob`    * and returns the response as a `Blob`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body as a `Blob`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<Blob>;    /**    * Constructs a `GET` request that interprets the body as a text string    * and returns the response as a string value.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type string.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<string>;    /**    * Constructs a `GET` request that interprets the body as an `ArrayBuffer` and returns    *  the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request, with the response    * body as an `ArrayBuffer`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs a `GET` request that interprets the body as a `Blob` and    * returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body as a `Blob`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs a `GET` request that interprets the body as a text string and returns    * the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type string.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpEvent<string>>;    /**    * Constructs a `GET` request that interprets the body as JSON    * and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type `Object`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<Object>>;    /**    * Constructs a `GET` request that interprets the body as JSON and returns the full    * event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with a response body in the requested type.    */   get<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<T>>;    /**    * Constructs a `GET` request that interprets the body as an `ArrayBuffer` and    * returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as an `ArrayBuffer`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs a `GET` request that interprets the body as a `Blob` and    * returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as a `Blob`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs a `GET` request that interprets the body as a text stream and    * returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body of type string.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpResponse<string>>;    /**    * Constructs a `GET` request that interprets the body as JSON and    * returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the full `HttpResponse`,    * with the response body of type `Object`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<Object>>;    /**    * Constructs a `GET` request that interprets the body as JSON and    * returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the full `HttpResponse` for the request,    * with a response body in the requested type.    */   get<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<T>>;    /**    * Constructs a `GET` request that interprets the body as JSON and    * returns the response body as an object parsed from JSON.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    *    * @return An `Observable` of the response body as a JavaScript object.    */   get(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<Object>;    /**    * Constructs a `GET` request that interprets the body as JSON and returns    * the response body in a given type.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with a response body in the requested type.    */   get<T>(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<T>;    /**    * Constructs an observable that, when subscribed, causes the configured    * `GET` request to execute on the server. See the individual overloads for    * details on the return type.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   } = {}): Observable<any> {     return this.request<any>('GET', url, options as any);   }     /**    * Constructs a `HEAD` request that interprets the body as an `ArrayBuffer` and    * returns the response as an `ArrayBuffer`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<ArrayBuffer>;    /**    * Constructs a `HEAD` request that interprets the body as a `Blob` and returns    * the response as a `Blob`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return  An `Observable` of the response, with the response body as a `Blob`.    */    head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<Blob>;    /**    * Constructs a `HEAD` request that interprets the body as a text string and returns the response    * as a string value.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type string.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<string>;    /**    * Constructs a `HEAD` request that interprets the body as an  `ArrayBuffer`    *  and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body as an `ArrayBuffer`.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs a `HEAD` request that interprets the body as a `Blob` and    * returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body as a `Blob`.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs a `HEAD` request that interprets the body as a text string    * and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request, with the response body of type    * string.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpEvent<string>>;    /**    * Constructs a `HEAD` request that interprets the body as JSON    * and returns the full HTTP event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request, with a response body of    * type `Object`.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<Object>>;    /**    * Constructs a `HEAD` request that interprets the body as JSON and    * returns the full event stream.    *    * @return An `Observable` of all the `HttpEvent`s for the request,    * with a response body in the requested type.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    */   head<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<T>>;    /**    * Constructs a `HEAD` request that interprets the body as an `ArrayBuffer`    *  and returns the full HTTP response.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as an `ArrayBuffer`.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs a `HEAD` request that interprets the body as a `Blob` and returns    * the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as a blob.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs a `HEAD` request that interprets the body as text stream    * and returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body of type string.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpResponse<string>>;    /**    * Constructs a `HEAD` request that interprets the body as JSON and    * returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body of type `Object`.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<Object>>;    /**    * Constructs a `HEAD` request that interprets the body as JSON    * and returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with a response body of the requested type.    */   head<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<T>>;    /**     * Constructs a `HEAD` request that interprets the body as JSON and    * returns the response body as an object parsed from JSON.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body as an object parsed from JSON.    */   head(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<Object>;    /**    * Constructs a `HEAD` request that interprets the body as JSON and returns    * the response in a given type.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with a response body of the given type.    */   head<T>(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<T>;    /**    * Constructs an observable that, when subscribed, causes the configured    * `HEAD` request to execute on the server. The `HEAD` method returns    * meta information about the resource without transferring the    * resource itself. See the individual overloads for    * details on the return type.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   } = {}): Observable<any> {     return this.request<any>('HEAD', url, options as any);   }    /**    * Constructs a `JSONP` request for the given URL and name of the callback parameter.    *    * @param url The resource URL.    * @param callbackParam The callback function name.    *    * @return An `Observable` of the response object, with response body as an object.    */   jsonp(url: string, callbackParam: string): Observable<Object>;    /**    * Constructs a `JSONP` request for the given URL and name of the callback parameter.    *    * @param url The resource URL.    * @param callbackParam The callback function name.    *    * You must install a suitable interceptor, such as one provided by `HttpClientJsonpModule`.    * If no such interceptor is reached,    * then the `JSONP` request can be rejected by the configured backend.    *    * @return An `Observable` of the response object, with response body in the requested type.    */   jsonp<T>(url: string, callbackParam: string): Observable<T>;    /**    * Constructs an `Observable` that, when subscribed, causes a request with the special method    * `JSONP` to be dispatched via the interceptor pipeline.    * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain    * API endpoints that don't support newer,    * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.    * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the    * requests even if the API endpoint is not located on the same domain (origin) as the client-side    * application making the request.    * The endpoint API must support JSONP callback for JSONP requests to work.    * The resource API returns the JSON response wrapped in a callback function.    * You can pass the callback function name as one of the query parameters.    * Note that JSONP requests can only be used with `GET` requests.    *    * @param url The resource URL.    * @param callbackParam The callback function name.    *    */   jsonp<T>(url: string, callbackParam: string): Observable<T> {     return this.request<any>('JSONP', url, {       params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),       observe: 'body',       responseType: 'json',     });   }    /**    * Constructs an `OPTIONS` request that interprets the body as an    * `ArrayBuffer` and returns the response as an `ArrayBuffer`.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<ArrayBuffer>;    /**    * Constructs an `OPTIONS` request that interprets the body as a `Blob` and returns    * the response as a `Blob`.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body as a `Blob`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<Blob>;    /**    * Constructs an `OPTIONS` request that interprets the body as a text string and    * returns a string value.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body of type string.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<string>;    /**    * Constructs an `OPTIONS` request that interprets the body as an `ArrayBuffer`    *  and returns the full event stream.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return  An `Observable` of all `HttpEvent`s for the request,    * with the response body as an `ArrayBuffer`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs an `OPTIONS` request that interprets the body as a `Blob` and    * returns the full event stream.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body as a `Blob`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs an `OPTIONS` request that interprets the body as a text string    * and returns the full event stream.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request,    * with the response body of type string.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpEvent<string>>;    /**    * Constructs an `OPTIONS` request that interprets the body as JSON    * and returns the full event stream.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request with the response    * body of type `Object`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<Object>>;    /**    * Constructs an `OPTIONS` request that interprets the body as JSON and    * returns the full event stream.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request,    * with a response body in the requested type.    */   options<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<T>>;    /**    * Constructs an `OPTIONS` request that interprets the body as an `ArrayBuffer`    *  and returns the full HTTP response.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as an `ArrayBuffer`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs an `OPTIONS` request that interprets the body as a `Blob`    *  and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as a `Blob`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs an `OPTIONS` request that interprets the body as text stream    * and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body of type string.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpResponse<string>>;    /**    * Constructs an `OPTIONS` request that interprets the body as JSON    * and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body of type `Object`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<Object>>;    /**    * Constructs an `OPTIONS` request that interprets the body as JSON and    * returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with a response body in the requested type.    */   options<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<T>>;    /**     * Constructs an `OPTIONS` request that interprets the body as JSON and returns the    * response body as an object parsed from JSON.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body as an object parsed from JSON.    */   options(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<Object>;    /**    * Constructs an `OPTIONS` request that interprets the body as JSON and returns the    * response in a given type.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse`, with a response body of the given type.    */   options<T>(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<T>;    /**    * Constructs an `Observable` that, when subscribed, causes the configured    * `OPTIONS` request to execute on the server. This method allows the client    * to determine the supported HTTP methods and other capabilities of an endpoint,    * without implying a resource action. See the individual overloads for    * details on the return type.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   } = {}): Observable<any> {     return this.request<any>('OPTIONS', url, options as any);   }    /**    * Constructs a `PATCH` request that interprets the body as an `ArrayBuffer` and returns    * the response as an `ArrayBuffer`.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<ArrayBuffer>;    /**    * Constructs a `PATCH` request that interprets the body as a `Blob` and returns the response    * as a `Blob`.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body as a `Blob`.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<Blob>;    /**    * Constructs a `PATCH` request that interprets the body as a text string and    * returns the response as a string value.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of the response, with a response body of type string.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<string>;    /**    * Constructs a `PATCH` request that interprets the body as an `ArrayBuffer` and    *  returns the full event stream.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request,    * with the response body as an `ArrayBuffer`.    */    patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs a `PATCH` request that interprets the body as a `Blob`    *  and returns the full event stream.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request, with the    * response body as `Blob`.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs a `PATCH` request that interprets the body as a text string and    * returns the full event stream.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request, with a    * response body of type string.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpEvent<string>>;    /**    * Constructs a `PATCH` request that interprets the body as JSON    * and returns the full event stream.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request,    * with a response body of type `Object`.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<Object>>;    /**    * Constructs a `PATCH` request that interprets the body as JSON    * and returns the full event stream.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request,    * with a response body in the requested type.    */   patch<T>(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<T>>;    /**    * Constructs a `PATCH` request that interprets the body as an `ArrayBuffer`    *  and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return  An `Observable` of the `HttpResponse` for the request,    * with the response body as an `ArrayBuffer`.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs a `PATCH` request that interprets the body as a `Blob` and returns the full    * `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return  An `Observable` of the `HttpResponse` for the request,    * with the response body as a `Blob`.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs a `PATCH` request that interprets the body as a text stream and returns the    * full `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return  An `Observable` of the `HttpResponse` for the request,    * with a response body of type string.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpResponse<string>>;    /**    * Constructs a `PATCH` request that interprets the body as JSON    * and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with a response body in the requested type.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<Object>>;    /**    * Constructs a `PATCH` request that interprets the body as JSON    * and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with a response body in the given type.    */   patch<T>(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<T>>;    /**     * Constructs a `PATCH` request that interprets the body as JSON and    * returns the response body as an object parsed from JSON.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body as an object parsed from JSON.    */   patch(url: string, body: any|null, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<Object>;    /**    * Constructs a `PATCH` request that interprets the body as JSON    * and returns the response in a given type.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return  An `Observable` of the `HttpResponse` for the request,    * with a response body in the given type.    */   patch<T>(url: string, body: any|null, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<T>;    /**    * Constructs an observable that, when subscribed, causes the configured    * `PATCH` request to execute on the server. See the individual overloads for    * details on the return type.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   } = {}): Observable<any> {     return this.request<any>('PATCH', url, addBody(options, body));   }    /**    * Constructs a `POST` request that interprets the body as an `ArrayBuffer` and returns    * an `ArrayBuffer`.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<ArrayBuffer>;    /**    * Constructs a `POST` request that interprets the body as a `Blob` and returns the    * response as a `Blob`.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of the response, with the response body as a `Blob`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<Blob>;    /**    * Constructs a `POST` request that interprets the body as a text string and    * returns the response as a string value.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of the response, with a response body of type string.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<string>;    /**    * Constructs a `POST` request that interprets the body as an `ArrayBuffer` and    * returns the full event stream.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body as an `ArrayBuffer`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs a `POST` request that interprets the body as a `Blob`    * and returns the response in an observable of the full event stream.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request, with the response body as `Blob`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs a `POST` request that interprets the body as a text string and returns the full    * event stream.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return  An `Observable` of all `HttpEvent`s for the request,    * with a response body of type string.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpEvent<string>>;    /**    * Constructs a POST request that interprets the body as JSON and returns the full    * event stream.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return  An `Observable` of all `HttpEvent`s for the request,    * with a response body of type `Object`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<Object>>;    /**    * Constructs a POST request that interprets the body as JSON and returns the full    * event stream.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with a response body in the requested type.    */   post<T>(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<T>>;    /**    * Constructs a POST request that interprets the body as an `ArrayBuffer`    *  and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return  An `Observable` of the `HttpResponse` for the request, with the response body as an    * `ArrayBuffer`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs a `POST` request that interprets the body as a `Blob` and returns the full    * `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as a `Blob`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs a `POST` request that interprets the body as a text stream and returns    * the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return  An `Observable` of the `HttpResponse` for the request,    * with a response body of type string.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpResponse<string>>;    /**    * Constructs a `POST` request that interprets the body as JSON    * and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request, with a response body of type    * `Object`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<Object>>;    /**    * Constructs a `POST` request that interprets the body as JSON and returns the    * full `HttpResponse`.    *    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request, with a response body in the    * requested type.    */   post<T>(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<T>>;    /**    * Constructs a `POST` request that interprets the body as JSON    * and returns the response body as an object parsed from JSON.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of the response, with the response body as an object parsed from JSON.    */   post(url: string, body: any|null, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<Object>;    /**    * Constructs a `POST` request that interprets the body as JSON    * and returns an observable of the response.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return  An `Observable` of the `HttpResponse` for the request, with a response body in the    * requested type.    */   post<T>(url: string, body: any|null, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<T>;    /**    * Constructs an observable that, when subscribed, causes the configured    * `POST` request to execute on the server. The server responds with the location of    * the replaced resource. See the individual overloads for    * details on the return type.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   } = {}): Observable<any> {     return this.request<any>('POST', url, addBody(options, body));   }    /**    * Constructs a `PUT` request that interprets the body as an `ArrayBuffer` and returns the    * response as an `ArrayBuffer`.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<ArrayBuffer>;    /**    * Constructs a `PUT` request that interprets the body as a `Blob` and returns    * the response as a `Blob`.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the response, with the response body as a `Blob`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<Blob>;    /**    * Constructs a `PUT` request that interprets the body as a text string and    * returns the response as a string value.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the response, with a response body of type string.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<string>;    /**    * Constructs a `PUT` request that interprets the body as an `ArrayBuffer` and    * returns the full event stream.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body as an `ArrayBuffer`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs a `PUT` request that interprets the body as a `Blob` and returns the full event    * stream.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body as a `Blob`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs a `PUT` request that interprets the body as a text string and returns the full event    * stream.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request, with a response body    * of type string.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpEvent<string>>;    /**    * Constructs a `PUT` request that interprets the body as JSON and returns the full    * event stream.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request, with a response body of    * type `Object`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<Object>>;    /**    * Constructs a `PUT` request that interprets the body as JSON and returns the    * full event stream.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with a response body in the requested type.    */   put<T>(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<T>>;    /**    * Constructs a `PUT` request that interprets the body as an    * `ArrayBuffer` and returns an observable of the full HTTP response.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request, with the response body as an    * `ArrayBuffer`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs a `PUT` request that interprets the body as a `Blob` and returns the    * full HTTP response.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as a `Blob`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs a `PUT` request that interprets the body as a text stream and returns the    * full HTTP response.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request, with a response body of type    * string.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpResponse<string>>;    /**    * Constructs a `PUT` request that interprets the body as JSON and returns the full    * HTTP response.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request, with a response body    * of type 'Object`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<Object>>;    /**    * Constructs a `PUT` request that interprets the body as an instance of the requested type and    * returns the full HTTP response.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request,    * with a response body in the requested type.    */   put<T>(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<T>>;    /**    * Constructs a `PUT` request that interprets the body as JSON    * and returns an observable of JavaScript object.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the response as a JavaScript object.    */   put(url: string, body: any|null, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<Object>;    /**    * Constructs a `PUT` request that interprets the body as an instance of the requested type    * and returns an observable of the requested type.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the requested type.    */   put<T>(url: string, body: any|null, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<T>;    /**    * Constructs an observable that, when subscribed, causes the configured    * `PUT` request to execute on the server. The `PUT` method replaces an existing resource    * with a new set of values.    * See the individual overloads for details on the return type.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   } = {}): Observable<any> {     return this.request<any>('PUT', url, addBody(options, body));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, inject, Injectable, InjectionToken} from '@angular/core'; import {Observable} from 'rxjs';  import {HttpBackend, HttpHandler} from './backend'; import {HttpRequest} from './request'; import {HttpEvent} from './response';  /**  * Intercepts and handles an `HttpRequest` or `HttpResponse`.  *  * Most interceptors transform the outgoing request before passing it to the  * next interceptor in the chain, by calling `next.handle(transformedReq)`.  * An interceptor may transform the  * response event stream as well, by applying additional RxJS operators on the stream  * returned by `next.handle()`.  *  * More rarely, an interceptor may handle the request entirely,  * and compose a new event stream instead of invoking `next.handle()`. This is an  * acceptable behavior, but keep in mind that further interceptors will be skipped entirely.  *  * It is also rare but valid for an interceptor to return multiple responses on the  * event stream for a single request.  *  * @publicApi  *  * @see [HTTP Guide](guide/http#intercepting-requests-and-responses)  *  * @usageNotes  *  * To use the same instance of `HttpInterceptors` for the entire app, import the `HttpClientModule`  * only in your `AppModule`, and add the interceptors to the root application injector.  * If you import `HttpClientModule` multiple times across different modules (for example, in lazy  * loading modules), each import creates a new copy of the `HttpClientModule`, which overwrites the  * interceptors provided in the root module.  */ export interface HttpInterceptor {   /**    * Identifies and handles a given HTTP request.    * @param req The outgoing request object to handle.    * @param next The next interceptor in the chain, or the backend    * if no interceptors remain in the chain.    * @returns An observable of the event stream.    */   intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>; }  /**  * Represents the next interceptor in an interceptor chain, or the real backend if there are no  * further interceptors.  *  * Most interceptors will delegate to this function, and either modify the outgoing request or the  * response when it arrives. Within the scope of the current request, however, this function may be  * called any number of times, for any number of downstream requests. Such downstream requests need  * not be to the same URL or even the same origin as the current request. It is also valid to not  * call the downstream handler at all, and process the current request entirely within the  * interceptor.  *  * This function should only be called within the scope of the request that's currently being  * intercepted. Once that request is complete, this downstream handler function should not be  * called.  *  * @publicApi  *  * @see [HTTP Guide](guide/http#intercepting-requests-and-responses)  */ export type HttpHandlerFn = (req: HttpRequest<unknown>) => Observable<HttpEvent<unknown>>;  /**  * An interceptor for HTTP requests made via `HttpClient`.  *  * `HttpInterceptorFn`s are middleware functions which `HttpClient` calls when a request is made.  * These functions have the opportunity to modify the outgoing request or any response that comes  * back, as well as block, redirect, or otherwise change the request or response semantics.  *  * An `HttpHandlerFn` representing the next interceptor (or the backend which will make a real HTTP  * request) is provided. Most interceptors will delegate to this function, but that is not required  * (see `HttpHandlerFn` for more details).  *  * `HttpInterceptorFn`s have access to `inject()` via the `EnvironmentInjector` from which they were  * configured.  */ export type HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn) =>     Observable<HttpEvent<unknown>>;  /**  * Function which invokes an HTTP interceptor chain.  *  * Each interceptor in the interceptor chain is turned into a `ChainedInterceptorFn` which closes  * over the rest of the chain (represented by another `ChainedInterceptorFn`). The last such  * function in the chain will instead delegate to the `finalHandlerFn`, which is passed down when  * the chain is invoked.  *  * This pattern allows for a chain of many interceptors to be composed and wrapped in a single  * `HttpInterceptorFn`, which is a useful abstraction for including different kinds of interceptors  * (e.g. legacy class-based interceptors) in the same chain.  */ type ChainedInterceptorFn<RequestT> = (req: HttpRequest<RequestT>, finalHandlerFn: HttpHandlerFn) =>     Observable<HttpEvent<RequestT>>;  function interceptorChainEndFn(     req: HttpRequest<any>, finalHandlerFn: HttpHandlerFn): Observable<HttpEvent<any>> {   return finalHandlerFn(req); }  /**  * Constructs a `ChainedInterceptorFn` which adapts a legacy `HttpInterceptor` to the  * `ChainedInterceptorFn` interface.  */ function adaptLegacyInterceptorToChain(     chainTailFn: ChainedInterceptorFn<any>,     interceptor: HttpInterceptor): ChainedInterceptorFn<any> {   return (initialRequest, finalHandlerFn) => interceptor.intercept(initialRequest, {     handle: (downstreamRequest) => chainTailFn(downstreamRequest, finalHandlerFn),   }); }  /**  * Constructs a `ChainedInterceptorFn` which wraps and invokes a functional interceptor in the given  * injector.  */ function chainedInterceptorFn(     chainTailFn: ChainedInterceptorFn<unknown>, interceptorFn: HttpInterceptorFn,     injector: EnvironmentInjector): ChainedInterceptorFn<unknown> {   // clang-format off   return (initialRequest, finalHandlerFn) => injector.runInContext(() =>     interceptorFn(       initialRequest,       downstreamRequest => chainTailFn(downstreamRequest, finalHandlerFn)     )   );   // clang-format on }  /**  * A multi-provider token that represents the array of registered  * `HttpInterceptor` objects.  *  * @publicApi  */ export const HTTP_INTERCEPTORS = new InjectionToken<HttpInterceptor[]>('HTTP_INTERCEPTORS');  /**  * A multi-provided token of `HttpInterceptorFn`s.  */ export const HTTP_INTERCEPTOR_FNS = new InjectionToken<HttpInterceptorFn[]>('HTTP_INTERCEPTOR_FNS');  /**  * Creates an `HttpInterceptorFn` which lazily initializes an interceptor chain from the legacy  * class-based interceptors and runs the request through it.  */ export function legacyInterceptorFnFactory(): HttpInterceptorFn {   let chain: ChainedInterceptorFn<any>|null = null;    return (req, handler) => {     if (chain === null) {       const interceptors = inject(HTTP_INTERCEPTORS, {optional: true}) ?? [];       // Note: interceptors are wrapped right-to-left so that final execution order is       // left-to-right. That is, if `interceptors` is the array `[a, b, c]`, we want to       // produce a chain that is conceptually `c(b(a(end)))`, which we build from the inside       // out.       chain = interceptors.reduceRight(           adaptLegacyInterceptorToChain, interceptorChainEndFn as ChainedInterceptorFn<any>);     }      return chain(req, handler);   }; }  @Injectable() export class HttpInterceptorHandler extends HttpHandler {   private chain: ChainedInterceptorFn<unknown>|null = null;    constructor(private backend: HttpBackend, private injector: EnvironmentInjector) {     super();   }    override handle(initialRequest: HttpRequest<any>): Observable<HttpEvent<any>> {     if (this.chain === null) {       const dedupedInterceptorFns = Array.from(new Set(this.injector.get(HTTP_INTERCEPTOR_FNS)));        // Note: interceptors are wrapped right-to-left so that final execution order is       // left-to-right. That is, if `dedupedInterceptorFns` is the array `[a, b, c]`, we want to       // produce a chain that is conceptually `c(b(a(end)))`, which we build from the inside       // out.       this.chain = dedupedInterceptorFns.reduceRight(           (nextSequencedFn, interceptorFn) =>               chainedInterceptorFn(nextSequencedFn, interceptorFn, this.injector),           interceptorChainEndFn as ChainedInterceptorFn<unknown>);     }     return this.chain(initialRequest, downstreamRequest => this.backend.handle(downstreamRequest));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {EnvironmentInjector, Inject, inject, Injectable} from '@angular/core'; import {Observable, Observer} from 'rxjs';  import {HttpBackend, HttpHandler} from './backend'; import {HttpHandlerFn} from './interceptor'; import {HttpRequest} from './request'; import {HttpErrorResponse, HttpEvent, HttpEventType, HttpResponse, HttpStatusCode} from './response';   // Every request made through JSONP needs a callback name that's unique across the // whole page. Each request is assigned an id and the callback name is constructed // from that. The next id to be assigned is tracked in a global variable here that // is shared among all applications on the page. let nextRequestId: number = 0;  /**  * When a pending <script> is unsubscribed we'll move it to this document, so it won't be  * executed.  */ let foreignDocument: Document|undefined;  // Error text given when a JSONP script is injected, but doesn't invoke the callback // passed in its URL. export const JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';  // Error text given when a request is passed to the JsonpClientBackend that doesn't // have a request method JSONP. export const JSONP_ERR_WRONG_METHOD = 'JSONP requests must use JSONP request method.'; export const JSONP_ERR_WRONG_RESPONSE_TYPE = 'JSONP requests must use Json response type.';  // Error text given when a request is passed to the JsonpClientBackend that has // headers set export const JSONP_ERR_HEADERS_NOT_SUPPORTED = 'JSONP requests do not support headers.';  /**  * DI token/abstract type representing a map of JSONP callbacks.  *  * In the browser, this should always be the `window` object.  *  *  */ export abstract class JsonpCallbackContext {   [key: string]: (data: any) => void; }  /**  * Factory function that determines where to store JSONP callbacks.  *  * Ordinarily JSONP callbacks are stored on the `window` object, but this may not exist  * in test environments. In that case, callbacks are stored on an anonymous object instead.  *  *  */ export function jsonpCallbackContext(): Object {   if (typeof window === 'object') {     return window;   }   return {}; }  /**  * Processes an `HttpRequest` with the JSONP method,  * by performing JSONP style requests.  * @see `HttpHandler`  * @see `HttpXhrBackend`  *  * @publicApi  */ @Injectable() export class JsonpClientBackend implements HttpBackend {   /**    * A resolved promise that can be used to schedule microtasks in the event handlers.    */   private readonly resolvedPromise = Promise.resolve();    constructor(private callbackMap: JsonpCallbackContext, @Inject(DOCUMENT) private document: any) {}    /**    * Get the name of the next callback method, by incrementing the global `nextRequestId`.    */   private nextCallback(): string {     return `ng_jsonp_callback_${nextRequestId++}`;   }    /**    * Processes a JSONP request and returns an event stream of the results.    * @param req The request object.    * @returns An observable of the response events.    *    */   handle(req: HttpRequest<never>): Observable<HttpEvent<any>> {     // Firstly, check both the method and response type. If either doesn't match     // then the request was improperly routed here and cannot be handled.     if (req.method !== 'JSONP') {       throw new Error(JSONP_ERR_WRONG_METHOD);     } else if (req.responseType !== 'json') {       throw new Error(JSONP_ERR_WRONG_RESPONSE_TYPE);     }      // Check the request headers. JSONP doesn't support headers and     // cannot set any that were supplied.     if (req.headers.keys().length > 0) {       throw new Error(JSONP_ERR_HEADERS_NOT_SUPPORTED);     }      // Everything else happens inside the Observable boundary.     return new Observable<HttpEvent<any>>((observer: Observer<HttpEvent<any>>) => {       // The first step to make a request is to generate the callback name, and replace the       // callback placeholder in the URL with the name. Care has to be taken here to ensure       // a trailing &, if matched, gets inserted back into the URL in the correct place.       const callback = this.nextCallback();       const url = req.urlWithParams.replace(/=JSONP_CALLBACK(&|$)/, `=${callback}$1`);        // Construct the <script> tag and point it at the URL.       const node = this.document.createElement('script');       node.src = url;        // A JSONP request requires waiting for multiple callbacks. These variables       // are closed over and track state across those callbacks.        // The response object, if one has been received, or null otherwise.       let body: any|null = null;        // Whether the response callback has been called.       let finished: boolean = false;        // Set the response callback in this.callbackMap (which will be the window       // object in the browser. The script being loaded via the <script> tag will       // eventually call this callback.       this.callbackMap[callback] = (data?: any) => {         // Data has been received from the JSONP script. Firstly, delete this callback.         delete this.callbackMap[callback];          // Set state to indicate data was received.         body = data;         finished = true;       };        // cleanup() is a utility closure that removes the <script> from the page and       // the response callback from the window. This logic is used in both the       // success, error, and cancellation paths, so it's extracted out for convenience.       const cleanup = () => {         // Remove the <script> tag if it's still on the page.         if (node.parentNode) {           node.parentNode.removeChild(node);         }          // Remove the response callback from the callbackMap (window object in the         // browser).         delete this.callbackMap[callback];       };        // onLoad() is the success callback which runs after the response callback       // if the JSONP script loads successfully. The event itself is unimportant.       // If something went wrong, onLoad() may run without the response callback       // having been invoked.       const onLoad = (event: Event) => {         // We wrap it in an extra Promise, to ensure the microtask         // is scheduled after the loaded endpoint has executed any potential microtask itself,         // which is not guaranteed in Internet Explorer and EdgeHTML. See issue #39496         this.resolvedPromise.then(() => {           // Cleanup the page.           cleanup();            // Check whether the response callback has run.           if (!finished) {             // It hasn't, something went wrong with the request. Return an error via             // the Observable error path. All JSONP errors have status 0.             observer.error(new HttpErrorResponse({               url,               status: 0,               statusText: 'JSONP Error',               error: new Error(JSONP_ERR_NO_CALLBACK),             }));             return;           }            // Success. body either contains the response body or null if none was           // returned.           observer.next(new HttpResponse({             body,             status: HttpStatusCode.Ok,             statusText: 'OK',             url,           }));            // Complete the stream, the response is over.           observer.complete();         });       };        // onError() is the error callback, which runs if the script returned generates       // a Javascript error. It emits the error via the Observable error channel as       // a HttpErrorResponse.       const onError: any = (error: Error) => {         cleanup();          // Wrap the error in a HttpErrorResponse.         observer.error(new HttpErrorResponse({           error,           status: 0,           statusText: 'JSONP Error',           url,         }));       };        // Subscribe to both the success (load) and error events on the <script> tag,       // and add it to the page.       node.addEventListener('load', onLoad);       node.addEventListener('error', onError);       this.document.body.appendChild(node);        // The request has now been successfully sent.       observer.next({type: HttpEventType.Sent});        // Cancellation handler.       return () => {         if (!finished) {           this.removeListeners(node);         }          // And finally, clean up the page.         cleanup();       };     });   }    private removeListeners(script: HTMLScriptElement): void {     // Issue #34818     // Changing <script>'s ownerDocument will prevent it from execution.     // https://html.spec.whatwg.org/multipage/scripting.html#execute-the-script-block     if (!foreignDocument) {       foreignDocument = (this.document.implementation as DOMImplementation).createHTMLDocument();     }     foreignDocument.adoptNode(script);   } }  /**  * Identifies requests with the method JSONP and shifts them to the `JsonpClientBackend`.  */ export function jsonpInterceptorFn(     req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {   if (req.method === 'JSONP') {     return inject(JsonpClientBackend).handle(req as HttpRequest<never>);   }    // Fall through for normal HTTP requests.   return next(req); }  /**  * Identifies requests with the method JSONP and  * shifts them to the `JsonpClientBackend`.  *  * @see `HttpInterceptor`  *  * @publicApi  */ @Injectable() export class JsonpInterceptor {   constructor(private injector: EnvironmentInjector) {}    /**    * Identifies and handles a given JSONP request.    * @param initialRequest The outgoing request object to handle.    * @param next The next interceptor in the chain, or the backend    * if no interceptors remain in the chain.    * @returns An observable of the event stream.    */   intercept(initialRequest: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {     return this.injector.runInContext(         () => jsonpInterceptorFn(             initialRequest, downstreamRequest => next.handle(downstreamRequest)));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {XhrFactory} from '@angular/common'; import {Injectable} from '@angular/core'; import {Observable, Observer} from 'rxjs';  import {HttpBackend} from './backend'; import {HttpHeaders} from './headers'; import {HttpRequest} from './request'; import {HttpDownloadProgressEvent, HttpErrorResponse, HttpEvent, HttpEventType, HttpHeaderResponse, HttpJsonParseError, HttpResponse, HttpStatusCode, HttpUploadProgressEvent} from './response';   const XSSI_PREFIX = /^\\)\\]\\}',?\ /;  /**  * Determine an appropriate URL for the response, by checking either  * XMLHttpRequest.responseURL or the X-Request-URL header.  */ function getResponseUrl(xhr: any): string|null {   if ('responseURL' in xhr && xhr.responseURL) {     return xhr.responseURL;   }   if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {     return xhr.getResponseHeader('X-Request-URL');   }   return null; }  /**  * Uses `XMLHttpRequest` to send requests to a backend server.  * @see `HttpHandler`  * @see `JsonpClientBackend`  *  * @publicApi  */ @Injectable() export class HttpXhrBackend implements HttpBackend {   constructor(private xhrFactory: XhrFactory) {}    /**    * Processes a request and returns a stream of response events.    * @param req The request object.    * @returns An observable of the response events.    */   handle(req: HttpRequest<any>): Observable<HttpEvent<any>> {     // Quick check to give a better error message when a user attempts to use     // HttpClient.jsonp() without installing the HttpClientJsonpModule     if (req.method === 'JSONP') {       throw new Error(           `Attempted to construct Jsonp request without HttpClientJsonpModule installed.`);     }      // Everything happens on Observable subscription.     return new Observable((observer: Observer<HttpEvent<any>>) => {       // Start by setting up the XHR object with request method, URL, and withCredentials flag.       const xhr = this.xhrFactory.build();       xhr.open(req.method, req.urlWithParams);       if (!!req.withCredentials) {         xhr.withCredentials = true;       }        // Add all the requested headers.       req.headers.forEach((name, values) => xhr.setRequestHeader(name, values.join(',')));        // Add an Accept header if one isn't present already.       if (!req.headers.has('Accept')) {         xhr.setRequestHeader('Accept', 'application/json, text/plain, */*');       }        // Auto-detect the Content-Type header if one isn't present already.       if (!req.headers.has('Content-Type')) {         const detectedType = req.detectContentTypeHeader();         // Sometimes Content-Type detection fails.         if (detectedType !== null) {           xhr.setRequestHeader('Content-Type', detectedType);         }       }        // Set the responseType if one was requested.       if (req.responseType) {         const responseType = req.responseType.toLowerCase();          // JSON responses need to be processed as text. This is because if the server         // returns an XSSI-prefixed JSON response, the browser will fail to parse it,         // xhr.response will be null, and xhr.responseText cannot be accessed to         // retrieve the prefixed JSON data in order to strip the prefix. Thus, all JSON         // is parsed by first requesting text and then applying JSON.parse.         xhr.responseType = ((responseType !== 'json') ? responseType : 'text') as any;       }        // Serialize the request body if one is present. If not, this will be set to null.       const reqBody = req.serializeBody();        // If progress events are enabled, response headers will be delivered       // in two events - the HttpHeaderResponse event and the full HttpResponse       // event. However, since response headers don't change in between these       // two events, it doesn't make sense to parse them twice. So headerResponse       // caches the data extracted from the response whenever it's first parsed,       // to ensure parsing isn't duplicated.       let headerResponse: HttpHeaderResponse|null = null;        // partialFromXhr extracts the HttpHeaderResponse from the current XMLHttpRequest       // state, and memoizes it into headerResponse.       const partialFromXhr = (): HttpHeaderResponse => {         if (headerResponse !== null) {           return headerResponse;         }          const statusText = xhr.statusText || 'OK';          // Parse headers from XMLHttpRequest - this step is lazy.         const headers = new HttpHeaders(xhr.getAllResponseHeaders());          // Read the response URL from the XMLHttpResponse instance and fall back on the         // request URL.         const url = getResponseUrl(xhr) || req.url;          // Construct the HttpHeaderResponse and memoize it.         headerResponse = new HttpHeaderResponse({headers, status: xhr.status, statusText, url});         return headerResponse;       };        // Next, a few closures are defined for the various events which XMLHttpRequest can       // emit. This allows them to be unregistered as event listeners later.        // First up is the load event, which represents a response being fully available.       const onLoad = () => {         // Read response state from the memoized partial data.         let {headers, status, statusText, url} = partialFromXhr();          // The body will be read out if present.         let body: any|null = null;          if (status !== HttpStatusCode.NoContent) {           // Use XMLHttpRequest.response if set, responseText otherwise.           body = (typeof xhr.response === 'undefined') ? xhr.responseText : xhr.response;         }          // Normalize another potential bug (this one comes from CORS).         if (status === 0) {           status = !!body ? HttpStatusCode.Ok : 0;         }          // ok determines whether the response will be transmitted on the event or         // error channel. Unsuccessful status codes (not 2xx) will always be errors,         // but a successful status code can still result in an error if the user         // asked for JSON data and the body cannot be parsed as such.         let ok = status >= 200 && status < 300;          // Check whether the body needs to be parsed as JSON (in many cases the browser         // will have done that already).         if (req.responseType === 'json' && typeof body === 'string') {           // Save the original body, before attempting XSSI prefix stripping.           const originalBody = body;           body = body.replace(XSSI_PREFIX, '');           try {             // Attempt the parse. If it fails, a parse error should be delivered to the user.             body = body !== '' ? JSON.parse(body) : null;           } catch (error) {             // Since the JSON.parse failed, it's reasonable to assume this might not have been a             // JSON response. Restore the original body (including any XSSI prefix) to deliver             // a better error response.             body = originalBody;              // If this was an error request to begin with, leave it as a string, it probably             // just isn't JSON. Otherwise, deliver the parsing error to the user.             if (ok) {               // Even though the response status was 2xx, this is still an error.               ok = false;               // The parse error contains the text of the body that failed to parse.               body = {error, text: body} as HttpJsonParseError;             }           }         }          if (ok) {           // A successful response is delivered on the event stream.           observer.next(new HttpResponse({             body,             headers,             status,             statusText,             url: url || undefined,           }));           // The full body has been received and delivered, no further events           // are possible. This request is complete.           observer.complete();         } else {           // An unsuccessful request is delivered on the error channel.           observer.error(new HttpErrorResponse({             // The error in this case is the response body (error from the server).             error: body,             headers,             status,             statusText,             url: url || undefined,           }));         }       };        // The onError callback is called when something goes wrong at the network level.       // Connection timeout, DNS error, offline, etc. These are actual errors, and are       // transmitted on the error channel.       const onError = (error: ProgressEvent) => {         const {url} = partialFromXhr();         const res = new HttpErrorResponse({           error,           status: xhr.status || 0,           statusText: xhr.statusText || 'Unknown Error',           url: url || undefined,         });         observer.error(res);       };        // The sentHeaders flag tracks whether the HttpResponseHeaders event       // has been sent on the stream. This is necessary to track if progress       // is enabled since the event will be sent on only the first download       // progress event.       let sentHeaders = false;        // The download progress event handler, which is only registered if       // progress events are enabled.       const onDownProgress = (event: ProgressEvent) => {         // Send the HttpResponseHeaders event if it hasn't been sent already.         if (!sentHeaders) {           observer.next(partialFromXhr());           sentHeaders = true;         }          // Start building the download progress event to deliver on the response         // event stream.         let progressEvent: HttpDownloadProgressEvent = {           type: HttpEventType.DownloadProgress,           loaded: event.loaded,         };          // Set the total number of bytes in the event if it's available.         if (event.lengthComputable) {           progressEvent.total = event.total;         }          // If the request was for text content and a partial response is         // available on XMLHttpRequest, include it in the progress event         // to allow for streaming reads.         if (req.responseType === 'text' && !!xhr.responseText) {           progressEvent.partialText = xhr.responseText;         }          // Finally, fire the event.         observer.next(progressEvent);       };        // The upload progress event handler, which is only registered if       // progress events are enabled.       const onUpProgress = (event: ProgressEvent) => {         // Upload progress events are simpler. Begin building the progress         // event.         let progress: HttpUploadProgressEvent = {           type: HttpEventType.UploadProgress,           loaded: event.loaded,         };          // If the total number of bytes being uploaded is available, include         // it.         if (event.lengthComputable) {           progress.total = event.total;         }          // Send the event.         observer.next(progress);       };        // By default, register for load and error events.       xhr.addEventListener('load', onLoad);       xhr.addEventListener('error', onError);       xhr.addEventListener('timeout', onError);       xhr.addEventListener('abort', onError);        // Progress events are only enabled if requested.       if (req.reportProgress) {         // Download progress is always enabled if requested.         xhr.addEventListener('progress', onDownProgress);          // Upload progress depends on whether there is a body to upload.         if (reqBody !== null && xhr.upload) {           xhr.upload.addEventListener('progress', onUpProgress);         }       }        // Fire the request, and notify the event stream that it was fired.       xhr.send(reqBody!);       observer.next({type: HttpEventType.Sent});        // This is the return from the Observable function, which is the       // request cancellation handler.       return () => {         // On a cancellation, remove all registered event listeners.         xhr.removeEventListener('error', onError);         xhr.removeEventListener('abort', onError);         xhr.removeEventListener('load', onLoad);         xhr.removeEventListener('timeout', onError);         if (req.reportProgress) {           xhr.removeEventListener('progress', onDownProgress);           if (reqBody !== null && xhr.upload) {             xhr.upload.removeEventListener('progress', onUpProgress);           }         }          // Finally, abort the in-flight request.         if (xhr.readyState !== xhr.DONE) {           xhr.abort();         }       };     });   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT, ɵparseCookieValue as parseCookieValue} from '@angular/common'; import {EnvironmentInjector, Inject, inject, Injectable, InjectionToken, PLATFORM_ID} from '@angular/core'; import {Observable} from 'rxjs';  import {HttpHandler} from './backend'; import {HttpHandlerFn, HttpInterceptor} from './interceptor'; import {HttpRequest} from './request'; import {HttpEvent} from './response';  export const XSRF_ENABLED = new InjectionToken<boolean>('XSRF_ENABLED');  export const XSRF_DEFAULT_COOKIE_NAME = 'XSRF-TOKEN'; export const XSRF_COOKIE_NAME = new InjectionToken<string>('XSRF_COOKIE_NAME', {   providedIn: 'root',   factory: () => XSRF_DEFAULT_COOKIE_NAME, });  export const XSRF_DEFAULT_HEADER_NAME = 'X-XSRF-TOKEN'; export const XSRF_HEADER_NAME = new InjectionToken<string>('XSRF_HEADER_NAME', {   providedIn: 'root',   factory: () => XSRF_DEFAULT_HEADER_NAME, });  /**  * Retrieves the current XSRF token to use with the next outgoing request.  *  * @publicApi  */ export abstract class HttpXsrfTokenExtractor {   /**    * Get the XSRF token to use with an outgoing request.    *    * Will be called for every request, so the token may change between requests.    */   abstract getToken(): string|null; }  /**  * `HttpXsrfTokenExtractor` which retrieves the token from a cookie.  */ @Injectable() export class HttpXsrfCookieExtractor implements HttpXsrfTokenExtractor {   private lastCookieString: string = '';   private lastToken: string|null = null;    /**    * @internal for testing    */   parseCount: number = 0;    constructor(       @Inject(DOCUMENT) private doc: any, @Inject(PLATFORM_ID) private platform: string,       @Inject(XSRF_COOKIE_NAME) private cookieName: string) {}    getToken(): string|null {     if (this.platform === 'server') {       return null;     }     const cookieString = this.doc.cookie || '';     if (cookieString !== this.lastCookieString) {       this.parseCount++;       this.lastToken = parseCookieValue(cookieString, this.cookieName);       this.lastCookieString = cookieString;     }     return this.lastToken;   } }  export function xsrfInterceptorFn(     req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {   const lcUrl = req.url.toLowerCase();   // Skip both non-mutating requests and absolute URLs.   // Non-mutating requests don't require a token, and absolute URLs require special handling   // anyway as the cookie set   // on our origin is not the same as the token expected by another origin.   if (!inject(XSRF_ENABLED) || req.method === 'GET' || req.method === 'HEAD' ||       lcUrl.startsWith('http://') || lcUrl.startsWith('https://')) {     return next(req);   }    const token = inject(HttpXsrfTokenExtractor).getToken();   const headerName = inject(XSRF_HEADER_NAME);    // Be careful not to overwrite an existing header of the same name.   if (token != null && !req.headers.has(headerName)) {     req = req.clone({headers: req.headers.set(headerName, token)});   }   return next(req); }  /**  * `HttpInterceptor` which adds an XSRF token to eligible outgoing requests.  */ @Injectable() export class HttpXsrfInterceptor implements HttpInterceptor {   constructor(private injector: EnvironmentInjector) {}    intercept(initialRequest: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {     return this.injector.runInContext(         () =>             xsrfInterceptorFn(initialRequest, downstreamRequest => next.handle(downstreamRequest)));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Provider} from '@angular/core';  import {HttpBackend, HttpHandler} from './backend'; import {HttpClient} from './client'; import {HTTP_INTERCEPTOR_FNS, HttpInterceptorFn, HttpInterceptorHandler, legacyInterceptorFnFactory} from './interceptor'; import {jsonpCallbackContext, JsonpCallbackContext, JsonpClientBackend, jsonpInterceptorFn} from './jsonp'; import {HttpXhrBackend} from './xhr'; import {HttpXsrfCookieExtractor, HttpXsrfTokenExtractor, XSRF_COOKIE_NAME, XSRF_ENABLED, XSRF_HEADER_NAME, xsrfInterceptorFn} from './xsrf';  /**  * Identifies a particular kind of `HttpFeature`.  *  * @publicApi  */ export enum HttpFeatureKind {   Interceptors,   LegacyInterceptors,   CustomXsrfConfiguration,   NoXsrfProtection,   JsonpSupport,   RequestsMadeViaParent, }  /**  * A feature for use when configuring `provideHttpClient`.  *  * @publicApi  */ export interface HttpFeature<KindT extends HttpFeatureKind> {   ɵkind: KindT;   ɵproviders: Provider[]; }  function makeHttpFeature<KindT extends HttpFeatureKind>(     kind: KindT, providers: Provider[]): HttpFeature<KindT> {   return {     ɵkind: kind,     ɵproviders: providers,   }; }  /**  * Configures Angular's `HttpClient` service to be available for injection.  *  * By default, `HttpClient` will be configured for injection with its default options for XSRF  * protection of outgoing requests. Additional configuration options can be provided by passing  * feature functions to `provideHttpClient`. For example, HTTP interceptors can be added using the  * `withInterceptors(...)` feature.  *  * @see withInterceptors  * @see withInterceptorsFromDi  * @see withXsrfConfiguration  * @see withNoXsrfProtection  * @see withJsonpSupport  * @see withRequestsMadeViaParent  */ export function provideHttpClient(...features: HttpFeature<HttpFeatureKind>[]):     EnvironmentProviders {   if (ngDevMode) {     const featureKinds = new Set(features.map(f => f.ɵkind));     if (featureKinds.has(HttpFeatureKind.NoXsrfProtection) &&         featureKinds.has(HttpFeatureKind.CustomXsrfConfiguration)) {       throw new Error(           ngDevMode ?               `Configuration error: found both withXsrfConfiguration() and withNoXsrfProtection() in the same call to provideHttpClient(), which is a contradiction.` :               '');     }   }    const providers: Provider[] = [     HttpClient,     HttpXhrBackend,     HttpInterceptorHandler,     {provide: HttpHandler, useExisting: HttpInterceptorHandler},     {provide: HttpBackend, useExisting: HttpXhrBackend},     {       provide: HTTP_INTERCEPTOR_FNS,       useValue: xsrfInterceptorFn,       multi: true,     },     {provide: XSRF_ENABLED, useValue: true},     {provide: HttpXsrfTokenExtractor, useClass: HttpXsrfCookieExtractor},   ];    for (const feature of features) {     providers.push(...feature.ɵproviders);   }    return makeEnvironmentProviders(providers); }  /**  * Adds one or more functional-style HTTP interceptors to the configuration of the `HttpClient`  * instance.  *  * @see HttpInterceptorFn  * @see provideHttpClient  * @publicApi  */ export function withInterceptors(interceptorFns: HttpInterceptorFn[]):     HttpFeature<HttpFeatureKind.Interceptors> {   return makeHttpFeature(HttpFeatureKind.Interceptors, interceptorFns.map(interceptorFn => {     return {       provide: HTTP_INTERCEPTOR_FNS,       useValue: interceptorFn,       multi: true,     };   })); }  const LEGACY_INTERCEPTOR_FN = new InjectionToken<HttpInterceptorFn>('LEGACY_INTERCEPTOR_FN');  /**  * Includes class-based interceptors configured using a multi-provider in the current injector into  * the configured `HttpClient` instance.  *  * Prefer `withInterceptors` and functional interceptors instead, as support for DI-provided  * interceptors may be phased out in a later release.  *  * @see HttpInterceptor  * @see HTTP_INTERCEPTORS  * @see provideHttpClient  */ export function withInterceptorsFromDi(): HttpFeature<HttpFeatureKind.LegacyInterceptors> {   // Note: the legacy interceptor function is provided here via an intermediate token   // (`LEGACY_INTERCEPTOR_FN`), using a pattern which guarantees that if these providers are   // included multiple times, all of the multi-provider entries will have the same instance of the   // interceptor function. That way, the `HttpINterceptorHandler` will dedup them and legacy   // interceptors will not run multiple times.   return makeHttpFeature(HttpFeatureKind.LegacyInterceptors, [     {       provide: LEGACY_INTERCEPTOR_FN,       useFactory: legacyInterceptorFnFactory,     },     {       provide: HTTP_INTERCEPTOR_FNS,       useExisting: LEGACY_INTERCEPTOR_FN,       multi: true,     }   ]); }  /**  * Customizes the XSRF protection for the configuration of the current `HttpClient` instance.  *  * This feature is incompatible with the `withNoXsrfProtection` feature.  *  * @see provideHttpClient  */ export function withXsrfConfiguration(     {cookieName, headerName}: {cookieName?: string, headerName?: string}):     HttpFeature<HttpFeatureKind.CustomXsrfConfiguration> {   const providers: Provider[] = [];   if (cookieName !== undefined) {     providers.push({provide: XSRF_COOKIE_NAME, useValue: cookieName});   }   if (headerName !== undefined) {     providers.push({provide: XSRF_HEADER_NAME, useValue: headerName});   }    return makeHttpFeature(HttpFeatureKind.CustomXsrfConfiguration, providers); }  /**  * Disables XSRF protection in the configuration of the current `HttpClient` instance.  *  * This feature is incompatible with the `withXsrfConfiguration` feature.  *  * @see provideHttpClient  */ export function withNoXsrfProtection(): HttpFeature<HttpFeatureKind.NoXsrfProtection> {   return makeHttpFeature(HttpFeatureKind.NoXsrfProtection, [     {       provide: XSRF_ENABLED,       useValue: false,     },   ]); }  /**  * Add JSONP support to the configuration of the current `HttpClient` instance.  *  * @see provideHttpClient  */ export function withJsonpSupport(): HttpFeature<HttpFeatureKind.JsonpSupport> {   return makeHttpFeature(HttpFeatureKind.JsonpSupport, [     JsonpClientBackend,     {provide: JsonpCallbackContext, useFactory: jsonpCallbackContext},     {provide: HTTP_INTERCEPTOR_FNS, useValue: jsonpInterceptorFn, multi: true},   ]); }  /**  * Configures the current `HttpClient` instance to make requests via the parent injector's  * `HttpClient` instead of directly.  *  * By default, `provideHttpClient` configures `HttpClient` in its injector to be an independent  * instance. For example, even if `HttpClient` is configured in the parent injector with  * one or more interceptors, they will not intercept requests made via this instance.  *  * With this option enabled, once the request has passed through the current injector's  * interceptors, it will be delegated to the parent injector's `HttpClient` chain instead of  * dispatched directly, and interceptors in the parent configuration will be applied to the request.  *  * If there are several `HttpClient` instances in the injector hierarchy, it's possible for  * `withRequestsMadeViaParent` to be used at multiple levels, which will cause the request to  * \"bubble up\" until either reaching the root level or an `HttpClient` which was not configured with  * this option.  *  * @see provideHttpClient  * @developerPreview  */ export function withRequestsMadeViaParent(): HttpFeature<HttpFeatureKind.RequestsMadeViaParent> {   return makeHttpFeature(HttpFeatureKind.RequestsMadeViaParent, [     {       provide: HttpBackend,       useFactory: () => {         const handlerFromParent = inject(HttpHandler, {skipSelf: true, optional: true});         if (ngDevMode && handlerFromParent === null) {           throw new Error(               'withRequestsMadeViaParent() can only be used when the parent injector also configures HttpClient');         }         return handlerFromParent;       },     },   ]); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ModuleWithProviders, NgModule} from '@angular/core';  import {HTTP_INTERCEPTORS} from './interceptor'; import {provideHttpClient, withInterceptorsFromDi, withJsonpSupport, withNoXsrfProtection, withXsrfConfiguration} from './provider'; import {HttpXsrfCookieExtractor, HttpXsrfInterceptor, HttpXsrfTokenExtractor, XSRF_DEFAULT_COOKIE_NAME, XSRF_DEFAULT_HEADER_NAME, XSRF_ENABLED} from './xsrf';  /**  * Configures XSRF protection support for outgoing requests.  *  * For a server that supports a cookie-based XSRF protection system,  * use directly to configure XSRF protection with the correct  * cookie and header names.  *  * If no names are supplied, the default cookie name is `XSRF-TOKEN`  * and the default header name is `X-XSRF-TOKEN`.  *  * @publicApi  */ @NgModule({   providers: [     HttpXsrfInterceptor,     {provide: HTTP_INTERCEPTORS, useExisting: HttpXsrfInterceptor, multi: true},     {provide: HttpXsrfTokenExtractor, useClass: HttpXsrfCookieExtractor},     withXsrfConfiguration({       cookieName: XSRF_DEFAULT_COOKIE_NAME,       headerName: XSRF_DEFAULT_HEADER_NAME,     }).ɵproviders,     {provide: XSRF_ENABLED, useValue: true},   ], }) export class HttpClientXsrfModule {   /**    * Disable the default XSRF protection.    */   static disable(): ModuleWithProviders<HttpClientXsrfModule> {     return {       ngModule: HttpClientXsrfModule,       providers: [         withNoXsrfProtection().ɵproviders,       ],     };   }    /**    * Configure XSRF protection.    * @param options An object that can specify either or both    * cookie name or header name.    * - Cookie name default is `XSRF-TOKEN`.    * - Header name default is `X-XSRF-TOKEN`.    *    */   static withOptions(options: {     cookieName?: string,     headerName?: string,   } = {}): ModuleWithProviders<HttpClientXsrfModule> {     return {       ngModule: HttpClientXsrfModule,       providers: withXsrfConfiguration(options).ɵproviders,     };   } }  /**  * Configures the [dependency injector](guide/glossary#injector) for `HttpClient`  * with supporting services for XSRF. Automatically imported by `HttpClientModule`.  *  * You can add interceptors to the chain behind `HttpClient` by binding them to the  * multiprovider for built-in [DI token](guide/glossary#di-token) `HTTP_INTERCEPTORS`.  *  * @publicApi  */ @NgModule({   /**    * Configures the [dependency injector](guide/glossary#injector) where it is imported    * with supporting services for HTTP communications.    */   providers: [     provideHttpClient(withInterceptorsFromDi()),   ], }) export class HttpClientModule { }  /**  * Configures the [dependency injector](guide/glossary#injector) for `HttpClient`  * with supporting services for JSONP.  * Without this module, Jsonp requests reach the backend  * with method JSONP, where they are rejected.  *  * @publicApi  */ @NgModule({   providers: [     withJsonpSupport().ɵproviders,   ], }) export class HttpClientJsonpModule { } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {XhrFactory as XhrFactory_fromAngularCommon} from '@angular/common';  /**  * A wrapper around the `XMLHttpRequest` constructor.  *  * @publicApi  * @see `XhrFactory`  * @deprecated  * `XhrFactory` has moved, please import `XhrFactory` from `@angular/common` instead.  */ export type XhrFactory = XhrFactory_fromAngularCommon; /**  * A wrapper around the `XMLHttpRequest` constructor.  *  * @publicApi  * @see `XhrFactory`  * @deprecated  * `XhrFactory` has moved, please import `XhrFactory` from `@angular/common` instead.  */ export const XhrFactory = XhrFactory_fromAngularCommon;  export {HttpBackend, HttpHandler} from './src/backend'; export {HttpClient} from './src/client'; export {HttpContext, HttpContextToken} from './src/context'; export {HttpHeaders} from './src/headers'; export {HTTP_INTERCEPTORS, HttpInterceptor, HttpInterceptorHandler as ɵHttpInterceptorHandler, HttpInterceptorFn, HttpHandlerFn} from './src/interceptor'; export {JsonpClientBackend, JsonpInterceptor} from './src/jsonp'; export {HttpClientJsonpModule, HttpClientModule, HttpClientXsrfModule} from './src/module'; export {HttpParameterCodec, HttpParams, HttpParamsOptions, HttpUrlEncodingCodec} from './src/params'; export {HttpFeature, HttpFeatureKind, provideHttpClient, withJsonpSupport, withNoXsrfProtection, withXsrfConfiguration, withInterceptors, withInterceptorsFromDi, withRequestsMadeViaParent} from './src/provider'; export {HttpRequest} from './src/request'; export {HttpDownloadProgressEvent, HttpErrorResponse, HttpEvent, HttpEventType, HttpHeaderResponse, HttpProgressEvent, HttpResponse, HttpResponseBase, HttpSentEvent, HttpStatusCode, HttpUploadProgressEvent, HttpUserEvent} from './src/response'; export {HttpXhrBackend} from './src/xhr'; export {HttpXsrfTokenExtractor} from './src/xsrf';  // This re-export exists because g3 depends on this old private name. export {HttpInterceptorHandler as ɵHttpInterceptingHandler} from './src/interceptor'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["i1.HttpHandler","i1.HttpBackend","parseCookieValue","XhrFactory_fromAngularCommon"],"mappings":"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"}
-------------------- SECTION 175 --------------------
{"version":3,"file":"http.mjs","sources":["../../../../../../packages/common/http/src/backend.ts","../../../../../../packages/common/http/src/headers.ts","../../../../../../packages/common/http/src/params.ts","../../../../../../packages/common/http/src/context.ts","../../../../../../packages/common/http/src/request.ts","../../../../../../packages/common/http/src/response.ts","../../../../../../packages/common/http/src/client.ts","../../../../../../packages/common/http/src/interceptor.ts","../../../../../../packages/common/http/src/jsonp.ts","../../../../../../packages/common/http/src/xhr.ts","../../../../../../packages/common/http/src/xsrf.ts","../../../../../../packages/common/http/src/provider.ts","../../../../../../packages/common/http/src/module.ts","../../../../../../packages/common/http/public_api.ts","../../../../../../packages/common/http/index.ts","../../../../../../packages/common/http/http.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Observable} from 'rxjs';  import {HttpRequest} from './request'; import {HttpEvent} from './response';  /**  * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a  * `HttpResponse`.  *  * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the  * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the  * `HttpBackend`.  *  * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.  *  * @publicApi  */ export abstract class HttpHandler {   abstract handle(req: HttpRequest<any>): Observable<HttpEvent<any>>; }  /**  * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.  *  * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.  *  * When injected, `HttpBackend` dispatches requests directly to the backend, without going  * through the interceptor chain.  *  * @publicApi  */ export abstract class HttpBackend implements HttpHandler {   abstract handle(req: HttpRequest<any>): Observable<HttpEvent<any>>; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  interface Update {   name: string;   value?: string|string[];   op: 'a'|'s'|'d'; }  /**  * Represents the header configuration options for an HTTP request.  * Instances are immutable. Modifying methods return a cloned  * instance with the change. The original object is never changed.  *  * @publicApi  */ export class HttpHeaders {   /**    * Internal map of lowercase header names to values.    */   // TODO(issue/24571): remove '!'.   private headers!: Map<string, string[]>;     /**    * Internal map of lowercased header names to the normalized    * form of the name (the form seen first).    */   private normalizedNames: Map<string, string> = new Map();    /**    * Complete the lazy initialization of this object (needed before reading).    */   private lazyInit!: HttpHeaders|Function|null;    /**    * Queued updates to be materialized the next initialization.    */   private lazyUpdate: Update[]|null = null;    /**  Constructs a new HTTP header object with the given values.*/    constructor(headers?: string|{[name: string]: string | string[]}) {     if (!headers) {       this.headers = new Map<string, string[]>();     } else if (typeof headers === 'string') {       this.lazyInit = () => {         this.headers = new Map<string, string[]>();         headers.split('\ ').forEach(line => {           const index = line.indexOf(':');           if (index > 0) {             const name = line.slice(0, index);             const key = name.toLowerCase();             const value = line.slice(index + 1).trim();             this.maybeSetNormalizedName(name, key);             if (this.headers.has(key)) {               this.headers.get(key)!.push(value);             } else {               this.headers.set(key, [value]);             }           }         });       };     } else {       this.lazyInit = () => {         if (typeof ngDevMode === 'undefined' || ngDevMode) {           assertValidHeaders(headers);         }         this.headers = new Map<string, string[]>();         Object.keys(headers).forEach(name => {           let values: string|string[] = headers[name];           const key = name.toLowerCase();           if (typeof values === 'string') {             values = [values];           }           if (values.length > 0) {             this.headers.set(key, values);             this.maybeSetNormalizedName(name, key);           }         });       };     }   }    /**    * Checks for existence of a given header.    *    * @param name The header name to check for existence.    *    * @returns True if the header exists, false otherwise.    */   has(name: string): boolean {     this.init();      return this.headers.has(name.toLowerCase());   }    /**    * Retrieves the first value of a given header.    *    * @param name The header name.    *    * @returns The value string if the header exists, null otherwise    */   get(name: string): string|null {     this.init();      const values = this.headers.get(name.toLowerCase());     return values && values.length > 0 ? values[0] : null;   }    /**    * Retrieves the names of the headers.    *    * @returns A list of header names.    */   keys(): string[] {     this.init();      return Array.from(this.normalizedNames.values());   }    /**    * Retrieves a list of values for a given header.    *    * @param name The header name from which to retrieve values.    *    * @returns A string of values if the header exists, null otherwise.    */   getAll(name: string): string[]|null {     this.init();      return this.headers.get(name.toLowerCase()) || null;   }    /**    * Appends a new value to the existing set of values for a header    * and returns them in a clone of the original instance.    *    * @param name The header name for which to append the values.    * @param value The value to append.    *    * @returns A clone of the HTTP headers object with the value appended to the given header.    */    append(name: string, value: string|string[]): HttpHeaders {     return this.clone({name, value, op: 'a'});   }   /**    * Sets or modifies a value for a given header in a clone of the original instance.    * If the header already exists, its value is replaced with the given value    * in the returned object.    *    * @param name The header name.    * @param value The value or values to set or override for the given header.    *    * @returns A clone of the HTTP headers object with the newly set header value.    */   set(name: string, value: string|string[]): HttpHeaders {     return this.clone({name, value, op: 's'});   }   /**    * Deletes values for a given header in a clone of the original instance.    *    * @param name The header name.    * @param value The value or values to delete for the given header.    *    * @returns A clone of the HTTP headers object with the given value deleted.    */   delete(name: string, value?: string|string[]): HttpHeaders {     return this.clone({name, value, op: 'd'});   }    private maybeSetNormalizedName(name: string, lcName: string): void {     if (!this.normalizedNames.has(lcName)) {       this.normalizedNames.set(lcName, name);     }   }    private init(): void {     if (!!this.lazyInit) {       if (this.lazyInit instanceof HttpHeaders) {         this.copyFrom(this.lazyInit);       } else {         this.lazyInit();       }       this.lazyInit = null;       if (!!this.lazyUpdate) {         this.lazyUpdate.forEach(update => this.applyUpdate(update));         this.lazyUpdate = null;       }     }   }    private copyFrom(other: HttpHeaders) {     other.init();     Array.from(other.headers.keys()).forEach(key => {       this.headers.set(key, other.headers.get(key)!);       this.normalizedNames.set(key, other.normalizedNames.get(key)!);     });   }    private clone(update: Update): HttpHeaders {     const clone = new HttpHeaders();     clone.lazyInit =         (!!this.lazyInit && this.lazyInit instanceof HttpHeaders) ? this.lazyInit : this;     clone.lazyUpdate = (this.lazyUpdate || []).concat([update]);     return clone;   }    private applyUpdate(update: Update): void {     const key = update.name.toLowerCase();     switch (update.op) {       case 'a':       case 's':         let value = update.value!;         if (typeof value === 'string') {           value = [value];         }         if (value.length === 0) {           return;         }         this.maybeSetNormalizedName(update.name, key);         const base = (update.op === 'a' ? this.headers.get(key) : undefined) || [];         base.push(...value);         this.headers.set(key, base);         break;       case 'd':         const toDelete = update.value as string | undefined;         if (!toDelete) {           this.headers.delete(key);           this.normalizedNames.delete(key);         } else {           let existing = this.headers.get(key);           if (!existing) {             return;           }           existing = existing.filter(value => toDelete.indexOf(value) === -1);           if (existing.length === 0) {             this.headers.delete(key);             this.normalizedNames.delete(key);           } else {             this.headers.set(key, existing);           }         }         break;     }   }    /**    * @internal    */   forEach(fn: (name: string, values: string[]) => void) {     this.init();     Array.from(this.normalizedNames.keys())         .forEach(key => fn(this.normalizedNames.get(key)!, this.headers.get(key)!));   } }  /**  * Verifies that the headers object has the right shape: the values  * must be either strings or arrays. Throws an error if an invalid  * header value is present.  */ function assertValidHeaders(headers: Record<string, unknown>):     asserts headers is Record<string, string|string[]> {   for (const [key, value] of Object.entries(headers)) {     if (typeof value !== 'string' && !Array.isArray(value)) {       throw new Error(           `Unexpected value of the \\`${key}\\` header provided. ` +           `Expecting either a string or an array, but got: \\`${value}\\`.`);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * A codec for encoding and decoding parameters in URLs.  *  * Used by `HttpParams`.  *  * @publicApi  **/ export interface HttpParameterCodec {   encodeKey(key: string): string;   encodeValue(value: string): string;    decodeKey(key: string): string;   decodeValue(value: string): string; }  /**  * Provides encoding and decoding of URL parameter and query-string values.  *  * Serializes and parses URL parameter keys and values to encode and decode them.  * If you pass URL query parameters without encoding,  * the query parameters can be misinterpreted at the receiving end.  *  *  * @publicApi  */ export class HttpUrlEncodingCodec implements HttpParameterCodec {   /**    * Encodes a key name for a URL parameter or query-string.    * @param key The key name.    * @returns The encoded key name.    */   encodeKey(key: string): string {     return standardEncoding(key);   }    /**    * Encodes the value of a URL parameter or query-string.    * @param value The value.    * @returns The encoded value.    */   encodeValue(value: string): string {     return standardEncoding(value);   }    /**    * Decodes an encoded URL parameter or query-string key.    * @param key The encoded key name.    * @returns The decoded key name.    */   decodeKey(key: string): string {     return decodeURIComponent(key);   }    /**    * Decodes an encoded URL parameter or query-string value.    * @param value The encoded value.    * @returns The decoded value.    */   decodeValue(value: string) {     return decodeURIComponent(value);   } }   function paramParser(rawParams: string, codec: HttpParameterCodec): Map<string, string[]> {   const map = new Map<string, string[]>();   if (rawParams.length > 0) {     // The `window.location.search` can be used while creating an instance of the `HttpParams` class     // (e.g. `new HttpParams({ fromString: window.location.search })`). The `window.location.search`     // may start with the `?` char, so we strip it if it's present.     const params: string[] = rawParams.replace(/^\\?/, '').split('&');     params.forEach((param: string) => {       const eqIdx = param.indexOf('=');       const [key, val]: string[] = eqIdx == -1 ?           [codec.decodeKey(param), ''] :           [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))];       const list = map.get(key) || [];       list.push(val);       map.set(key, list);     });   }   return map; }  /**  * Encode input string with standard encodeURIComponent and then un-encode specific characters.  */ const STANDARD_ENCODING_REGEX = /%(\\d[a-f0-9])/gi; const STANDARD_ENCODING_REPLACEMENTS: {[x: string]: string} = {   '40': '@',   '3A': ':',   '24': '$',   '2C': ',',   '3B': ';',   '3D': '=',   '3F': '?',   '2F': '/', };  function standardEncoding(v: string): string {   return encodeURIComponent(v).replace(       STANDARD_ENCODING_REGEX, (s, t) => STANDARD_ENCODING_REPLACEMENTS[t] ?? s); }  function valueToString(value: string|number|boolean): string {   return `${value}`; }  interface Update {   param: string;   value?: string|number|boolean;   op: 'a'|'d'|'s'; }  /**  * Options used to construct an `HttpParams` instance.  *  * @publicApi  */ export interface HttpParamsOptions {   /**    * String representation of the HTTP parameters in URL-query-string format.    * Mutually exclusive with `fromObject`.    */   fromString?: string;    /** Object map of the HTTP parameters. Mutually exclusive with `fromString`. */   fromObject?: {[param: string]: string|number|boolean|ReadonlyArray<string|number|boolean>};    /** Encoding codec used to parse and serialize the parameters. */   encoder?: HttpParameterCodec; }  /**  * An HTTP request/response body that represents serialized parameters,  * per the MIME type `application/x-www-form-urlencoded`.  *  * This class is immutable; all mutation operations return a new instance.  *  * @publicApi  */ export class HttpParams {   private map: Map<string, string[]>|null;   private encoder: HttpParameterCodec;   private updates: Update[]|null = null;   private cloneFrom: HttpParams|null = null;    constructor(options: HttpParamsOptions = {} as HttpParamsOptions) {     this.encoder = options.encoder || new HttpUrlEncodingCodec();     if (!!options.fromString) {       if (!!options.fromObject) {         throw new Error(`Cannot specify both fromString and fromObject.`);       }       this.map = paramParser(options.fromString, this.encoder);     } else if (!!options.fromObject) {       this.map = new Map<string, string[]>();       Object.keys(options.fromObject).forEach(key => {         const value = (options.fromObject as any)[key];         // convert the values to strings         const values = Array.isArray(value) ? value.map(valueToString) : [valueToString(value)];         this.map!.set(key, values);       });     } else {       this.map = null;     }   }    /**    * Reports whether the body includes one or more values for a given parameter.    * @param param The parameter name.    * @returns True if the parameter has one or more values,    * false if it has no value or is not present.    */   has(param: string): boolean {     this.init();     return this.map!.has(param);   }    /**    * Retrieves the first value for a parameter.    * @param param The parameter name.    * @returns The first value of the given parameter,    * or `null` if the parameter is not present.    */   get(param: string): string|null {     this.init();     const res = this.map!.get(param);     return !!res ? res[0] : null;   }    /**    * Retrieves all values for a  parameter.    * @param param The parameter name.    * @returns All values in a string array,    * or `null` if the parameter not present.    */   getAll(param: string): string[]|null {     this.init();     return this.map!.get(param) || null;   }    /**    * Retrieves all the parameters for this body.    * @returns The parameter names in a string array.    */   keys(): string[] {     this.init();     return Array.from(this.map!.keys());   }    /**    * Appends a new value to existing values for a parameter.    * @param param The parameter name.    * @param value The new value to add.    * @return A new body with the appended value.    */   append(param: string, value: string|number|boolean): HttpParams {     return this.clone({param, value, op: 'a'});   }    /**    * Constructs a new body with appended values for the given parameter name.    * @param params parameters and values    * @return A new body with the new value.    */   appendAll(params: {[param: string]: string|number|boolean|ReadonlyArray<string|number|boolean>}):       HttpParams {     const updates: Update[] = [];     Object.keys(params).forEach(param => {       const value = params[param];       if (Array.isArray(value)) {         value.forEach(_value => {           updates.push({param, value: _value, op: 'a'});         });       } else {         updates.push({param, value: value as (string | number | boolean), op: 'a'});       }     });     return this.clone(updates);   }    /**    * Replaces the value for a parameter.    * @param param The parameter name.    * @param value The new value.    * @return A new body with the new value.    */   set(param: string, value: string|number|boolean): HttpParams {     return this.clone({param, value, op: 's'});   }    /**    * Removes a given value or all values from a parameter.    * @param param The parameter name.    * @param value The value to remove, if provided.    * @return A new body with the given value removed, or with all values    * removed if no value is specified.    */   delete(param: string, value?: string|number|boolean): HttpParams {     return this.clone({param, value, op: 'd'});   }    /**    * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are    * separated by `&`s.    */   toString(): string {     this.init();     return this.keys()         .map(key => {           const eKey = this.encoder.encodeKey(key);           // `a: ['1']` produces `'a=1'`           // `b: []` produces `''`           // `c: ['1', '2']` produces `'c=1&c=2'`           return this.map!.get(key)!.map(value => eKey + '=' + this.encoder.encodeValue(value))               .join('&');         })         // filter out empty values because `b: []` produces `''`         // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't         .filter(param => param !== '')         .join('&');   }    private clone(update: Update|Update[]): HttpParams {     const clone = new HttpParams({encoder: this.encoder} as HttpParamsOptions);     clone.cloneFrom = this.cloneFrom || this;     clone.updates = (this.updates || []).concat(update);     return clone;   }    private init() {     if (this.map === null) {       this.map = new Map<string, string[]>();     }     if (this.cloneFrom !== null) {       this.cloneFrom.init();       this.cloneFrom.keys().forEach(key => this.map!.set(key, this.cloneFrom!.map!.get(key)!));       this.updates!.forEach(update => {         switch (update.op) {           case 'a':           case 's':             const base = (update.op === 'a' ? this.map!.get(update.param) : undefined) || [];             base.push(valueToString(update.value!));             this.map!.set(update.param, base);             break;           case 'd':             if (update.value !== undefined) {               let base = this.map!.get(update.param) || [];               const idx = base.indexOf(valueToString(update.value));               if (idx !== -1) {                 base.splice(idx, 1);               }               if (base.length > 0) {                 this.map!.set(update.param, base);               } else {                 this.map!.delete(update.param);               }             } else {               this.map!.delete(update.param);               break;             }         }       });       this.cloneFrom = this.updates = null;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * A token used to manipulate and access values stored in `HttpContext`.  *  * @publicApi  */ export class HttpContextToken<T> {   constructor(public readonly defaultValue: () => T) {} }  /**  * Http context stores arbitrary user defined values and ensures type safety without  * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash.  *  * This context is mutable and is shared between cloned requests unless explicitly specified.  *  * @usageNotes  *  * ### Usage Example  *  * ```typescript  * // inside cache.interceptors.ts  * export const IS_CACHE_ENABLED = new HttpContextToken<boolean>(() => false);  *  * export class CacheInterceptor implements HttpInterceptor {  *  *   intercept(req: HttpRequest<any>, delegate: HttpHandler): Observable<HttpEvent<any>> {  *     if (req.context.get(IS_CACHE_ENABLED) === true) {  *       return ...;  *     }  *     return delegate.handle(req);  *   }  * }  *  * // inside a service  *  * this.httpClient.get('/api/weather', {  *   context: new HttpContext().set(IS_CACHE_ENABLED, true)  * }).subscribe(...);  * ```  *  * @publicApi  */ export class HttpContext {   private readonly map = new Map<HttpContextToken<unknown>, unknown>();    /**    * Store a value in the context. If a value is already present it will be overwritten.    *    * @param token The reference to an instance of `HttpContextToken`.    * @param value The value to store.    *    * @returns A reference to itself for easy chaining.    */   set<T>(token: HttpContextToken<T>, value: T): HttpContext {     this.map.set(token, value);     return this;   }    /**    * Retrieve the value associated with the given token.    *    * @param token The reference to an instance of `HttpContextToken`.    *    * @returns The stored value or default if one is defined.    */   get<T>(token: HttpContextToken<T>): T {     if (!this.map.has(token)) {       this.map.set(token, token.defaultValue());     }     return this.map.get(token) as T;   }    /**    * Delete the value associated with the given token.    *    * @param token The reference to an instance of `HttpContextToken`.    *    * @returns A reference to itself for easy chaining.    */   delete(token: HttpContextToken<unknown>): HttpContext {     this.map.delete(token);     return this;   }    /**    * Checks for existence of a given token.    *    * @param token The reference to an instance of `HttpContextToken`.    *    * @returns True if the token exists, false otherwise.    */   has(token: HttpContextToken<unknown>): boolean {     return this.map.has(token);   }    /**    * @returns a list of tokens currently stored in the context.    */   keys(): IterableIterator<HttpContextToken<unknown>> {     return this.map.keys();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HttpContext} from './context'; import {HttpHeaders} from './headers'; import {HttpParams} from './params';   /**  * Construction interface for `HttpRequest`s.  *  * All values are optional and will override default values if provided.  */ interface HttpRequestInit {   headers?: HttpHeaders;   context?: HttpContext;   reportProgress?: boolean;   params?: HttpParams;   responseType?: 'arraybuffer'|'blob'|'json'|'text';   withCredentials?: boolean; }  /**  * Determine whether the given HTTP method may include a body.  */ function mightHaveBody(method: string): boolean {   switch (method) {     case 'DELETE':     case 'GET':     case 'HEAD':     case 'OPTIONS':     case 'JSONP':       return false;     default:       return true;   } }  /**  * Safely assert whether the given value is an ArrayBuffer.  *  * In some execution environments ArrayBuffer is not defined.  */ function isArrayBuffer(value: any): value is ArrayBuffer {   return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer; }  /**  * Safely assert whether the given value is a Blob.  *  * In some execution environments Blob is not defined.  */ function isBlob(value: any): value is Blob {   return typeof Blob !== 'undefined' && value instanceof Blob; }  /**  * Safely assert whether the given value is a FormData instance.  *  * In some execution environments FormData is not defined.  */ function isFormData(value: any): value is FormData {   return typeof FormData !== 'undefined' && value instanceof FormData; }  /**  * Safely assert whether the given value is a URLSearchParams instance.  *  * In some execution environments URLSearchParams is not defined.  */ function isUrlSearchParams(value: any): value is URLSearchParams {   return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams; }  /**  * An outgoing HTTP request with an optional typed body.  *  * `HttpRequest` represents an outgoing request, including URL, method,  * headers, body, and other request configuration options. Instances should be  * assumed to be immutable. To modify a `HttpRequest`, the `clone`  * method should be used.  *  * @publicApi  */ export class HttpRequest<T> {   /**    * The request body, or `null` if one isn't set.    *    * Bodies are not enforced to be immutable, as they can include a reference to any    * user-defined data type. However, interceptors should take care to preserve    * idempotence by treating them as such.    */   readonly body: T|null = null;    /**    * Outgoing headers for this request.    */   // TODO(issue/24571): remove '!'.   readonly headers!: HttpHeaders;    /**    * Shared and mutable context that can be used by interceptors    */   readonly context!: HttpContext;    /**    * Whether this request should be made in a way that exposes progress events.    *    * Progress events are expensive (change detection runs on each event) and so    * they should only be requested if the consumer intends to monitor them.    */   readonly reportProgress: boolean = false;    /**    * Whether this request should be sent with outgoing credentials (cookies).    */   readonly withCredentials: boolean = false;    /**    * The expected response type of the server.    *    * This is used to parse the response appropriately before returning it to    * the requestee.    */   readonly responseType: 'arraybuffer'|'blob'|'json'|'text' = 'json';    /**    * The outgoing HTTP request method.    */   readonly method: string;    /**    * Outgoing URL parameters.    *    * To pass a string representation of HTTP parameters in the URL-query-string format,    * the `HttpParamsOptions`' `fromString` may be used. For example:    *    * ```    * new HttpParams({fromString: 'angular=awesome'})    * ```    */   // TODO(issue/24571): remove '!'.   readonly params!: HttpParams;    /**    * The outgoing URL with all URL parameters set.    */   readonly urlWithParams: string;    constructor(method: 'DELETE'|'GET'|'HEAD'|'JSONP'|'OPTIONS', url: string, init?: {     headers?: HttpHeaders,     context?: HttpContext,     reportProgress?: boolean,     params?: HttpParams,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   });   constructor(method: 'POST'|'PUT'|'PATCH', url: string, body: T|null, init?: {     headers?: HttpHeaders,     context?: HttpContext,     reportProgress?: boolean,     params?: HttpParams,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   });   constructor(method: string, url: string, body: T|null, init?: {     headers?: HttpHeaders,     context?: HttpContext,     reportProgress?: boolean,     params?: HttpParams,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   });   constructor(       method: string, readonly url: string, third?: T|{         headers?: HttpHeaders,         context?: HttpContext,         reportProgress?: boolean,         params?: HttpParams,         responseType?: 'arraybuffer'|'blob'|'json'|'text',         withCredentials?: boolean,       }|null,       fourth?: {         headers?: HttpHeaders,         context?: HttpContext,         reportProgress?: boolean,         params?: HttpParams,         responseType?: 'arraybuffer'|'blob'|'json'|'text',         withCredentials?: boolean,       }) {     this.method = method.toUpperCase();     // Next, need to figure out which argument holds the HttpRequestInit     // options, if any.     let options: HttpRequestInit|undefined;      // Check whether a body argument is expected. The only valid way to omit     // the body argument is to use a known no-body method like GET.     if (mightHaveBody(this.method) || !!fourth) {       // Body is the third argument, options are the fourth.       this.body = (third !== undefined) ? third as T : null;       options = fourth;     } else {       // No body required, options are the third argument. The body stays null.       options = third as HttpRequestInit;     }      // If options have been passed, interpret them.     if (options) {       // Normalize reportProgress and withCredentials.       this.reportProgress = !!options.reportProgress;       this.withCredentials = !!options.withCredentials;        // Override default response type of 'json' if one is provided.       if (!!options.responseType) {         this.responseType = options.responseType;       }        // Override headers if they're provided.       if (!!options.headers) {         this.headers = options.headers;       }        if (!!options.context) {         this.context = options.context;       }        if (!!options.params) {         this.params = options.params;       }     }      // If no headers have been passed in, construct a new HttpHeaders instance.     if (!this.headers) {       this.headers = new HttpHeaders();     }      // If no context have been passed in, construct a new HttpContext instance.     if (!this.context) {       this.context = new HttpContext();     }      // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.     if (!this.params) {       this.params = new HttpParams();       this.urlWithParams = url;     } else {       // Encode the parameters to a string in preparation for inclusion in the URL.       const params = this.params.toString();       if (params.length === 0) {         // No parameters, the visible URL is just the URL given at creation time.         this.urlWithParams = url;       } else {         // Does the URL already have query parameters? Look for '?'.         const qIdx = url.indexOf('?');         // There are 3 cases to handle:         // 1) No existing parameters -> append '?' followed by params.         // 2) '?' exists and is followed by existing query string ->         //    append '&' followed by params.         // 3) '?' exists at the end of the url -> append params directly.         // This basically amounts to determining the character, if any, with         // which to join the URL and parameters.         const sep: string = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');         this.urlWithParams = url + sep + params;       }     }   }    /**    * Transform the free-form body into a serialized format suitable for    * transmission to the server.    */   serializeBody(): ArrayBuffer|Blob|FormData|string|null {     // If no body is present, no need to serialize it.     if (this.body === null) {       return null;     }     // Check whether the body is already in a serialized form. If so,     // it can just be returned directly.     if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||         isUrlSearchParams(this.body) || typeof this.body === 'string') {       return this.body;     }     // Check whether the body is an instance of HttpUrlEncodedParams.     if (this.body instanceof HttpParams) {       return this.body.toString();     }     // Check whether the body is an object or array, and serialize with JSON if so.     if (typeof this.body === 'object' || typeof this.body === 'boolean' ||         Array.isArray(this.body)) {       return JSON.stringify(this.body);     }     // Fall back on toString() for everything else.     return (this.body as any).toString();   }    /**    * Examine the body and attempt to infer an appropriate MIME type    * for it.    *    * If no such type can be inferred, this method will return `null`.    */   detectContentTypeHeader(): string|null {     // An empty body has no content type.     if (this.body === null) {       return null;     }     // FormData bodies rely on the browser's content type assignment.     if (isFormData(this.body)) {       return null;     }     // Blobs usually have their own content type. If it doesn't, then     // no type can be inferred.     if (isBlob(this.body)) {       return this.body.type || null;     }     // Array buffers have unknown contents and thus no type can be inferred.     if (isArrayBuffer(this.body)) {       return null;     }     // Technically, strings could be a form of JSON data, but it's safe enough     // to assume they're plain strings.     if (typeof this.body === 'string') {       return 'text/plain';     }     // `HttpUrlEncodedParams` has its own content-type.     if (this.body instanceof HttpParams) {       return 'application/x-www-form-urlencoded;charset=UTF-8';     }     // Arrays, objects, boolean and numbers will be encoded as JSON.     if (typeof this.body === 'object' || typeof this.body === 'number' ||         typeof this.body === 'boolean') {       return 'application/json';     }     // No type could be inferred.     return null;   }    clone(): HttpRequest<T>;   clone(update: {     headers?: HttpHeaders,     context?: HttpContext,     reportProgress?: boolean,     params?: HttpParams,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,     body?: T|null,     method?: string,     url?: string,     setHeaders?: {[name: string]: string|string[]},     setParams?: {[param: string]: string},   }): HttpRequest<T>;   clone<V>(update: {     headers?: HttpHeaders,     context?: HttpContext,     reportProgress?: boolean,     params?: HttpParams,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,     body?: V|null,     method?: string,     url?: string,     setHeaders?: {[name: string]: string|string[]},     setParams?: {[param: string]: string},   }): HttpRequest<V>;   clone(update: {     headers?: HttpHeaders,     context?: HttpContext,     reportProgress?: boolean,     params?: HttpParams,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,     body?: any|null,     method?: string,     url?: string,     setHeaders?: {[name: string]: string|string[]},     setParams?: {[param: string]: string};   } = {}): HttpRequest<any> {     // For method, url, and responseType, take the current value unless     // it is overridden in the update hash.     const method = update.method || this.method;     const url = update.url || this.url;     const responseType = update.responseType || this.responseType;      // The body is somewhat special - a `null` value in update.body means     // whatever current body is present is being overridden with an empty     // body, whereas an `undefined` value in update.body implies no     // override.     const body = (update.body !== undefined) ? update.body : this.body;      // Carefully handle the boolean options to differentiate between     // `false` and `undefined` in the update args.     const withCredentials =         (update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;     const reportProgress =         (update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;      // Headers and params may be appended to if `setHeaders` or     // `setParams` are used.     let headers = update.headers || this.headers;     let params = update.params || this.params;      // Pass on context if needed     const context = update.context ?? this.context;      // Check whether the caller has asked to add headers.     if (update.setHeaders !== undefined) {       // Set every requested header.       headers =           Object.keys(update.setHeaders)               .reduce((headers, name) => headers.set(name, update.setHeaders![name]), headers);     }      // Check whether the caller has asked to set params.     if (update.setParams) {       // Set every requested param.       params = Object.keys(update.setParams)                    .reduce((params, param) => params.set(param, update.setParams![param]), params);     }      // Finally, construct the new HttpRequest using the pieces from above.     return new HttpRequest(method, url, body, {       params,       headers,       context,       reportProgress,       responseType,       withCredentials,     });   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HttpHeaders} from './headers';  /**  * Type enumeration for the different kinds of `HttpEvent`.  *  * @publicApi  */ export enum HttpEventType {   /**    * The request was sent out over the wire.    */   Sent,    /**    * An upload progress event was received.    */   UploadProgress,    /**    * The response status code and headers were received.    */   ResponseHeader,    /**    * A download progress event was received.    */   DownloadProgress,    /**    * The full response including the body was received.    */   Response,    /**    * A custom event from an interceptor or a backend.    */   User, }  /**  * Base interface for progress events.  *  * @publicApi  */ export interface HttpProgressEvent {   /**    * Progress event type is either upload or download.    */   type: HttpEventType.DownloadProgress|HttpEventType.UploadProgress;    /**    * Number of bytes uploaded or downloaded.    */   loaded: number;    /**    * Total number of bytes to upload or download. Depending on the request or    * response, this may not be computable and thus may not be present.    */   total?: number; }  /**  * A download progress event.  *  * @publicApi  */ export interface HttpDownloadProgressEvent extends HttpProgressEvent {   type: HttpEventType.DownloadProgress;    /**    * The partial response body as downloaded so far.    *    * Only present if the responseType was `text`.    */   partialText?: string; }  /**  * An upload progress event.  *  * @publicApi  */ export interface HttpUploadProgressEvent extends HttpProgressEvent {   type: HttpEventType.UploadProgress; }  /**  * An event indicating that the request was sent to the server. Useful  * when a request may be retried multiple times, to distinguish between  * retries on the final event stream.  *  * @publicApi  */ export interface HttpSentEvent {   type: HttpEventType.Sent; }  /**  * A user-defined event.  *  * Grouping all custom events under this type ensures they will be handled  * and forwarded by all implementations of interceptors.  *  * @publicApi  */ export interface HttpUserEvent<T> {   type: HttpEventType.User; }  /**  * An error that represents a failed attempt to JSON.parse text coming back  * from the server.  *  * It bundles the Error object with the actual response body that failed to parse.  *  *  */ export interface HttpJsonParseError {   error: Error;   text: string; }  /**  * Union type for all possible events on the response stream.  *  * Typed according to the expected type of the response.  *  * @publicApi  */ export type HttpEvent<T> =     HttpSentEvent|HttpHeaderResponse|HttpResponse<T>|HttpProgressEvent|HttpUserEvent<T>;  /**  * Base class for both `HttpResponse` and `HttpHeaderResponse`.  *  * @publicApi  */ export abstract class HttpResponseBase {   /**    * All response headers.    */   readonly headers: HttpHeaders;    /**    * Response status code.    */   readonly status: number;    /**    * Textual description of response status code, defaults to OK.    *    * Do not depend on this.    */   readonly statusText: string;    /**    * URL of the resource retrieved, or null if not available.    */   readonly url: string|null;    /**    * Whether the status code falls in the 2xx range.    */   readonly ok: boolean;    /**    * Type of the response, narrowed to either the full response or the header.    */   // TODO(issue/24571): remove '!'.   readonly type!: HttpEventType.Response|HttpEventType.ResponseHeader;    /**    * Super-constructor for all responses.    *    * The single parameter accepted is an initialization hash. Any properties    * of the response passed there will override the default values.    */   constructor(       init: {         headers?: HttpHeaders,         status?: number,         statusText?: string,         url?: string,       },       defaultStatus: number = HttpStatusCode.Ok, defaultStatusText: string = 'OK') {     // If the hash has values passed, use them to initialize the response.     // Otherwise use the default values.     this.headers = init.headers || new HttpHeaders();     this.status = init.status !== undefined ? init.status : defaultStatus;     this.statusText = init.statusText || defaultStatusText;     this.url = init.url || null;      // Cache the ok value to avoid defining a getter.     this.ok = this.status >= 200 && this.status < 300;   } }  /**  * A partial HTTP response which only includes the status and header data,  * but no response body.  *  * `HttpHeaderResponse` is a `HttpEvent` available on the response  * event stream, only when progress events are requested.  *  * @publicApi  */ export class HttpHeaderResponse extends HttpResponseBase {   /**    * Create a new `HttpHeaderResponse` with the given parameters.    */   constructor(init: {     headers?: HttpHeaders,     status?: number,     statusText?: string,     url?: string,   } = {}) {     super(init);   }    override readonly type: HttpEventType.ResponseHeader = HttpEventType.ResponseHeader;    /**    * Copy this `HttpHeaderResponse`, overriding its contents with the    * given parameter hash.    */   clone(update: {headers?: HttpHeaders; status?: number; statusText?: string; url?: string;} = {}):       HttpHeaderResponse {     // Perform a straightforward initialization of the new HttpHeaderResponse,     // overriding the current parameters with new ones if given.     return new HttpHeaderResponse({       headers: update.headers || this.headers,       status: update.status !== undefined ? update.status : this.status,       statusText: update.statusText || this.statusText,       url: update.url || this.url || undefined,     });   } }  /**  * A full HTTP response, including a typed response body (which may be `null`  * if one was not returned).  *  * `HttpResponse` is a `HttpEvent` available on the response event  * stream.  *  * @publicApi  */ export class HttpResponse<T> extends HttpResponseBase {   /**    * The response body, or `null` if one was not returned.    */   readonly body: T|null;    /**    * Construct a new `HttpResponse`.    */   constructor(init: {     body?: T|null,     headers?: HttpHeaders;     status?: number;     statusText?: string;     url?: string;   } = {}) {     super(init);     this.body = init.body !== undefined ? init.body : null;   }    override readonly type: HttpEventType.Response = HttpEventType.Response;    clone(): HttpResponse<T>;   clone(update: {headers?: HttpHeaders; status?: number; statusText?: string; url?: string;}):       HttpResponse<T>;   clone<V>(update: {     body?: V|null,     headers?: HttpHeaders;     status?: number;     statusText?: string;     url?: string;   }): HttpResponse<V>;   clone(update: {     body?: any|null;     headers?: HttpHeaders;     status?: number;     statusText?: string;     url?: string;   } = {}): HttpResponse<any> {     return new HttpResponse<any>({       body: (update.body !== undefined) ? update.body : this.body,       headers: update.headers || this.headers,       status: (update.status !== undefined) ? update.status : this.status,       statusText: update.statusText || this.statusText,       url: update.url || this.url || undefined,     });   } }  /**  * A response that represents an error or failure, either from a  * non-successful HTTP status, an error while executing the request,  * or some other failure which occurred during the parsing of the response.  *  * Any error returned on the `Observable` response stream will be  * wrapped in an `HttpErrorResponse` to provide additional context about  * the state of the HTTP layer when the error occurred. The error property  * will contain either a wrapped Error object or the error response returned  * from the server.  *  * @publicApi  */ export class HttpErrorResponse extends HttpResponseBase implements Error {   readonly name = 'HttpErrorResponse';   readonly message: string;   readonly error: any|null;    /**    * Errors are never okay, even when the status code is in the 2xx success range.    */   override readonly ok = false;    constructor(init: {     error?: any;     headers?: HttpHeaders;     status?: number;     statusText?: string;     url?: string;   }) {     // Initialize with a default status of 0 / Unknown Error.     super(init, 0, 'Unknown Error');      // If the response was successful, then this was a parse error. Otherwise, it was     // a protocol-level failure of some sort. Either the request failed in transit     // or the server returned an unsuccessful status code.     if (this.status >= 200 && this.status < 300) {       this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`;     } else {       this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${           init.statusText}`;     }     this.error = init.error || null;   } }  /**  * Http status codes.  * As per https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml  * @publicApi  */ export const enum HttpStatusCode {   Continue = 100,   SwitchingProtocols = 101,   Processing = 102,   EarlyHints = 103,    Ok = 200,   Created = 201,   Accepted = 202,   NonAuthoritativeInformation = 203,   NoContent = 204,   ResetContent = 205,   PartialContent = 206,   MultiStatus = 207,   AlreadyReported = 208,   ImUsed = 226,    MultipleChoices = 300,   MovedPermanently = 301,   Found = 302,   SeeOther = 303,   NotModified = 304,   UseProxy = 305,   Unused = 306,   TemporaryRedirect = 307,   PermanentRedirect = 308,    BadRequest = 400,   Unauthorized = 401,   PaymentRequired = 402,   Forbidden = 403,   NotFound = 404,   MethodNotAllowed = 405,   NotAcceptable = 406,   ProxyAuthenticationRequired = 407,   RequestTimeout = 408,   Conflict = 409,   Gone = 410,   LengthRequired = 411,   PreconditionFailed = 412,   PayloadTooLarge = 413,   UriTooLong = 414,   UnsupportedMediaType = 415,   RangeNotSatisfiable = 416,   ExpectationFailed = 417,   ImATeapot = 418,   MisdirectedRequest = 421,   UnprocessableEntity = 422,   Locked = 423,   FailedDependency = 424,   TooEarly = 425,   UpgradeRequired = 426,   PreconditionRequired = 428,   TooManyRequests = 429,   RequestHeaderFieldsTooLarge = 431,   UnavailableForLegalReasons = 451,    InternalServerError = 500,   NotImplemented = 501,   BadGateway = 502,   ServiceUnavailable = 503,   GatewayTimeout = 504,   HttpVersionNotSupported = 505,   VariantAlsoNegotiates = 506,   InsufficientStorage = 507,   LoopDetected = 508,   NotExtended = 510,   NetworkAuthenticationRequired = 511 } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable} from '@angular/core'; import {Observable, of} from 'rxjs'; import {concatMap, filter, map} from 'rxjs/operators';  import {HttpHandler} from './backend'; import {HttpContext} from './context'; import {HttpHeaders} from './headers'; import {HttpParams, HttpParamsOptions} from './params'; import {HttpRequest} from './request'; import {HttpEvent, HttpResponse} from './response';   /**  * Constructs an instance of `HttpRequestOptions<T>` from a source `HttpMethodOptions` and  * the given `body`. This function clones the object and adds the body.  *  * Note that the `responseType` *options* value is a String that identifies the  * single data type of the response.  * A single overload version of the method handles each response type.  * The value of `responseType` cannot be a union, as the combined signature could imply.  *  */ function addBody<T>(     options: {       headers?: HttpHeaders|{[header: string]: string | string[]},       context?: HttpContext,       observe?: 'body'|'events'|'response',       params?: HttpParams|             {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},       reportProgress?: boolean,       responseType?: 'arraybuffer'|'blob'|'json'|'text',       withCredentials?: boolean,     },     body: T|null): any {   return {     body,     headers: options.headers,     context: options.context,     observe: options.observe,     params: options.params,     reportProgress: options.reportProgress,     responseType: options.responseType,     withCredentials: options.withCredentials,   }; }  /**  * Performs HTTP requests.  * This service is available as an injectable class, with methods to perform HTTP requests.  * Each request method has multiple signatures, and the return type varies based on  * the signature that is called (mainly the values of `observe` and `responseType`).  *  * Note that the `responseType` *options* value is a String that identifies the  * single data type of the response.  * A single overload version of the method handles each response type.  * The value of `responseType` cannot be a union, as the combined signature could imply.   *  * @usageNotes  * Sample HTTP requests for the [Tour of Heroes](/tutorial/tour-of-heroes/toh-pt0) application.  *  * ### HTTP Request Example  *  * ```  *  // GET heroes whose name contains search term  * searchHeroes(term: string): observable<Hero[]>{  *  *  const params = new HttpParams({fromString: 'name=term'});  *    return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});  * }  * ```  *  * Alternatively, the parameter string can be used without invoking HttpParams  * by directly joining to the URL.  * ```  * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});  * ```  *  *  * ### JSONP Example  * ```  * requestJsonp(url, callback = 'callback') {  *  return this.httpClient.jsonp(this.heroesURL, callback);  * }  * ```  *  * ### PATCH Example  * ```  * // PATCH one of the heroes' name  * patchHero (id: number, heroName: string): Observable<{}> {  * const url = `${this.heroesUrl}/${id}`;   // PATCH api/heroes/42  *  return this.httpClient.patch(url, {name: heroName}, httpOptions)  *    .pipe(catchError(this.handleError('patchHero')));  * }  * ```  *  * @see [HTTP Guide](guide/http)  * @see [HTTP Request](api/common/http/HttpRequest)  *  * @publicApi  */ @Injectable() export class HttpClient {   constructor(private handler: HttpHandler) {}    /**    * Sends an `HttpRequest` and returns a stream of `HttpEvent`s.    *    * @return An `Observable` of the response, with the response body as a stream of `HttpEvent`s.    */   request<R>(req: HttpRequest<any>): Observable<HttpEvent<R>>;    /**    * Constructs a request that interprets the body as an `ArrayBuffer` and returns the response in    * an `ArrayBuffer`.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    *    * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<ArrayBuffer>;    /**    * Constructs a request that interprets the body as a blob and returns    * the response as a blob.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type `Blob`.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<Blob>;    /**    * Constructs a request that interprets the body as a text string and    * returns a string value.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type string.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<string>;    /**    * Constructs a request that interprets the body as an `ArrayBuffer` and returns the    * the full event stream.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body as an array of `HttpEvent`s for    * the request.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},           observe: 'events',     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs a request that interprets the body as a `Blob` and returns    * the full event stream.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body of type `Blob`.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs a request which interprets the body as a text string and returns the full event    * stream.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body of type string.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpEvent<string>>;    /**    * Constructs a request which interprets the body as a JavaScript object and returns the full    * event stream.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the  request.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body of type `Object`.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     reportProgress?: boolean, observe: 'events',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<any>>;    /**    * Constructs a request which interprets the body as a JavaScript object and returns the full    * event stream.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body of type `R`.    */   request<R>(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     reportProgress?: boolean, observe: 'events',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<R>>;    /**    * Constructs a request which interprets the body as an `ArrayBuffer`    * and returns the full `HttpResponse`.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with the response body as an `ArrayBuffer`.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs a request which interprets the body as a `Blob` and returns the full `HttpResponse`.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with the response body of type `Blob`.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs a request which interprets the body as a text stream and returns the full    * `HttpResponse`.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the HTTP response, with the response body of type string.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpResponse<string>>;    /**    * Constructs a request which interprets the body as a JavaScript object and returns the full    * `HttpResponse`.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the full `HttpResponse`,    * with the response body of type `Object`.    */   request(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     reportProgress?: boolean, observe: 'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<Object>>;    /**    * Constructs a request which interprets the body as a JavaScript object and returns    * the full `HttpResponse` with the response body in the requested type.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return  An `Observable` of the full `HttpResponse`, with the response body of type `R`.    */   request<R>(method: string, url: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     reportProgress?: boolean, observe: 'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<R>>;    /**    * Constructs a request which interprets the body as a JavaScript object and returns the full    * `HttpResponse` as a JavaScript object.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with the response body of type `Object`.    */   request(method: string, url: string, options?: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     responseType?: 'json',     reportProgress?: boolean,     withCredentials?: boolean,   }): Observable<Object>;    /**    * Constructs a request which interprets the body as a JavaScript object    * with the response body of the requested type.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with the response body of type `R`.    */   request<R>(method: string, url: string, options?: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     responseType?: 'json',     reportProgress?: boolean,     withCredentials?: boolean,   }): Observable<R>;    /**    * Constructs a request where response type and requested observable are not known statically.    *    * @param method  The HTTP method.    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the requested response, with body of type `any`.    */   request(method: string, url: string, options?: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     observe?: 'body'|'events'|'response',     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   }): Observable<any>;    /**    * Constructs an observable for a generic HTTP request that, when subscribed,    * fires the request through the chain of registered interceptors and on to the    * server.    *    * You can pass an `HttpRequest` directly as the only parameter. In this case,    * the call returns an observable of the raw `HttpEvent` stream.    *    * Alternatively you can pass an HTTP method as the first parameter,    * a URL string as the second, and an options hash containing the request body as the third.    * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the    * type of returned observable.    *   * The `responseType` value determines how a successful response body is parsed.    *   * If `responseType` is the default `json`, you can pass a type interface for the resulting    * object as a type parameter to the call.    *    * The `observe` value determines the return type, according to what you are interested in    * observing.    *   * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including    * progress events by default.    *   * An `observe` value of response returns an observable of `HttpResponse<T>`,    * where the `T` parameter depends on the `responseType` and any optionally provided type    * parameter.    *   * An `observe` value of body returns an observable of `<T>` with the same `T` body type.    *    */   request(first: string|HttpRequest<any>, url?: string, options: {     body?: any,     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   } = {}): Observable<any> {     let req: HttpRequest<any>;     // First, check whether the primary argument is an instance of `HttpRequest`.     if (first instanceof HttpRequest) {       // It is. The other arguments must be undefined (per the signatures) and can be       // ignored.       req = first;     } else {       // It's a string, so it represents a URL. Construct a request based on it,       // and incorporate the remaining arguments (assuming `GET` unless a method is       // provided.        // Figure out the headers.       let headers: HttpHeaders|undefined = undefined;       if (options.headers instanceof HttpHeaders) {         headers = options.headers;       } else {         headers = new HttpHeaders(options.headers);       }        // Sort out parameters.       let params: HttpParams|undefined = undefined;       if (!!options.params) {         if (options.params instanceof HttpParams) {           params = options.params;         } else {           params = new HttpParams({fromObject: options.params} as HttpParamsOptions);         }       }        // Construct the request.       req = new HttpRequest(first, url!, (options.body !== undefined ? options.body : null), {         headers,         context: options.context,         params,         reportProgress: options.reportProgress,         // By default, JSON is assumed to be returned for all calls.         responseType: options.responseType || 'json',         withCredentials: options.withCredentials,       });     }      // Start with an Observable.of() the initial request, and run the handler (which     // includes all interceptors) inside a concatMap(). This way, the handler runs     // inside an Observable chain, which causes interceptors to be re-run on every     // subscription (this also makes retries re-run the handler, including interceptors).     const events$: Observable<HttpEvent<any>> =         of(req).pipe(concatMap((req: HttpRequest<any>) => this.handler.handle(req)));      // If coming via the API signature which accepts a previously constructed HttpRequest,     // the only option is to get the event stream. Otherwise, return the event stream if     // that is what was requested.     if (first instanceof HttpRequest || options.observe === 'events') {       return events$;     }      // The requested stream contains either the full response or the body. In either     // case, the first step is to filter the event stream to extract a stream of     // responses(s).     const res$: Observable<HttpResponse<any>> = <Observable<HttpResponse<any>>>events$.pipe(         filter((event: HttpEvent<any>) => event instanceof HttpResponse));      // Decide which stream to return.     switch (options.observe || 'body') {       case 'body':         // The requested stream is the body. Map the response stream to the response         // body. This could be done more simply, but a misbehaving interceptor might         // transform the response body into a different format and ignore the requested         // responseType. Guard against this by validating that the response is of the         // requested type.         switch (req.responseType) {           case 'arraybuffer':             return res$.pipe(map((res: HttpResponse<any>) => {               // Validate that the body is an ArrayBuffer.               if (res.body !== null && !(res.body instanceof ArrayBuffer)) {                 throw new Error('Response is not an ArrayBuffer.');               }               return res.body;             }));           case 'blob':             return res$.pipe(map((res: HttpResponse<any>) => {               // Validate that the body is a Blob.               if (res.body !== null && !(res.body instanceof Blob)) {                 throw new Error('Response is not a Blob.');               }               return res.body;             }));           case 'text':             return res$.pipe(map((res: HttpResponse<any>) => {               // Validate that the body is a string.               if (res.body !== null && typeof res.body !== 'string') {                 throw new Error('Response is not a string.');               }               return res.body;             }));           case 'json':           default:             // No validation needed for JSON responses, as they can be of any type.             return res$.pipe(map((res: HttpResponse<any>) => res.body));         }       case 'response':         // The response stream was requested directly, so return it.         return res$;       default:         // Guard against new future observe types being added.         throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);     }   }    /**    * Constructs a `DELETE` request that interprets the body as an `ArrayBuffer`    *  and returns the response as an `ArrayBuffer`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return  An `Observable` of the response body as an `ArrayBuffer`.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,     body?: any|null,   }): Observable<ArrayBuffer>;     /**    * Constructs a `DELETE` request that interprets the body as a `Blob` and returns    * the response as a `Blob`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response body as a `Blob`.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,     body?: any|null,   }): Observable<Blob>;    /**    * Constructs a `DELETE` request that interprets the body as a text string and returns    * a string.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type string.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,     body?: any|null,   }): Observable<string>;    /**    * Constructs a `DELETE` request that interprets the body as an `ArrayBuffer`    *  and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with response body as an `ArrayBuffer`.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,     body?: any|null   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs a `DELETE` request that interprets the body as a `Blob`    *  and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all the `HttpEvent`s for the request, with the response body as a    * `Blob`.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs a `DELETE` request that interprets the body as a text string    * and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request, with the response    * body of type string.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpEvent<string>>;    /**    * Constructs a `DELETE` request that interprets the body as JSON    * and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request, with response body of    * type `Object`.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpEvent<Object>>;    /**    * Constructs a `DELETE`request that interprets the body as JSON    * and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all the `HttpEvent`s for the request, with a response    * body in the requested type.    */   delete<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | (string | number | boolean)[]},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpEvent<T>>;    /**    * Constructs a `DELETE` request that interprets the body as an `ArrayBuffer` and returns    *  the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the full `HttpResponse`, with the response body as an `ArrayBuffer`.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs a `DELETE` request that interprets the body as a `Blob` and returns the full    * `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with the response body of type `Blob`.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs a `DELETE` request that interprets the body as a text stream and    *  returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the full `HttpResponse`, with the response body of type string.    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpResponse<string>>;    /**    * Constructs a `DELETE` request the interprets the body as a JavaScript object and returns    * the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with the response body of type `Object`.    *    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpResponse<Object>>;    /**    * Constructs a `DELETE` request that interprets the body as JSON    * and returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with the response body of the requested type.    */   delete<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,     body?: any|null,   }): Observable<HttpResponse<T>>;    /**    * Constructs a `DELETE` request that interprets the body as JSON and    * returns the response body as an object parsed from JSON.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type `Object`.    */   delete(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,     body?: any|null,   }): Observable<Object>;    /**    * Constructs a DELETE request that interprets the body as JSON and returns    * the response in a given type.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with response body in the requested type.    */   delete<T>(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,     body?: any|null,   }): Observable<T>;    /**    * Constructs an observable that, when subscribed, causes the configured    * `DELETE` request to execute on the server. See the individual overloads for    * details on the return type.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    */   delete(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,     body?: any|null,   } = {}): Observable<any> {     return this.request<any>('DELETE', url, options as any);   }     /**    * Constructs a `GET` request that interprets the body as an `ArrayBuffer` and returns the    * response in an `ArrayBuffer`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<ArrayBuffer>;    /**    * Constructs a `GET` request that interprets the body as a `Blob`    * and returns the response as a `Blob`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body as a `Blob`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<Blob>;    /**    * Constructs a `GET` request that interprets the body as a text string    * and returns the response as a string value.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type string.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<string>;    /**    * Constructs a `GET` request that interprets the body as an `ArrayBuffer` and returns    *  the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request, with the response    * body as an `ArrayBuffer`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs a `GET` request that interprets the body as a `Blob` and    * returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body as a `Blob`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs a `GET` request that interprets the body as a text string and returns    * the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type string.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpEvent<string>>;    /**    * Constructs a `GET` request that interprets the body as JSON    * and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type `Object`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<Object>>;    /**    * Constructs a `GET` request that interprets the body as JSON and returns the full    * event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with a response body in the requested type.    */   get<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<T>>;    /**    * Constructs a `GET` request that interprets the body as an `ArrayBuffer` and    * returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as an `ArrayBuffer`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs a `GET` request that interprets the body as a `Blob` and    * returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as a `Blob`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs a `GET` request that interprets the body as a text stream and    * returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body of type string.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpResponse<string>>;    /**    * Constructs a `GET` request that interprets the body as JSON and    * returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the full `HttpResponse`,    * with the response body of type `Object`.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<Object>>;    /**    * Constructs a `GET` request that interprets the body as JSON and    * returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the full `HttpResponse` for the request,    * with a response body in the requested type.    */   get<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<T>>;    /**    * Constructs a `GET` request that interprets the body as JSON and    * returns the response body as an object parsed from JSON.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    *    * @return An `Observable` of the response body as a JavaScript object.    */   get(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<Object>;    /**    * Constructs a `GET` request that interprets the body as JSON and returns    * the response body in a given type.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse`, with a response body in the requested type.    */   get<T>(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<T>;    /**    * Constructs an observable that, when subscribed, causes the configured    * `GET` request to execute on the server. See the individual overloads for    * details on the return type.    */   get(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   } = {}): Observable<any> {     return this.request<any>('GET', url, options as any);   }     /**    * Constructs a `HEAD` request that interprets the body as an `ArrayBuffer` and    * returns the response as an `ArrayBuffer`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<ArrayBuffer>;    /**    * Constructs a `HEAD` request that interprets the body as a `Blob` and returns    * the response as a `Blob`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return  An `Observable` of the response, with the response body as a `Blob`.    */    head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<Blob>;    /**    * Constructs a `HEAD` request that interprets the body as a text string and returns the response    * as a string value.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body of type string.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<string>;    /**    * Constructs a `HEAD` request that interprets the body as an  `ArrayBuffer`    *  and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body as an `ArrayBuffer`.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs a `HEAD` request that interprets the body as a `Blob` and    * returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body as a `Blob`.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs a `HEAD` request that interprets the body as a text string    * and returns the full event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request, with the response body of type    * string.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpEvent<string>>;    /**    * Constructs a `HEAD` request that interprets the body as JSON    * and returns the full HTTP event stream.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of all `HttpEvent`s for the request, with a response body of    * type `Object`.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<Object>>;    /**    * Constructs a `HEAD` request that interprets the body as JSON and    * returns the full event stream.    *    * @return An `Observable` of all the `HttpEvent`s for the request,    * with a response body in the requested type.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    */   head<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<T>>;    /**    * Constructs a `HEAD` request that interprets the body as an `ArrayBuffer`    *  and returns the full HTTP response.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as an `ArrayBuffer`.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs a `HEAD` request that interprets the body as a `Blob` and returns    * the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as a blob.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs a `HEAD` request that interprets the body as text stream    * and returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body of type string.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpResponse<string>>;    /**    * Constructs a `HEAD` request that interprets the body as JSON and    * returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body of type `Object`.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<Object>>;    /**    * Constructs a `HEAD` request that interprets the body as JSON    * and returns the full `HttpResponse`.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with a response body of the requested type.    */   head<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<T>>;    /**     * Constructs a `HEAD` request that interprets the body as JSON and    * returns the response body as an object parsed from JSON.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the response, with the response body as an object parsed from JSON.    */   head(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<Object>;    /**    * Constructs a `HEAD` request that interprets the body as JSON and returns    * the response in a given type.    *    * @param url     The endpoint URL.    * @param options The HTTP options to send with the request.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with a response body of the given type.    */   head<T>(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<T>;    /**    * Constructs an observable that, when subscribed, causes the configured    * `HEAD` request to execute on the server. The `HEAD` method returns    * meta information about the resource without transferring the    * resource itself. See the individual overloads for    * details on the return type.    */   head(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   } = {}): Observable<any> {     return this.request<any>('HEAD', url, options as any);   }    /**    * Constructs a `JSONP` request for the given URL and name of the callback parameter.    *    * @param url The resource URL.    * @param callbackParam The callback function name.    *    * @return An `Observable` of the response object, with response body as an object.    */   jsonp(url: string, callbackParam: string): Observable<Object>;    /**    * Constructs a `JSONP` request for the given URL and name of the callback parameter.    *    * @param url The resource URL.    * @param callbackParam The callback function name.    *    * You must install a suitable interceptor, such as one provided by `HttpClientJsonpModule`.    * If no such interceptor is reached,    * then the `JSONP` request can be rejected by the configured backend.    *    * @return An `Observable` of the response object, with response body in the requested type.    */   jsonp<T>(url: string, callbackParam: string): Observable<T>;    /**    * Constructs an `Observable` that, when subscribed, causes a request with the special method    * `JSONP` to be dispatched via the interceptor pipeline.    * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain    * API endpoints that don't support newer,    * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.    * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the    * requests even if the API endpoint is not located on the same domain (origin) as the client-side    * application making the request.    * The endpoint API must support JSONP callback for JSONP requests to work.    * The resource API returns the JSON response wrapped in a callback function.    * You can pass the callback function name as one of the query parameters.    * Note that JSONP requests can only be used with `GET` requests.    *    * @param url The resource URL.    * @param callbackParam The callback function name.    *    */   jsonp<T>(url: string, callbackParam: string): Observable<T> {     return this.request<any>('JSONP', url, {       params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),       observe: 'body',       responseType: 'json',     });   }    /**    * Constructs an `OPTIONS` request that interprets the body as an    * `ArrayBuffer` and returns the response as an `ArrayBuffer`.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<ArrayBuffer>;    /**    * Constructs an `OPTIONS` request that interprets the body as a `Blob` and returns    * the response as a `Blob`.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body as a `Blob`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<Blob>;    /**    * Constructs an `OPTIONS` request that interprets the body as a text string and    * returns a string value.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body of type string.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<string>;    /**    * Constructs an `OPTIONS` request that interprets the body as an `ArrayBuffer`    *  and returns the full event stream.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return  An `Observable` of all `HttpEvent`s for the request,    * with the response body as an `ArrayBuffer`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs an `OPTIONS` request that interprets the body as a `Blob` and    * returns the full event stream.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body as a `Blob`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs an `OPTIONS` request that interprets the body as a text string    * and returns the full event stream.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request,    * with the response body of type string.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpEvent<string>>;    /**    * Constructs an `OPTIONS` request that interprets the body as JSON    * and returns the full event stream.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request with the response    * body of type `Object`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<Object>>;    /**    * Constructs an `OPTIONS` request that interprets the body as JSON and    * returns the full event stream.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request,    * with a response body in the requested type.    */   options<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<T>>;    /**    * Constructs an `OPTIONS` request that interprets the body as an `ArrayBuffer`    *  and returns the full HTTP response.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as an `ArrayBuffer`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs an `OPTIONS` request that interprets the body as a `Blob`    *  and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as a `Blob`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs an `OPTIONS` request that interprets the body as text stream    * and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body of type string.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpResponse<string>>;    /**    * Constructs an `OPTIONS` request that interprets the body as JSON    * and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body of type `Object`.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<Object>>;    /**    * Constructs an `OPTIONS` request that interprets the body as JSON and    * returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with a response body in the requested type.    */   options<T>(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<T>>;    /**     * Constructs an `OPTIONS` request that interprets the body as JSON and returns the    * response body as an object parsed from JSON.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body as an object parsed from JSON.    */   options(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<Object>;    /**    * Constructs an `OPTIONS` request that interprets the body as JSON and returns the    * response in a given type.    *    * @param url The endpoint URL.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse`, with a response body of the given type.    */   options<T>(url: string, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<T>;    /**    * Constructs an `Observable` that, when subscribed, causes the configured    * `OPTIONS` request to execute on the server. This method allows the client    * to determine the supported HTTP methods and other capabilities of an endpoint,    * without implying a resource action. See the individual overloads for    * details on the return type.    */   options(url: string, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   } = {}): Observable<any> {     return this.request<any>('OPTIONS', url, options as any);   }    /**    * Constructs a `PATCH` request that interprets the body as an `ArrayBuffer` and returns    * the response as an `ArrayBuffer`.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<ArrayBuffer>;    /**    * Constructs a `PATCH` request that interprets the body as a `Blob` and returns the response    * as a `Blob`.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body as a `Blob`.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<Blob>;    /**    * Constructs a `PATCH` request that interprets the body as a text string and    * returns the response as a string value.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of the response, with a response body of type string.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<string>;    /**    * Constructs a `PATCH` request that interprets the body as an `ArrayBuffer` and    *  returns the full event stream.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request,    * with the response body as an `ArrayBuffer`.    */    patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs a `PATCH` request that interprets the body as a `Blob`    *  and returns the full event stream.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request, with the    * response body as `Blob`.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs a `PATCH` request that interprets the body as a text string and    * returns the full event stream.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request, with a    * response body of type string.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpEvent<string>>;    /**    * Constructs a `PATCH` request that interprets the body as JSON    * and returns the full event stream.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request,    * with a response body of type `Object`.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<Object>>;    /**    * Constructs a `PATCH` request that interprets the body as JSON    * and returns the full event stream.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of all the `HttpEvent`s for the request,    * with a response body in the requested type.    */   patch<T>(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<T>>;    /**    * Constructs a `PATCH` request that interprets the body as an `ArrayBuffer`    *  and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return  An `Observable` of the `HttpResponse` for the request,    * with the response body as an `ArrayBuffer`.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs a `PATCH` request that interprets the body as a `Blob` and returns the full    * `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return  An `Observable` of the `HttpResponse` for the request,    * with the response body as a `Blob`.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs a `PATCH` request that interprets the body as a text stream and returns the    * full `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return  An `Observable` of the `HttpResponse` for the request,    * with a response body of type string.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpResponse<string>>;    /**    * Constructs a `PATCH` request that interprets the body as JSON    * and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with a response body in the requested type.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<Object>>;    /**    * Constructs a `PATCH` request that interprets the body as JSON    * and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of the `HttpResponse` for the request,    * with a response body in the given type.    */   patch<T>(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<T>>;    /**     * Constructs a `PATCH` request that interprets the body as JSON and    * returns the response body as an object parsed from JSON.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body as an object parsed from JSON.    */   patch(url: string, body: any|null, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<Object>;    /**    * Constructs a `PATCH` request that interprets the body as JSON    * and returns the response in a given type.    *    * @param url The endpoint URL.    * @param body The resources to edit.    * @param options HTTP options.    *    * @return  An `Observable` of the `HttpResponse` for the request,    * with a response body in the given type.    */   patch<T>(url: string, body: any|null, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<T>;    /**    * Constructs an observable that, when subscribed, causes the configured    * `PATCH` request to execute on the server. See the individual overloads for    * details on the return type.    */   patch(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   } = {}): Observable<any> {     return this.request<any>('PATCH', url, addBody(options, body));   }    /**    * Constructs a `POST` request that interprets the body as an `ArrayBuffer` and returns    * an `ArrayBuffer`.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options.    *    * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<ArrayBuffer>;    /**    * Constructs a `POST` request that interprets the body as a `Blob` and returns the    * response as a `Blob`.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of the response, with the response body as a `Blob`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<Blob>;    /**    * Constructs a `POST` request that interprets the body as a text string and    * returns the response as a string value.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of the response, with a response body of type string.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<string>;    /**    * Constructs a `POST` request that interprets the body as an `ArrayBuffer` and    * returns the full event stream.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body as an `ArrayBuffer`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs a `POST` request that interprets the body as a `Blob`    * and returns the response in an observable of the full event stream.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request, with the response body as `Blob`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs a `POST` request that interprets the body as a text string and returns the full    * event stream.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return  An `Observable` of all `HttpEvent`s for the request,    * with a response body of type string.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpEvent<string>>;    /**    * Constructs a POST request that interprets the body as JSON and returns the full    * event stream.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return  An `Observable` of all `HttpEvent`s for the request,    * with a response body of type `Object`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<Object>>;    /**    * Constructs a POST request that interprets the body as JSON and returns the full    * event stream.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with a response body in the requested type.    */   post<T>(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<T>>;    /**    * Constructs a POST request that interprets the body as an `ArrayBuffer`    *  and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return  An `Observable` of the `HttpResponse` for the request, with the response body as an    * `ArrayBuffer`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs a `POST` request that interprets the body as a `Blob` and returns the full    * `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as a `Blob`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs a `POST` request that interprets the body as a text stream and returns    * the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return  An `Observable` of the `HttpResponse` for the request,    * with a response body of type string.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpResponse<string>>;    /**    * Constructs a `POST` request that interprets the body as JSON    * and returns the full `HttpResponse`.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request, with a response body of type    * `Object`.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<Object>>;    /**    * Constructs a `POST` request that interprets the body as JSON and returns the    * full `HttpResponse`.    *    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request, with a response body in the    * requested type.    */   post<T>(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<T>>;    /**    * Constructs a `POST` request that interprets the body as JSON    * and returns the response body as an object parsed from JSON.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return An `Observable` of the response, with the response body as an object parsed from JSON.    */   post(url: string, body: any|null, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<Object>;    /**    * Constructs a `POST` request that interprets the body as JSON    * and returns an observable of the response.    *    * @param url The endpoint URL.    * @param body The content to replace with.    * @param options HTTP options    *    * @return  An `Observable` of the `HttpResponse` for the request, with a response body in the    * requested type.    */   post<T>(url: string, body: any|null, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<T>;    /**    * Constructs an observable that, when subscribed, causes the configured    * `POST` request to execute on the server. The server responds with the location of    * the replaced resource. See the individual overloads for    * details on the return type.    */   post(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   } = {}): Observable<any> {     return this.request<any>('POST', url, addBody(options, body));   }    /**    * Constructs a `PUT` request that interprets the body as an `ArrayBuffer` and returns the    * response as an `ArrayBuffer`.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<ArrayBuffer>;    /**    * Constructs a `PUT` request that interprets the body as a `Blob` and returns    * the response as a `Blob`.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the response, with the response body as a `Blob`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<Blob>;    /**    * Constructs a `PUT` request that interprets the body as a text string and    * returns the response as a string value.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the response, with a response body of type string.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<string>;    /**    * Constructs a `PUT` request that interprets the body as an `ArrayBuffer` and    * returns the full event stream.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body as an `ArrayBuffer`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpEvent<ArrayBuffer>>;    /**    * Constructs a `PUT` request that interprets the body as a `Blob` and returns the full event    * stream.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with the response body as a `Blob`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpEvent<Blob>>;    /**    * Constructs a `PUT` request that interprets the body as a text string and returns the full event    * stream.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request, with a response body    * of type string.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpEvent<string>>;    /**    * Constructs a `PUT` request that interprets the body as JSON and returns the full    * event stream.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request, with a response body of    * type `Object`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<Object>>;    /**    * Constructs a `PUT` request that interprets the body as JSON and returns the    * full event stream.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of all `HttpEvent`s for the request,    * with a response body in the requested type.    */   put<T>(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpEvent<T>>;    /**    * Constructs a `PUT` request that interprets the body as an    * `ArrayBuffer` and returns an observable of the full HTTP response.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request, with the response body as an    * `ArrayBuffer`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'arraybuffer',     withCredentials?: boolean,   }): Observable<HttpResponse<ArrayBuffer>>;    /**    * Constructs a `PUT` request that interprets the body as a `Blob` and returns the    * full HTTP response.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request,    * with the response body as a `Blob`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'blob',     withCredentials?: boolean,   }): Observable<HttpResponse<Blob>>;    /**    * Constructs a `PUT` request that interprets the body as a text stream and returns the    * full HTTP response.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request, with a response body of type    * string.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean, responseType: 'text',     withCredentials?: boolean,   }): Observable<HttpResponse<string>>;    /**    * Constructs a `PUT` request that interprets the body as JSON and returns the full    * HTTP response.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request, with a response body    * of type 'Object`.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<Object>>;    /**    * Constructs a `PUT` request that interprets the body as an instance of the requested type and    * returns the full HTTP response.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the `HttpResponse` for the request,    * with a response body in the requested type.    */   put<T>(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',     context?: HttpContext,     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<HttpResponse<T>>;    /**    * Constructs a `PUT` request that interprets the body as JSON    * and returns an observable of JavaScript object.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the response as a JavaScript object.    */   put(url: string, body: any|null, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<Object>;    /**    * Constructs a `PUT` request that interprets the body as an instance of the requested type    * and returns an observable of the requested type.    *    * @param url The endpoint URL.    * @param body The resources to add/update.    * @param options HTTP options    *    * @return An `Observable` of the requested type.    */   put<T>(url: string, body: any|null, options?: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'json',     withCredentials?: boolean,   }): Observable<T>;    /**    * Constructs an observable that, when subscribed, causes the configured    * `PUT` request to execute on the server. The `PUT` method replaces an existing resource    * with a new set of values.    * See the individual overloads for details on the return type.    */   put(url: string, body: any|null, options: {     headers?: HttpHeaders|{[header: string]: string | string[]},     context?: HttpContext,     observe?: 'body'|'events'|'response',     params?: HttpParams|           {[param: string]: string | number | boolean | ReadonlyArray<string|number|boolean>},     reportProgress?: boolean,     responseType?: 'arraybuffer'|'blob'|'json'|'text',     withCredentials?: boolean,   } = {}): Observable<any> {     return this.request<any>('PUT', url, addBody(options, body));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, inject, Injectable, InjectionToken} from '@angular/core'; import {Observable} from 'rxjs';  import {HttpBackend, HttpHandler} from './backend'; import {HttpRequest} from './request'; import {HttpEvent} from './response';  /**  * Intercepts and handles an `HttpRequest` or `HttpResponse`.  *  * Most interceptors transform the outgoing request before passing it to the  * next interceptor in the chain, by calling `next.handle(transformedReq)`.  * An interceptor may transform the  * response event stream as well, by applying additional RxJS operators on the stream  * returned by `next.handle()`.  *  * More rarely, an interceptor may handle the request entirely,  * and compose a new event stream instead of invoking `next.handle()`. This is an  * acceptable behavior, but keep in mind that further interceptors will be skipped entirely.  *  * It is also rare but valid for an interceptor to return multiple responses on the  * event stream for a single request.  *  * @publicApi  *  * @see [HTTP Guide](guide/http#intercepting-requests-and-responses)  *  * @usageNotes  *  * To use the same instance of `HttpInterceptors` for the entire app, import the `HttpClientModule`  * only in your `AppModule`, and add the interceptors to the root application injector.  * If you import `HttpClientModule` multiple times across different modules (for example, in lazy  * loading modules), each import creates a new copy of the `HttpClientModule`, which overwrites the  * interceptors provided in the root module.  */ export interface HttpInterceptor {   /**    * Identifies and handles a given HTTP request.    * @param req The outgoing request object to handle.    * @param next The next interceptor in the chain, or the backend    * if no interceptors remain in the chain.    * @returns An observable of the event stream.    */   intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>; }  /**  * Represents the next interceptor in an interceptor chain, or the real backend if there are no  * further interceptors.  *  * Most interceptors will delegate to this function, and either modify the outgoing request or the  * response when it arrives. Within the scope of the current request, however, this function may be  * called any number of times, for any number of downstream requests. Such downstream requests need  * not be to the same URL or even the same origin as the current request. It is also valid to not  * call the downstream handler at all, and process the current request entirely within the  * interceptor.  *  * This function should only be called within the scope of the request that's currently being  * intercepted. Once that request is complete, this downstream handler function should not be  * called.  *  * @publicApi  *  * @see [HTTP Guide](guide/http#intercepting-requests-and-responses)  */ export type HttpHandlerFn = (req: HttpRequest<unknown>) => Observable<HttpEvent<unknown>>;  /**  * An interceptor for HTTP requests made via `HttpClient`.  *  * `HttpInterceptorFn`s are middleware functions which `HttpClient` calls when a request is made.  * These functions have the opportunity to modify the outgoing request or any response that comes  * back, as well as block, redirect, or otherwise change the request or response semantics.  *  * An `HttpHandlerFn` representing the next interceptor (or the backend which will make a real HTTP  * request) is provided. Most interceptors will delegate to this function, but that is not required  * (see `HttpHandlerFn` for more details).  *  * `HttpInterceptorFn`s have access to `inject()` via the `EnvironmentInjector` from which they were  * configured.  */ export type HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn) =>     Observable<HttpEvent<unknown>>;  /**  * Function which invokes an HTTP interceptor chain.  *  * Each interceptor in the interceptor chain is turned into a `ChainedInterceptorFn` which closes  * over the rest of the chain (represented by another `ChainedInterceptorFn`). The last such  * function in the chain will instead delegate to the `finalHandlerFn`, which is passed down when  * the chain is invoked.  *  * This pattern allows for a chain of many interceptors to be composed and wrapped in a single  * `HttpInterceptorFn`, which is a useful abstraction for including different kinds of interceptors  * (e.g. legacy class-based interceptors) in the same chain.  */ type ChainedInterceptorFn<RequestT> = (req: HttpRequest<RequestT>, finalHandlerFn: HttpHandlerFn) =>     Observable<HttpEvent<RequestT>>;  function interceptorChainEndFn(     req: HttpRequest<any>, finalHandlerFn: HttpHandlerFn): Observable<HttpEvent<any>> {   return finalHandlerFn(req); }  /**  * Constructs a `ChainedInterceptorFn` which adapts a legacy `HttpInterceptor` to the  * `ChainedInterceptorFn` interface.  */ function adaptLegacyInterceptorToChain(     chainTailFn: ChainedInterceptorFn<any>,     interceptor: HttpInterceptor): ChainedInterceptorFn<any> {   return (initialRequest, finalHandlerFn) => interceptor.intercept(initialRequest, {     handle: (downstreamRequest) => chainTailFn(downstreamRequest, finalHandlerFn),   }); }  /**  * Constructs a `ChainedInterceptorFn` which wraps and invokes a functional interceptor in the given  * injector.  */ function chainedInterceptorFn(     chainTailFn: ChainedInterceptorFn<unknown>, interceptorFn: HttpInterceptorFn,     injector: EnvironmentInjector): ChainedInterceptorFn<unknown> {   // clang-format off   return (initialRequest, finalHandlerFn) => injector.runInContext(() =>     interceptorFn(       initialRequest,       downstreamRequest => chainTailFn(downstreamRequest, finalHandlerFn)     )   );   // clang-format on }  /**  * A multi-provider token that represents the array of registered  * `HttpInterceptor` objects.  *  * @publicApi  */ export const HTTP_INTERCEPTORS = new InjectionToken<HttpInterceptor[]>('HTTP_INTERCEPTORS');  /**  * A multi-provided token of `HttpInterceptorFn`s.  */ export const HTTP_INTERCEPTOR_FNS = new InjectionToken<HttpInterceptorFn[]>('HTTP_INTERCEPTOR_FNS');  /**  * Creates an `HttpInterceptorFn` which lazily initializes an interceptor chain from the legacy  * class-based interceptors and runs the request through it.  */ export function legacyInterceptorFnFactory(): HttpInterceptorFn {   let chain: ChainedInterceptorFn<any>|null = null;    return (req, handler) => {     if (chain === null) {       const interceptors = inject(HTTP_INTERCEPTORS, {optional: true}) ?? [];       // Note: interceptors are wrapped right-to-left so that final execution order is       // left-to-right. That is, if `interceptors` is the array `[a, b, c]`, we want to       // produce a chain that is conceptually `c(b(a(end)))`, which we build from the inside       // out.       chain = interceptors.reduceRight(           adaptLegacyInterceptorToChain, interceptorChainEndFn as ChainedInterceptorFn<any>);     }      return chain(req, handler);   }; }  @Injectable() export class HttpInterceptorHandler extends HttpHandler {   private chain: ChainedInterceptorFn<unknown>|null = null;    constructor(private backend: HttpBackend, private injector: EnvironmentInjector) {     super();   }    override handle(initialRequest: HttpRequest<any>): Observable<HttpEvent<any>> {     if (this.chain === null) {       const dedupedInterceptorFns = Array.from(new Set(this.injector.get(HTTP_INTERCEPTOR_FNS)));        // Note: interceptors are wrapped right-to-left so that final execution order is       // left-to-right. That is, if `dedupedInterceptorFns` is the array `[a, b, c]`, we want to       // produce a chain that is conceptually `c(b(a(end)))`, which we build from the inside       // out.       this.chain = dedupedInterceptorFns.reduceRight(           (nextSequencedFn, interceptorFn) =>               chainedInterceptorFn(nextSequencedFn, interceptorFn, this.injector),           interceptorChainEndFn as ChainedInterceptorFn<unknown>);     }     return this.chain(initialRequest, downstreamRequest => this.backend.handle(downstreamRequest));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {EnvironmentInjector, Inject, inject, Injectable} from '@angular/core'; import {Observable, Observer} from 'rxjs';  import {HttpBackend, HttpHandler} from './backend'; import {HttpHandlerFn} from './interceptor'; import {HttpRequest} from './request'; import {HttpErrorResponse, HttpEvent, HttpEventType, HttpResponse, HttpStatusCode} from './response';   // Every request made through JSONP needs a callback name that's unique across the // whole page. Each request is assigned an id and the callback name is constructed // from that. The next id to be assigned is tracked in a global variable here that // is shared among all applications on the page. let nextRequestId: number = 0;  /**  * When a pending <script> is unsubscribed we'll move it to this document, so it won't be  * executed.  */ let foreignDocument: Document|undefined;  // Error text given when a JSONP script is injected, but doesn't invoke the callback // passed in its URL. export const JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';  // Error text given when a request is passed to the JsonpClientBackend that doesn't // have a request method JSONP. export const JSONP_ERR_WRONG_METHOD = 'JSONP requests must use JSONP request method.'; export const JSONP_ERR_WRONG_RESPONSE_TYPE = 'JSONP requests must use Json response type.';  // Error text given when a request is passed to the JsonpClientBackend that has // headers set export const JSONP_ERR_HEADERS_NOT_SUPPORTED = 'JSONP requests do not support headers.';  /**  * DI token/abstract type representing a map of JSONP callbacks.  *  * In the browser, this should always be the `window` object.  *  *  */ export abstract class JsonpCallbackContext {   [key: string]: (data: any) => void; }  /**  * Factory function that determines where to store JSONP callbacks.  *  * Ordinarily JSONP callbacks are stored on the `window` object, but this may not exist  * in test environments. In that case, callbacks are stored on an anonymous object instead.  *  *  */ export function jsonpCallbackContext(): Object {   if (typeof window === 'object') {     return window;   }   return {}; }  /**  * Processes an `HttpRequest` with the JSONP method,  * by performing JSONP style requests.  * @see `HttpHandler`  * @see `HttpXhrBackend`  *  * @publicApi  */ @Injectable() export class JsonpClientBackend implements HttpBackend {   /**    * A resolved promise that can be used to schedule microtasks in the event handlers.    */   private readonly resolvedPromise = Promise.resolve();    constructor(private callbackMap: JsonpCallbackContext, @Inject(DOCUMENT) private document: any) {}    /**    * Get the name of the next callback method, by incrementing the global `nextRequestId`.    */   private nextCallback(): string {     return `ng_jsonp_callback_${nextRequestId++}`;   }    /**    * Processes a JSONP request and returns an event stream of the results.    * @param req The request object.    * @returns An observable of the response events.    *    */   handle(req: HttpRequest<never>): Observable<HttpEvent<any>> {     // Firstly, check both the method and response type. If either doesn't match     // then the request was improperly routed here and cannot be handled.     if (req.method !== 'JSONP') {       throw new Error(JSONP_ERR_WRONG_METHOD);     } else if (req.responseType !== 'json') {       throw new Error(JSONP_ERR_WRONG_RESPONSE_TYPE);     }      // Check the request headers. JSONP doesn't support headers and     // cannot set any that were supplied.     if (req.headers.keys().length > 0) {       throw new Error(JSONP_ERR_HEADERS_NOT_SUPPORTED);     }      // Everything else happens inside the Observable boundary.     return new Observable<HttpEvent<any>>((observer: Observer<HttpEvent<any>>) => {       // The first step to make a request is to generate the callback name, and replace the       // callback placeholder in the URL with the name. Care has to be taken here to ensure       // a trailing &, if matched, gets inserted back into the URL in the correct place.       const callback = this.nextCallback();       const url = req.urlWithParams.replace(/=JSONP_CALLBACK(&|$)/, `=${callback}$1`);        // Construct the <script> tag and point it at the URL.       const node = this.document.createElement('script');       node.src = url;        // A JSONP request requires waiting for multiple callbacks. These variables       // are closed over and track state across those callbacks.        // The response object, if one has been received, or null otherwise.       let body: any|null = null;        // Whether the response callback has been called.       let finished: boolean = false;        // Set the response callback in this.callbackMap (which will be the window       // object in the browser. The script being loaded via the <script> tag will       // eventually call this callback.       this.callbackMap[callback] = (data?: any) => {         // Data has been received from the JSONP script. Firstly, delete this callback.         delete this.callbackMap[callback];          // Set state to indicate data was received.         body = data;         finished = true;       };        // cleanup() is a utility closure that removes the <script> from the page and       // the response callback from the window. This logic is used in both the       // success, error, and cancellation paths, so it's extracted out for convenience.       const cleanup = () => {         // Remove the <script> tag if it's still on the page.         if (node.parentNode) {           node.parentNode.removeChild(node);         }          // Remove the response callback from the callbackMap (window object in the         // browser).         delete this.callbackMap[callback];       };        // onLoad() is the success callback which runs after the response callback       // if the JSONP script loads successfully. The event itself is unimportant.       // If something went wrong, onLoad() may run without the response callback       // having been invoked.       const onLoad = (event: Event) => {         // We wrap it in an extra Promise, to ensure the microtask         // is scheduled after the loaded endpoint has executed any potential microtask itself,         // which is not guaranteed in Internet Explorer and EdgeHTML. See issue #39496         this.resolvedPromise.then(() => {           // Cleanup the page.           cleanup();            // Check whether the response callback has run.           if (!finished) {             // It hasn't, something went wrong with the request. Return an error via             // the Observable error path. All JSONP errors have status 0.             observer.error(new HttpErrorResponse({               url,               status: 0,               statusText: 'JSONP Error',               error: new Error(JSONP_ERR_NO_CALLBACK),             }));             return;           }            // Success. body either contains the response body or null if none was           // returned.           observer.next(new HttpResponse({             body,             status: HttpStatusCode.Ok,             statusText: 'OK',             url,           }));            // Complete the stream, the response is over.           observer.complete();         });       };        // onError() is the error callback, which runs if the script returned generates       // a Javascript error. It emits the error via the Observable error channel as       // a HttpErrorResponse.       const onError: any = (error: Error) => {         cleanup();          // Wrap the error in a HttpErrorResponse.         observer.error(new HttpErrorResponse({           error,           status: 0,           statusText: 'JSONP Error',           url,         }));       };        // Subscribe to both the success (load) and error events on the <script> tag,       // and add it to the page.       node.addEventListener('load', onLoad);       node.addEventListener('error', onError);       this.document.body.appendChild(node);        // The request has now been successfully sent.       observer.next({type: HttpEventType.Sent});        // Cancellation handler.       return () => {         if (!finished) {           this.removeListeners(node);         }          // And finally, clean up the page.         cleanup();       };     });   }    private removeListeners(script: HTMLScriptElement): void {     // Issue #34818     // Changing <script>'s ownerDocument will prevent it from execution.     // https://html.spec.whatwg.org/multipage/scripting.html#execute-the-script-block     if (!foreignDocument) {       foreignDocument = (this.document.implementation as DOMImplementation).createHTMLDocument();     }     foreignDocument.adoptNode(script);   } }  /**  * Identifies requests with the method JSONP and shifts them to the `JsonpClientBackend`.  */ export function jsonpInterceptorFn(     req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {   if (req.method === 'JSONP') {     return inject(JsonpClientBackend).handle(req as HttpRequest<never>);   }    // Fall through for normal HTTP requests.   return next(req); }  /**  * Identifies requests with the method JSONP and  * shifts them to the `JsonpClientBackend`.  *  * @see `HttpInterceptor`  *  * @publicApi  */ @Injectable() export class JsonpInterceptor {   constructor(private injector: EnvironmentInjector) {}    /**    * Identifies and handles a given JSONP request.    * @param initialRequest The outgoing request object to handle.    * @param next The next interceptor in the chain, or the backend    * if no interceptors remain in the chain.    * @returns An observable of the event stream.    */   intercept(initialRequest: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {     return this.injector.runInContext(         () => jsonpInterceptorFn(             initialRequest, downstreamRequest => next.handle(downstreamRequest)));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {XhrFactory} from '@angular/common'; import {Injectable} from '@angular/core'; import {Observable, Observer} from 'rxjs';  import {HttpBackend} from './backend'; import {HttpHeaders} from './headers'; import {HttpRequest} from './request'; import {HttpDownloadProgressEvent, HttpErrorResponse, HttpEvent, HttpEventType, HttpHeaderResponse, HttpJsonParseError, HttpResponse, HttpStatusCode, HttpUploadProgressEvent} from './response';   const XSSI_PREFIX = /^\\)\\]\\}',?\ /;  /**  * Determine an appropriate URL for the response, by checking either  * XMLHttpRequest.responseURL or the X-Request-URL header.  */ function getResponseUrl(xhr: any): string|null {   if ('responseURL' in xhr && xhr.responseURL) {     return xhr.responseURL;   }   if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {     return xhr.getResponseHeader('X-Request-URL');   }   return null; }  /**  * Uses `XMLHttpRequest` to send requests to a backend server.  * @see `HttpHandler`  * @see `JsonpClientBackend`  *  * @publicApi  */ @Injectable() export class HttpXhrBackend implements HttpBackend {   constructor(private xhrFactory: XhrFactory) {}    /**    * Processes a request and returns a stream of response events.    * @param req The request object.    * @returns An observable of the response events.    */   handle(req: HttpRequest<any>): Observable<HttpEvent<any>> {     // Quick check to give a better error message when a user attempts to use     // HttpClient.jsonp() without installing the HttpClientJsonpModule     if (req.method === 'JSONP') {       throw new Error(           `Attempted to construct Jsonp request without HttpClientJsonpModule installed.`);     }      // Everything happens on Observable subscription.     return new Observable((observer: Observer<HttpEvent<any>>) => {       // Start by setting up the XHR object with request method, URL, and withCredentials flag.       const xhr = this.xhrFactory.build();       xhr.open(req.method, req.urlWithParams);       if (!!req.withCredentials) {         xhr.withCredentials = true;       }        // Add all the requested headers.       req.headers.forEach((name, values) => xhr.setRequestHeader(name, values.join(',')));        // Add an Accept header if one isn't present already.       if (!req.headers.has('Accept')) {         xhr.setRequestHeader('Accept', 'application/json, text/plain, */*');       }        // Auto-detect the Content-Type header if one isn't present already.       if (!req.headers.has('Content-Type')) {         const detectedType = req.detectContentTypeHeader();         // Sometimes Content-Type detection fails.         if (detectedType !== null) {           xhr.setRequestHeader('Content-Type', detectedType);         }       }        // Set the responseType if one was requested.       if (req.responseType) {         const responseType = req.responseType.toLowerCase();          // JSON responses need to be processed as text. This is because if the server         // returns an XSSI-prefixed JSON response, the browser will fail to parse it,         // xhr.response will be null, and xhr.responseText cannot be accessed to         // retrieve the prefixed JSON data in order to strip the prefix. Thus, all JSON         // is parsed by first requesting text and then applying JSON.parse.         xhr.responseType = ((responseType !== 'json') ? responseType : 'text') as any;       }        // Serialize the request body if one is present. If not, this will be set to null.       const reqBody = req.serializeBody();        // If progress events are enabled, response headers will be delivered       // in two events - the HttpHeaderResponse event and the full HttpResponse       // event. However, since response headers don't change in between these       // two events, it doesn't make sense to parse them twice. So headerResponse       // caches the data extracted from the response whenever it's first parsed,       // to ensure parsing isn't duplicated.       let headerResponse: HttpHeaderResponse|null = null;        // partialFromXhr extracts the HttpHeaderResponse from the current XMLHttpRequest       // state, and memoizes it into headerResponse.       const partialFromXhr = (): HttpHeaderResponse => {         if (headerResponse !== null) {           return headerResponse;         }          const statusText = xhr.statusText || 'OK';          // Parse headers from XMLHttpRequest - this step is lazy.         const headers = new HttpHeaders(xhr.getAllResponseHeaders());          // Read the response URL from the XMLHttpResponse instance and fall back on the         // request URL.         const url = getResponseUrl(xhr) || req.url;          // Construct the HttpHeaderResponse and memoize it.         headerResponse = new HttpHeaderResponse({headers, status: xhr.status, statusText, url});         return headerResponse;       };        // Next, a few closures are defined for the various events which XMLHttpRequest can       // emit. This allows them to be unregistered as event listeners later.        // First up is the load event, which represents a response being fully available.       const onLoad = () => {         // Read response state from the memoized partial data.         let {headers, status, statusText, url} = partialFromXhr();          // The body will be read out if present.         let body: any|null = null;          if (status !== HttpStatusCode.NoContent) {           // Use XMLHttpRequest.response if set, responseText otherwise.           body = (typeof xhr.response === 'undefined') ? xhr.responseText : xhr.response;         }          // Normalize another potential bug (this one comes from CORS).         if (status === 0) {           status = !!body ? HttpStatusCode.Ok : 0;         }          // ok determines whether the response will be transmitted on the event or         // error channel. Unsuccessful status codes (not 2xx) will always be errors,         // but a successful status code can still result in an error if the user         // asked for JSON data and the body cannot be parsed as such.         let ok = status >= 200 && status < 300;          // Check whether the body needs to be parsed as JSON (in many cases the browser         // will have done that already).         if (req.responseType === 'json' && typeof body === 'string') {           // Save the original body, before attempting XSSI prefix stripping.           const originalBody = body;           body = body.replace(XSSI_PREFIX, '');           try {             // Attempt the parse. If it fails, a parse error should be delivered to the user.             body = body !== '' ? JSON.parse(body) : null;           } catch (error) {             // Since the JSON.parse failed, it's reasonable to assume this might not have been a             // JSON response. Restore the original body (including any XSSI prefix) to deliver             // a better error response.             body = originalBody;              // If this was an error request to begin with, leave it as a string, it probably             // just isn't JSON. Otherwise, deliver the parsing error to the user.             if (ok) {               // Even though the response status was 2xx, this is still an error.               ok = false;               // The parse error contains the text of the body that failed to parse.               body = {error, text: body} as HttpJsonParseError;             }           }         }          if (ok) {           // A successful response is delivered on the event stream.           observer.next(new HttpResponse({             body,             headers,             status,             statusText,             url: url || undefined,           }));           // The full body has been received and delivered, no further events           // are possible. This request is complete.           observer.complete();         } else {           // An unsuccessful request is delivered on the error channel.           observer.error(new HttpErrorResponse({             // The error in this case is the response body (error from the server).             error: body,             headers,             status,             statusText,             url: url || undefined,           }));         }       };        // The onError callback is called when something goes wrong at the network level.       // Connection timeout, DNS error, offline, etc. These are actual errors, and are       // transmitted on the error channel.       const onError = (error: ProgressEvent) => {         const {url} = partialFromXhr();         const res = new HttpErrorResponse({           error,           status: xhr.status || 0,           statusText: xhr.statusText || 'Unknown Error',           url: url || undefined,         });         observer.error(res);       };        // The sentHeaders flag tracks whether the HttpResponseHeaders event       // has been sent on the stream. This is necessary to track if progress       // is enabled since the event will be sent on only the first download       // progress event.       let sentHeaders = false;        // The download progress event handler, which is only registered if       // progress events are enabled.       const onDownProgress = (event: ProgressEvent) => {         // Send the HttpResponseHeaders event if it hasn't been sent already.         if (!sentHeaders) {           observer.next(partialFromXhr());           sentHeaders = true;         }          // Start building the download progress event to deliver on the response         // event stream.         let progressEvent: HttpDownloadProgressEvent = {           type: HttpEventType.DownloadProgress,           loaded: event.loaded,         };          // Set the total number of bytes in the event if it's available.         if (event.lengthComputable) {           progressEvent.total = event.total;         }          // If the request was for text content and a partial response is         // available on XMLHttpRequest, include it in the progress event         // to allow for streaming reads.         if (req.responseType === 'text' && !!xhr.responseText) {           progressEvent.partialText = xhr.responseText;         }          // Finally, fire the event.         observer.next(progressEvent);       };        // The upload progress event handler, which is only registered if       // progress events are enabled.       const onUpProgress = (event: ProgressEvent) => {         // Upload progress events are simpler. Begin building the progress         // event.         let progress: HttpUploadProgressEvent = {           type: HttpEventType.UploadProgress,           loaded: event.loaded,         };          // If the total number of bytes being uploaded is available, include         // it.         if (event.lengthComputable) {           progress.total = event.total;         }          // Send the event.         observer.next(progress);       };        // By default, register for load and error events.       xhr.addEventListener('load', onLoad);       xhr.addEventListener('error', onError);       xhr.addEventListener('timeout', onError);       xhr.addEventListener('abort', onError);        // Progress events are only enabled if requested.       if (req.reportProgress) {         // Download progress is always enabled if requested.         xhr.addEventListener('progress', onDownProgress);          // Upload progress depends on whether there is a body to upload.         if (reqBody !== null && xhr.upload) {           xhr.upload.addEventListener('progress', onUpProgress);         }       }        // Fire the request, and notify the event stream that it was fired.       xhr.send(reqBody!);       observer.next({type: HttpEventType.Sent});        // This is the return from the Observable function, which is the       // request cancellation handler.       return () => {         // On a cancellation, remove all registered event listeners.         xhr.removeEventListener('error', onError);         xhr.removeEventListener('abort', onError);         xhr.removeEventListener('load', onLoad);         xhr.removeEventListener('timeout', onError);         if (req.reportProgress) {           xhr.removeEventListener('progress', onDownProgress);           if (reqBody !== null && xhr.upload) {             xhr.upload.removeEventListener('progress', onUpProgress);           }         }          // Finally, abort the in-flight request.         if (xhr.readyState !== xhr.DONE) {           xhr.abort();         }       };     });   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT, ɵparseCookieValue as parseCookieValue} from '@angular/common'; import {EnvironmentInjector, Inject, inject, Injectable, InjectionToken, PLATFORM_ID} from '@angular/core'; import {Observable} from 'rxjs';  import {HttpHandler} from './backend'; import {HttpHandlerFn, HttpInterceptor} from './interceptor'; import {HttpRequest} from './request'; import {HttpEvent} from './response';  export const XSRF_ENABLED = new InjectionToken<boolean>('XSRF_ENABLED');  export const XSRF_DEFAULT_COOKIE_NAME = 'XSRF-TOKEN'; export const XSRF_COOKIE_NAME = new InjectionToken<string>('XSRF_COOKIE_NAME', {   providedIn: 'root',   factory: () => XSRF_DEFAULT_COOKIE_NAME, });  export const XSRF_DEFAULT_HEADER_NAME = 'X-XSRF-TOKEN'; export const XSRF_HEADER_NAME = new InjectionToken<string>('XSRF_HEADER_NAME', {   providedIn: 'root',   factory: () => XSRF_DEFAULT_HEADER_NAME, });  /**  * Retrieves the current XSRF token to use with the next outgoing request.  *  * @publicApi  */ export abstract class HttpXsrfTokenExtractor {   /**    * Get the XSRF token to use with an outgoing request.    *    * Will be called for every request, so the token may change between requests.    */   abstract getToken(): string|null; }  /**  * `HttpXsrfTokenExtractor` which retrieves the token from a cookie.  */ @Injectable() export class HttpXsrfCookieExtractor implements HttpXsrfTokenExtractor {   private lastCookieString: string = '';   private lastToken: string|null = null;    /**    * @internal for testing    */   parseCount: number = 0;    constructor(       @Inject(DOCUMENT) private doc: any, @Inject(PLATFORM_ID) private platform: string,       @Inject(XSRF_COOKIE_NAME) private cookieName: string) {}    getToken(): string|null {     if (this.platform === 'server') {       return null;     }     const cookieString = this.doc.cookie || '';     if (cookieString !== this.lastCookieString) {       this.parseCount++;       this.lastToken = parseCookieValue(cookieString, this.cookieName);       this.lastCookieString = cookieString;     }     return this.lastToken;   } }  export function xsrfInterceptorFn(     req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {   const lcUrl = req.url.toLowerCase();   // Skip both non-mutating requests and absolute URLs.   // Non-mutating requests don't require a token, and absolute URLs require special handling   // anyway as the cookie set   // on our origin is not the same as the token expected by another origin.   if (!inject(XSRF_ENABLED) || req.method === 'GET' || req.method === 'HEAD' ||       lcUrl.startsWith('http://') || lcUrl.startsWith('https://')) {     return next(req);   }    const token = inject(HttpXsrfTokenExtractor).getToken();   const headerName = inject(XSRF_HEADER_NAME);    // Be careful not to overwrite an existing header of the same name.   if (token != null && !req.headers.has(headerName)) {     req = req.clone({headers: req.headers.set(headerName, token)});   }   return next(req); }  /**  * `HttpInterceptor` which adds an XSRF token to eligible outgoing requests.  */ @Injectable() export class HttpXsrfInterceptor implements HttpInterceptor {   constructor(private injector: EnvironmentInjector) {}    intercept(initialRequest: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {     return this.injector.runInContext(         () =>             xsrfInterceptorFn(initialRequest, downstreamRequest => next.handle(downstreamRequest)));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Provider} from '@angular/core';  import {HttpBackend, HttpHandler} from './backend'; import {HttpClient} from './client'; import {HTTP_INTERCEPTOR_FNS, HttpInterceptorFn, HttpInterceptorHandler, legacyInterceptorFnFactory} from './interceptor'; import {jsonpCallbackContext, JsonpCallbackContext, JsonpClientBackend, jsonpInterceptorFn} from './jsonp'; import {HttpXhrBackend} from './xhr'; import {HttpXsrfCookieExtractor, HttpXsrfTokenExtractor, XSRF_COOKIE_NAME, XSRF_ENABLED, XSRF_HEADER_NAME, xsrfInterceptorFn} from './xsrf';  /**  * Identifies a particular kind of `HttpFeature`.  *  * @publicApi  */ export enum HttpFeatureKind {   Interceptors,   LegacyInterceptors,   CustomXsrfConfiguration,   NoXsrfProtection,   JsonpSupport,   RequestsMadeViaParent, }  /**  * A feature for use when configuring `provideHttpClient`.  *  * @publicApi  */ export interface HttpFeature<KindT extends HttpFeatureKind> {   ɵkind: KindT;   ɵproviders: Provider[]; }  function makeHttpFeature<KindT extends HttpFeatureKind>(     kind: KindT, providers: Provider[]): HttpFeature<KindT> {   return {     ɵkind: kind,     ɵproviders: providers,   }; }  /**  * Configures Angular's `HttpClient` service to be available for injection.  *  * By default, `HttpClient` will be configured for injection with its default options for XSRF  * protection of outgoing requests. Additional configuration options can be provided by passing  * feature functions to `provideHttpClient`. For example, HTTP interceptors can be added using the  * `withInterceptors(...)` feature.  *  * @see withInterceptors  * @see withInterceptorsFromDi  * @see withXsrfConfiguration  * @see withNoXsrfProtection  * @see withJsonpSupport  * @see withRequestsMadeViaParent  */ export function provideHttpClient(...features: HttpFeature<HttpFeatureKind>[]):     EnvironmentProviders {   if (ngDevMode) {     const featureKinds = new Set(features.map(f => f.ɵkind));     if (featureKinds.has(HttpFeatureKind.NoXsrfProtection) &&         featureKinds.has(HttpFeatureKind.CustomXsrfConfiguration)) {       throw new Error(           ngDevMode ?               `Configuration error: found both withXsrfConfiguration() and withNoXsrfProtection() in the same call to provideHttpClient(), which is a contradiction.` :               '');     }   }    const providers: Provider[] = [     HttpClient,     HttpXhrBackend,     HttpInterceptorHandler,     {provide: HttpHandler, useExisting: HttpInterceptorHandler},     {provide: HttpBackend, useExisting: HttpXhrBackend},     {       provide: HTTP_INTERCEPTOR_FNS,       useValue: xsrfInterceptorFn,       multi: true,     },     {provide: XSRF_ENABLED, useValue: true},     {provide: HttpXsrfTokenExtractor, useClass: HttpXsrfCookieExtractor},   ];    for (const feature of features) {     providers.push(...feature.ɵproviders);   }    return makeEnvironmentProviders(providers); }  /**  * Adds one or more functional-style HTTP interceptors to the configuration of the `HttpClient`  * instance.  *  * @see HttpInterceptorFn  * @see provideHttpClient  * @publicApi  */ export function withInterceptors(interceptorFns: HttpInterceptorFn[]):     HttpFeature<HttpFeatureKind.Interceptors> {   return makeHttpFeature(HttpFeatureKind.Interceptors, interceptorFns.map(interceptorFn => {     return {       provide: HTTP_INTERCEPTOR_FNS,       useValue: interceptorFn,       multi: true,     };   })); }  const LEGACY_INTERCEPTOR_FN = new InjectionToken<HttpInterceptorFn>('LEGACY_INTERCEPTOR_FN');  /**  * Includes class-based interceptors configured using a multi-provider in the current injector into  * the configured `HttpClient` instance.  *  * Prefer `withInterceptors` and functional interceptors instead, as support for DI-provided  * interceptors may be phased out in a later release.  *  * @see HttpInterceptor  * @see HTTP_INTERCEPTORS  * @see provideHttpClient  */ export function withInterceptorsFromDi(): HttpFeature<HttpFeatureKind.LegacyInterceptors> {   // Note: the legacy interceptor function is provided here via an intermediate token   // (`LEGACY_INTERCEPTOR_FN`), using a pattern which guarantees that if these providers are   // included multiple times, all of the multi-provider entries will have the same instance of the   // interceptor function. That way, the `HttpINterceptorHandler` will dedup them and legacy   // interceptors will not run multiple times.   return makeHttpFeature(HttpFeatureKind.LegacyInterceptors, [     {       provide: LEGACY_INTERCEPTOR_FN,       useFactory: legacyInterceptorFnFactory,     },     {       provide: HTTP_INTERCEPTOR_FNS,       useExisting: LEGACY_INTERCEPTOR_FN,       multi: true,     }   ]); }  /**  * Customizes the XSRF protection for the configuration of the current `HttpClient` instance.  *  * This feature is incompatible with the `withNoXsrfProtection` feature.  *  * @see provideHttpClient  */ export function withXsrfConfiguration(     {cookieName, headerName}: {cookieName?: string, headerName?: string}):     HttpFeature<HttpFeatureKind.CustomXsrfConfiguration> {   const providers: Provider[] = [];   if (cookieName !== undefined) {     providers.push({provide: XSRF_COOKIE_NAME, useValue: cookieName});   }   if (headerName !== undefined) {     providers.push({provide: XSRF_HEADER_NAME, useValue: headerName});   }    return makeHttpFeature(HttpFeatureKind.CustomXsrfConfiguration, providers); }  /**  * Disables XSRF protection in the configuration of the current `HttpClient` instance.  *  * This feature is incompatible with the `withXsrfConfiguration` feature.  *  * @see provideHttpClient  */ export function withNoXsrfProtection(): HttpFeature<HttpFeatureKind.NoXsrfProtection> {   return makeHttpFeature(HttpFeatureKind.NoXsrfProtection, [     {       provide: XSRF_ENABLED,       useValue: false,     },   ]); }  /**  * Add JSONP support to the configuration of the current `HttpClient` instance.  *  * @see provideHttpClient  */ export function withJsonpSupport(): HttpFeature<HttpFeatureKind.JsonpSupport> {   return makeHttpFeature(HttpFeatureKind.JsonpSupport, [     JsonpClientBackend,     {provide: JsonpCallbackContext, useFactory: jsonpCallbackContext},     {provide: HTTP_INTERCEPTOR_FNS, useValue: jsonpInterceptorFn, multi: true},   ]); }  /**  * Configures the current `HttpClient` instance to make requests via the parent injector's  * `HttpClient` instead of directly.  *  * By default, `provideHttpClient` configures `HttpClient` in its injector to be an independent  * instance. For example, even if `HttpClient` is configured in the parent injector with  * one or more interceptors, they will not intercept requests made via this instance.  *  * With this option enabled, once the request has passed through the current injector's  * interceptors, it will be delegated to the parent injector's `HttpClient` chain instead of  * dispatched directly, and interceptors in the parent configuration will be applied to the request.  *  * If there are several `HttpClient` instances in the injector hierarchy, it's possible for  * `withRequestsMadeViaParent` to be used at multiple levels, which will cause the request to  * \"bubble up\" until either reaching the root level or an `HttpClient` which was not configured with  * this option.  *  * @see provideHttpClient  * @developerPreview  */ export function withRequestsMadeViaParent(): HttpFeature<HttpFeatureKind.RequestsMadeViaParent> {   return makeHttpFeature(HttpFeatureKind.RequestsMadeViaParent, [     {       provide: HttpBackend,       useFactory: () => {         const handlerFromParent = inject(HttpHandler, {skipSelf: true, optional: true});         if (ngDevMode && handlerFromParent === null) {           throw new Error(               'withRequestsMadeViaParent() can only be used when the parent injector also configures HttpClient');         }         return handlerFromParent;       },     },   ]); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ModuleWithProviders, NgModule} from '@angular/core';  import {HTTP_INTERCEPTORS} from './interceptor'; import {provideHttpClient, withInterceptorsFromDi, withJsonpSupport, withNoXsrfProtection, withXsrfConfiguration} from './provider'; import {HttpXsrfCookieExtractor, HttpXsrfInterceptor, HttpXsrfTokenExtractor, XSRF_DEFAULT_COOKIE_NAME, XSRF_DEFAULT_HEADER_NAME, XSRF_ENABLED} from './xsrf';  /**  * Configures XSRF protection support for outgoing requests.  *  * For a server that supports a cookie-based XSRF protection system,  * use directly to configure XSRF protection with the correct  * cookie and header names.  *  * If no names are supplied, the default cookie name is `XSRF-TOKEN`  * and the default header name is `X-XSRF-TOKEN`.  *  * @publicApi  */ @NgModule({   providers: [     HttpXsrfInterceptor,     {provide: HTTP_INTERCEPTORS, useExisting: HttpXsrfInterceptor, multi: true},     {provide: HttpXsrfTokenExtractor, useClass: HttpXsrfCookieExtractor},     withXsrfConfiguration({       cookieName: XSRF_DEFAULT_COOKIE_NAME,       headerName: XSRF_DEFAULT_HEADER_NAME,     }).ɵproviders,     {provide: XSRF_ENABLED, useValue: true},   ], }) export class HttpClientXsrfModule {   /**    * Disable the default XSRF protection.    */   static disable(): ModuleWithProviders<HttpClientXsrfModule> {     return {       ngModule: HttpClientXsrfModule,       providers: [         withNoXsrfProtection().ɵproviders,       ],     };   }    /**    * Configure XSRF protection.    * @param options An object that can specify either or both    * cookie name or header name.    * - Cookie name default is `XSRF-TOKEN`.    * - Header name default is `X-XSRF-TOKEN`.    *    */   static withOptions(options: {     cookieName?: string,     headerName?: string,   } = {}): ModuleWithProviders<HttpClientXsrfModule> {     return {       ngModule: HttpClientXsrfModule,       providers: withXsrfConfiguration(options).ɵproviders,     };   } }  /**  * Configures the [dependency injector](guide/glossary#injector) for `HttpClient`  * with supporting services for XSRF. Automatically imported by `HttpClientModule`.  *  * You can add interceptors to the chain behind `HttpClient` by binding them to the  * multiprovider for built-in [DI token](guide/glossary#di-token) `HTTP_INTERCEPTORS`.  *  * @publicApi  */ @NgModule({   /**    * Configures the [dependency injector](guide/glossary#injector) where it is imported    * with supporting services for HTTP communications.    */   providers: [     provideHttpClient(withInterceptorsFromDi()),   ], }) export class HttpClientModule { }  /**  * Configures the [dependency injector](guide/glossary#injector) for `HttpClient`  * with supporting services for JSONP.  * Without this module, Jsonp requests reach the backend  * with method JSONP, where they are rejected.  *  * @publicApi  */ @NgModule({   providers: [     withJsonpSupport().ɵproviders,   ], }) export class HttpClientJsonpModule { } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {XhrFactory as XhrFactory_fromAngularCommon} from '@angular/common';  /**  * A wrapper around the `XMLHttpRequest` constructor.  *  * @publicApi  * @see `XhrFactory`  * @deprecated  * `XhrFactory` has moved, please import `XhrFactory` from `@angular/common` instead.  */ export type XhrFactory = XhrFactory_fromAngularCommon; /**  * A wrapper around the `XMLHttpRequest` constructor.  *  * @publicApi  * @see `XhrFactory`  * @deprecated  * `XhrFactory` has moved, please import `XhrFactory` from `@angular/common` instead.  */ export const XhrFactory = XhrFactory_fromAngularCommon;  export {HttpBackend, HttpHandler} from './src/backend'; export {HttpClient} from './src/client'; export {HttpContext, HttpContextToken} from './src/context'; export {HttpHeaders} from './src/headers'; export {HTTP_INTERCEPTORS, HttpInterceptor, HttpInterceptorHandler as ɵHttpInterceptorHandler, HttpInterceptorFn, HttpHandlerFn} from './src/interceptor'; export {JsonpClientBackend, JsonpInterceptor} from './src/jsonp'; export {HttpClientJsonpModule, HttpClientModule, HttpClientXsrfModule} from './src/module'; export {HttpParameterCodec, HttpParams, HttpParamsOptions, HttpUrlEncodingCodec} from './src/params'; export {HttpFeature, HttpFeatureKind, provideHttpClient, withJsonpSupport, withNoXsrfProtection, withXsrfConfiguration, withInterceptors, withInterceptorsFromDi, withRequestsMadeViaParent} from './src/provider'; export {HttpRequest} from './src/request'; export {HttpDownloadProgressEvent, HttpErrorResponse, HttpEvent, HttpEventType, HttpHeaderResponse, HttpProgressEvent, HttpResponse, HttpResponseBase, HttpSentEvent, HttpStatusCode, HttpUploadProgressEvent, HttpUserEvent} from './src/response'; export {HttpXhrBackend} from './src/xhr'; export {HttpXsrfTokenExtractor} from './src/xsrf';  // This re-export exists because g3 depends on this old private name. export {HttpInterceptorHandler as ɵHttpInterceptingHandler} from './src/interceptor'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["i1.HttpHandler","i1.HttpBackend","parseCookieValue","XhrFactory_fromAngularCommon"],"mappings":"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"}
-------------------- SECTION 176 --------------------
{"version":3,"file":"testing.mjs","sources":["../../../../../../packages/router/testing/src/router_testing_module.ts","../../../../../../packages/router/testing/src/router_testing_harness.ts","../../../../../../packages/router/testing/src/testing.ts","../../../../../../packages/router/testing/public_api.ts","../../../../../../packages/router/testing/index.ts","../../../../../../packages/router/testing/testing.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Location} from '@angular/common'; import {provideLocationMocks} from '@angular/common/testing'; import {Compiler, inject, Injector, ModuleWithProviders, NgModule} from '@angular/core'; import {ChildrenOutletContexts, ExtraOptions, NoPreloading, Route, Router, ROUTER_CONFIGURATION, RouteReuseStrategy, RouterModule, ROUTES, Routes, TitleStrategy, UrlHandlingStrategy, UrlSerializer, ɵflatten as flatten, ɵROUTER_PROVIDERS as ROUTER_PROVIDERS, ɵwithPreloading as withPreloading} from '@angular/router';  function isUrlHandlingStrategy(opts: ExtraOptions|                                UrlHandlingStrategy): opts is UrlHandlingStrategy {   // This property check is needed because UrlHandlingStrategy is an interface and doesn't exist at   // runtime.   return 'shouldProcessUrl' in opts; }  function throwInvalidConfigError(parameter: string): never {   throw new Error(       `Parameter ${parameter} does not match the one available in the injector. ` +       '`setupTestingRouter` is meant to be used as a factory function with dependencies coming from DI.'); }  /**  * Router setup factory function used for testing.  *  * @publicApi  * @deprecated Use `provideRouter` or `RouterTestingModule` instead.  */ export function setupTestingRouter(     urlSerializer: UrlSerializer, contexts: ChildrenOutletContexts, location: Location,     compiler: Compiler, injector: Injector, routes: Route[][],     opts?: ExtraOptions|UrlHandlingStrategy|null, urlHandlingStrategy?: UrlHandlingStrategy,     routeReuseStrategy?: RouteReuseStrategy, titleStrategy?: TitleStrategy) {   // Note: The checks below are to detect misconfigured providers and invalid uses of   // `setupTestingRouter`. This function is not used internally (neither in router code or anywhere   // in g3). It appears this function was exposed as publicApi by mistake and should not be used   // externally either. However, if it is, the documented intent is to be used as a factory function   // and parameter values should always match what's available in DI.   if (urlSerializer !== inject(UrlSerializer)) {     throwInvalidConfigError('urlSerializer');   }   if (contexts !== inject(ChildrenOutletContexts)) {     throwInvalidConfigError('contexts');   }   if (location !== inject(Location)) {     throwInvalidConfigError('location');   }   if (compiler !== inject(Compiler)) {     throwInvalidConfigError('compiler');   }   if (injector !== inject(Injector)) {     throwInvalidConfigError('injector');   }   if (routes !== inject(ROUTES)) {     throwInvalidConfigError('routes');   }   if (opts) {     // Handle deprecated argument ordering.     if (isUrlHandlingStrategy(opts)) {       if (opts !== inject(UrlHandlingStrategy)) {         throwInvalidConfigError('opts (UrlHandlingStrategy)');       }     } else {       if (opts !== inject(ROUTER_CONFIGURATION)) {         throwInvalidConfigError('opts (ROUTER_CONFIGURATION)');       }     }   }    if (urlHandlingStrategy !== inject(UrlHandlingStrategy)) {     throwInvalidConfigError('urlHandlingStrategy');   }    if (routeReuseStrategy !== inject(RouteReuseStrategy)) {     throwInvalidConfigError('routeReuseStrategy');   }    if (titleStrategy !== inject(TitleStrategy)) {     throwInvalidConfigError('titleStrategy');   }    return new Router(); }  /**  * @description  *  * Sets up the router to be used for testing.  *  * The modules sets up the router to be used for testing.  * It provides spy implementations of `Location` and `LocationStrategy`.  *  * @usageNotes  * ### Example  *  * ```  * beforeEach(() => {  *   TestBed.configureTestingModule({  *     imports: [  *       RouterTestingModule.withRoutes(  *         [{path: '', component: BlankCmp}, {path: 'simple', component: SimpleCmp}]  *       )  *     ]  *   });  * });  * ```  *  * @publicApi  */ @NgModule({   exports: [RouterModule],   providers: [     ROUTER_PROVIDERS,     provideLocationMocks(),     withPreloading(NoPreloading).ɵproviders,     {provide: ROUTES, multi: true, useValue: []},   ] }) export class RouterTestingModule {   static withRoutes(routes: Routes, config?: ExtraOptions):       ModuleWithProviders<RouterTestingModule> {     return {       ngModule: RouterTestingModule,       providers: [         {provide: ROUTES, multi: true, useValue: routes},         {provide: ROUTER_CONFIGURATION, useValue: config ? config : {}},       ]     };   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Component, DebugElement, Injectable, Type, ViewChild} from '@angular/core'; import {ComponentFixture, TestBed} from '@angular/core/testing'; import {Router, RouterOutlet, ɵafterNextNavigation as afterNextNavigation} from '@angular/router';  @Injectable({providedIn: 'root'}) export class RootFixtureService {   private fixture?: ComponentFixture<RootCmp>;   private harness?: RouterTestingHarness;    createHarness(): RouterTestingHarness {     if (this.harness) {       throw new Error('Only one harness should be created per test.');     }     this.harness = new RouterTestingHarness(this.getRootFixture());     return this.harness;   }    private getRootFixture(): ComponentFixture<RootCmp> {     if (this.fixture !== undefined) {       return this.fixture;     }     this.fixture = TestBed.createComponent(RootCmp);     this.fixture.detectChanges();     return this.fixture;   } }  @Component({   standalone: true,   template: '<router-outlet></router-outlet>',   imports: [RouterOutlet], }) export class RootCmp {   @ViewChild(RouterOutlet) outlet?: RouterOutlet; }  /**  * A testing harness for the `Router` to reduce the boilerplate needed to test routes and routed  * components.  *  * @publicApi  */ export class RouterTestingHarness {   /**    * Creates a `RouterTestingHarness` instance.    *    * The `RouterTestingHarness` also creates its own root component with a `RouterOutlet` for the    * purposes of rendering route components.    *    * Throws an error if an instance has already been created.    * Use of this harness also requires `destroyAfterEach: true` in the `ModuleTeardownOptions`    *    * @param initialUrl The target of navigation to trigger before returning the harness.    */   static async create(initialUrl?: string): Promise<RouterTestingHarness> {     const harness = TestBed.inject(RootFixtureService).createHarness();     if (initialUrl !== undefined) {       await harness.navigateByUrl(initialUrl);     }     return harness;   }    /** @internal */   constructor(private readonly fixture: ComponentFixture<RootCmp>) {}    /** Instructs the root fixture to run change detection. */   detectChanges(): void {     this.fixture.detectChanges();   }   /** The `DebugElement` of the `RouterOutlet` component. `null` if the outlet is not activated. */   get routeDebugElement(): DebugElement|null {     const outlet = this.fixture.componentInstance.outlet;     if (!outlet || !outlet.isActivated) {       return null;     }     return this.fixture.debugElement.query(v => v.componentInstance === outlet.component);   }   /** The native element of the `RouterOutlet` component. `null` if the outlet is not activated. */   get routeNativeElement(): HTMLElement|null {     return this.routeDebugElement?.nativeElement ?? null;   }    /**    * Triggers a `Router` navigation and waits for it to complete.    *    * The root component with a `RouterOutlet` created for the harness is used to render `Route`    * components. The root component is reused within the same test in subsequent calls to    * `navigateForTest`.    *    * When testing `Routes` with a guards that reject the navigation, the `RouterOutlet` might not be    * activated and the `activatedComponent` may be `null`.    *    * {@example router/testing/test/router_testing_harness_examples.spec.ts region='Guard'}    *    * @param url The target of the navigation. Passed to `Router.navigateByUrl`.    * @returns The activated component instance of the `RouterOutlet` after navigation completes    *     (`null` if the outlet does not get activated).    */   async navigateByUrl(url: string): Promise<null|{}>;   /**    * Triggers a router navigation and waits for it to complete.    *    * The root component with a `RouterOutlet` created for the harness is used to render `Route`    * components.    *    * {@example router/testing/test/router_testing_harness_examples.spec.ts region='RoutedComponent'}    *    * The root component is reused within the same test in subsequent calls to `navigateByUrl`.    *    * This function also makes it easier to test components that depend on `ActivatedRoute` data.    *    * {@example router/testing/test/router_testing_harness_examples.spec.ts region='ActivatedRoute'}    *    * @param url The target of the navigation. Passed to `Router.navigateByUrl`.    * @param requiredRoutedComponentType After navigation completes, the required type for the    *     activated component of the `RouterOutlet`. If the outlet is not activated or a different    *     component is activated, this function will throw an error.    * @returns The activated component instance of the `RouterOutlet` after navigation completes.    */   async navigateByUrl<T>(url: string, requiredRoutedComponentType: Type<T>): Promise<T>;   async navigateByUrl<T>(url: string, requiredRoutedComponentType?: Type<T>): Promise<T|null> {     const router = TestBed.inject(Router);     let resolveFn!: () => void;     const redirectTrackingPromise = new Promise<void>(resolve => {       resolveFn = resolve;     });     afterNextNavigation(TestBed.inject(Router), resolveFn);     await router.navigateByUrl(url);     await redirectTrackingPromise;     this.fixture.detectChanges();     const outlet = this.fixture.componentInstance.outlet;     // The outlet might not be activated if the user is testing a navigation for a guard that     // rejects     if (outlet && outlet.isActivated && outlet.activatedRoute.component) {       const activatedComponent = outlet.component;       if (requiredRoutedComponentType !== undefined &&           !(activatedComponent instanceof requiredRoutedComponentType)) {         throw new Error(`Unexpected routed component type. Expected ${             requiredRoutedComponentType.name} but got ${activatedComponent.constructor.name}`);       }       return activatedComponent as T;     } else {       return null;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the router/testing package.  */ export * from './router_testing_module'; export {RouterTestingHarness} from './router_testing_harness'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/testing';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["ROUTER_PROVIDERS","withPreloading","afterNextNavigation"],"mappings":"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"}
-------------------- SECTION 177 --------------------
{"version":3,"file":"testing.mjs","sources":["../../../../../../packages/router/testing/src/router_testing_module.ts","../../../../../../packages/router/testing/src/router_testing_harness.ts","../../../../../../packages/router/testing/src/testing.ts","../../../../../../packages/router/testing/public_api.ts","../../../../../../packages/router/testing/index.ts","../../../../../../packages/router/testing/testing.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Location} from '@angular/common'; import {provideLocationMocks} from '@angular/common/testing'; import {Compiler, inject, Injector, ModuleWithProviders, NgModule} from '@angular/core'; import {ChildrenOutletContexts, ExtraOptions, NoPreloading, Route, Router, ROUTER_CONFIGURATION, RouteReuseStrategy, RouterModule, ROUTES, Routes, TitleStrategy, UrlHandlingStrategy, UrlSerializer, ɵflatten as flatten, ɵROUTER_PROVIDERS as ROUTER_PROVIDERS, ɵwithPreloading as withPreloading} from '@angular/router';  function isUrlHandlingStrategy(opts: ExtraOptions|                                UrlHandlingStrategy): opts is UrlHandlingStrategy {   // This property check is needed because UrlHandlingStrategy is an interface and doesn't exist at   // runtime.   return 'shouldProcessUrl' in opts; }  function throwInvalidConfigError(parameter: string): never {   throw new Error(       `Parameter ${parameter} does not match the one available in the injector. ` +       '`setupTestingRouter` is meant to be used as a factory function with dependencies coming from DI.'); }  /**  * Router setup factory function used for testing.  *  * @publicApi  * @deprecated Use `provideRouter` or `RouterTestingModule` instead.  */ export function setupTestingRouter(     urlSerializer: UrlSerializer, contexts: ChildrenOutletContexts, location: Location,     compiler: Compiler, injector: Injector, routes: Route[][],     opts?: ExtraOptions|UrlHandlingStrategy|null, urlHandlingStrategy?: UrlHandlingStrategy,     routeReuseStrategy?: RouteReuseStrategy, titleStrategy?: TitleStrategy) {   // Note: The checks below are to detect misconfigured providers and invalid uses of   // `setupTestingRouter`. This function is not used internally (neither in router code or anywhere   // in g3). It appears this function was exposed as publicApi by mistake and should not be used   // externally either. However, if it is, the documented intent is to be used as a factory function   // and parameter values should always match what's available in DI.   if (urlSerializer !== inject(UrlSerializer)) {     throwInvalidConfigError('urlSerializer');   }   if (contexts !== inject(ChildrenOutletContexts)) {     throwInvalidConfigError('contexts');   }   if (location !== inject(Location)) {     throwInvalidConfigError('location');   }   if (compiler !== inject(Compiler)) {     throwInvalidConfigError('compiler');   }   if (injector !== inject(Injector)) {     throwInvalidConfigError('injector');   }   if (routes !== inject(ROUTES)) {     throwInvalidConfigError('routes');   }   if (opts) {     // Handle deprecated argument ordering.     if (isUrlHandlingStrategy(opts)) {       if (opts !== inject(UrlHandlingStrategy)) {         throwInvalidConfigError('opts (UrlHandlingStrategy)');       }     } else {       if (opts !== inject(ROUTER_CONFIGURATION)) {         throwInvalidConfigError('opts (ROUTER_CONFIGURATION)');       }     }   }    if (urlHandlingStrategy !== inject(UrlHandlingStrategy)) {     throwInvalidConfigError('urlHandlingStrategy');   }    if (routeReuseStrategy !== inject(RouteReuseStrategy)) {     throwInvalidConfigError('routeReuseStrategy');   }    if (titleStrategy !== inject(TitleStrategy)) {     throwInvalidConfigError('titleStrategy');   }    return new Router(); }  /**  * @description  *  * Sets up the router to be used for testing.  *  * The modules sets up the router to be used for testing.  * It provides spy implementations of `Location` and `LocationStrategy`.  *  * @usageNotes  * ### Example  *  * ```  * beforeEach(() => {  *   TestBed.configureTestingModule({  *     imports: [  *       RouterTestingModule.withRoutes(  *         [{path: '', component: BlankCmp}, {path: 'simple', component: SimpleCmp}]  *       )  *     ]  *   });  * });  * ```  *  * @publicApi  */ @NgModule({   exports: [RouterModule],   providers: [     ROUTER_PROVIDERS,     provideLocationMocks(),     withPreloading(NoPreloading).ɵproviders,     {provide: ROUTES, multi: true, useValue: []},   ] }) export class RouterTestingModule {   static withRoutes(routes: Routes, config?: ExtraOptions):       ModuleWithProviders<RouterTestingModule> {     return {       ngModule: RouterTestingModule,       providers: [         {provide: ROUTES, multi: true, useValue: routes},         {provide: ROUTER_CONFIGURATION, useValue: config ? config : {}},       ]     };   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Component, DebugElement, Injectable, Type, ViewChild} from '@angular/core'; import {ComponentFixture, TestBed} from '@angular/core/testing'; import {Router, RouterOutlet, ɵafterNextNavigation as afterNextNavigation} from '@angular/router';  @Injectable({providedIn: 'root'}) export class RootFixtureService {   private fixture?: ComponentFixture<RootCmp>;   private harness?: RouterTestingHarness;    createHarness(): RouterTestingHarness {     if (this.harness) {       throw new Error('Only one harness should be created per test.');     }     this.harness = new RouterTestingHarness(this.getRootFixture());     return this.harness;   }    private getRootFixture(): ComponentFixture<RootCmp> {     if (this.fixture !== undefined) {       return this.fixture;     }     this.fixture = TestBed.createComponent(RootCmp);     this.fixture.detectChanges();     return this.fixture;   } }  @Component({   standalone: true,   template: '<router-outlet></router-outlet>',   imports: [RouterOutlet], }) export class RootCmp {   @ViewChild(RouterOutlet) outlet?: RouterOutlet; }  /**  * A testing harness for the `Router` to reduce the boilerplate needed to test routes and routed  * components.  *  * @publicApi  */ export class RouterTestingHarness {   /**    * Creates a `RouterTestingHarness` instance.    *    * The `RouterTestingHarness` also creates its own root component with a `RouterOutlet` for the    * purposes of rendering route components.    *    * Throws an error if an instance has already been created.    * Use of this harness also requires `destroyAfterEach: true` in the `ModuleTeardownOptions`    *    * @param initialUrl The target of navigation to trigger before returning the harness.    */   static async create(initialUrl?: string): Promise<RouterTestingHarness> {     const harness = TestBed.inject(RootFixtureService).createHarness();     if (initialUrl !== undefined) {       await harness.navigateByUrl(initialUrl);     }     return harness;   }    /** @internal */   constructor(private readonly fixture: ComponentFixture<RootCmp>) {}    /** Instructs the root fixture to run change detection. */   detectChanges(): void {     this.fixture.detectChanges();   }   /** The `DebugElement` of the `RouterOutlet` component. `null` if the outlet is not activated. */   get routeDebugElement(): DebugElement|null {     const outlet = this.fixture.componentInstance.outlet;     if (!outlet || !outlet.isActivated) {       return null;     }     return this.fixture.debugElement.query(v => v.componentInstance === outlet.component);   }   /** The native element of the `RouterOutlet` component. `null` if the outlet is not activated. */   get routeNativeElement(): HTMLElement|null {     return this.routeDebugElement?.nativeElement ?? null;   }    /**    * Triggers a `Router` navigation and waits for it to complete.    *    * The root component with a `RouterOutlet` created for the harness is used to render `Route`    * components. The root component is reused within the same test in subsequent calls to    * `navigateForTest`.    *    * When testing `Routes` with a guards that reject the navigation, the `RouterOutlet` might not be    * activated and the `activatedComponent` may be `null`.    *    * {@example router/testing/test/router_testing_harness_examples.spec.ts region='Guard'}    *    * @param url The target of the navigation. Passed to `Router.navigateByUrl`.    * @returns The activated component instance of the `RouterOutlet` after navigation completes    *     (`null` if the outlet does not get activated).    */   async navigateByUrl(url: string): Promise<null|{}>;   /**    * Triggers a router navigation and waits for it to complete.    *    * The root component with a `RouterOutlet` created for the harness is used to render `Route`    * components.    *    * {@example router/testing/test/router_testing_harness_examples.spec.ts region='RoutedComponent'}    *    * The root component is reused within the same test in subsequent calls to `navigateByUrl`.    *    * This function also makes it easier to test components that depend on `ActivatedRoute` data.    *    * {@example router/testing/test/router_testing_harness_examples.spec.ts region='ActivatedRoute'}    *    * @param url The target of the navigation. Passed to `Router.navigateByUrl`.    * @param requiredRoutedComponentType After navigation completes, the required type for the    *     activated component of the `RouterOutlet`. If the outlet is not activated or a different    *     component is activated, this function will throw an error.    * @returns The activated component instance of the `RouterOutlet` after navigation completes.    */   async navigateByUrl<T>(url: string, requiredRoutedComponentType: Type<T>): Promise<T>;   async navigateByUrl<T>(url: string, requiredRoutedComponentType?: Type<T>): Promise<T|null> {     const router = TestBed.inject(Router);     let resolveFn!: () => void;     const redirectTrackingPromise = new Promise<void>(resolve => {       resolveFn = resolve;     });     afterNextNavigation(TestBed.inject(Router), resolveFn);     await router.navigateByUrl(url);     await redirectTrackingPromise;     this.fixture.detectChanges();     const outlet = this.fixture.componentInstance.outlet;     // The outlet might not be activated if the user is testing a navigation for a guard that     // rejects     if (outlet && outlet.isActivated && outlet.activatedRoute.component) {       const activatedComponent = outlet.component;       if (requiredRoutedComponentType !== undefined &&           !(activatedComponent instanceof requiredRoutedComponentType)) {         throw new Error(`Unexpected routed component type. Expected ${             requiredRoutedComponentType.name} but got ${activatedComponent.constructor.name}`);       }       return activatedComponent as T;     } else {       return null;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the router/testing package.  */ export * from './router_testing_module'; export {RouterTestingHarness} from './router_testing_harness'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/testing';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["ROUTER_PROVIDERS","withPreloading","afterNextNavigation"],"mappings":"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"}
-------------------- SECTION 178 --------------------
{"version":3,"file":"tree.mjs","sources":["../../../../../../src/cdk/tree/control/base-tree-control.ts","../../../../../../src/cdk/tree/control/flat-tree-control.ts","../../../../../../src/cdk/tree/control/nested-tree-control.ts","../../../../../../src/cdk/tree/outlet.ts","../../../../../../src/cdk/tree/node.ts","../../../../../../src/cdk/tree/tree-errors.ts","../../../../../../src/cdk/tree/tree.ts","../../../../../../src/cdk/tree/nested-node.ts","../../../../../../src/cdk/tree/padding.ts","../../../../../../src/cdk/tree/toggle.ts","../../../../../../src/cdk/tree/tree-module.ts","../../../../../../src/cdk/tree/public-api.ts","../../../../../../src/cdk/tree/index.ts","../../../../../../src/cdk/tree/tree_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {SelectionModel} from '@angular/cdk/collections'; import {Observable} from 'rxjs'; import {TreeControl} from './tree-control';  /** Base tree control. It has basic toggle/expand/collapse operations on a single data node. */ export abstract class BaseTreeControl<T, K = T> implements TreeControl<T, K> {   /** Gets a list of descendent data nodes of a subtree rooted at given data node recursively. */   abstract getDescendants(dataNode: T): T[];    /** Expands all data nodes in the tree. */   abstract expandAll(): void;    /** Saved data node for `expandAll` action. */   dataNodes: T[];    /** A selection model with multi-selection to track expansion status. */   expansionModel: SelectionModel<K> = new SelectionModel<K>(true);    /**    * Returns the identifier by which a dataNode should be tracked, should its    * reference change.    *    * Similar to trackBy for *ngFor    */   trackBy?: (dataNode: T) => K;    /** Get depth of a given data node, return the level number. This is for flat tree node. */   getLevel: (dataNode: T) => number;    /**    * Whether the data node is expandable. Returns true if expandable.    * This is for flat tree node.    */   isExpandable: (dataNode: T) => boolean;    /** Gets a stream that emits whenever the given data node's children change. */   getChildren: (dataNode: T) => Observable<T[]> | T[] | undefined | null;    /** Toggles one single data node's expanded/collapsed state. */   toggle(dataNode: T): void {     this.expansionModel.toggle(this._trackByValue(dataNode));   }    /** Expands one single data node. */   expand(dataNode: T): void {     this.expansionModel.select(this._trackByValue(dataNode));   }    /** Collapses one single data node. */   collapse(dataNode: T): void {     this.expansionModel.deselect(this._trackByValue(dataNode));   }    /** Whether a given data node is expanded or not. Returns true if the data node is expanded. */   isExpanded(dataNode: T): boolean {     return this.expansionModel.isSelected(this._trackByValue(dataNode));   }    /** Toggles a subtree rooted at `node` recursively. */   toggleDescendants(dataNode: T): void {     this.expansionModel.isSelected(this._trackByValue(dataNode))       ? this.collapseDescendants(dataNode)       : this.expandDescendants(dataNode);   }    /** Collapse all dataNodes in the tree. */   collapseAll(): void {     this.expansionModel.clear();   }    /** Expands a subtree rooted at given data node recursively. */   expandDescendants(dataNode: T): void {     let toBeProcessed = [dataNode];     toBeProcessed.push(...this.getDescendants(dataNode));     this.expansionModel.select(...toBeProcessed.map(value => this._trackByValue(value)));   }    /** Collapses a subtree rooted at given data node recursively. */   collapseDescendants(dataNode: T): void {     let toBeProcessed = [dataNode];     toBeProcessed.push(...this.getDescendants(dataNode));     this.expansionModel.deselect(...toBeProcessed.map(value => this._trackByValue(value)));   }    protected _trackByValue(value: T | K): K {     return this.trackBy ? this.trackBy(value as T) : (value as K);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BaseTreeControl} from './base-tree-control';  /** Optional set of configuration that can be provided to the FlatTreeControl. */ export interface FlatTreeControlOptions<T, K> {   trackBy?: (dataNode: T) => K; }  /** Flat tree control. Able to expand/collapse a subtree recursively for flattened tree. */ export class FlatTreeControl<T, K = T> extends BaseTreeControl<T, K> {   /** Construct with flat tree data node functions getLevel and isExpandable. */   constructor(     public override getLevel: (dataNode: T) => number,     public override isExpandable: (dataNode: T) => boolean,     public options?: FlatTreeControlOptions<T, K>,   ) {     super();      if (this.options) {       this.trackBy = this.options.trackBy;     }   }    /**    * Gets a list of the data node's subtree of descendent data nodes.    *    * To make this working, the `dataNodes` of the TreeControl must be flattened tree nodes    * with correct levels.    */   getDescendants(dataNode: T): T[] {     const startIndex = this.dataNodes.indexOf(dataNode);     const results: T[] = [];      // Goes through flattened tree nodes in the `dataNodes` array, and get all descendants.     // The level of descendants of a tree node must be greater than the level of the given     // tree node.     // If we reach a node whose level is equal to the level of the tree node, we hit a sibling.     // If we reach a node whose level is greater than the level of the tree node, we hit a     // sibling of an ancestor.     for (       let i = startIndex + 1;       i < this.dataNodes.length && this.getLevel(dataNode) < this.getLevel(this.dataNodes[i]);       i++     ) {       results.push(this.dataNodes[i]);     }     return results;   }    /**    * Expands all data nodes in the tree.    *    * To make this working, the `dataNodes` variable of the TreeControl must be set to all flattened    * data nodes of the tree.    */   expandAll(): void {     this.expansionModel.select(...this.dataNodes.map(node => this._trackByValue(node)));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {Observable, isObservable} from 'rxjs'; import {take, filter} from 'rxjs/operators'; import {BaseTreeControl} from './base-tree-control';  /** Optional set of configuration that can be provided to the NestedTreeControl. */ export interface NestedTreeControlOptions<T, K> {   trackBy?: (dataNode: T) => K; }  /** Nested tree control. Able to expand/collapse a subtree recursively for NestedNode type. */ export class NestedTreeControl<T, K = T> extends BaseTreeControl<T, K> {   /** Construct with nested tree function getChildren. */   constructor(     public override getChildren: (dataNode: T) => Observable<T[]> | T[] | undefined | null,     public options?: NestedTreeControlOptions<T, K>,   ) {     super();      if (this.options) {       this.trackBy = this.options.trackBy;     }   }    /**    * Expands all dataNodes in the tree.    *    * To make this working, the `dataNodes` variable of the TreeControl must be set to all root level    * data nodes of the tree.    */   expandAll(): void {     this.expansionModel.clear();     const allNodes = this.dataNodes.reduce(       (accumulator: T[], dataNode) => [...accumulator, ...this.getDescendants(dataNode), dataNode],       [],     );     this.expansionModel.select(...allNodes.map(node => this._trackByValue(node)));   }    /** Gets a list of descendant dataNodes of a subtree rooted at given data node recursively. */   getDescendants(dataNode: T): T[] {     const descendants: T[] = [];      this._getDescendants(descendants, dataNode);     // Remove the node itself     return descendants.splice(1);   }    /** A helper function to get descendants recursively. */   protected _getDescendants(descendants: T[], dataNode: T): void {     descendants.push(dataNode);     const childrenNodes = this.getChildren(dataNode);     if (Array.isArray(childrenNodes)) {       childrenNodes.forEach((child: T) => this._getDescendants(descendants, child));     } else if (isObservable(childrenNodes)) {       // TypeScript as of version 3.5 doesn't seem to treat `Boolean` like a function that       // returns a `boolean` specifically in the context of `filter`, so we manually clarify that.       childrenNodes.pipe(take(1), filter(Boolean as () => boolean)).subscribe(children => {         for (const child of children) {           this._getDescendants(descendants, child);         }       });     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {Directive, Inject, InjectionToken, Optional, ViewContainerRef} from '@angular/core';  /**  * Injection token used to provide a `CdkTreeNode` to its outlet.  * Used primarily to avoid circular imports.  * @docs-private  */ export const CDK_TREE_NODE_OUTLET_NODE = new InjectionToken<{}>('CDK_TREE_NODE_OUTLET_NODE');  /**  * Outlet for nested CdkNode. Put `[cdkTreeNodeOutlet]` on a tag to place children dataNodes  * inside the outlet.  */ @Directive({   selector: '[cdkTreeNodeOutlet]', }) export class CdkTreeNodeOutlet {   constructor(     public viewContainer: ViewContainerRef,     @Inject(CDK_TREE_NODE_OUTLET_NODE) @Optional() public _node?: any,   ) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, TemplateRef} from '@angular/core';  /** Context provided to the tree node component. */ export class CdkTreeNodeOutletContext<T> {   /** Data for the node. */   $implicit: T;    /** Depth of the node. */   level: number;    /** Index location of the node. */   index?: number;    /** Length of the number of total dataNodes. */   count?: number;    constructor(data: T) {     this.$implicit = data;   } }  /**  * Data node definition for the CdkTree.  * Captures the node's template and a when predicate that describes when this node should be used.  */ @Directive({   selector: '[cdkTreeNodeDef]',   inputs: ['when: cdkTreeNodeDefWhen'], }) export class CdkTreeNodeDef<T> {   /**    * Function that should return true if this node template should be used for the provided node    * data and index. If left undefined, this node will be considered the default node template to    * use when no other when functions return true for the data.    * For every node, there must be at least one when function that passes or an undefined to    * default.    */   when: (index: number, nodeData: T) => boolean;    /** @docs-private */   constructor(public template: TemplateRef<any>) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Returns an error to be thrown when there is no usable data.  * @docs-private  */ export function getTreeNoValidDataSourceError() {   return Error(`A valid data source must be provided.`); }  /**  * Returns an error to be thrown when there are multiple nodes that are missing a when function.  * @docs-private  */ export function getTreeMultipleDefaultNodeDefsError() {   return Error(`There can only be one default row without a when predicate function.`); }  /**  * Returns an error to be thrown when there are no matching node defs for a particular set of data.  * @docs-private  */ export function getTreeMissingMatchingNodeDefError() {   return Error(`Could not find a matching node definition for the provided node data.`); }  /**  * Returns an error to be thrown when there are tree control.  * @docs-private  */ export function getTreeControlMissingError() {   return Error(`Could not find a tree control for the tree.`); }  /**  * Returns an error to be thrown when tree control did not implement functions for flat/nested node.  * @docs-private  */ export function getTreeControlFunctionsMissingError() {   return Error(`Could not find functions for nested/flat tree in tree control.`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {FocusableOption} from '@angular/cdk/a11y'; import {CollectionViewer, DataSource, isDataSource} from '@angular/cdk/collections'; import {   AfterContentChecked,   ChangeDetectionStrategy,   ChangeDetectorRef,   Component,   ContentChildren,   Directive,   ElementRef,   Input,   IterableChangeRecord,   IterableDiffer,   IterableDiffers,   OnDestroy,   OnInit,   QueryList,   TrackByFunction,   ViewChild,   ViewContainerRef,   ViewEncapsulation, } from '@angular/core'; import {   BehaviorSubject,   isObservable,   Observable,   of as observableOf,   Subject,   Subscription, } from 'rxjs'; import {takeUntil} from 'rxjs/operators'; import {TreeControl} from './control/tree-control'; import {CdkTreeNodeDef, CdkTreeNodeOutletContext} from './node'; import {CdkTreeNodeOutlet} from './outlet'; import {   getTreeControlFunctionsMissingError,   getTreeControlMissingError,   getTreeMissingMatchingNodeDefError,   getTreeMultipleDefaultNodeDefsError,   getTreeNoValidDataSourceError, } from './tree-errors'; import {coerceNumberProperty} from '@angular/cdk/coercion';  /**  * CDK tree component that connects with a data source to retrieve data of type `T` and renders  * dataNodes with hierarchy. Updates the dataNodes when new data is provided by the data source.  */ @Component({   selector: 'cdk-tree',   exportAs: 'cdkTree',   template: `<ng-container cdkTreeNodeOutlet></ng-container>`,   host: {     'class': 'cdk-tree',     'role': 'tree',   },   encapsulation: ViewEncapsulation.None,    // The \"OnPush\" status for the `CdkTree` component is effectively a noop, so we are removing it.   // The view for `CdkTree` consists entirely of templates declared in other views. As they are   // declared elsewhere, they are checked when their declaration points are checked.   // tslint:disable-next-line:validate-decorators   changeDetection: ChangeDetectionStrategy.Default, }) export class CdkTree<T, K = T> implements AfterContentChecked, CollectionViewer, OnDestroy, OnInit {   /** Subject that emits when the component has been destroyed. */   private readonly _onDestroy = new Subject<void>();    /** Differ used to find the changes in the data provided by the data source. */   private _dataDiffer: IterableDiffer<T>;    /** Stores the node definition that does not have a when predicate. */   private _defaultNodeDef: CdkTreeNodeDef<T> | null;    /** Data subscription */   private _dataSubscription: Subscription | null;    /** Level of nodes */   private _levels: Map<T, number> = new Map<T, number>();    /**    * Provides a stream containing the latest data array to render. Influenced by the tree's    * stream of view window (what dataNodes are currently on screen).    * Data source can be an observable of data array, or a data array to render.    */   @Input()   get dataSource(): DataSource<T> | Observable<T[]> | T[] {     return this._dataSource;   }   set dataSource(dataSource: DataSource<T> | Observable<T[]> | T[]) {     if (this._dataSource !== dataSource) {       this._switchDataSource(dataSource);     }   }   private _dataSource: DataSource<T> | Observable<T[]> | T[];    /** The tree controller */   @Input() treeControl: TreeControl<T, K>;    /**    * Tracking function that will be used to check the differences in data changes. Used similarly    * to `ngFor` `trackBy` function. Optimize node operations by identifying a node based on its data    * relative to the function to know if a node should be added/removed/moved.    * Accepts a function that takes two parameters, `index` and `item`.    */   @Input() trackBy: TrackByFunction<T>;    // Outlets within the tree's template where the dataNodes will be inserted.   @ViewChild(CdkTreeNodeOutlet, {static: true}) _nodeOutlet: CdkTreeNodeOutlet;    /** The tree node template for the tree */   @ContentChildren(CdkTreeNodeDef, {     // We need to use `descendants: true`, because Ivy will no longer match     // indirect descendants if it's left as false.     descendants: true,   })   _nodeDefs: QueryList<CdkTreeNodeDef<T>>;    // TODO(tinayuangao): Setup a listener for scrolling, emit the calculated view to viewChange.   //     Remove the MAX_VALUE in viewChange   /**    * Stream containing the latest information on what rows are being displayed on screen.    * Can be used by the data source to as a heuristic of what data should be provided.    */   readonly viewChange = new BehaviorSubject<{start: number; end: number}>({     start: 0,     end: Number.MAX_VALUE,   });    constructor(private _differs: IterableDiffers, private _changeDetectorRef: ChangeDetectorRef) {}    ngOnInit() {     this._dataDiffer = this._differs.find([]).create(this.trackBy);     if (!this.treeControl && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getTreeControlMissingError();     }   }    ngOnDestroy() {     this._nodeOutlet.viewContainer.clear();      this.viewChange.complete();     this._onDestroy.next();     this._onDestroy.complete();      if (this._dataSource && typeof (this._dataSource as DataSource<T>).disconnect === 'function') {       (this.dataSource as DataSource<T>).disconnect(this);     }      if (this._dataSubscription) {       this._dataSubscription.unsubscribe();       this._dataSubscription = null;     }   }    ngAfterContentChecked() {     const defaultNodeDefs = this._nodeDefs.filter(def => !def.when);     if (defaultNodeDefs.length > 1 && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getTreeMultipleDefaultNodeDefsError();     }     this._defaultNodeDef = defaultNodeDefs[0];      if (this.dataSource && this._nodeDefs && !this._dataSubscription) {       this._observeRenderChanges();     }   }    // TODO(tinayuangao): Work on keyboard traversal and actions, make sure it's working for RTL   //     and nested trees.    /**    * Switch to the provided data source by resetting the data and unsubscribing from the current    * render change subscription if one exists. If the data source is null, interpret this by    * clearing the node outlet. Otherwise start listening for new data.    */   private _switchDataSource(dataSource: DataSource<T> | Observable<T[]> | T[]) {     if (this._dataSource && typeof (this._dataSource as DataSource<T>).disconnect === 'function') {       (this.dataSource as DataSource<T>).disconnect(this);     }      if (this._dataSubscription) {       this._dataSubscription.unsubscribe();       this._dataSubscription = null;     }      // Remove the all dataNodes if there is now no data source     if (!dataSource) {       this._nodeOutlet.viewContainer.clear();     }      this._dataSource = dataSource;     if (this._nodeDefs) {       this._observeRenderChanges();     }   }    /** Set up a subscription for the data provided by the data source. */   private _observeRenderChanges() {     let dataStream: Observable<readonly T[]> | undefined;      if (isDataSource(this._dataSource)) {       dataStream = this._dataSource.connect(this);     } else if (isObservable(this._dataSource)) {       dataStream = this._dataSource;     } else if (Array.isArray(this._dataSource)) {       dataStream = observableOf(this._dataSource);     }      if (dataStream) {       this._dataSubscription = dataStream         .pipe(takeUntil(this._onDestroy))         .subscribe(data => this.renderNodeChanges(data));     } else if (typeof ngDevMode === 'undefined' || ngDevMode) {       throw getTreeNoValidDataSourceError();     }   }    /** Check for changes made in the data and render each change (node added/removed/moved). */   renderNodeChanges(     data: readonly T[],     dataDiffer: IterableDiffer<T> = this._dataDiffer,     viewContainer: ViewContainerRef = this._nodeOutlet.viewContainer,     parentData?: T,   ) {     const changes = dataDiffer.diff(data);     if (!changes) {       return;     }      changes.forEachOperation(       (         item: IterableChangeRecord<T>,         adjustedPreviousIndex: number | null,         currentIndex: number | null,       ) => {         if (item.previousIndex == null) {           this.insertNode(data[currentIndex!], currentIndex!, viewContainer, parentData);         } else if (currentIndex == null) {           viewContainer.remove(adjustedPreviousIndex!);           this._levels.delete(item.item);         } else {           const view = viewContainer.get(adjustedPreviousIndex!);           viewContainer.move(view!, currentIndex);         }       },     );      this._changeDetectorRef.detectChanges();   }    /**    * Finds the matching node definition that should be used for this node data. If there is only    * one node definition, it is returned. Otherwise, find the node definition that has a when    * predicate that returns true with the data. If none return true, return the default node    * definition.    */   _getNodeDef(data: T, i: number): CdkTreeNodeDef<T> {     if (this._nodeDefs.length === 1) {       return this._nodeDefs.first!;     }      const nodeDef =       this._nodeDefs.find(def => def.when && def.when(i, data)) || this._defaultNodeDef;      if (!nodeDef && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getTreeMissingMatchingNodeDefError();     }      return nodeDef!;   }    /**    * Create the embedded view for the data node template and place it in the correct index location    * within the data node view container.    */   insertNode(nodeData: T, index: number, viewContainer?: ViewContainerRef, parentData?: T) {     const node = this._getNodeDef(nodeData, index);      // Node context that will be provided to created embedded view     const context = new CdkTreeNodeOutletContext<T>(nodeData);      // If the tree is flat tree, then use the `getLevel` function in flat tree control     // Otherwise, use the level of parent node.     if (this.treeControl.getLevel) {       context.level = this.treeControl.getLevel(nodeData);     } else if (typeof parentData !== 'undefined' && this._levels.has(parentData)) {       context.level = this._levels.get(parentData)! + 1;     } else {       context.level = 0;     }     this._levels.set(nodeData, context.level);      // Use default tree nodeOutlet, or nested node's nodeOutlet     const container = viewContainer ? viewContainer : this._nodeOutlet.viewContainer;     container.createEmbeddedView(node.template, context, index);      // Set the data to just created `CdkTreeNode`.     // The `CdkTreeNode` created from `createEmbeddedView` will be saved in static variable     //     `mostRecentTreeNode`. We get it from static variable and pass the node data to it.     if (CdkTreeNode.mostRecentTreeNode) {       CdkTreeNode.mostRecentTreeNode.data = nodeData;     }   } }  /**  * Tree node for CdkTree. It contains the data in the tree node.  */ @Directive({   selector: 'cdk-tree-node',   exportAs: 'cdkTreeNode',   host: {     'class': 'cdk-tree-node',     '[attr.aria-expanded]': 'isExpanded',   }, }) export class CdkTreeNode<T, K = T> implements FocusableOption, OnDestroy, OnInit {   /**    * The role of the tree node.    * @deprecated The correct role is 'treeitem', 'group' should not be used. This input will be    *   removed in a future version.    * @breaking-change 12.0.0 Remove this input    */   @Input() get role(): 'treeitem' | 'group' {     return 'treeitem';   }    set role(_role: 'treeitem' | 'group') {     // TODO: move to host after View Engine deprecation     this._elementRef.nativeElement.setAttribute('role', _role);   }    /**    * The most recently created `CdkTreeNode`. We save it in static variable so we can retrieve it    * in `CdkTree` and set the data to it.    */   static mostRecentTreeNode: CdkTreeNode<any> | null = null;    /** Subject that emits when the component has been destroyed. */   protected readonly _destroyed = new Subject<void>();    /** Emits when the node's data has changed. */   readonly _dataChanges = new Subject<void>();    private _parentNodeAriaLevel: number;    /** The tree node's data. */   get data(): T {     return this._data;   }   set data(value: T) {     if (value !== this._data) {       this._data = value;       this._setRoleFromData();       this._dataChanges.next();     }   }   protected _data: T;    get isExpanded(): boolean {     return this._tree.treeControl.isExpanded(this._data);   }    get level(): number {     // If the treeControl has a getLevel method, use it to get the level. Otherwise read the     // aria-level off the parent node and use it as the level for this node (note aria-level is     // 1-indexed, while this property is 0-indexed, so we don't need to increment).     return this._tree.treeControl.getLevel       ? this._tree.treeControl.getLevel(this._data)       : this._parentNodeAriaLevel;   }    constructor(protected _elementRef: ElementRef<HTMLElement>, protected _tree: CdkTree<T, K>) {     CdkTreeNode.mostRecentTreeNode = this as CdkTreeNode<T, K>;     this.role = 'treeitem';   }    ngOnInit(): void {     this._parentNodeAriaLevel = getParentNodeAriaLevel(this._elementRef.nativeElement);     this._elementRef.nativeElement.setAttribute('aria-level', `${this.level + 1}`);   }    ngOnDestroy() {     // If this is the last tree node being destroyed,     // clear out the reference to avoid leaking memory.     if (CdkTreeNode.mostRecentTreeNode === this) {       CdkTreeNode.mostRecentTreeNode = null;     }      this._dataChanges.complete();     this._destroyed.next();     this._destroyed.complete();   }    /** Focuses the menu item. Implements for FocusableOption. */   focus(): void {     this._elementRef.nativeElement.focus();   }    // TODO: role should eventually just be set in the component host   protected _setRoleFromData(): void {     if (       !this._tree.treeControl.isExpandable &&       !this._tree.treeControl.getChildren &&       (typeof ngDevMode === 'undefined' || ngDevMode)     ) {       throw getTreeControlFunctionsMissingError();     }     this.role = 'treeitem';   } }  function getParentNodeAriaLevel(nodeElement: HTMLElement): number {   let parent = nodeElement.parentElement;   while (parent && !isNodeElement(parent)) {     parent = parent.parentElement;   }   if (!parent) {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       throw Error('Incorrect tree structure containing detached node.');     } else {       return -1;     }   } else if (parent.classList.contains('cdk-nested-tree-node')) {     return coerceNumberProperty(parent.getAttribute('aria-level')!);   } else {     // The ancestor element is the cdk-tree itself     return 0;   } }  function isNodeElement(element: HTMLElement) {   const classList = element.classList;   return !!(classList?.contains('cdk-nested-tree-node') || classList?.contains('cdk-tree')); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {   AfterContentInit,   ContentChildren,   Directive,   ElementRef,   IterableDiffer,   IterableDiffers,   OnDestroy,   OnInit,   QueryList, } from '@angular/core'; import {isObservable} from 'rxjs'; import {takeUntil} from 'rxjs/operators';  import {CDK_TREE_NODE_OUTLET_NODE, CdkTreeNodeOutlet} from './outlet'; import {CdkTree, CdkTreeNode} from './tree'; import {getTreeControlFunctionsMissingError} from './tree-errors';  /**  * Nested node is a child of `<cdk-tree>`. It works with nested tree.  * By using `cdk-nested-tree-node` component in tree node template, children of the parent node will  * be added in the `cdkTreeNodeOutlet` in tree node template.  * The children of node will be automatically added to `cdkTreeNodeOutlet`.  */ @Directive({   selector: 'cdk-nested-tree-node',   exportAs: 'cdkNestedTreeNode',   inputs: ['role', 'disabled', 'tabIndex'],   providers: [     {provide: CdkTreeNode, useExisting: CdkNestedTreeNode},     {provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: CdkNestedTreeNode},   ],   host: {     'class': 'cdk-nested-tree-node',   }, }) export class CdkNestedTreeNode<T, K = T>   extends CdkTreeNode<T, K>   implements AfterContentInit, OnDestroy, OnInit {   /** Differ used to find the changes in the data provided by the data source. */   private _dataDiffer: IterableDiffer<T>;    /** The children data dataNodes of current node. They will be placed in `CdkTreeNodeOutlet`. */   protected _children: T[];    /** The children node placeholder. */   @ContentChildren(CdkTreeNodeOutlet, {     // We need to use `descendants: true`, because Ivy will no longer match     // indirect descendants if it's left as false.     descendants: true,   })   nodeOutlet: QueryList<CdkTreeNodeOutlet>;    constructor(     elementRef: ElementRef<HTMLElement>,     tree: CdkTree<T, K>,     protected _differs: IterableDiffers,   ) {     super(elementRef, tree);   }    ngAfterContentInit() {     this._dataDiffer = this._differs.find([]).create(this._tree.trackBy);     if (!this._tree.treeControl.getChildren && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getTreeControlFunctionsMissingError();     }     const childrenNodes = this._tree.treeControl.getChildren(this.data);     if (Array.isArray(childrenNodes)) {       this.updateChildrenNodes(childrenNodes as T[]);     } else if (isObservable(childrenNodes)) {       childrenNodes         .pipe(takeUntil(this._destroyed))         .subscribe(result => this.updateChildrenNodes(result));     }     this.nodeOutlet.changes       .pipe(takeUntil(this._destroyed))       .subscribe(() => this.updateChildrenNodes());   }    // This is a workaround for https://github.com/angular/angular/issues/23091   // In aot mode, the lifecycle hooks from parent class are not called.   override ngOnInit() {     super.ngOnInit();   }    override ngOnDestroy() {     this._clear();     super.ngOnDestroy();   }    /** Add children dataNodes to the NodeOutlet */   protected updateChildrenNodes(children?: T[]): void {     const outlet = this._getNodeOutlet();     if (children) {       this._children = children;     }     if (outlet && this._children) {       const viewContainer = outlet.viewContainer;       this._tree.renderNodeChanges(this._children, this._dataDiffer, viewContainer, this._data);     } else {       // Reset the data differ if there's no children nodes displayed       this._dataDiffer.diff([]);     }   }    /** Clear the children dataNodes. */   protected _clear(): void {     const outlet = this._getNodeOutlet();     if (outlet) {       outlet.viewContainer.clear();       this._dataDiffer.diff([]);     }   }    /** Gets the outlet for the current node. */   private _getNodeOutlet() {     const outlets = this.nodeOutlet;      // Note that since we use `descendants: true` on the query, we have to ensure     // that we don't pick up the outlet of a child node by accident.     return outlets && outlets.find(outlet => !outlet._node || outlet._node === this);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion'; import {Directive, ElementRef, Input, OnDestroy, Optional} from '@angular/core'; import {takeUntil} from 'rxjs/operators'; import {Subject} from 'rxjs'; import {CdkTree, CdkTreeNode} from './tree';  /** Regex used to split a string on its CSS units. */ const cssUnitPattern = /([A-Za-z%]+)$/;  /**  * Indent for the children tree dataNodes.  * This directive will add left-padding to the node to show hierarchy.  */ @Directive({   selector: '[cdkTreeNodePadding]', }) export class CdkTreeNodePadding<T, K = T> implements OnDestroy {   /** Current padding value applied to the element. Used to avoid unnecessarily hitting the DOM. */   private _currentPadding: string | null;    /** Subject that emits when the component has been destroyed. */   private readonly _destroyed = new Subject<void>();    /** CSS units used for the indentation value. */   indentUnits = 'px';    /** The level of depth of the tree node. The padding will be `level * indent` pixels. */   @Input('cdkTreeNodePadding')   get level(): number {     return this._level;   }   set level(value: NumberInput) {     this._setLevelInput(value);   }   _level: number;    /**    * The indent for each level. Can be a number or a CSS string.    * Default number 40px from material design menu sub-menu spec.    */   @Input('cdkTreeNodePaddingIndent')   get indent(): number | string {     return this._indent;   }   set indent(indent: number | string) {     this._setIndentInput(indent);   }   _indent: number = 40;    constructor(     private _treeNode: CdkTreeNode<T, K>,     private _tree: CdkTree<T, K>,     private _element: ElementRef<HTMLElement>,     @Optional() private _dir: Directionality,   ) {     this._setPadding();     if (_dir) {       _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => this._setPadding(true));     }      // In Ivy the indentation binding might be set before the tree node's data has been added,     // which means that we'll miss the first render. We have to subscribe to changes in the     // data to ensure that everything is up to date.     _treeNode._dataChanges.subscribe(() => this._setPadding());   }    ngOnDestroy() {     this._destroyed.next();     this._destroyed.complete();   }    /** The padding indent value for the tree node. Returns a string with px numbers if not null. */   _paddingIndent(): string | null {     const nodeLevel =       this._treeNode.data && this._tree.treeControl.getLevel         ? this._tree.treeControl.getLevel(this._treeNode.data)         : null;     const level = this._level == null ? nodeLevel : this._level;     return typeof level === 'number' ? `${level * this._indent}${this.indentUnits}` : null;   }    _setPadding(forceChange = false) {     const padding = this._paddingIndent();      if (padding !== this._currentPadding || forceChange) {       const element = this._element.nativeElement;       const paddingProp = this._dir && this._dir.value === 'rtl' ? 'paddingRight' : 'paddingLeft';       const resetProp = paddingProp === 'paddingLeft' ? 'paddingRight' : 'paddingLeft';       element.style[paddingProp] = padding || '';       element.style[resetProp] = '';       this._currentPadding = padding;     }   }    /**    * This has been extracted to a util because of TS 4 and VE.    * View Engine doesn't support property rename inheritance.    * TS 4.0 doesn't allow properties to override accessors or vice-versa.    * @docs-private    */   protected _setLevelInput(value: NumberInput) {     // Set to null as the fallback value so that _setPadding can fall back to the node level if the     // consumer set the directive as `cdkTreeNodePadding=\"\"`. We still want to take this value if     // they set 0 explicitly.     this._level = coerceNumberProperty(value, null)!;     this._setPadding();   }    /**    * This has been extracted to a util because of TS 4 and VE.    * View Engine doesn't support property rename inheritance.    * TS 4.0 doesn't allow properties to override accessors or vice-versa.    * @docs-private    */   protected _setIndentInput(indent: number | string) {     let value = indent;     let units = 'px';      if (typeof indent === 'string') {       const parts = indent.split(cssUnitPattern);       value = parts[0];       units = parts[1] || units;     }      this.indentUnits = units;     this._indent = coerceNumberProperty(value);     this._setPadding();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {Directive, Input} from '@angular/core';  import {CdkTree, CdkTreeNode} from './tree';  /**  * Node toggle to expand/collapse the node.  */ @Directive({   selector: '[cdkTreeNodeToggle]',   host: {     '(click)': '_toggle($event)',   }, }) export class CdkTreeNodeToggle<T, K = T> {   /** Whether expand/collapse the node recursively. */   @Input('cdkTreeNodeToggleRecursive')   get recursive(): boolean {     return this._recursive;   }   set recursive(value: BooleanInput) {     this._recursive = coerceBooleanProperty(value);   }   protected _recursive = false;    constructor(protected _tree: CdkTree<T, K>, protected _treeNode: CdkTreeNode<T, K>) {}    _toggle(event: Event): void {     this.recursive       ? this._tree.treeControl.toggleDescendants(this._treeNode.data)       : this._tree.treeControl.toggle(this._treeNode.data);      event.stopPropagation();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {CdkTreeNodeOutlet} from './outlet'; import {CdkTreeNodePadding} from './padding'; import {CdkTreeNodeToggle} from './toggle'; import {CdkTree, CdkTreeNode} from './tree'; import {CdkTreeNodeDef} from './node'; import {CdkNestedTreeNode} from './nested-node';  const EXPORTED_DECLARATIONS = [   CdkNestedTreeNode,   CdkTreeNodeDef,   CdkTreeNodePadding,   CdkTreeNodeToggle,   CdkTree,   CdkTreeNode,   CdkTreeNodeOutlet, ];  @NgModule({   exports: EXPORTED_DECLARATIONS,   declarations: EXPORTED_DECLARATIONS, }) export class CdkTreeModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './control/base-tree-control'; export * from './control/flat-tree-control'; export * from './control/nested-tree-control'; export * from './control/tree-control'; export * from './nested-node'; export * from './node'; export * from './padding'; export * from './outlet'; export * from './tree'; export * from './tree-errors'; export * from './tree-module'; export * from './toggle'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["observableOf","i1.CdkTreeNodeOutlet","i1.CdkTree","i1.CdkTreeNode"],"mappings":"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"}
-------------------- SECTION 179 --------------------
{"version":3,"file":"accordion.mjs","sources":["../../../../../../src/cdk/accordion/accordion.ts","../../../../../../src/cdk/accordion/accordion-item.ts","../../../../../../src/cdk/accordion/accordion-module.ts","../../../../../../src/cdk/accordion/public-api.ts","../../../../../../src/cdk/accordion/index.ts","../../../../../../src/cdk/accordion/accordion_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {Directive, InjectionToken, Input, OnChanges, OnDestroy, SimpleChanges} from '@angular/core'; import {Subject} from 'rxjs';  /** Used to generate unique ID for each accordion. */ let nextId = 0;  /**  * Injection token that can be used to reference instances of `CdkAccordion`. It serves  * as alternative token to the actual `CdkAccordion` class which could cause unnecessary  * retention of the class and its directive metadata.  */ export const CDK_ACCORDION = new InjectionToken<CdkAccordion>('CdkAccordion');  /**  * Directive whose purpose is to manage the expanded state of CdkAccordionItem children.  */ @Directive({   selector: 'cdk-accordion, [cdkAccordion]',   exportAs: 'cdkAccordion',   providers: [{provide: CDK_ACCORDION, useExisting: CdkAccordion}], }) export class CdkAccordion implements OnDestroy, OnChanges {   /** Emits when the state of the accordion changes */   readonly _stateChanges = new Subject<SimpleChanges>();    /** Stream that emits true/false when openAll/closeAll is triggered. */   readonly _openCloseAllActions: Subject<boolean> = new Subject<boolean>();    /** A readonly id value to use for unique selection coordination. */   readonly id: string = `cdk-accordion-${nextId++}`;    /** Whether the accordion should allow multiple expanded accordion items simultaneously. */   @Input()   get multi(): boolean {     return this._multi;   }   set multi(multi: BooleanInput) {     this._multi = coerceBooleanProperty(multi);   }   private _multi: boolean = false;    /** Opens all enabled accordion items in an accordion where multi is enabled. */   openAll(): void {     if (this._multi) {       this._openCloseAllActions.next(true);     }   }    /** Closes all enabled accordion items. */   closeAll(): void {     this._openCloseAllActions.next(false);   }    ngOnChanges(changes: SimpleChanges) {     this._stateChanges.next(changes);   }    ngOnDestroy() {     this._stateChanges.complete();     this._openCloseAllActions.complete();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   Output,   Directive,   EventEmitter,   Input,   OnDestroy,   Optional,   ChangeDetectorRef,   SkipSelf,   Inject, } from '@angular/core'; import {UniqueSelectionDispatcher} from '@angular/cdk/collections'; import {CDK_ACCORDION, CdkAccordion} from './accordion'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {Subscription} from 'rxjs';  /** Used to generate unique ID for each accordion item. */ let nextId = 0;  /**  * An basic directive expected to be extended and decorated as a component.  Sets up all  * events and attributes needed to be managed by a CdkAccordion parent.  */ @Directive({   selector: 'cdk-accordion-item, [cdkAccordionItem]',   exportAs: 'cdkAccordionItem',   providers: [     // Provide `CDK_ACCORDION` as undefined to prevent nested accordion items from     // registering to the same accordion.     {provide: CDK_ACCORDION, useValue: undefined},   ], }) export class CdkAccordionItem implements OnDestroy {   /** Subscription to openAll/closeAll events. */   private _openCloseAllSubscription = Subscription.EMPTY;   /** Event emitted every time the AccordionItem is closed. */   @Output() readonly closed: EventEmitter<void> = new EventEmitter<void>();   /** Event emitted every time the AccordionItem is opened. */   @Output() readonly opened: EventEmitter<void> = new EventEmitter<void>();   /** Event emitted when the AccordionItem is destroyed. */   @Output() readonly destroyed: EventEmitter<void> = new EventEmitter<void>();    /**    * Emits whenever the expanded state of the accordion changes.    * Primarily used to facilitate two-way binding.    * @docs-private    */   @Output() readonly expandedChange: EventEmitter<boolean> = new EventEmitter<boolean>();    /** The unique AccordionItem id. */   readonly id: string = `cdk-accordion-child-${nextId++}`;    /** Whether the AccordionItem is expanded. */   @Input()   get expanded(): boolean {     return this._expanded;   }   set expanded(expanded: BooleanInput) {     expanded = coerceBooleanProperty(expanded);      // Only emit events and update the internal value if the value changes.     if (this._expanded !== expanded) {       this._expanded = expanded;       this.expandedChange.emit(expanded);        if (expanded) {         this.opened.emit();         /**          * In the unique selection dispatcher, the id parameter is the id of the CdkAccordionItem,          * the name value is the id of the accordion.          */         const accordionId = this.accordion ? this.accordion.id : this.id;         this._expansionDispatcher.notify(this.id, accordionId);       } else {         this.closed.emit();       }        // Ensures that the animation will run when the value is set outside of an `@Input`.       // This includes cases like the open, close and toggle methods.       this._changeDetectorRef.markForCheck();     }   }   private _expanded = false;    /** Whether the AccordionItem is disabled. */   @Input()   get disabled(): boolean {     return this._disabled;   }   set disabled(disabled: BooleanInput) {     this._disabled = coerceBooleanProperty(disabled);   }   private _disabled = false;    /** Unregister function for _expansionDispatcher. */   private _removeUniqueSelectionListener: () => void = () => {};    constructor(     @Optional() @Inject(CDK_ACCORDION) @SkipSelf() public accordion: CdkAccordion,     private _changeDetectorRef: ChangeDetectorRef,     protected _expansionDispatcher: UniqueSelectionDispatcher,   ) {     this._removeUniqueSelectionListener = _expansionDispatcher.listen(       (id: string, accordionId: string) => {         if (           this.accordion &&           !this.accordion.multi &&           this.accordion.id === accordionId &&           this.id !== id         ) {           this.expanded = false;         }       },     );      // When an accordion item is hosted in an accordion, subscribe to open/close events.     if (this.accordion) {       this._openCloseAllSubscription = this._subscribeToOpenCloseAllActions();     }   }    /** Emits an event for the accordion item being destroyed. */   ngOnDestroy() {     this.opened.complete();     this.closed.complete();     this.destroyed.emit();     this.destroyed.complete();     this._removeUniqueSelectionListener();     this._openCloseAllSubscription.unsubscribe();   }    /** Toggles the expanded state of the accordion item. */   toggle(): void {     if (!this.disabled) {       this.expanded = !this.expanded;     }   }    /** Sets the expanded state of the accordion item to false. */   close(): void {     if (!this.disabled) {       this.expanded = false;     }   }    /** Sets the expanded state of the accordion item to true. */   open(): void {     if (!this.disabled) {       this.expanded = true;     }   }    private _subscribeToOpenCloseAllActions(): Subscription {     return this.accordion._openCloseAllActions.subscribe(expanded => {       // Only change expanded state if item is enabled       if (!this.disabled) {         this.expanded = expanded;       }     });   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {CdkAccordion} from './accordion'; import {CdkAccordionItem} from './accordion-item';  @NgModule({   exports: [CdkAccordion, CdkAccordionItem],   declarations: [CdkAccordion, CdkAccordionItem], }) export class CdkAccordionModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export {CdkAccordionItem} from './accordion-item'; export {CdkAccordion} from './accordion'; export * from './accordion-module'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["nextId"],"mappings":";;;;;;AAAA;;;;;;AAMG;AAMH;AACA,IAAIA,QAAM,GAAG,CAAC,CAAC;AAEf;;;;AAIG;AACI,MAAM,aAAa,GAAG,IAAI,cAAc,CAAe,cAAc,CAAC,CAAC;AAE9E;;AAEG;MAMU,YAAY,CAAA;AALzB,IAAA,WAAA,GAAA;;AAOW,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAiB,CAAC;;AAG7C,QAAA,IAAA,CAAA,oBAAoB,GAAqB,IAAI,OAAO,EAAW,CAAC;;AAGhE,QAAA,IAAA,CAAA,EAAE,GAAW,iBAAiBA,QAAM,EAAE,EAAE,CAAC;AAU1C,QAAA,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;KAsBjC;;AA7BC,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAAmB,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC5C;;IAID,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,SAAA;KACF;;IAGD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACvC;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAClC;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC;KACtC;;8GAvCU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAZ,YAAY,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAFZ,CAAC,EAAC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAC,CAAC,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAErD,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,QAAQ,EAAE,cAAc;oBACxB,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAc,YAAA,EAAC,CAAC;iBACjE,CAAA;8BAaK,KAAK,EAAA,CAAA;sBADR,KAAK;;;ACzCR;;;;;;AAMG;AAkBH;AACA,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf;;;AAGG;MAUU,gBAAgB,CAAA;;AAqB3B,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,QAAsB,EAAA;AACjC,QAAA,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;;AAG3C,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEnC,YAAA,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACnB;;;AAGG;AACH,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;gBACjE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AACxD,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACpB,aAAA;;;AAID,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;AACxC,SAAA;KACF;;AAID,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,QAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;KAClD;AAMD,IAAA,WAAA,CACwD,SAAuB,EACrE,kBAAqC,EACnC,oBAA+C,EAAA;AAFH,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;AACrE,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;AACnC,QAAA,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAA2B;;AAlEnD,QAAA,IAAA,CAAA,yBAAyB,GAAG,YAAY,CAAC,KAAK,CAAC;;AAEpC,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAQ,CAAC;;AAEtD,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAQ,CAAC;;AAEtD,QAAA,IAAA,CAAA,SAAS,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAE5E;;;;AAIG;AACgB,QAAA,IAAA,CAAA,cAAc,GAA0B,IAAI,YAAY,EAAW,CAAC;;AAG9E,QAAA,IAAA,CAAA,EAAE,GAAW,uBAAuB,MAAM,EAAE,EAAE,CAAC;AAgChD,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAUlB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;;AAGlB,QAAA,IAAA,CAAA,8BAA8B,GAAe,MAAK,GAAG,CAAC;AAO5D,QAAA,IAAI,CAAC,8BAA8B,GAAG,oBAAoB,CAAC,MAAM,CAC/D,CAAC,EAAU,EAAE,WAAmB,KAAI;YAClC,IACE,IAAI,CAAC,SAAS;AACd,gBAAA,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK;AACrB,gBAAA,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,WAAW;AACjC,gBAAA,IAAI,CAAC,EAAE,KAAK,EAAE,EACd;AACA,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,aAAA;AACH,SAAC,CACF,CAAC;;QAGF,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;AACzE,SAAA;KACF;;IAGD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;KAC9C;;IAGD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChC,SAAA;KACF;;IAGD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,SAAA;KACF;;IAGD,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACtB,SAAA;KACF;IAEO,+BAA+B,GAAA;QACrC,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,SAAS,CAAC,QAAQ,IAAG;;AAE9D,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC1B,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;AA/HU,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBAkEL,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAlExB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,IAAA,EAAA,gBAAgB,EANhB,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA;;;AAGT,QAAA,EAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAC;KAC9C,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAEU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wCAAwC;AAClD,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,SAAS,EAAE;;;AAGT,wBAAA,EAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAC;AAC9C,qBAAA;iBACF,CAAA;;;8BAmEI,QAAQ;;8BAAI,MAAM;+BAAC,aAAa,CAAA;;8BAAG,QAAQ;;yBA9D3B,MAAM,EAAA,CAAA;sBAAxB,MAAM;gBAEY,MAAM,EAAA,CAAA;sBAAxB,MAAM;gBAEY,SAAS,EAAA,CAAA;sBAA3B,MAAM;gBAOY,cAAc,EAAA,CAAA;sBAAhC,MAAM;gBAOH,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAiCF,QAAQ,EAAA,CAAA;sBADX,KAAK;;;AC7FR;;;;;;AAMG;MAUU,kBAAkB,CAAA;;oHAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAFd,YAAY,EAAE,gBAAgB,CADnC,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;qHAG7B,kBAAkB,EAAA,CAAA,CAAA;gGAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;AACzC,oBAAA,YAAY,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;iBAC/C,CAAA;;;ACfD;;;;;;AAMG;;ACNH;;;;;;AAMG;;ACNH;;AAEG;;;;"}
-------------------- SECTION 180 --------------------
{"version":3,"file":"testing.mjs","sources":["../../../../../../src/cdk/testing/change-detection.ts","../../../../../../src/cdk/testing/component-harness.ts","../../../../../../src/cdk/testing/harness-environment.ts","../../../../../../src/cdk/testing/test-element.ts","../../../../../../src/cdk/testing/test-element-errors.ts","../../../../../../src/cdk/testing/text-filtering.ts","../../../../../../src/cdk/testing/public-api.ts","../../../../../../src/cdk/testing/index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BehaviorSubject, Subscription} from 'rxjs';  /** Represents the status of auto change detection. */ export interface AutoChangeDetectionStatus {   /** Whether auto change detection is disabled. */   isDisabled: boolean;   /**    * An optional callback, if present it indicates that change detection should be run immediately,    * while handling the status change. The callback should then be called as soon as change    * detection is done.    */   onDetectChangesNow?: () => void; }  /** Subject used to dispatch and listen for changes to the auto change detection status . */ const autoChangeDetectionSubject = new BehaviorSubject<AutoChangeDetectionStatus>({   isDisabled: false, });  /** The current subscription to `autoChangeDetectionSubject`. */ let autoChangeDetectionSubscription: Subscription | null;  /**  * The default handler for auto change detection status changes. This handler will be used if the  * specific environment does not install its own.  * @param status The new auto change detection status.  */ function defaultAutoChangeDetectionHandler(status: AutoChangeDetectionStatus) {   status.onDetectChangesNow?.(); }  /**  * Allows a test `HarnessEnvironment` to install its own handler for auto change detection status  * changes.  * @param handler The handler for the auto change detection status.  */ export function handleAutoChangeDetectionStatus(   handler: (status: AutoChangeDetectionStatus) => void, ) {   stopHandlingAutoChangeDetectionStatus();   autoChangeDetectionSubscription = autoChangeDetectionSubject.subscribe(handler); }  /** Allows a `HarnessEnvironment` to stop handling auto change detection status changes. */ export function stopHandlingAutoChangeDetectionStatus() {   autoChangeDetectionSubscription?.unsubscribe();   autoChangeDetectionSubscription = null; }  /**  * Batches together triggering of change detection over the duration of the given function.  * @param fn The function to call with batched change detection.  * @param triggerBeforeAndAfter Optionally trigger change detection once before and after the batch  *   operation. If false, change detection will not be triggered.  * @return The result of the given function.  */ async function batchChangeDetection<T>(fn: () => Promise<T>, triggerBeforeAndAfter: boolean) {   // If change detection batching is already in progress, just run the function.   if (autoChangeDetectionSubject.getValue().isDisabled) {     return await fn();   }    // If nothing is handling change detection batching, install the default handler.   if (!autoChangeDetectionSubscription) {     handleAutoChangeDetectionStatus(defaultAutoChangeDetectionHandler);   }    if (triggerBeforeAndAfter) {     await new Promise(resolve =>       autoChangeDetectionSubject.next({         isDisabled: true,         onDetectChangesNow: resolve as () => void,       }),     );     // The function passed in may throw (e.g. if the user wants to make an expectation of an error     // being thrown. If this happens, we need to make sure we still re-enable change detection, so     // we wrap it in a `finally` block.     try {       return await fn();     } finally {       await new Promise(resolve =>         autoChangeDetectionSubject.next({           isDisabled: false,           onDetectChangesNow: resolve as () => void,         }),       );     }   } else {     autoChangeDetectionSubject.next({isDisabled: true});     // The function passed in may throw (e.g. if the user wants to make an expectation of an error     // being thrown. If this happens, we need to make sure we still re-enable change detection, so     // we wrap it in a `finally` block.     try {       return await fn();     } finally {       autoChangeDetectionSubject.next({isDisabled: false});     }   } }  /**  * Disables the harness system's auto change detection for the duration of the given function.  * @param fn The function to disable auto change detection for.  * @return The result of the given function.  */ export async function manualChangeDetection<T>(fn: () => Promise<T>) {   return batchChangeDetection(fn, false); }  /**  * Resolves the given list of async values in parallel (i.e. via Promise.all) while batching change  * detection over the entire operation such that change detection occurs exactly once before  * resolving the values and once after.  * @param values A getter for the async values to resolve in parallel with batched change detection.  * @return The resolved values.  */ export function parallel<T1, T2, T3, T4, T5>(   values: () => [     T1 | PromiseLike<T1>,     T2 | PromiseLike<T2>,     T3 | PromiseLike<T3>,     T4 | PromiseLike<T4>,     T5 | PromiseLike<T5>,   ], ): Promise<[T1, T2, T3, T4, T5]>;  /**  * Resolves the given list of async values in parallel (i.e. via Promise.all) while batching change  * detection over the entire operation such that change detection occurs exactly once before  * resolving the values and once after.  * @param values A getter for the async values to resolve in parallel with batched change detection.  * @return The resolved values.  */ export function parallel<T1, T2, T3, T4>(   values: () => [     T1 | PromiseLike<T1>,     T2 | PromiseLike<T2>,     T3 | PromiseLike<T3>,     T4 | PromiseLike<T4>,   ], ): Promise<[T1, T2, T3, T4]>;  /**  * Resolves the given list of async values in parallel (i.e. via Promise.all) while batching change  * detection over the entire operation such that change detection occurs exactly once before  * resolving the values and once after.  * @param values A getter for the async values to resolve in parallel with batched change detection.  * @return The resolved values.  */ export function parallel<T1, T2, T3>(   values: () => [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>], ): Promise<[T1, T2, T3]>;  /**  * Resolves the given list of async values in parallel (i.e. via Promise.all) while batching change  * detection over the entire operation such that change detection occurs exactly once before  * resolving the values and once after.  * @param values A getter for the async values to resolve in parallel with batched change detection.  * @return The resolved values.  */ export function parallel<T1, T2>(   values: () => [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>], ): Promise<[T1, T2]>;  /**  * Resolves the given list of async values in parallel (i.e. via Promise.all) while batching change  * detection over the entire operation such that change detection occurs exactly once before  * resolving the values and once after.  * @param values A getter for the async values to resolve in parallel with batched change detection.  * @return The resolved values.  */ export function parallel<T>(values: () => (T | PromiseLike<T>)[]): Promise<T[]>;  /**  * Resolves the given list of async values in parallel (i.e. via Promise.all) while batching change  * detection over the entire operation such that change detection occurs exactly once before  * resolving the values and once after.  * @param values A getter for the async values to resolve in parallel with batched change detection.  * @return The resolved values.  */ export async function parallel<T>(values: () => Iterable<T | PromiseLike<T>>): Promise<T[]> {   return batchChangeDetection(() => Promise.all(values()), true); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {parallel} from './change-detection'; import {TestElement} from './test-element';  /** An async function that returns a promise when called. */ export type AsyncFactoryFn<T> = () => Promise<T>;  /** An async function that takes an item and returns a boolean promise */ export type AsyncPredicate<T> = (item: T) => Promise<boolean>;  /** An async function that takes an item and an option value and returns a boolean promise. */ export type AsyncOptionPredicate<T, O> = (item: T, option: O) => Promise<boolean>;  /**  * A query for a `ComponentHarness`, which is expressed as either a `ComponentHarnessConstructor` or  * a `HarnessPredicate`.  */ export type HarnessQuery<T extends ComponentHarness> =   | ComponentHarnessConstructor<T>   | HarnessPredicate<T>;  /**  * The result type obtained when searching using a particular list of queries. This type depends on  * the particular items being queried.  * - If one of the queries is for a `ComponentHarnessConstructor<C1>`, it means that the result  *   might be a harness of type `C1`  * - If one of the queries is for a `HarnessPredicate<C2>`, it means that the result might be a  *   harness of type `C2`  * - If one of the queries is for a `string`, it means that the result might be a `TestElement`.  *  * Since we don't know for sure which query will match, the result type if the union of the types  * for all possible results.  *  * e.g.  * The type:  * `LocatorFnResult&lt;[  *   ComponentHarnessConstructor&lt;MyHarness&gt;,  *   HarnessPredicate&lt;MyOtherHarness&gt;,  *   string  * ]&gt;`  * is equivalent to:  * `MyHarness | MyOtherHarness | TestElement`.  */ export type LocatorFnResult<T extends (HarnessQuery<any> | string)[]> = {   [I in keyof T]: T[I] extends new (...args: any[]) => infer C // Map `ComponentHarnessConstructor<C>` to `C`.     ? C     : // Map `HarnessPredicate<C>` to `C`.     T[I] extends {harnessType: new (...args: any[]) => infer C}     ? C     : // Map `string` to `TestElement`.     T[I] extends string     ? TestElement     : // Map everything else to `never` (should not happen due to the type constraint on `T`).       never; }[number];  /**  * Interface used to load ComponentHarness objects. This interface is used by test authors to  * instantiate `ComponentHarness`es.  */ export interface HarnessLoader {   /**    * Searches for an element with the given selector under the current instances's root element,    * and returns a `HarnessLoader` rooted at the matching element. If multiple elements match the    * selector, the first is used. If no elements match, an error is thrown.    * @param selector The selector for the root element of the new `HarnessLoader`    * @return A `HarnessLoader` rooted at the element matching the given selector.    * @throws If a matching element can't be found.    */   getChildLoader(selector: string): Promise<HarnessLoader>;    /**    * Searches for all elements with the given selector under the current instances's root element,    * and returns an array of `HarnessLoader`s, one for each matching element, rooted at that    * element.    * @param selector The selector for the root element of the new `HarnessLoader`    * @return A list of `HarnessLoader`s, one for each matching element, rooted at that element.    */   getAllChildLoaders(selector: string): Promise<HarnessLoader[]>;    /**    * Searches for an instance of the component corresponding to the given harness type under the    * `HarnessLoader`'s root element, and returns a `ComponentHarness` for that instance. If multiple    * matching components are found, a harness for the first one is returned. If no matching    * component is found, an error is thrown.    * @param query A query for a harness to create    * @return An instance of the given harness type    * @throws If a matching component instance can't be found.    */   getHarness<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T>;    /**    * Searches for an instance of the component corresponding to the given harness type under the    * `HarnessLoader`'s root element, and returns a `ComponentHarness` for that instance. If multiple    * matching components are found, a harness for the first one is returned. If no matching    * component is found, null is returned.    * @param query A query for a harness to create    * @return An instance of the given harness type (or null if not found).    */   getHarnessOrNull<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T | null>;    /**    * Searches for all instances of the component corresponding to the given harness type under the    * `HarnessLoader`'s root element, and returns a list `ComponentHarness` for each instance.    * @param query A query for a harness to create    * @return A list instances of the given harness type.    */   getAllHarnesses<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T[]>;    /**    * Searches for an instance of the component corresponding to the given harness type under the    * `HarnessLoader`'s root element, and returns a boolean indicating if any were found.    * @param query A query for a harness to create    * @return A boolean indicating if an instance was found.    */   hasHarness<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<boolean>; }  /**  * Interface used to create asynchronous locator functions used find elements and component  * harnesses. This interface is used by `ComponentHarness` authors to create locator functions for  * their `ComponentHarness` subclass.  */ export interface LocatorFactory {   /** Gets a locator factory rooted at the document root. */   documentRootLocatorFactory(): LocatorFactory;    /** The root element of this `LocatorFactory` as a `TestElement`. */   rootElement: TestElement;    /**    * Creates an asynchronous locator function that can be used to find a `ComponentHarness` instance    * or element under the root element of this `LocatorFactory`.    * @param queries A list of queries specifying which harnesses and elements to search for:    *   - A `string` searches for elements matching the CSS selector specified by the string.    *   - A `ComponentHarness` constructor searches for `ComponentHarness` instances matching the    *     given class.    *   - A `HarnessPredicate` searches for `ComponentHarness` instances matching the given    *     predicate.    * @return An asynchronous locator function that searches for and returns a `Promise` for the    *   first element or harness matching the given search criteria. Matches are ordered first by    *   order in the DOM, and second by order in the queries list. If no matches are found, the    *   `Promise` rejects. The type that the `Promise` resolves to is a union of all result types for    *   each query.    *    * e.g. Given the following DOM: `<div id=\"d1\" /><div id=\"d2\" />`, and assuming    * `DivHarness.hostSelector === 'div'`:    * - `await lf.locatorFor(DivHarness, 'div')()` gets a `DivHarness` instance for `#d1`    * - `await lf.locatorFor('div', DivHarness)()` gets a `TestElement` instance for `#d1`    * - `await lf.locatorFor('span')()` throws because the `Promise` rejects.    */   locatorFor<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T>>;    /**    * Creates an asynchronous locator function that can be used to find a `ComponentHarness` instance    * or element under the root element of this `LocatorFactory`.    * @param queries A list of queries specifying which harnesses and elements to search for:    *   - A `string` searches for elements matching the CSS selector specified by the string.    *   - A `ComponentHarness` constructor searches for `ComponentHarness` instances matching the    *     given class.    *   - A `HarnessPredicate` searches for `ComponentHarness` instances matching the given    *     predicate.    * @return An asynchronous locator function that searches for and returns a `Promise` for the    *   first element or harness matching the given search criteria. Matches are ordered first by    *   order in the DOM, and second by order in the queries list. If no matches are found, the    *   `Promise` is resolved with `null`. The type that the `Promise` resolves to is a union of all    *   result types for each query or null.    *    * e.g. Given the following DOM: `<div id=\"d1\" /><div id=\"d2\" />`, and assuming    * `DivHarness.hostSelector === 'div'`:    * - `await lf.locatorForOptional(DivHarness, 'div')()` gets a `DivHarness` instance for `#d1`    * - `await lf.locatorForOptional('div', DivHarness)()` gets a `TestElement` instance for `#d1`    * - `await lf.locatorForOptional('span')()` gets `null`.    */   locatorForOptional<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T> | null>;    /**    * Creates an asynchronous locator function that can be used to find `ComponentHarness` instances    * or elements under the root element of this `LocatorFactory`.    * @param queries A list of queries specifying which harnesses and elements to search for:    *   - A `string` searches for elements matching the CSS selector specified by the string.    *   - A `ComponentHarness` constructor searches for `ComponentHarness` instances matching the    *     given class.    *   - A `HarnessPredicate` searches for `ComponentHarness` instances matching the given    *     predicate.    * @return An asynchronous locator function that searches for and returns a `Promise` for all    *   elements and harnesses matching the given search criteria. Matches are ordered first by    *   order in the DOM, and second by order in the queries list. If an element matches more than    *   one `ComponentHarness` class, the locator gets an instance of each for the same element. If    *   an element matches multiple `string` selectors, only one `TestElement` instance is returned    *   for that element. The type that the `Promise` resolves to is an array where each element is    *   the union of all result types for each query.    *    * e.g. Given the following DOM: `<div id=\"d1\" /><div id=\"d2\" />`, and assuming    * `DivHarness.hostSelector === 'div'` and `IdIsD1Harness.hostSelector === '#d1'`:    * - `await lf.locatorForAll(DivHarness, 'div')()` gets `[    *     DivHarness, // for #d1    *     TestElement, // for #d1    *     DivHarness, // for #d2    *     TestElement // for #d2    *   ]`    * - `await lf.locatorForAll('div', '#d1')()` gets `[    *     TestElement, // for #d1    *     TestElement // for #d2    *   ]`    * - `await lf.locatorForAll(DivHarness, IdIsD1Harness)()` gets `[    *     DivHarness, // for #d1    *     IdIsD1Harness, // for #d1    *     DivHarness // for #d2    *   ]`    * - `await lf.locatorForAll('span')()` gets `[]`.    */   locatorForAll<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T>[]>;    /** @return A `HarnessLoader` rooted at the root element of this `LocatorFactory`. */   rootHarnessLoader(): Promise<HarnessLoader>;    /**    * Gets a `HarnessLoader` instance for an element under the root of this `LocatorFactory`.    * @param selector The selector for the root element.    * @return A `HarnessLoader` rooted at the first element matching the given selector.    * @throws If no matching element is found for the given selector.    */   harnessLoaderFor(selector: string): Promise<HarnessLoader>;    /**    * Gets a `HarnessLoader` instance for an element under the root of this `LocatorFactory`    * @param selector The selector for the root element.    * @return A `HarnessLoader` rooted at the first element matching the given selector, or null if    *     no matching element is found.    */   harnessLoaderForOptional(selector: string): Promise<HarnessLoader | null>;    /**    * Gets a list of `HarnessLoader` instances, one for each matching element.    * @param selector The selector for the root element.    * @return A list of `HarnessLoader`, one rooted at each element matching the given selector.    */   harnessLoaderForAll(selector: string): Promise<HarnessLoader[]>;    /**    * Flushes change detection and async tasks captured in the Angular zone.    * In most cases it should not be necessary to call this manually. However, there may be some edge    * cases where it is needed to fully flush animation events.    */   forceStabilize(): Promise<void>;    /**    * Waits for all scheduled or running async tasks to complete. This allows harness    * authors to wait for async tasks outside of the Angular zone.    */   waitForTasksOutsideAngular(): Promise<void>; }  /**  * Base class for component harnesses that all component harness authors should extend. This base  * component harness provides the basic ability to locate element and sub-component harness. It  * should be inherited when defining user's own harness.  */ export abstract class ComponentHarness {   constructor(protected readonly locatorFactory: LocatorFactory) {}    /** Gets a `Promise` for the `TestElement` representing the host element of the component. */   async host(): Promise<TestElement> {     return this.locatorFactory.rootElement;   }    /**    * Gets a `LocatorFactory` for the document root element. This factory can be used to create    * locators for elements that a component creates outside of its own root element. (e.g. by    * appending to document.body).    */   protected documentRootLocatorFactory(): LocatorFactory {     return this.locatorFactory.documentRootLocatorFactory();   }    /**    * Creates an asynchronous locator function that can be used to find a `ComponentHarness` instance    * or element under the host element of this `ComponentHarness`.    * @param queries A list of queries specifying which harnesses and elements to search for:    *   - A `string` searches for elements matching the CSS selector specified by the string.    *   - A `ComponentHarness` constructor searches for `ComponentHarness` instances matching the    *     given class.    *   - A `HarnessPredicate` searches for `ComponentHarness` instances matching the given    *     predicate.    * @return An asynchronous locator function that searches for and returns a `Promise` for the    *   first element or harness matching the given search criteria. Matches are ordered first by    *   order in the DOM, and second by order in the queries list. If no matches are found, the    *   `Promise` rejects. The type that the `Promise` resolves to is a union of all result types for    *   each query.    *    * e.g. Given the following DOM: `<div id=\"d1\" /><div id=\"d2\" />`, and assuming    * `DivHarness.hostSelector === 'div'`:    * - `await ch.locatorFor(DivHarness, 'div')()` gets a `DivHarness` instance for `#d1`    * - `await ch.locatorFor('div', DivHarness)()` gets a `TestElement` instance for `#d1`    * - `await ch.locatorFor('span')()` throws because the `Promise` rejects.    */   protected locatorFor<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T>> {     return this.locatorFactory.locatorFor(...queries);   }    /**    * Creates an asynchronous locator function that can be used to find a `ComponentHarness` instance    * or element under the host element of this `ComponentHarness`.    * @param queries A list of queries specifying which harnesses and elements to search for:    *   - A `string` searches for elements matching the CSS selector specified by the string.    *   - A `ComponentHarness` constructor searches for `ComponentHarness` instances matching the    *     given class.    *   - A `HarnessPredicate` searches for `ComponentHarness` instances matching the given    *     predicate.    * @return An asynchronous locator function that searches for and returns a `Promise` for the    *   first element or harness matching the given search criteria. Matches are ordered first by    *   order in the DOM, and second by order in the queries list. If no matches are found, the    *   `Promise` is resolved with `null`. The type that the `Promise` resolves to is a union of all    *   result types for each query or null.    *    * e.g. Given the following DOM: `<div id=\"d1\" /><div id=\"d2\" />`, and assuming    * `DivHarness.hostSelector === 'div'`:    * - `await ch.locatorForOptional(DivHarness, 'div')()` gets a `DivHarness` instance for `#d1`    * - `await ch.locatorForOptional('div', DivHarness)()` gets a `TestElement` instance for `#d1`    * - `await ch.locatorForOptional('span')()` gets `null`.    */   protected locatorForOptional<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T> | null> {     return this.locatorFactory.locatorForOptional(...queries);   }    /**    * Creates an asynchronous locator function that can be used to find `ComponentHarness` instances    * or elements under the host element of this `ComponentHarness`.    * @param queries A list of queries specifying which harnesses and elements to search for:    *   - A `string` searches for elements matching the CSS selector specified by the string.    *   - A `ComponentHarness` constructor searches for `ComponentHarness` instances matching the    *     given class.    *   - A `HarnessPredicate` searches for `ComponentHarness` instances matching the given    *     predicate.    * @return An asynchronous locator function that searches for and returns a `Promise` for all    *   elements and harnesses matching the given search criteria. Matches are ordered first by    *   order in the DOM, and second by order in the queries list. If an element matches more than    *   one `ComponentHarness` class, the locator gets an instance of each for the same element. If    *   an element matches multiple `string` selectors, only one `TestElement` instance is returned    *   for that element. The type that the `Promise` resolves to is an array where each element is    *   the union of all result types for each query.    *    * e.g. Given the following DOM: `<div id=\"d1\" /><div id=\"d2\" />`, and assuming    * `DivHarness.hostSelector === 'div'` and `IdIsD1Harness.hostSelector === '#d1'`:    * - `await ch.locatorForAll(DivHarness, 'div')()` gets `[    *     DivHarness, // for #d1    *     TestElement, // for #d1    *     DivHarness, // for #d2    *     TestElement // for #d2    *   ]`    * - `await ch.locatorForAll('div', '#d1')()` gets `[    *     TestElement, // for #d1    *     TestElement // for #d2    *   ]`    * - `await ch.locatorForAll(DivHarness, IdIsD1Harness)()` gets `[    *     DivHarness, // for #d1    *     IdIsD1Harness, // for #d1    *     DivHarness // for #d2    *   ]`    * - `await ch.locatorForAll('span')()` gets `[]`.    */   protected locatorForAll<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T>[]> {     return this.locatorFactory.locatorForAll(...queries);   }    /**    * Flushes change detection and async tasks in the Angular zone.    * In most cases it should not be necessary to call this manually. However, there may be some edge    * cases where it is needed to fully flush animation events.    */   protected async forceStabilize() {     return this.locatorFactory.forceStabilize();   }    /**    * Waits for all scheduled or running async tasks to complete. This allows harness    * authors to wait for async tasks outside of the Angular zone.    */   protected async waitForTasksOutsideAngular() {     return this.locatorFactory.waitForTasksOutsideAngular();   } }  /**  * Base class for component harnesses that authors should extend if they anticipate that consumers  * of the harness may want to access other harnesses within the `<ng-content>` of the component.  */ export abstract class ContentContainerComponentHarness<S extends string = string>   extends ComponentHarness   implements HarnessLoader {   async getChildLoader(selector: S): Promise<HarnessLoader> {     return (await this.getRootHarnessLoader()).getChildLoader(selector);   }    async getAllChildLoaders(selector: S): Promise<HarnessLoader[]> {     return (await this.getRootHarnessLoader()).getAllChildLoaders(selector);   }    async getHarness<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T> {     return (await this.getRootHarnessLoader()).getHarness(query);   }    async getHarnessOrNull<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T | null> {     return (await this.getRootHarnessLoader()).getHarnessOrNull(query);   }    async getAllHarnesses<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T[]> {     return (await this.getRootHarnessLoader()).getAllHarnesses(query);   }    async hasHarness<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<boolean> {     return (await this.getRootHarnessLoader()).hasHarness(query);   }    /**    * Gets the root harness loader from which to start    * searching for content contained by this harness.    */   protected async getRootHarnessLoader(): Promise<HarnessLoader> {     return this.locatorFactory.rootHarnessLoader();   } }  /** Constructor for a ComponentHarness subclass. */ export interface ComponentHarnessConstructor<T extends ComponentHarness> {   new (locatorFactory: LocatorFactory): T;    /**    * `ComponentHarness` subclasses must specify a static `hostSelector` property that is used to    * find the host element for the corresponding component. This property should match the selector    * for the Angular component.    */   hostSelector: string; }  /** A set of criteria that can be used to filter a list of `ComponentHarness` instances. */ export interface BaseHarnessFilters {   /** Only find instances whose host element matches the given selector. */   selector?: string;   /** Only find instances that are nested under an element with the given selector. */   ancestor?: string; }  /**  * A class used to associate a ComponentHarness class with predicates functions that can be used to  * filter instances of the class.  */ export class HarnessPredicate<T extends ComponentHarness> {   private _predicates: AsyncPredicate<T>[] = [];   private _descriptions: string[] = [];   private _ancestor: string;    constructor(public harnessType: ComponentHarnessConstructor<T>, options: BaseHarnessFilters) {     this._addBaseOptions(options);   }    /**    * Checks if the specified nullable string value matches the given pattern.    * @param value The nullable string value to check, or a Promise resolving to the    *   nullable string value.    * @param pattern The pattern the value is expected to match. If `pattern` is a string,    *   `value` is expected to match exactly. If `pattern` is a regex, a partial match is    *   allowed. If `pattern` is `null`, the value is expected to be `null`.    * @return Whether the value matches the pattern.    */   static async stringMatches(     value: string | null | Promise<string | null>,     pattern: string | RegExp | null,   ): Promise<boolean> {     value = await value;     if (pattern === null) {       return value === null;     } else if (value === null) {       return false;     }     return typeof pattern === 'string' ? value === pattern : pattern.test(value);   }    /**    * Adds a predicate function to be run against candidate harnesses.    * @param description A description of this predicate that may be used in error messages.    * @param predicate An async predicate function.    * @return this (for method chaining).    */   add(description: string, predicate: AsyncPredicate<T>) {     this._descriptions.push(description);     this._predicates.push(predicate);     return this;   }    /**    * Adds a predicate function that depends on an option value to be run against candidate    * harnesses. If the option value is undefined, the predicate will be ignored.    * @param name The name of the option (may be used in error messages).    * @param option The option value.    * @param predicate The predicate function to run if the option value is not undefined.    * @return this (for method chaining).    */   addOption<O>(name: string, option: O | undefined, predicate: AsyncOptionPredicate<T, O>) {     if (option !== undefined) {       this.add(`${name} = ${_valueAsString(option)}`, item => predicate(item, option));     }     return this;   }    /**    * Filters a list of harnesses on this predicate.    * @param harnesses The list of harnesses to filter.    * @return A list of harnesses that satisfy this predicate.    */   async filter(harnesses: T[]): Promise<T[]> {     if (harnesses.length === 0) {       return [];     }     const results = await parallel(() => harnesses.map(h => this.evaluate(h)));     return harnesses.filter((_, i) => results[i]);   }    /**    * Evaluates whether the given harness satisfies this predicate.    * @param harness The harness to check    * @return A promise that resolves to true if the harness satisfies this predicate,    *   and resolves to false otherwise.    */   async evaluate(harness: T): Promise<boolean> {     const results = await parallel(() => this._predicates.map(p => p(harness)));     return results.reduce((combined, current) => combined && current, true);   }    /** Gets a description of this predicate for use in error messages. */   getDescription() {     return this._descriptions.join(', ');   }    /** Gets the selector used to find candidate elements. */   getSelector() {     // We don't have to go through the extra trouble if there are no ancestors.     if (!this._ancestor) {       return (this.harnessType.hostSelector || '').trim();     }      const [ancestors, ancestorPlaceholders] = _splitAndEscapeSelector(this._ancestor);     const [selectors, selectorPlaceholders] = _splitAndEscapeSelector(       this.harnessType.hostSelector || '',     );     const result: string[] = [];      // We have to add the ancestor to each part of the host compound selector, otherwise we can get     // incorrect results. E.g. `.ancestor .a, .ancestor .b` vs `.ancestor .a, .b`.     ancestors.forEach(escapedAncestor => {       const ancestor = _restoreSelector(escapedAncestor, ancestorPlaceholders);       return selectors.forEach(escapedSelector =>         result.push(`${ancestor} ${_restoreSelector(escapedSelector, selectorPlaceholders)}`),       );     });      return result.join(', ');   }    /** Adds base options common to all harness types. */   private _addBaseOptions(options: BaseHarnessFilters) {     this._ancestor = options.ancestor || '';     if (this._ancestor) {       this._descriptions.push(`has ancestor matching selector \"${this._ancestor}\"`);     }     const selector = options.selector;     if (selector !== undefined) {       this.add(`host matches selector \"${selector}\"`, async item => {         return (await item.host()).matchesSelector(selector);       });     }   } }  /** Represent a value as a string for the purpose of logging. */ function _valueAsString(value: unknown) {   if (value === undefined) {     return 'undefined';   }   try {     // `JSON.stringify` doesn't handle RegExp properly, so we need a custom replacer.     // Use a character that is unlikely to appear in real strings to denote the start and end of     // the regex. This allows us to strip out the extra quotes around the value added by     // `JSON.stringify`. Also do custom escaping on `\"` characters to prevent `JSON.stringify`     // from escaping them as if they were part of a string.     const stringifiedValue = JSON.stringify(value, (_, v) =>       v instanceof RegExp         ? `◬MAT_RE_ESCAPE◬${v.toString().replace(/\"/g, '◬MAT_RE_ESCAPE◬')}◬MAT_RE_ESCAPE◬`         : v,     );     // Strip out the extra quotes around regexes and put back the manually escaped `\"` characters.     return stringifiedValue       .replace(/\"◬MAT_RE_ESCAPE◬|◬MAT_RE_ESCAPE◬\"/g, '')       .replace(/◬MAT_RE_ESCAPE◬/g, '\"');   } catch {     // `JSON.stringify` will throw if the object is cyclical,     // in this case the best we can do is report the value as `{...}`.     return '{...}';   } }  /**  * Splits up a compound selector into its parts and escapes any quoted content. The quoted content  * has to be escaped, because it can contain commas which will throw throw us off when trying to  * split it.  * @param selector Selector to be split.  * @returns The escaped string where any quoted content is replaced with a placeholder. E.g.  * `[foo=\"bar\"]` turns into `[foo=__cdkPlaceholder-0__]`. Use `_restoreSelector` to restore  * the placeholders.  */ function _splitAndEscapeSelector(selector: string): [parts: string[], placeholders: string[]] {   const placeholders: string[] = [];    // Note that the regex doesn't account for nested quotes so something like `\"ab'cd'e\"` will be   // considered as two blocks. It's a bit of an edge case, but if we find that it's a problem,   // we can make it a bit smarter using a loop. Use this for now since it's more readable and   // compact. More complete implementation:   // https://github.com/angular/angular/blob/bd34bc9e89f18a/packages/compiler/src/shadow_css.ts#L655   const result = selector.replace(/([\"'][^[\"']*[\"'])/g, (_, keep) => {     const replaceBy = `__cdkPlaceholder-${placeholders.length}__`;     placeholders.push(keep);     return replaceBy;   });    return [result.split(',').map(part => part.trim()), placeholders]; }  /** Restores a selector whose content was escaped in `_splitAndEscapeSelector`. */ function _restoreSelector(selector: string, placeholders: string[]): string {   return selector.replace(/__cdkPlaceholder-(\\d+)__/g, (_, index) => placeholders[+index]); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {parallel} from './change-detection'; import {   AsyncFactoryFn,   ComponentHarness,   ComponentHarnessConstructor,   HarnessLoader,   HarnessPredicate,   HarnessQuery,   LocatorFactory,   LocatorFnResult, } from './component-harness'; import {TestElement} from './test-element';  /** Parsed form of the queries passed to the `locatorFor*` methods. */ type ParsedQueries<T extends ComponentHarness> = {   /** The full list of queries, in their original order. */   allQueries: (string | HarnessPredicate<T>)[];   /**    * A filtered view of `allQueries` containing only the queries that are looking for a    * `ComponentHarness`    */   harnessQueries: HarnessPredicate<T>[];   /**    * A filtered view of `allQueries` containing only the queries that are looking for a    * `TestElement`    */   elementQueries: string[];   /** The set of all `ComponentHarness` subclasses represented in the original query list. */   harnessTypes: Set<ComponentHarnessConstructor<T>>; };  /**  * Base harness environment class that can be extended to allow `ComponentHarness`es to be used in  * different test environments (e.g. testbed, protractor, etc.). This class implements the  * functionality of both a `HarnessLoader` and `LocatorFactory`. This class is generic on the raw  * element type, `E`, used by the particular test environment.  */ export abstract class HarnessEnvironment<E> implements HarnessLoader, LocatorFactory {   // Implemented as part of the `LocatorFactory` interface.   get rootElement(): TestElement {     this._rootElement = this._rootElement || this.createTestElement(this.rawRootElement);     return this._rootElement;   }   set rootElement(element: TestElement) {     this._rootElement = element;   }   private _rootElement: TestElement | undefined;    protected constructor(protected rawRootElement: E) {}    // Implemented as part of the `LocatorFactory` interface.   documentRootLocatorFactory(): LocatorFactory {     return this.createEnvironment(this.getDocumentRoot());   }    // Implemented as part of the `LocatorFactory` interface.   locatorFor<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T>> {     return () =>       _assertResultFound(         this._getAllHarnessesAndTestElements(queries),         _getDescriptionForLocatorForQueries(queries),       );   }    // Implemented as part of the `LocatorFactory` interface.   locatorForOptional<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T> | null> {     return async () => (await this._getAllHarnessesAndTestElements(queries))[0] || null;   }    // Implemented as part of the `LocatorFactory` interface.   locatorForAll<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T>[]> {     return () => this._getAllHarnessesAndTestElements(queries);   }    // Implemented as part of the `LocatorFactory` interface.   async rootHarnessLoader(): Promise<HarnessLoader> {     return this;   }    // Implemented as part of the `LocatorFactory` interface.   async harnessLoaderFor(selector: string): Promise<HarnessLoader> {     return this.createEnvironment(       await _assertResultFound(this.getAllRawElements(selector), [         _getDescriptionForHarnessLoaderQuery(selector),       ]),     );   }    // Implemented as part of the `LocatorFactory` interface.   async harnessLoaderForOptional(selector: string): Promise<HarnessLoader | null> {     const elements = await this.getAllRawElements(selector);     return elements[0] ? this.createEnvironment(elements[0]) : null;   }    // Implemented as part of the `LocatorFactory` interface.   async harnessLoaderForAll(selector: string): Promise<HarnessLoader[]> {     const elements = await this.getAllRawElements(selector);     return elements.map(element => this.createEnvironment(element));   }    // Implemented as part of the `HarnessLoader` interface.   getHarness<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T> {     return this.locatorFor(query)();   }    // Implemented as part of the `HarnessLoader` interface.   getHarnessOrNull<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T | null> {     return this.locatorForOptional(query)();   }    // Implemented as part of the `HarnessLoader` interface.   getAllHarnesses<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T[]> {     return this.locatorForAll(query)();   }    // Implemented as part of the `HarnessLoader` interface.   async hasHarness<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<boolean> {     return (await this.locatorForOptional(query)()) !== null;   }    // Implemented as part of the `HarnessLoader` interface.   async getChildLoader(selector: string): Promise<HarnessLoader> {     return this.createEnvironment(       await _assertResultFound(this.getAllRawElements(selector), [         _getDescriptionForHarnessLoaderQuery(selector),       ]),     );   }    // Implemented as part of the `HarnessLoader` interface.   async getAllChildLoaders(selector: string): Promise<HarnessLoader[]> {     return (await this.getAllRawElements(selector)).map(e => this.createEnvironment(e));   }    /** Creates a `ComponentHarness` for the given harness type with the given raw host element. */   protected createComponentHarness<T extends ComponentHarness>(     harnessType: ComponentHarnessConstructor<T>,     element: E,   ): T {     return new harnessType(this.createEnvironment(element));   }    // Part of LocatorFactory interface, subclasses will implement.   abstract forceStabilize(): Promise<void>;    // Part of LocatorFactory interface, subclasses will implement.   abstract waitForTasksOutsideAngular(): Promise<void>;    /** Gets the root element for the document. */   protected abstract getDocumentRoot(): E;    /** Creates a `TestElement` from a raw element. */   protected abstract createTestElement(element: E): TestElement;    /** Creates a `HarnessLoader` rooted at the given raw element. */   protected abstract createEnvironment(element: E): HarnessEnvironment<E>;    /**    * Gets a list of all elements matching the given selector under this environment's root element.    */   protected abstract getAllRawElements(selector: string): Promise<E[]>;    /**    * Matches the given raw elements with the given list of element and harness queries to produce a    * list of matched harnesses and test elements.    */   private async _getAllHarnessesAndTestElements<T extends (HarnessQuery<any> | string)[]>(     queries: T,   ): Promise<LocatorFnResult<T>[]> {     if (!queries.length) {       throw Error('CDK Component harness query must contain at least one element.');     }      const {allQueries, harnessQueries, elementQueries, harnessTypes} = _parseQueries(queries);      // Combine all of the queries into one large comma-delimited selector and use it to get all raw     // elements matching any of the individual queries.     const rawElements = await this.getAllRawElements(       [...elementQueries, ...harnessQueries.map(predicate => predicate.getSelector())].join(','),     );      // If every query is searching for the same harness subclass, we know every result corresponds     // to an instance of that subclass. Likewise, if every query is for a `TestElement`, we know     // every result corresponds to a `TestElement`. Otherwise we need to verify which result was     // found by which selector so it can be matched to the appropriate instance.     const skipSelectorCheck =       (elementQueries.length === 0 && harnessTypes.size === 1) || harnessQueries.length === 0;      const perElementMatches = await parallel(() =>       rawElements.map(async rawElement => {         const testElement = this.createTestElement(rawElement);         const allResultsForElement = await parallel(           // For each query, get `null` if it doesn't match, or a `TestElement` or           // `ComponentHarness` as appropriate if it does match. This gives us everything that           // matches the current raw element, but it may contain duplicate entries (e.g.           // multiple `TestElement` or multiple `ComponentHarness` of the same type).           () =>             allQueries.map(query =>               this._getQueryResultForElement(query, rawElement, testElement, skipSelectorCheck),             ),         );         return _removeDuplicateQueryResults(allResultsForElement);       }),     );     return ([] as any).concat(...perElementMatches);   }    /**    * Check whether the given query matches the given element, if it does return the matched    * `TestElement` or `ComponentHarness`, if it does not, return null. In cases where the caller    * knows for sure that the query matches the element's selector, `skipSelectorCheck` can be used    * to skip verification and optimize performance.    */   private async _getQueryResultForElement<T extends ComponentHarness>(     query: string | HarnessPredicate<T>,     rawElement: E,     testElement: TestElement,     skipSelectorCheck: boolean = false,   ): Promise<T | TestElement | null> {     if (typeof query === 'string') {       return skipSelectorCheck || (await testElement.matchesSelector(query)) ? testElement : null;     }     if (skipSelectorCheck || (await testElement.matchesSelector(query.getSelector()))) {       const harness = this.createComponentHarness(query.harnessType, rawElement);       return (await query.evaluate(harness)) ? harness : null;     }     return null;   } }  /**  * Parses a list of queries in the format accepted by the `locatorFor*` methods into an easier to  * work with format.  */ function _parseQueries<T extends (HarnessQuery<any> | string)[]>(   queries: T, ): ParsedQueries<LocatorFnResult<T> & ComponentHarness> {   const allQueries = [];   const harnessQueries = [];   const elementQueries = [];   const harnessTypes = new Set<     ComponentHarnessConstructor<LocatorFnResult<T> & ComponentHarness>   >();    for (const query of queries) {     if (typeof query === 'string') {       allQueries.push(query);       elementQueries.push(query);     } else {       const predicate = query instanceof HarnessPredicate ? query : new HarnessPredicate(query, {});       allQueries.push(predicate);       harnessQueries.push(predicate);       harnessTypes.add(predicate.harnessType);     }   }    return {allQueries, harnessQueries, elementQueries, harnessTypes}; }  /**  * Removes duplicate query results for a particular element. (e.g. multiple `TestElement`  * instances or multiple instances of the same `ComponentHarness` class.  */ async function _removeDuplicateQueryResults<T extends (ComponentHarness | TestElement | null)[]>(   results: T, ): Promise<T> {   let testElementMatched = false;   let matchedHarnessTypes = new Set();   const dedupedMatches = [];   for (const result of results) {     if (!result) {       continue;     }     if (result instanceof ComponentHarness) {       if (!matchedHarnessTypes.has(result.constructor)) {         matchedHarnessTypes.add(result.constructor);         dedupedMatches.push(result);       }     } else if (!testElementMatched) {       testElementMatched = true;       dedupedMatches.push(result);     }   }   return dedupedMatches as T; }  /** Verifies that there is at least one result in an array. */ async function _assertResultFound<T>(   results: Promise<T[]>,   queryDescriptions: string[], ): Promise<T> {   const result = (await results)[0];   if (result == undefined) {     throw Error(       `Failed to find element matching one of the following queries:\ ` +         queryDescriptions.map(desc => `(${desc})`).join(',\ '),     );   }   return result; }  /** Gets a list of description strings from a list of queries. */ function _getDescriptionForLocatorForQueries(queries: (string | HarnessQuery<any>)[]) {   return queries.map(query =>     typeof query === 'string'       ? _getDescriptionForTestElementQuery(query)       : _getDescriptionForComponentHarnessQuery(query),   ); }  /** Gets a description string for a `ComponentHarness` query. */ function _getDescriptionForComponentHarnessQuery(query: HarnessQuery<any>) {   const harnessPredicate =     query instanceof HarnessPredicate ? query : new HarnessPredicate(query, {});   const {name, hostSelector} = harnessPredicate.harnessType;   const description = `${name} with host element matching selector: \"${hostSelector}\"`;   const constraints = harnessPredicate.getDescription();   return (     description +     (constraints ? ` satisfying the constraints: ${harnessPredicate.getDescription()}` : '')   ); }  /** Gets a description string for a `TestElement` query. */ function _getDescriptionForTestElementQuery(selector: string) {   return `TestElement for element matching selector: \"${selector}\"`; }  /** Gets a description string for a `HarnessLoader` query. */ function _getDescriptionForHarnessLoaderQuery(selector: string) {   return `HarnessLoader for element matching selector: \"${selector}\"`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ElementDimensions} from './element-dimensions';  /** Modifier keys that may be held while typing. */ export interface ModifierKeys {   control?: boolean;   alt?: boolean;   shift?: boolean;   meta?: boolean; }  /** Data that can be attached to a custom event dispatched from a `TestElement`. */ export type EventData =   | string   | number   | boolean   | Function   | undefined   | null   | EventData[]   | {[key: string]: EventData};  /** An enum of non-text keys that can be used with the `sendKeys` method. */ // NOTE: This is a separate enum from `@angular/cdk/keycodes` because we don't necessarily want to // support every possible keyCode. We also can't rely on Protractor's `Key` because we don't want a // dependency on any particular testing framework here. Instead we'll just maintain this supported // list of keys and let individual concrete `HarnessEnvironment` classes map them to whatever key // representation is used in its respective testing framework. // tslint:disable-next-line:prefer-const-enum Seems like this causes some issues with System.js export enum TestKey {   BACKSPACE,   TAB,   ENTER,   SHIFT,   CONTROL,   ALT,   ESCAPE,   PAGE_UP,   PAGE_DOWN,   END,   HOME,   LEFT_ARROW,   UP_ARROW,   RIGHT_ARROW,   DOWN_ARROW,   INSERT,   DELETE,   F1,   F2,   F3,   F4,   F5,   F6,   F7,   F8,   F9,   F10,   F11,   F12,   META, }  /**  * This acts as a common interface for DOM elements across both unit and e2e tests. It is the  * interface through which the ComponentHarness interacts with the component's DOM.  */ export interface TestElement {   /** Blur the element. */   blur(): Promise<void>;    /** Clear the element's input (for input and textarea elements only). */   clear(): Promise<void>;    /**    * Click the element at the default location for the current environment. If you need to guarantee    * the element is clicked at a specific location, consider using `click('center')` or    * `click(x, y)` instead.    */   click(modifiers?: ModifierKeys): Promise<void>;    /** Click the element at the element's center. */   click(location: 'center', modifiers?: ModifierKeys): Promise<void>;    /**    * Click the element at the specified coordinates relative to the top-left of the element.    * @param relativeX Coordinate within the element, along the X-axis at which to click.    * @param relativeY Coordinate within the element, along the Y-axis at which to click.    * @param modifiers Modifier keys held while clicking    */   click(relativeX: number, relativeY: number, modifiers?: ModifierKeys): Promise<void>;    /**    * Right clicks on the element at the specified coordinates relative to the top-left of it.    * @param relativeX Coordinate within the element, along the X-axis at which to click.    * @param relativeY Coordinate within the element, along the Y-axis at which to click.    * @param modifiers Modifier keys held while clicking    */   rightClick(relativeX: number, relativeY: number, modifiers?: ModifierKeys): Promise<void>;    /** Focus the element. */   focus(): Promise<void>;    /** Get the computed value of the given CSS property for the element. */   getCssValue(property: string): Promise<string>;    /** Hovers the mouse over the element. */   hover(): Promise<void>;    /** Moves the mouse away from the element. */   mouseAway(): Promise<void>;    /**    * Sends the given string to the input as a series of key presses. Also fires input events    * and attempts to add the string to the Element's value. Note that some environments cannot    * reproduce native browser behavior for keyboard shortcuts such as Tab, Ctrl + A, etc.    * @throws An error if no keys have been specified.    */   sendKeys(...keys: (string | TestKey)[]): Promise<void>;    /**    * Sends the given string to the input as a series of key presses. Also fires input    * events and attempts to add the string to the Element's value.    * @throws An error if no keys have been specified.    */   sendKeys(modifiers: ModifierKeys, ...keys: (string | TestKey)[]): Promise<void>;    /**    * Gets the text from the element.    * @param options Options that affect what text is included.    */   text(options?: TextOptions): Promise<string>;    /**    * Sets the value of a `contenteditable` element.    * @param value Value to be set on the element.    * @breaking-change 16.0.0 Will become a required method.    */   setContenteditableValue?(value: string): Promise<void>;    /** Gets the value for the given attribute from the element. */   getAttribute(name: string): Promise<string | null>;    /** Checks whether the element has the given class. */   hasClass(name: string): Promise<boolean>;    /** Gets the dimensions of the element. */   getDimensions(): Promise<ElementDimensions>;    /** Gets the value of a property of an element. */   getProperty<T = any>(name: string): Promise<T>;    /** Checks whether this element matches the given selector. */   matchesSelector(selector: string): Promise<boolean>;    /** Checks whether the element is focused. */   isFocused(): Promise<boolean>;    /** Sets the value of a property of an input. */   setInputValue(value: string): Promise<void>;    // Note that ideally here we'd be selecting options based on their value, rather than their   // index, but we're limited by `@angular/forms` which will modify the option value in some cases.   // Since the value will be truncated, we can't rely on it to do the lookup in the DOM. See:   // https://github.com/angular/angular/blob/main/packages/forms/src/directives/select_control_value_accessor.ts#L19   /** Selects the options at the specified indexes inside of a native `select` element. */   selectOptions(...optionIndexes: number[]): Promise<void>;    /**    * Dispatches an event with a particular name.    * @param name Name of the event to be dispatched.    */   dispatchEvent(name: string, data?: Record<string, EventData>): Promise<void>; }  export interface TextOptions {   /** Optional selector for elements to exclude. */   exclude?: string; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Returns an error which reports that no keys have been specified.  * @docs-private  */ export function getNoKeysSpecifiedError() {   return Error('No keys have been specified.'); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Gets text of element excluding certain selectors within the element.  * @param element Element to get text from,  * @param excludeSelector Selector identifying which elements to exclude,  */ export function _getTextWithExcludedElements(element: Element, excludeSelector: string) {   const clone = element.cloneNode(true) as Element;   const exclusions = clone.querySelectorAll(excludeSelector);   for (let i = 0; i < exclusions.length; i++) {     exclusions[i].remove();   }   return (clone.textContent || '').trim(); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './component-harness'; export * from './harness-environment'; export * from './test-element'; export * from './test-element-errors'; export * from './element-dimensions'; export * from './text-filtering'; export * from './change-detection'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; "],"names":[],"mappings":"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"}
-------------------- SECTION 181 --------------------
{"version":3,"file":"selenium-webdriver.mjs","sources":["../../../../../../../src/cdk/testing/selenium-webdriver/selenium-webdriver-keys.ts","../../../../../../../src/cdk/testing/selenium-webdriver/selenium-web-driver-element.ts","../../../../../../../src/cdk/testing/selenium-webdriver/selenium-web-driver-harness-environment.ts","../../../../../../../src/cdk/testing/selenium-webdriver/public-api.ts","../../../../../../../src/cdk/testing/selenium-webdriver/index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ModifierKeys, TestKey} from '@angular/cdk/testing'; import * as webdriver from 'selenium-webdriver';  /**  * Maps the `TestKey` constants to WebDriver's `webdriver.Key` constants.  * See https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/webdriver/key.js#L29  */ export const seleniumWebDriverKeyMap = {   [TestKey.BACKSPACE]: webdriver.Key.BACK_SPACE,   [TestKey.TAB]: webdriver.Key.TAB,   [TestKey.ENTER]: webdriver.Key.ENTER,   [TestKey.SHIFT]: webdriver.Key.SHIFT,   [TestKey.CONTROL]: webdriver.Key.CONTROL,   [TestKey.ALT]: webdriver.Key.ALT,   [TestKey.ESCAPE]: webdriver.Key.ESCAPE,   [TestKey.PAGE_UP]: webdriver.Key.PAGE_UP,   [TestKey.PAGE_DOWN]: webdriver.Key.PAGE_DOWN,   [TestKey.END]: webdriver.Key.END,   [TestKey.HOME]: webdriver.Key.HOME,   [TestKey.LEFT_ARROW]: webdriver.Key.ARROW_LEFT,   [TestKey.UP_ARROW]: webdriver.Key.ARROW_UP,   [TestKey.RIGHT_ARROW]: webdriver.Key.ARROW_RIGHT,   [TestKey.DOWN_ARROW]: webdriver.Key.ARROW_DOWN,   [TestKey.INSERT]: webdriver.Key.INSERT,   [TestKey.DELETE]: webdriver.Key.DELETE,   [TestKey.F1]: webdriver.Key.F1,   [TestKey.F2]: webdriver.Key.F2,   [TestKey.F3]: webdriver.Key.F3,   [TestKey.F4]: webdriver.Key.F4,   [TestKey.F5]: webdriver.Key.F5,   [TestKey.F6]: webdriver.Key.F6,   [TestKey.F7]: webdriver.Key.F7,   [TestKey.F8]: webdriver.Key.F8,   [TestKey.F9]: webdriver.Key.F9,   [TestKey.F10]: webdriver.Key.F10,   [TestKey.F11]: webdriver.Key.F11,   [TestKey.F12]: webdriver.Key.F12,   [TestKey.META]: webdriver.Key.META, };  /** Gets a list of WebDriver `Key`s for the given `ModifierKeys`. */ export function getSeleniumWebDriverModifierKeys(modifiers: ModifierKeys): string[] {   const result: string[] = [];   if (modifiers.control) {     result.push(webdriver.Key.CONTROL);   }   if (modifiers.alt) {     result.push(webdriver.Key.ALT);   }   if (modifiers.shift) {     result.push(webdriver.Key.SHIFT);   }   if (modifiers.meta) {     result.push(webdriver.Key.META);   }   return result; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   _getTextWithExcludedElements,   ElementDimensions,   EventData,   getNoKeysSpecifiedError,   ModifierKeys,   TestElement,   TestKey,   TextOptions, } from '@angular/cdk/testing'; import * as webdriver from 'selenium-webdriver'; import {getSeleniumWebDriverModifierKeys, seleniumWebDriverKeyMap} from './selenium-webdriver-keys';  /** A `TestElement` implementation for WebDriver. */ export class SeleniumWebDriverElement implements TestElement {   constructor(     readonly element: () => webdriver.WebElement,     private _stabilize: () => Promise<void>,   ) {}    /** Blur the element. */   async blur(): Promise<void> {     await this._executeScript((element: HTMLElement) => element.blur(), this.element());     await this._stabilize();   }    /** Clear the element's input (for input and textarea elements only). */   async clear(): Promise<void> {     await this.element().clear();     await this._stabilize();   }    /**    * Click the element at the default location for the current environment. If you need to guarantee    * the element is clicked at a specific location, consider using `click('center')` or    * `click(x, y)` instead.    */   click(modifiers?: ModifierKeys): Promise<void>;   /** Click the element at the element's center. */   click(location: 'center', modifiers?: ModifierKeys): Promise<void>;   /**    * Click the element at the specified coordinates relative to the top-left of the element.    * @param relativeX Coordinate within the element, along the X-axis at which to click.    * @param relativeY Coordinate within the element, along the Y-axis at which to click.    * @param modifiers Modifier keys held while clicking    */   click(relativeX: number, relativeY: number, modifiers?: ModifierKeys): Promise<void>;   async click(     ...args: [ModifierKeys?] | ['center', ModifierKeys?] | [number, number, ModifierKeys?]   ): Promise<void> {     await this._dispatchClickEventSequence(args, webdriver.Button.LEFT);     await this._stabilize();   }    /**    * Right clicks on the element at the specified coordinates relative to the top-left of it.    * @param relativeX Coordinate within the element, along the X-axis at which to click.    * @param relativeY Coordinate within the element, along the Y-axis at which to click.    * @param modifiers Modifier keys held while clicking    */   rightClick(relativeX: number, relativeY: number, modifiers?: ModifierKeys): Promise<void>;   async rightClick(     ...args: [ModifierKeys?] | ['center', ModifierKeys?] | [number, number, ModifierKeys?]   ): Promise<void> {     await this._dispatchClickEventSequence(args, webdriver.Button.RIGHT);     await this._stabilize();   }    /** Focus the element. */   async focus(): Promise<void> {     await this._executeScript((element: HTMLElement) => element.focus(), this.element());     await this._stabilize();   }    /** Get the computed value of the given CSS property for the element. */   async getCssValue(property: string): Promise<string> {     await this._stabilize();     return this.element().getCssValue(property);   }    /** Hovers the mouse over the element. */   async hover(): Promise<void> {     await this._actions().mouseMove(this.element()).perform();     await this._stabilize();   }    /** Moves the mouse away from the element. */   async mouseAway(): Promise<void> {     await this._actions().mouseMove(this.element(), {x: -1, y: -1}).perform();     await this._stabilize();   }    /**    * Sends the given string to the input as a series of key presses. Also fires input events    * and attempts to add the string to the Element's value.    */   async sendKeys(...keys: (string | TestKey)[]): Promise<void>;   /**    * Sends the given string to the input as a series of key presses. Also fires input events    * and attempts to add the string to the Element's value.    */   async sendKeys(modifiers: ModifierKeys, ...keys: (string | TestKey)[]): Promise<void>;   async sendKeys(...modifiersAndKeys: any[]): Promise<void> {     const first = modifiersAndKeys[0];     let modifiers: ModifierKeys;     let rest: (string | TestKey)[];     if (first !== undefined && typeof first !== 'string' && typeof first !== 'number') {       modifiers = first;       rest = modifiersAndKeys.slice(1);     } else {       modifiers = {};       rest = modifiersAndKeys;     }      const modifierKeys = getSeleniumWebDriverModifierKeys(modifiers);     const keys = rest       .map(k => (typeof k === 'string' ? k.split('') : [seleniumWebDriverKeyMap[k]]))       .reduce((arr, k) => arr.concat(k), [])       // webdriver.Key.chord doesn't work well with geckodriver (mozilla/geckodriver#1502),       // so avoid it if no modifier keys are required.       .map(k => (modifierKeys.length > 0 ? webdriver.Key.chord(...modifierKeys, k) : k));      // Throw an error if no keys have been specified. Calling this function with no     // keys should not result in a focus event being dispatched unexpectedly.     if (keys.length === 0) {       throw getNoKeysSpecifiedError();     }      await this.element().sendKeys(...keys);     await this._stabilize();   }    /**    * Gets the text from the element.    * @param options Options that affect what text is included.    */   async text(options?: TextOptions): Promise<string> {     await this._stabilize();     if (options?.exclude) {       return this._executeScript(_getTextWithExcludedElements, this.element(), options.exclude);     }     // We don't go through the WebDriver `getText`, because it excludes text from hidden elements.     return this._executeScript(       (element: Element) => (element.textContent || '').trim(),       this.element(),     );   }    /**    * Sets the value of a `contenteditable` element.    * @param value Value to be set on the element.    */   async setContenteditableValue(value: string): Promise<void> {     const contenteditableAttr = await this.getAttribute('contenteditable');      if (contenteditableAttr !== '' && contenteditableAttr !== 'true') {       throw new Error('setContenteditableValue can only be called on a `contenteditable` element.');     }      await this._stabilize();     return this._executeScript(       (element: Element, valueToSet: string) => (element.textContent = valueToSet),       this.element(),       value,     );   }    /** Gets the value for the given attribute from the element. */   async getAttribute(name: string): Promise<string | null> {     await this._stabilize();     return this._executeScript(       (element: Element, attribute: string) => element.getAttribute(attribute),       this.element(),       name,     );   }    /** Checks whether the element has the given class. */   async hasClass(name: string): Promise<boolean> {     await this._stabilize();     const classes = (await this.getAttribute('class')) || '';     return new Set(classes.split(/\\s+/).filter(c => c)).has(name);   }    /** Gets the dimensions of the element. */   async getDimensions(): Promise<ElementDimensions> {     await this._stabilize();     const {width, height} = await this.element().getSize();     const {x: left, y: top} = await this.element().getLocation();     return {width, height, left, top};   }    /** Gets the value of a property of an element. */   async getProperty<T = any>(name: string): Promise<T> {     await this._stabilize();     return this._executeScript(       (element: Element, property: keyof Element) => element[property],       this.element(),       name,     );   }    /** Sets the value of a property of an input. */   async setInputValue(newValue: string): Promise<void> {     await this._executeScript(       (element: HTMLInputElement, value: string) => (element.value = value),       this.element(),       newValue,     );     await this._stabilize();   }    /** Selects the options at the specified indexes inside of a native `select` element. */   async selectOptions(...optionIndexes: number[]): Promise<void> {     await this._stabilize();     const options = await this.element().findElements(webdriver.By.css('option'));     const indexes = new Set(optionIndexes); // Convert to a set to remove duplicates.      if (options.length && indexes.size) {       // Reset the value so all the selected states are cleared. We can       // reuse the input-specific method since the logic is the same.       await this.setInputValue('');        for (let i = 0; i < options.length; i++) {         if (indexes.has(i)) {           // We have to hold the control key while clicking on options so that multiple can be           // selected in multi-selection mode. The key doesn't do anything for single selection.           await this._actions().keyDown(webdriver.Key.CONTROL).perform();           await options[i].click();           await this._actions().keyUp(webdriver.Key.CONTROL).perform();         }       }        await this._stabilize();     }   }    /** Checks whether this element matches the given selector. */   async matchesSelector(selector: string): Promise<boolean> {     await this._stabilize();     return this._executeScript(       (element: Element, s: string) =>         (Element.prototype.matches || (Element.prototype as any).msMatchesSelector).call(           element,           s,         ),       this.element(),       selector,     );   }    /** Checks whether the element is focused. */   async isFocused(): Promise<boolean> {     await this._stabilize();     return webdriver.WebElement.equals(       this.element(),       this.element().getDriver().switchTo().activeElement(),     );   }    /**    * Dispatches an event with a particular name.    * @param name Name of the event to be dispatched.    */   async dispatchEvent(name: string, data?: Record<string, EventData>): Promise<void> {     await this._executeScript(dispatchEvent, name, this.element(), data);     await this._stabilize();   }    /** Gets the webdriver action sequence. */   private _actions() {     return this.element().getDriver().actions();   }    /** Executes a function in the browser. */   private async _executeScript<T>(script: Function, ...var_args: any[]): Promise<T> {     return this.element()       .getDriver()       .executeScript(script, ...var_args);   }    /** Dispatches all the events that are part of a click event sequence. */   private async _dispatchClickEventSequence(     args: [ModifierKeys?] | ['center', ModifierKeys?] | [number, number, ModifierKeys?],     button: string,   ) {     let modifiers: ModifierKeys = {};     if (args.length && typeof args[args.length - 1] === 'object') {       modifiers = args.pop() as ModifierKeys;     }     const modifierKeys = getSeleniumWebDriverModifierKeys(modifiers);      // Omitting the offset argument to mouseMove results in clicking the center.     // This is the default behavior we want, so we use an empty array of offsetArgs if     // no args remain after popping the modifiers from the args passed to this function.     const offsetArgs = (args.length === 2 ? [{x: args[0], y: args[1]}] : []) as [       {x: number; y: number},     ];      let actions = this._actions().mouseMove(this.element(), ...offsetArgs);      for (const modifierKey of modifierKeys) {       actions = actions.keyDown(modifierKey);     }     actions = actions.click(button);     for (const modifierKey of modifierKeys) {       actions = actions.keyUp(modifierKey);     }      await actions.perform();   } }  /**  * Dispatches an event with a particular name and data to an element. Note that this needs to be a  * pure function, because it gets stringified by WebDriver and is executed inside the browser.  */ function dispatchEvent(name: string, element: Element, data?: Record<string, EventData>) {   const event = document.createEvent('Event');   event.initEvent(name);   // tslint:disable-next-line:ban Have to use `Object.assign` to preserve the original object.   Object.assign(event, data || {});   element.dispatchEvent(event); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HarnessEnvironment, HarnessLoader, TestElement} from '@angular/cdk/testing'; import * as webdriver from 'selenium-webdriver'; import {SeleniumWebDriverElement} from './selenium-web-driver-element';  /**  * An Angular framework stabilizer function that takes a callback and calls it when the application  * is stable, passing a boolean indicating if any work was done.  */ declare interface FrameworkStabilizer {   (callback: (didWork: boolean) => void): void; }  declare global {   interface Window {     /**      * These hooks are exposed by Angular to register a callback for when the application is stable      * (no more pending tasks).      *      * For the implementation, see: https://github.com/      *  angular/angular/blob/main/packages/platform-browser/src/browser/testability.ts#L30-L49      */     frameworkStabilizers: FrameworkStabilizer[];   } }  /** Options to configure the environment. */ export interface WebDriverHarnessEnvironmentOptions {   /** The query function used to find DOM elements. */   queryFn: (selector: string, root: () => webdriver.WebElement) => Promise<webdriver.WebElement[]>; }  /** The default environment options. */ const defaultEnvironmentOptions: WebDriverHarnessEnvironmentOptions = {   queryFn: async (selector: string, root: () => webdriver.WebElement) =>     root().findElements(webdriver.By.css(selector)), };  /**  * This function is meant to be executed in the browser. It taps into the hooks exposed by Angular  * and invokes the specified `callback` when the application is stable (no more pending tasks).  */ function whenStable(callback: (didWork: boolean[]) => void): void {   Promise.all(window.frameworkStabilizers.map(stabilizer => new Promise(stabilizer))).then(     callback,   ); }  /**  * This function is meant to be executed in the browser. It checks whether the Angular framework has  * bootstrapped yet.  */ function isBootstrapped() {   return !!window.frameworkStabilizers; }  /** Waits for angular to be ready after the page load. */ export async function waitForAngularReady(wd: webdriver.WebDriver) {   await wd.wait(() => wd.executeScript(isBootstrapped));   await wd.executeAsyncScript(whenStable); }  /** A `HarnessEnvironment` implementation for WebDriver. */ export class SeleniumWebDriverHarnessEnvironment extends HarnessEnvironment<   () => webdriver.WebElement > {   /** The options for this environment. */   private _options: WebDriverHarnessEnvironmentOptions;    /** Environment stabilization callback passed to the created test elements. */   private _stabilizeCallback: () => Promise<void>;    protected constructor(     rawRootElement: () => webdriver.WebElement,     options?: WebDriverHarnessEnvironmentOptions,   ) {     super(rawRootElement);     this._options = {...defaultEnvironmentOptions, ...options};     this._stabilizeCallback = () => this.forceStabilize();   }    /** Gets the ElementFinder corresponding to the given TestElement. */   static getNativeElement(el: TestElement): webdriver.WebElement {     if (el instanceof SeleniumWebDriverElement) {       return el.element();     }     throw Error('This TestElement was not created by the WebDriverHarnessEnvironment');   }    /** Creates a `HarnessLoader` rooted at the document root. */   static loader(     driver: webdriver.WebDriver,     options?: WebDriverHarnessEnvironmentOptions,   ): HarnessLoader {     return new SeleniumWebDriverHarnessEnvironment(       () => driver.findElement(webdriver.By.css('body')),       options,     );   }    /**    * Flushes change detection and async tasks captured in the Angular zone.    * In most cases it should not be necessary to call this manually. However, there may be some edge    * cases where it is needed to fully flush animation events.    */   async forceStabilize(): Promise<void> {     await this.rawRootElement().getDriver().executeAsyncScript(whenStable);   }    /** @docs-private */   async waitForTasksOutsideAngular(): Promise<void> {     // TODO: figure out how we can do this for the webdriver environment.     //  https://github.com/angular/components/issues/17412   }    /** Gets the root element for the document. */   protected getDocumentRoot(): () => webdriver.WebElement {     return () => this.rawRootElement().getDriver().findElement(webdriver.By.css('body'));   }    /** Creates a `TestElement` from a raw element. */   protected createTestElement(element: () => webdriver.WebElement): TestElement {     return new SeleniumWebDriverElement(element, this._stabilizeCallback);   }    /** Creates a `HarnessLoader` rooted at the given raw element. */   protected createEnvironment(     element: () => webdriver.WebElement,   ): HarnessEnvironment<() => webdriver.WebElement> {     return new SeleniumWebDriverHarnessEnvironment(element, this._options);   }    // Note: This seems to be working, though we may need to re-evaluate if we encounter issues with   // stale element references. `() => Promise<webdriver.WebElement[]>` seems like a more correct   // return type, though supporting it would require changes to the public harness API.   /**    * Gets a list of all elements matching the given selector under this environment's root element.    */   protected async getAllRawElements(selector: string): Promise<(() => webdriver.WebElement)[]> {     const els = await this._options.queryFn(selector, this.rawRootElement);     return els.map((x: webdriver.WebElement) => () => x);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './selenium-web-driver-element'; export * from './selenium-web-driver-harness-environment'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; "],"names":[],"mappings":"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"}
-------------------- SECTION 182 --------------------
{"version":3,"file":"clipboard.mjs","sources":["../../../../../../src/cdk/clipboard/pending-copy.ts","../../../../../../src/cdk/clipboard/clipboard.ts","../../../../../../src/cdk/clipboard/copy-to-clipboard.ts","../../../../../../src/cdk/clipboard/clipboard-module.ts","../../../../../../src/cdk/clipboard/public-api.ts","../../../../../../src/cdk/clipboard/index.ts","../../../../../../src/cdk/clipboard/clipboard_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * A pending copy-to-clipboard operation.  *  * The implementation of copying text to the clipboard modifies the DOM and  * forces a re-layout. This re-layout can take too long if the string is large,  * causing the execCommand('copy') to happen too long after the user clicked.  * This results in the browser refusing to copy. This object lets the  * re-layout happen in a separate tick from copying by providing a copy function  * that can be called later.  *  * Destroy must be called when no longer in use, regardless of whether `copy` is  * called.  */ export class PendingCopy {   private _textarea: HTMLTextAreaElement | undefined;    constructor(text: string, private readonly _document: Document) {     const textarea = (this._textarea = this._document.createElement('textarea'));     const styles = textarea.style;      // Hide the element for display and accessibility. Set a fixed position so the page layout     // isn't affected. We use `fixed` with `top: 0`, because focus is moved into the textarea     // for a split second and if it's off-screen, some browsers will attempt to scroll it into view.     styles.position = 'fixed';     styles.top = styles.opacity = '0';     styles.left = '-999em';     textarea.setAttribute('aria-hidden', 'true');     textarea.value = text;     // Making the textarea `readonly` prevents the screen from jumping on iOS Safari (see #25169).     textarea.readOnly = true;     this._document.body.appendChild(textarea);   }    /** Finishes copying the text. */   copy(): boolean {     const textarea = this._textarea;     let successful = false;      try {       // Older browsers could throw if copy is not supported.       if (textarea) {         const currentFocus = this._document.activeElement as HTMLOrSVGElement | null;          textarea.select();         textarea.setSelectionRange(0, textarea.value.length);         successful = this._document.execCommand('copy');          if (currentFocus) {           currentFocus.focus();         }       }     } catch {       // Discard error.       // Initial setting of {@code successful} will represent failure here.     }      return successful;   }    /** Cleans up DOM changes used to perform the copy operation. */   destroy() {     const textarea = this._textarea;      if (textarea) {       textarea.remove();       this._textarea = undefined;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable} from '@angular/core'; import {PendingCopy} from './pending-copy';  /**  * A service for copying text to the clipboard.  */ @Injectable({providedIn: 'root'}) export class Clipboard {   private readonly _document: Document;    constructor(@Inject(DOCUMENT) document: any) {     this._document = document;   }    /**    * Copies the provided text into the user's clipboard.    *    * @param text The string to copy.    * @returns Whether the operation was successful.    */   copy(text: string): boolean {     const pendingCopy = this.beginCopy(text);     const successful = pendingCopy.copy();     pendingCopy.destroy();      return successful;   }    /**    * Prepares a string to be copied later. This is useful for large strings    * which take too long to successfully render and be copied in the same tick.    *    * The caller must call `destroy` on the returned `PendingCopy`.    *    * @param text The string to copy.    * @returns the pending copy operation.    */   beginCopy(text: string): PendingCopy {     return new PendingCopy(text, this._document);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   Directive,   EventEmitter,   Input,   Output,   NgZone,   InjectionToken,   Inject,   Optional,   OnDestroy, } from '@angular/core'; import {Clipboard} from './clipboard'; import {PendingCopy} from './pending-copy';  /** Object that can be used to configure the default options for `CdkCopyToClipboard`. */ export interface CdkCopyToClipboardConfig {   /** Default number of attempts to make when copying text to the clipboard. */   attempts?: number; }  /** Injection token that can be used to provide the default options to `CdkCopyToClipboard`. */ export const CDK_COPY_TO_CLIPBOARD_CONFIG = new InjectionToken<CdkCopyToClipboardConfig>(   'CDK_COPY_TO_CLIPBOARD_CONFIG', );  /**  * Provides behavior for a button that when clicked copies content into user's  * clipboard.  */ @Directive({   selector: '[cdkCopyToClipboard]',   host: {     '(click)': 'copy()',   }, }) export class CdkCopyToClipboard implements OnDestroy {   /** Content to be copied. */   @Input('cdkCopyToClipboard') text: string = '';    /**    * How many times to attempt to copy the text. This may be necessary for longer text, because    * the browser needs time to fill an intermediate textarea element and copy the content.    */   @Input('cdkCopyToClipboardAttempts') attempts: number = 1;    /**    * Emits when some text is copied to the clipboard. The    * emitted value indicates whether copying was successful.    */   @Output('cdkCopyToClipboardCopied') readonly copied = new EventEmitter<boolean>();    /** Copies that are currently being attempted. */   private _pending = new Set<PendingCopy>();    /** Whether the directive has been destroyed. */   private _destroyed: boolean;    /** Timeout for the current copy attempt. */   private _currentTimeout: any;    constructor(     private _clipboard: Clipboard,     private _ngZone: NgZone,     @Optional() @Inject(CDK_COPY_TO_CLIPBOARD_CONFIG) config?: CdkCopyToClipboardConfig,   ) {     if (config && config.attempts != null) {       this.attempts = config.attempts;     }   }    /** Copies the current text to the clipboard. */   copy(attempts: number = this.attempts): void {     if (attempts > 1) {       let remainingAttempts = attempts;       const pending = this._clipboard.beginCopy(this.text);       this._pending.add(pending);        const attempt = () => {         const successful = pending.copy();         if (!successful && --remainingAttempts && !this._destroyed) {           // We use 1 for the timeout since it's more predictable when flushing in unit tests.           this._currentTimeout = this._ngZone.runOutsideAngular(() => setTimeout(attempt, 1));         } else {           this._currentTimeout = null;           this._pending.delete(pending);           pending.destroy();           this.copied.emit(successful);         }       };       attempt();     } else {       this.copied.emit(this._clipboard.copy(this.text));     }   }    ngOnDestroy() {     if (this._currentTimeout) {       clearTimeout(this._currentTimeout);     }      this._pending.forEach(copy => copy.destroy());     this._pending.clear();     this._destroyed = true;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core';  import {CdkCopyToClipboard} from './copy-to-clipboard';  @NgModule({   declarations: [CdkCopyToClipboard],   exports: [CdkCopyToClipboard], }) export class ClipboardModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './clipboard'; export * from './clipboard-module'; export * from './copy-to-clipboard'; export * from './pending-copy'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 183 --------------------
{"version":3,"file":"testbed.mjs","sources":["../../../../../../../src/cdk/testing/testbed/task-state-zone-interceptor.ts","../../../../../../../src/cdk/testing/testbed/fake-events/event-objects.ts","../../../../../../../src/cdk/testing/testbed/fake-events/dispatch-events.ts","../../../../../../../src/cdk/testing/testbed/fake-events/element-focus.ts","../../../../../../../src/cdk/testing/testbed/fake-events/type-in-element.ts","../../../../../../../src/cdk/testing/testbed/fake-events/index.ts","../../../../../../../src/cdk/testing/testbed/unit-test-element.ts","../../../../../../../src/cdk/testing/testbed/testbed-harness-environment.ts","../../../../../../../src/cdk/testing/testbed/public-api.ts","../../../../../../../src/cdk/testing/testbed/index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BehaviorSubject, Observable} from 'rxjs'; import {ProxyZone, ProxyZoneStatic} from './proxy-zone-types';  /** Current state of the intercepted zone. */ export interface TaskState {   /** Whether the zone is stable (i.e. no microtasks and macrotasks). */   stable: boolean; }  /** Unique symbol that is used to patch a property to a proxy zone. */ const stateObservableSymbol = Symbol('ProxyZone_PATCHED#stateObservable');  /** Type that describes a potentially patched proxy zone instance. */ type PatchedProxyZone = ProxyZone & {   [stateObservableSymbol]: undefined | Observable<TaskState>; };  /**  * Interceptor that can be set up in a `ProxyZone` instance. The interceptor  * will keep track of the task state and emit whenever the state changes.  *  * This serves as a workaround for https://github.com/angular/angular/issues/32896.  */ export class TaskStateZoneInterceptor {   /** Subject that can be used to emit a new state change. */   private readonly _stateSubject = new BehaviorSubject<TaskState>(     this._lastState ? this._getTaskStateFromInternalZoneState(this._lastState) : {stable: true},   );    /** Public observable that emits whenever the task state changes. */   readonly state: Observable<TaskState> = this._stateSubject;    constructor(private _lastState: HasTaskState | null) {}    /** This will be called whenever the task state changes in the intercepted zone. */   onHasTask(delegate: ZoneDelegate, current: Zone, target: Zone, hasTaskState: HasTaskState) {     if (current === target) {       this._stateSubject.next(this._getTaskStateFromInternalZoneState(hasTaskState));     }   }    /** Gets the task state from the internal ZoneJS task state. */   private _getTaskStateFromInternalZoneState(state: HasTaskState): TaskState {     return {stable: !state.macroTask && !state.microTask};   }    /**    * Sets up the custom task state Zone interceptor in the  `ProxyZone`. Throws if    * no `ProxyZone` could be found.    * @returns an observable that emits whenever the task state changes.    */   static setup(): Observable<TaskState> {     if (Zone === undefined) {       throw Error(         'Could not find ZoneJS. For test harnesses running in TestBed, ' +           'ZoneJS needs to be installed.',       );     }      // tslint:disable-next-line:variable-name     const ProxyZoneSpec = (Zone as any)['ProxyZoneSpec'] as ProxyZoneStatic | undefined;      // If there is no \"ProxyZoneSpec\" installed, we throw an error and recommend     // setting up the proxy zone by pulling in the testing bundle.     if (!ProxyZoneSpec) {       throw Error(         'ProxyZoneSpec is needed for the test harnesses but could not be found. ' +           'Please make sure that your environment includes zone.js/dist/zone-testing.js',       );     }      // Ensure that there is a proxy zone instance set up, and get     // a reference to the instance if present.     const zoneSpec = ProxyZoneSpec.assertPresent() as PatchedProxyZone;      // If there already is a delegate registered in the proxy zone, and it     // is type of the custom task state interceptor, we just use that state     // observable. This allows us to only intercept Zone once per test     // (similar to how `fakeAsync` or `async` work).     if (zoneSpec[stateObservableSymbol]) {       return zoneSpec[stateObservableSymbol]!;     }      // Since we intercept on environment creation and the fixture has been     // created before, we might have missed tasks scheduled before. Fortunately     // the proxy zone keeps track of the previous task state, so we can just pass     // this as initial state to the task zone interceptor.     const interceptor = new TaskStateZoneInterceptor(zoneSpec.lastTaskState);     const zoneSpecOnHasTask = zoneSpec.onHasTask.bind(zoneSpec);      // We setup the task state interceptor in the `ProxyZone`. Note that we cannot register     // the interceptor as a new proxy zone delegate because it would mean that other zone     // delegates (e.g. `FakeAsyncTestZone` or `AsyncTestZone`) can accidentally overwrite/disable     // our interceptor. Since we just intend to monitor the task state of the proxy zone, it is     // sufficient to just patch the proxy zone. This also avoids that we interfere with the task     // queue scheduling logic.     zoneSpec.onHasTask = function (...args: [ZoneDelegate, Zone, Zone, HasTaskState]) {       zoneSpecOnHasTask(...args);       interceptor.onHasTask(...args);     };      return (zoneSpec[stateObservableSymbol] = interceptor.state);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ModifierKeys} from '@angular/cdk/testing';  /** Used to generate unique IDs for events. */ let uniqueIds = 0;  /**  * Creates a browser MouseEvent with the specified options.  * @docs-private  */ export function createMouseEvent(   type: string,   clientX = 0,   clientY = 0,   offsetX = 1,   offsetY = 1,   button = 0,   modifiers: ModifierKeys = {}, ) {   // Note: We cannot determine the position of the mouse event based on the screen   // because the dimensions and position of the browser window are not available   // To provide reasonable `screenX` and `screenY` coordinates, we simply use the   // client coordinates as if the browser is opened in fullscreen.   const screenX = clientX;   const screenY = clientY;    const event = new MouseEvent(type, {     bubbles: true,     cancelable: true,     composed: true, // Required for shadow DOM events.     view: window,     detail: 0,     relatedTarget: null,     screenX,     screenY,     clientX,     clientY,     ctrlKey: modifiers.control,     altKey: modifiers.alt,     shiftKey: modifiers.shift,     metaKey: modifiers.meta,     button: button,     buttons: 1,   });    // The `MouseEvent` constructor doesn't allow us to pass these properties into the constructor.   // Override them to `1`, because they're used for fake screen reader event detection.   if (offsetX != null) {     defineReadonlyEventProperty(event, 'offsetX', offsetX);   }    if (offsetY != null) {     defineReadonlyEventProperty(event, 'offsetY', offsetY);   }    return event; }  /**  * Creates a browser `PointerEvent` with the specified options. Pointer events  * by default will appear as if they are the primary pointer of their type.  * https://www.w3.org/TR/pointerevents2/#dom-pointerevent-isprimary.  *  * For example, if pointer events for a multi-touch interaction are created, the non-primary  * pointer touches would need to be represented by non-primary pointer events.  *  * @docs-private  */ export function createPointerEvent(   type: string,   clientX = 0,   clientY = 0,   offsetX?: number,   offsetY?: number,   options: PointerEventInit = {isPrimary: true}, ) {   const event = new PointerEvent(type, {     bubbles: true,     cancelable: true,     composed: true, // Required for shadow DOM events.     view: window,     clientX,     clientY,     ...options,   });    if (offsetX != null) {     defineReadonlyEventProperty(event, 'offsetX', offsetX);   }    if (offsetY != null) {     defineReadonlyEventProperty(event, 'offsetY', offsetY);   }    return event; }  /**  * Creates a browser TouchEvent with the specified pointer coordinates.  * @docs-private  */ export function createTouchEvent(type: string, pageX = 0, pageY = 0, clientX = 0, clientY = 0) {   // We cannot use the `TouchEvent` or `Touch` because Firefox and Safari lack support.   // TODO: Switch to the constructor API when it is available for Firefox and Safari.   const event = document.createEvent('UIEvent');   const touchDetails = {pageX, pageY, clientX, clientY, identifier: uniqueIds++};    // TS3.6 removes the initUIEvent method and suggests porting to \"new UIEvent()\".   (event as any).initUIEvent(type, true, true, window, 0);    // Most of the browsers don't have a \"initTouchEvent\" method that can be used to define   // the touch details.   defineReadonlyEventProperty(event, 'touches', [touchDetails]);   defineReadonlyEventProperty(event, 'targetTouches', [touchDetails]);   defineReadonlyEventProperty(event, 'changedTouches', [touchDetails]);    return event; }  /**  * Creates a keyboard event with the specified key and modifiers.  * @docs-private  */ export function createKeyboardEvent(   type: string,   keyCode: number = 0,   key: string = '',   modifiers: ModifierKeys = {}, ) {   return new KeyboardEvent(type, {     bubbles: true,     cancelable: true,     composed: true, // Required for shadow DOM events.     view: window,     keyCode: keyCode,     key: key,     shiftKey: modifiers.shift,     metaKey: modifiers.meta,     altKey: modifiers.alt,     ctrlKey: modifiers.control,   }); }  /**  * Creates a fake event object with any desired event type.  * @docs-private  */ export function createFakeEvent(type: string, bubbles = false, cancelable = true, composed = true) {   return new Event(type, {bubbles, cancelable, composed}); }  /**  * Defines a readonly property on the given event object. Readonly properties on an event object  * are always set as configurable as that matches default readonly properties for DOM event objects.  */ function defineReadonlyEventProperty(event: Event, propertyName: string, value: any) {   Object.defineProperty(event, propertyName, {get: () => value, configurable: true}); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ModifierKeys} from '@angular/cdk/testing'; import {   createFakeEvent,   createKeyboardEvent,   createMouseEvent,   createPointerEvent,   createTouchEvent, } from './event-objects';  /**  * Utility to dispatch any event on a Node.  * @docs-private  */ export function dispatchEvent<T extends Event>(node: Node | Window, event: T): T {   node.dispatchEvent(event);   return event; }  /**  * Shorthand to dispatch a fake event on a specified node.  * @docs-private  */ export function dispatchFakeEvent(node: Node | Window, type: string, bubbles?: boolean): Event {   return dispatchEvent(node, createFakeEvent(type, bubbles)); }  /**  * Shorthand to dispatch a keyboard event with a specified key code and  * optional modifiers.  * @docs-private  */ export function dispatchKeyboardEvent(   node: Node,   type: string,   keyCode?: number,   key?: string,   modifiers?: ModifierKeys, ): KeyboardEvent {   return dispatchEvent(node, createKeyboardEvent(type, keyCode, key, modifiers)); }  /**  * Shorthand to dispatch a mouse event on the specified coordinates.  * @docs-private  */ export function dispatchMouseEvent(   node: Node,   type: string,   clientX = 0,   clientY = 0,   offsetX?: number,   offsetY?: number,   button?: number,   modifiers?: ModifierKeys, ): MouseEvent {   return dispatchEvent(     node,     createMouseEvent(type, clientX, clientY, offsetX, offsetY, button, modifiers),   ); }  /**  * Shorthand to dispatch a pointer event on the specified coordinates.  * @docs-private  */ export function dispatchPointerEvent(   node: Node,   type: string,   clientX = 0,   clientY = 0,   offsetX?: number,   offsetY?: number,   options?: PointerEventInit, ): PointerEvent {   return dispatchEvent(     node,     createPointerEvent(type, clientX, clientY, offsetX, offsetY, options),   ) as PointerEvent; }  /**  * Shorthand to dispatch a touch event on the specified coordinates.  * @docs-private  */ export function dispatchTouchEvent(   node: Node,   type: string,   pageX = 0,   pageY = 0,   clientX = 0,   clientY = 0, ) {   return dispatchEvent(node, createTouchEvent(type, pageX, pageY, clientX, clientY)); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {dispatchFakeEvent} from './dispatch-events';  function triggerFocusChange(element: HTMLElement, event: 'focus' | 'blur') {   let eventFired = false;   const handler = () => (eventFired = true);   element.addEventListener(event, handler);   element[event]();   element.removeEventListener(event, handler);   if (!eventFired) {     dispatchFakeEvent(element, event);   } }  /**  * Patches an elements focus and blur methods to emit events consistently and predictably.  * This is necessary, because some browsers can call the focus handlers asynchronously,  * while others won't fire them at all if the browser window is not focused.  * @docs-private  */ // TODO: Check if this element focus patching is still needed for local testing, // where browser is not necessarily focused. export function patchElementFocus(element: HTMLElement) {   element.focus = () => dispatchFakeEvent(element, 'focus');   element.blur = () => dispatchFakeEvent(element, 'blur'); }  /** @docs-private */ export function triggerFocus(element: HTMLElement) {   triggerFocusChange(element, 'focus'); }  /** @docs-private */ export function triggerBlur(element: HTMLElement) {   triggerFocusChange(element, 'blur'); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {getNoKeysSpecifiedError, ModifierKeys} from '@angular/cdk/testing'; import {PERIOD} from '@angular/cdk/keycodes'; import {dispatchFakeEvent, dispatchKeyboardEvent} from './dispatch-events'; import {triggerFocus} from './element-focus';  /** Input types for which the value can be entered incrementally. */ const incrementalInputTypes = new Set([   'text',   'email',   'hidden',   'password',   'search',   'tel',   'url', ]);  /**  * Checks whether the given Element is a text input element.  * @docs-private  */ export function isTextInput(element: Element): element is HTMLInputElement | HTMLTextAreaElement {   const nodeName = element.nodeName.toLowerCase();   return nodeName === 'input' || nodeName === 'textarea'; }  /**  * If keys have been specified, focuses an input, sets its value and dispatches  * the `input` event, simulating the user typing.  * @param element Element onto which to set the value.  * @param keys The keys to send to the element.  * @docs-private  */ export function typeInElement(   element: HTMLElement,   ...keys: (string | {keyCode?: number; key?: string})[] ): void;  /**  * If keys have been specified, focuses an input, sets its value and dispatches  * the `input` event, simulating the user typing.  * @param element Element onto which to set the value.  * @param modifiers Modifier keys that are held while typing.  * @param keys The keys to send to the element.  * @docs-private  */ export function typeInElement(   element: HTMLElement,   modifiers: ModifierKeys,   ...keys: (string | {keyCode?: number; key?: string})[] ): void;  export function typeInElement(element: HTMLElement, ...modifiersAndKeys: any[]) {   const first = modifiersAndKeys[0];   let modifiers: ModifierKeys;   let rest: (string | {keyCode?: number; key?: string})[];   if (     first !== undefined &&     typeof first !== 'string' &&     first.keyCode === undefined &&     first.key === undefined   ) {     modifiers = first;     rest = modifiersAndKeys.slice(1);   } else {     modifiers = {};     rest = modifiersAndKeys;   }   const isInput = isTextInput(element);   const inputType = element.getAttribute('type') || 'text';   const keys: {keyCode?: number; key?: string}[] = rest     .map(k =>       typeof k === 'string'         ? k.split('').map(c => ({keyCode: c.toUpperCase().charCodeAt(0), key: c}))         : [k],     )     .reduce((arr, k) => arr.concat(k), []);    // Throw an error if no keys have been specified. Calling this function with no   // keys should not result in a focus event being dispatched unexpectedly.   if (keys.length === 0) {     throw getNoKeysSpecifiedError();   }    // We simulate the user typing in a value by incrementally assigning the value below. The problem   // is that for some input types, the browser won't allow for an invalid value to be set via the   // `value` property which will always be the case when going character-by-character. If we detect   // such an input, we have to set the value all at once or listeners to the `input` event (e.g.   // the `ReactiveFormsModule` uses such an approach) won't receive the correct value.   const enterValueIncrementally =     inputType === 'number'       ? // The value can be set character by character in number inputs if it doesn't have any decimals.         keys.every(key => key.key !== '.' && key.key !== '-' && key.keyCode !== PERIOD)       : incrementalInputTypes.has(inputType);    triggerFocus(element);    // When we aren't entering the value incrementally, assign it all at once ahead   // of time so that any listeners to the key events below will have access to it.   if (!enterValueIncrementally) {     (element as HTMLInputElement).value = keys.reduce((value, key) => value + (key.key || ''), '');   }    for (const key of keys) {     dispatchKeyboardEvent(element, 'keydown', key.keyCode, key.key, modifiers);     dispatchKeyboardEvent(element, 'keypress', key.keyCode, key.key, modifiers);     if (isInput && key.key && key.key.length === 1) {       if (enterValueIncrementally) {         (element as HTMLInputElement | HTMLTextAreaElement).value += key.key;         dispatchFakeEvent(element, 'input');       }     }     dispatchKeyboardEvent(element, 'keyup', key.keyCode, key.key, modifiers);   }    // Since we weren't dispatching `input` events while sending the keys, we have to do it now.   if (!enterValueIncrementally) {     dispatchFakeEvent(element, 'input');   } }  /**  * Clears the text in an input or textarea element.  * @docs-private  */ export function clearElement(element: HTMLInputElement | HTMLTextAreaElement) {   triggerFocus(element as HTMLElement);   element.value = '';   dispatchFakeEvent(element, 'input'); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // These are private APIs that are used both by the public APIs inside of this package, as well // as in unit tests of other entry-points, hence why we need to re-export them through here. export * from './dispatch-events'; export * from './event-objects'; export * from './element-focus'; export * from './type-in-element'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import * as keyCodes from '@angular/cdk/keycodes'; import {   _getTextWithExcludedElements,   ElementDimensions,   ModifierKeys,   TestElement,   TestKey,   TextOptions,   EventData, } from '@angular/cdk/testing'; import {   clearElement,   createFakeEvent,   dispatchFakeEvent,   dispatchMouseEvent,   dispatchPointerEvent,   isTextInput,   triggerBlur,   triggerFocus,   typeInElement,   dispatchEvent, } from './fake-events';  /** Maps `TestKey` constants to the `keyCode` and `key` values used by native browser events. */ const keyMap = {   [TestKey.BACKSPACE]: {keyCode: keyCodes.BACKSPACE, key: 'Backspace'},   [TestKey.TAB]: {keyCode: keyCodes.TAB, key: 'Tab'},   [TestKey.ENTER]: {keyCode: keyCodes.ENTER, key: 'Enter'},   [TestKey.SHIFT]: {keyCode: keyCodes.SHIFT, key: 'Shift'},   [TestKey.CONTROL]: {keyCode: keyCodes.CONTROL, key: 'Control'},   [TestKey.ALT]: {keyCode: keyCodes.ALT, key: 'Alt'},   [TestKey.ESCAPE]: {keyCode: keyCodes.ESCAPE, key: 'Escape'},   [TestKey.PAGE_UP]: {keyCode: keyCodes.PAGE_UP, key: 'PageUp'},   [TestKey.PAGE_DOWN]: {keyCode: keyCodes.PAGE_DOWN, key: 'PageDown'},   [TestKey.END]: {keyCode: keyCodes.END, key: 'End'},   [TestKey.HOME]: {keyCode: keyCodes.HOME, key: 'Home'},   [TestKey.LEFT_ARROW]: {keyCode: keyCodes.LEFT_ARROW, key: 'ArrowLeft'},   [TestKey.UP_ARROW]: {keyCode: keyCodes.UP_ARROW, key: 'ArrowUp'},   [TestKey.RIGHT_ARROW]: {keyCode: keyCodes.RIGHT_ARROW, key: 'ArrowRight'},   [TestKey.DOWN_ARROW]: {keyCode: keyCodes.DOWN_ARROW, key: 'ArrowDown'},   [TestKey.INSERT]: {keyCode: keyCodes.INSERT, key: 'Insert'},   [TestKey.DELETE]: {keyCode: keyCodes.DELETE, key: 'Delete'},   [TestKey.F1]: {keyCode: keyCodes.F1, key: 'F1'},   [TestKey.F2]: {keyCode: keyCodes.F2, key: 'F2'},   [TestKey.F3]: {keyCode: keyCodes.F3, key: 'F3'},   [TestKey.F4]: {keyCode: keyCodes.F4, key: 'F4'},   [TestKey.F5]: {keyCode: keyCodes.F5, key: 'F5'},   [TestKey.F6]: {keyCode: keyCodes.F6, key: 'F6'},   [TestKey.F7]: {keyCode: keyCodes.F7, key: 'F7'},   [TestKey.F8]: {keyCode: keyCodes.F8, key: 'F8'},   [TestKey.F9]: {keyCode: keyCodes.F9, key: 'F9'},   [TestKey.F10]: {keyCode: keyCodes.F10, key: 'F10'},   [TestKey.F11]: {keyCode: keyCodes.F11, key: 'F11'},   [TestKey.F12]: {keyCode: keyCodes.F12, key: 'F12'},   [TestKey.META]: {keyCode: keyCodes.META, key: 'Meta'}, };  /** A `TestElement` implementation for unit tests. */ export class UnitTestElement implements TestElement {   constructor(readonly element: Element, private _stabilize: () => Promise<void>) {}    /** Blur the element. */   async blur(): Promise<void> {     triggerBlur(this.element as HTMLElement);     await this._stabilize();   }    /** Clear the element's input (for input and textarea elements only). */   async clear(): Promise<void> {     if (!isTextInput(this.element)) {       throw Error('Attempting to clear an invalid element');     }     clearElement(this.element);     await this._stabilize();   }    /**    * Click the element at the default location for the current environment. If you need to guarantee    * the element is clicked at a specific location, consider using `click('center')` or    * `click(x, y)` instead.    */   click(modifiers?: ModifierKeys): Promise<void>;   /** Click the element at the element's center. */   click(location: 'center', modifiers?: ModifierKeys): Promise<void>;   /**    * Click the element at the specified coordinates relative to the top-left of the element.    * @param relativeX Coordinate within the element, along the X-axis at which to click.    * @param relativeY Coordinate within the element, along the Y-axis at which to click.    * @param modifiers Modifier keys held while clicking    */   click(relativeX: number, relativeY: number, modifiers?: ModifierKeys): Promise<void>;   async click(     ...args: [ModifierKeys?] | ['center', ModifierKeys?] | [number, number, ModifierKeys?]   ): Promise<void> {     const isDisabled = (this.element as Partial<{disabled?: boolean}>).disabled === true;      // If the element is `disabled` and has a `disabled` property, we emit the mouse event     // sequence but not dispatch the `click` event. This is necessary to keep the behavior     // consistent with an actual user interaction. The click event is not necessarily     // automatically prevented by the browser. There is mismatch between Firefox and Chromium:     // https://bugzilla.mozilla.org/show_bug.cgi?id=329509.     // https://bugs.chromium.org/p/chromium/issues/detail?id=1115661.     await this._dispatchMouseEventSequence(isDisabled ? null : 'click', args, 0);     await this._stabilize();   }    /**    * Right clicks on the element at the specified coordinates relative to the top-left of it.    * @param relativeX Coordinate within the element, along the X-axis at which to click.    * @param relativeY Coordinate within the element, along the Y-axis at which to click.    * @param modifiers Modifier keys held while clicking    */   rightClick(relativeX: number, relativeY: number, modifiers?: ModifierKeys): Promise<void>;   async rightClick(     ...args: [ModifierKeys?] | ['center', ModifierKeys?] | [number, number, ModifierKeys?]   ): Promise<void> {     await this._dispatchMouseEventSequence('contextmenu', args, 2);     await this._stabilize();   }    /** Focus the element. */   async focus(): Promise<void> {     triggerFocus(this.element as HTMLElement);     await this._stabilize();   }    /** Get the computed value of the given CSS property for the element. */   async getCssValue(property: string): Promise<string> {     await this._stabilize();     // TODO(mmalerba): Consider adding value normalization if we run into common cases where its     //  needed.     return getComputedStyle(this.element).getPropertyValue(property);   }    /** Hovers the mouse over the element. */   async hover(): Promise<void> {     this._dispatchPointerEventIfSupported('pointerenter');     dispatchMouseEvent(this.element, 'mouseover');     dispatchMouseEvent(this.element, 'mouseenter');     await this._stabilize();   }    /** Moves the mouse away from the element. */   async mouseAway(): Promise<void> {     this._dispatchPointerEventIfSupported('pointerleave');     dispatchMouseEvent(this.element, 'mouseout');     dispatchMouseEvent(this.element, 'mouseleave');     await this._stabilize();   }    /**    * Sends the given string to the input as a series of key presses. Also fires input events    * and attempts to add the string to the Element's value. Note that this cannot    * reproduce native browser behavior for keyboard shortcuts such as Tab, Ctrl + A, etc.    */   async sendKeys(...keys: (string | TestKey)[]): Promise<void>;   /**    * Sends the given string to the input as a series of key presses. Also fires input events    * and attempts to add the string to the Element's value.    */   async sendKeys(modifiers: ModifierKeys, ...keys: (string | TestKey)[]): Promise<void>;   async sendKeys(...modifiersAndKeys: any[]): Promise<void> {     const args = modifiersAndKeys.map(k => (typeof k === 'number' ? keyMap[k as TestKey] : k));     typeInElement(this.element as HTMLElement, ...args);     await this._stabilize();   }    /**    * Gets the text from the element.    * @param options Options that affect what text is included.    */   async text(options?: TextOptions): Promise<string> {     await this._stabilize();     if (options?.exclude) {       return _getTextWithExcludedElements(this.element, options.exclude);     }     return (this.element.textContent || '').trim();   }    /**    * Sets the value of a `contenteditable` element.    * @param value Value to be set on the element.    */   async setContenteditableValue(value: string): Promise<void> {     const contenteditableAttr = await this.getAttribute('contenteditable');      if (contenteditableAttr !== '' && contenteditableAttr !== 'true') {       throw new Error('setContenteditableValue can only be called on a `contenteditable` element.');     }      await this._stabilize();     this.element.textContent = value;   }    /** Gets the value for the given attribute from the element. */   async getAttribute(name: string): Promise<string | null> {     await this._stabilize();     return this.element.getAttribute(name);   }    /** Checks whether the element has the given class. */   async hasClass(name: string): Promise<boolean> {     await this._stabilize();     return this.element.classList.contains(name);   }    /** Gets the dimensions of the element. */   async getDimensions(): Promise<ElementDimensions> {     await this._stabilize();     return this.element.getBoundingClientRect();   }    /** Gets the value of a property of an element. */   async getProperty<T = any>(name: string): Promise<T> {     await this._stabilize();     return (this.element as any)[name];   }    /** Sets the value of a property of an input. */   async setInputValue(value: string): Promise<void> {     (this.element as any).value = value;     await this._stabilize();   }    /** Selects the options at the specified indexes inside of a native `select` element. */   async selectOptions(...optionIndexes: number[]): Promise<void> {     let hasChanged = false;     const options = this.element.querySelectorAll('option');     const indexes = new Set(optionIndexes); // Convert to a set to remove duplicates.      for (let i = 0; i < options.length; i++) {       const option = options[i];       const wasSelected = option.selected;        // We have to go through `option.selected`, because `HTMLSelectElement.value` doesn't       // allow for multiple options to be selected, even in `multiple` mode.       option.selected = indexes.has(i);        if (option.selected !== wasSelected) {         hasChanged = true;         dispatchFakeEvent(this.element, 'change');       }     }      if (hasChanged) {       await this._stabilize();     }   }    /** Checks whether this element matches the given selector. */   async matchesSelector(selector: string): Promise<boolean> {     await this._stabilize();     const elementPrototype = Element.prototype as any;     return (elementPrototype['matches'] || elementPrototype['msMatchesSelector']).call(       this.element,       selector,     );   }    /** Checks whether the element is focused. */   async isFocused(): Promise<boolean> {     await this._stabilize();     return document.activeElement === this.element;   }    /**    * Dispatches an event with a particular name.    * @param name Name of the event to be dispatched.    */   async dispatchEvent(name: string, data?: Record<string, EventData>): Promise<void> {     const event = createFakeEvent(name);      if (data) {       // tslint:disable-next-line:ban Have to use `Object.assign` to preserve the original object.       Object.assign(event, data);     }      dispatchEvent(this.element, event);     await this._stabilize();   }    /**    * Dispatches a pointer event on the current element if the browser supports it.    * @param name Name of the pointer event to be dispatched.    * @param clientX Coordinate of the user's pointer along the X axis.    * @param clientY Coordinate of the user's pointer along the Y axis.    * @param button Mouse button that should be pressed when dispatching the event.    */   private _dispatchPointerEventIfSupported(     name: string,     clientX?: number,     clientY?: number,     offsetX?: number,     offsetY?: number,     button?: number,   ) {     // The latest versions of all browsers we support have the new `PointerEvent` API.     // Though since we capture the two most recent versions of these browsers, we also     // need to support Safari 12 at time of writing. Safari 12 does not have support for this,     // so we need to conditionally create and dispatch these events based on feature detection.     if (typeof PointerEvent !== 'undefined' && PointerEvent) {       dispatchPointerEvent(this.element, name, clientX, clientY, offsetX, offsetY, {         isPrimary: true,         button,       });     }   }    /**    * Dispatches all the events that are part of a mouse event sequence    * and then emits a given primary event at the end, if speciifed.    */   private async _dispatchMouseEventSequence(     primaryEventName: string | null,     args: [ModifierKeys?] | ['center', ModifierKeys?] | [number, number, ModifierKeys?],     button?: number,   ) {     let clientX: number | undefined = undefined;     let clientY: number | undefined = undefined;     let offsetX: number | undefined = undefined;     let offsetY: number | undefined = undefined;     let modifiers: ModifierKeys = {};      if (args.length && typeof args[args.length - 1] === 'object') {       modifiers = args.pop() as ModifierKeys;     }      if (args.length) {       const {left, top, width, height} = await this.getDimensions();       offsetX = args[0] === 'center' ? width / 2 : (args[0] as number);       offsetY = args[0] === 'center' ? height / 2 : (args[1] as number);        // Round the computed click position as decimal pixels are not       // supported by mouse events and could lead to unexpected results.       clientX = Math.round(left + offsetX);       clientY = Math.round(top + offsetY);     }      this._dispatchPointerEventIfSupported(       'pointerdown',       clientX,       clientY,       offsetX,       offsetY,       button,     );     dispatchMouseEvent(       this.element,       'mousedown',       clientX,       clientY,       offsetX,       offsetY,       button,       modifiers,     );     this._dispatchPointerEventIfSupported('pointerup', clientX, clientY, offsetX, offsetY, button);     dispatchMouseEvent(       this.element,       'mouseup',       clientX,       clientY,       offsetX,       offsetY,       button,       modifiers,     );      // If a primary event name is specified, emit it after the mouse event sequence.     if (primaryEventName !== null) {       dispatchMouseEvent(         this.element,         primaryEventName,         clientX,         clientY,         offsetX,         offsetY,         button,         modifiers,       );     }      // This call to _stabilize should not be needed since the callers will already do that them-     // selves. Nevertheless it breaks some tests in g3 without it. It needs to be investigated     // why removing breaks those tests.     // See: https://github.com/angular/components/pull/20758/files#r520886256.     await this._stabilize();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   ComponentHarness,   ComponentHarnessConstructor,   handleAutoChangeDetectionStatus,   HarnessEnvironment,   HarnessLoader,   stopHandlingAutoChangeDetectionStatus,   TestElement, } from '@angular/cdk/testing'; import {ComponentFixture, flush} from '@angular/core/testing'; import {Observable} from 'rxjs'; import {takeWhile} from 'rxjs/operators'; import {TaskState, TaskStateZoneInterceptor} from './task-state-zone-interceptor'; import {UnitTestElement} from './unit-test-element';  /** Options to configure the environment. */ export interface TestbedHarnessEnvironmentOptions {   /** The query function used to find DOM elements. */   queryFn: (selector: string, root: Element) => Iterable<Element> | ArrayLike<Element>; }  /** The default environment options. */ const defaultEnvironmentOptions: TestbedHarnessEnvironmentOptions = {   queryFn: (selector: string, root: Element) => root.querySelectorAll(selector), };  /** Whether auto change detection is currently disabled. */ let disableAutoChangeDetection = false;  /**  * The set of non-destroyed fixtures currently being used by `TestbedHarnessEnvironment` instances.  */ const activeFixtures = new Set<ComponentFixture<unknown>>();  /**  * Installs a handler for change detection batching status changes for a specific fixture.  * @param fixture The fixture to handle change detection batching for.  */ function installAutoChangeDetectionStatusHandler(fixture: ComponentFixture<unknown>) {   if (!activeFixtures.size) {     handleAutoChangeDetectionStatus(({isDisabled, onDetectChangesNow}) => {       disableAutoChangeDetection = isDisabled;       if (onDetectChangesNow) {         Promise.all(Array.from(activeFixtures).map(detectChanges)).then(onDetectChangesNow);       }     });   }   activeFixtures.add(fixture); }  /**  * Uninstalls a handler for change detection batching status changes for a specific fixture.  * @param fixture The fixture to stop handling change detection batching for.  */ function uninstallAutoChangeDetectionStatusHandler(fixture: ComponentFixture<unknown>) {   activeFixtures.delete(fixture);   if (!activeFixtures.size) {     stopHandlingAutoChangeDetectionStatus();   } }  /** Whether we are currently in the fake async zone. */ function isInFakeAsyncZone() {   return Zone!.current.get('FakeAsyncTestZoneSpec') != null; }  /**  * Triggers change detection for a specific fixture.  * @param fixture The fixture to trigger change detection for.  */ async function detectChanges(fixture: ComponentFixture<unknown>) {   fixture.detectChanges();   if (isInFakeAsyncZone()) {     flush();   } else {     await fixture.whenStable();   } }  /** A `HarnessEnvironment` implementation for Angular's Testbed. */ export class TestbedHarnessEnvironment extends HarnessEnvironment<Element> {   /** Whether the environment has been destroyed. */   private _destroyed = false;    /** Observable that emits whenever the test task state changes. */   private _taskState: Observable<TaskState>;    /** The options for this environment. */   private _options: TestbedHarnessEnvironmentOptions;    /** Environment stabilization callback passed to the created test elements. */   private _stabilizeCallback: () => Promise<void>;    protected constructor(     rawRootElement: Element,     private _fixture: ComponentFixture<unknown>,     options?: TestbedHarnessEnvironmentOptions,   ) {     super(rawRootElement);     this._options = {...defaultEnvironmentOptions, ...options};     this._taskState = TaskStateZoneInterceptor.setup();     this._stabilizeCallback = () => this.forceStabilize();     installAutoChangeDetectionStatusHandler(_fixture);     _fixture.componentRef.onDestroy(() => {       uninstallAutoChangeDetectionStatusHandler(_fixture);       this._destroyed = true;     });   }    /** Creates a `HarnessLoader` rooted at the given fixture's root element. */   static loader(     fixture: ComponentFixture<unknown>,     options?: TestbedHarnessEnvironmentOptions,   ): HarnessLoader {     return new TestbedHarnessEnvironment(fixture.nativeElement, fixture, options);   }    /**    * Creates a `HarnessLoader` at the document root. This can be used if harnesses are    * located outside of a fixture (e.g. overlays appended to the document body).    */   static documentRootLoader(     fixture: ComponentFixture<unknown>,     options?: TestbedHarnessEnvironmentOptions,   ): HarnessLoader {     return new TestbedHarnessEnvironment(document.body, fixture, options);   }    /** Gets the native DOM element corresponding to the given TestElement. */   static getNativeElement(el: TestElement): Element {     if (el instanceof UnitTestElement) {       return el.element;     }     throw Error('This TestElement was not created by the TestbedHarnessEnvironment');   }    /**    * Creates an instance of the given harness type, using the fixture's root element as the    * harness's host element. This method should be used when creating a harness for the root element    * of a fixture, as components do not have the correct selector when they are created as the root    * of the fixture.    */   static async harnessForFixture<T extends ComponentHarness>(     fixture: ComponentFixture<unknown>,     harnessType: ComponentHarnessConstructor<T>,     options?: TestbedHarnessEnvironmentOptions,   ): Promise<T> {     const environment = new TestbedHarnessEnvironment(fixture.nativeElement, fixture, options);     await environment.forceStabilize();     return environment.createComponentHarness(harnessType, fixture.nativeElement);   }    /**    * Flushes change detection and async tasks captured in the Angular zone.    * In most cases it should not be necessary to call this manually. However, there may be some edge    * cases where it is needed to fully flush animation events.    */   async forceStabilize(): Promise<void> {     if (!disableAutoChangeDetection) {       if (this._destroyed) {         throw Error('Harness is attempting to use a fixture that has already been destroyed.');       }        await detectChanges(this._fixture);     }   }    /**    * Waits for all scheduled or running async tasks to complete. This allows harness    * authors to wait for async tasks outside of the Angular zone.    */   async waitForTasksOutsideAngular(): Promise<void> {     // If we run in the fake async zone, we run \"flush\" to run any scheduled tasks. This     // ensures that the harnesses behave inside of the FakeAsyncTestZone similar to the     // \"AsyncTestZone\" and the root zone (i.e. neither fakeAsync or async). Note that we     // cannot just rely on the task state observable to become stable because the state will     // never change. This is because the task queue will be only drained if the fake async     // zone is being flushed.     if (isInFakeAsyncZone()) {       flush();     }      // Wait until the task queue has been drained and the zone is stable. Note that     // we cannot rely on \"fixture.whenStable\" since it does not catch tasks scheduled     // outside of the Angular zone. For test harnesses, we want to ensure that the     // app is fully stabilized and therefore need to use our own zone interceptor.     await this._taskState.pipe(takeWhile(state => !state.stable)).toPromise();   }    /** Gets the root element for the document. */   protected getDocumentRoot(): Element {     return document.body;   }    /** Creates a `TestElement` from a raw element. */   protected createTestElement(element: Element): TestElement {     return new UnitTestElement(element, this._stabilizeCallback);   }    /** Creates a `HarnessLoader` rooted at the given raw element. */   protected createEnvironment(element: Element): HarnessEnvironment<Element> {     return new TestbedHarnessEnvironment(element, this._fixture, this._options);   }    /**    * Gets a list of all elements matching the given selector under this environment's root element.    */   protected async getAllRawElements(selector: string): Promise<Element[]> {     await this.forceStabilize();     return Array.from(this._options.queryFn(selector, this.rawRootElement));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './testbed-harness-environment'; export * from './unit-test-element'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; "],"names":[],"mappings":";;;;;;;AAAA;;;;;;AAMG;AAWH;AACA,MAAM,qBAAqB,GAAG,MAAM,CAAC,mCAAmC,CAAC,CAAC;AAO1E;;;;;AAKG;MACU,wBAAwB,CAAA;AASnC,IAAA,WAAA,CAAoB,UAA+B,EAAA;QAA/B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAqB;;QAPlC,IAAa,CAAA,aAAA,GAAG,IAAI,eAAe,CAClD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAC,MAAM,EAAE,IAAI,EAAC,CAC5F,CAAC;;AAGO,QAAA,IAAA,CAAA,KAAK,GAA0B,IAAI,CAAC,aAAa,CAAC;KAEJ;;AAGvD,IAAA,SAAS,CAAC,QAAsB,EAAE,OAAa,EAAE,MAAY,EAAE,YAA0B,EAAA;QACvF,IAAI,OAAO,KAAK,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAAC,YAAY,CAAC,CAAC,CAAC;AAChF,SAAA;KACF;;AAGO,IAAA,kCAAkC,CAAC,KAAmB,EAAA;AAC5D,QAAA,OAAO,EAAC,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,EAAC,CAAC;KACvD;AAED;;;;AAIG;AACH,IAAA,OAAO,KAAK,GAAA;QACV,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,MAAM,KAAK,CACT,gEAAgE;AAC9D,gBAAA,+BAA+B,CAClC,CAAC;AACH,SAAA;;AAGD,QAAA,MAAM,aAAa,GAAI,IAAY,CAAC,eAAe,CAAgC,CAAC;;;QAIpF,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,KAAK,CACT,yEAAyE;AACvE,gBAAA,8EAA8E,CACjF,CAAC;AACH,SAAA;;;AAID,QAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,EAAsB,CAAC;;;;;AAMnE,QAAA,IAAI,QAAQ,CAAC,qBAAqB,CAAC,EAAE;AACnC,YAAA,OAAO,QAAQ,CAAC,qBAAqB,CAAE,CAAC;AACzC,SAAA;;;;;QAMD,MAAM,WAAW,GAAG,IAAI,wBAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACzE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;;;;;;AAQ5D,QAAA,QAAQ,CAAC,SAAS,GAAG,UAAU,GAAG,IAA8C,EAAA;AAC9E,YAAA,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3B,YAAA,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;AACjC,SAAC,CAAC;QAEF,QAAQ,QAAQ,CAAC,qBAAqB,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE;KAC9D;AACF;;AC/GD;;;;;;AAMG;AAIH;AACA,IAAI,SAAS,GAAG,CAAC,CAAC;AAElB;;;AAGG;AACG,SAAU,gBAAgB,CAC9B,IAAY,EACZ,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,CAAC,EACX,MAAM,GAAG,CAAC,EACV,SAAA,GAA0B,EAAE,EAAA;;;;;IAM5B,MAAM,OAAO,GAAG,OAAO,CAAC;IACxB,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,IAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE;AACjC,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,aAAa,EAAE,IAAI;QACnB,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,MAAM,EAAE,SAAS,CAAC,GAAG;QACrB,QAAQ,EAAE,SAAS,CAAC,KAAK;QACzB,OAAO,EAAE,SAAS,CAAC,IAAI;AACvB,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,OAAO,EAAE,CAAC;AACX,KAAA,CAAC,CAAC;;;IAIH,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,QAAA,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACxD,KAAA;IAED,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,QAAA,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACxD,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;AASG;AACG,SAAU,kBAAkB,CAChC,IAAY,EACZ,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,CAAC,EACX,OAAgB,EAChB,OAAgB,EAChB,UAA4B,EAAC,SAAS,EAAE,IAAI,EAAC,EAAA;AAE7C,IAAA,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE;AACnC,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,MAAM;QACZ,OAAO;QACP,OAAO;AACP,QAAA,GAAG,OAAO;AACX,KAAA,CAAC,CAAC;IAEH,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,QAAA,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACxD,KAAA;IAED,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,QAAA,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACxD,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;AAGG;SACa,gBAAgB,CAAC,IAAY,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAA;;;IAG3F,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC9C,IAAA,MAAM,YAAY,GAAG,EAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,EAAC,CAAC;;AAG9E,IAAA,KAAa,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;;;IAIxD,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9D,2BAA2B,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IACpE,2BAA2B,CAAC,KAAK,EAAE,gBAAgB,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAErE,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;AAGG;AACa,SAAA,mBAAmB,CACjC,IAAY,EACZ,OAAA,GAAkB,CAAC,EACnB,GAAc,GAAA,EAAE,EAChB,SAAA,GAA0B,EAAE,EAAA;AAE5B,IAAA,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE;AAC7B,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,GAAG,EAAE,GAAG;QACR,QAAQ,EAAE,SAAS,CAAC,KAAK;QACzB,OAAO,EAAE,SAAS,CAAC,IAAI;QACvB,MAAM,EAAE,SAAS,CAAC,GAAG;QACrB,OAAO,EAAE,SAAS,CAAC,OAAO;AAC3B,KAAA,CAAC,CAAC;AACL,CAAC;AAED;;;AAGG;AACa,SAAA,eAAe,CAAC,IAAY,EAAE,OAAO,GAAG,KAAK,EAAE,UAAU,GAAG,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAA;AAC/F,IAAA,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;AAGG;AACH,SAAS,2BAA2B,CAAC,KAAY,EAAE,YAAoB,EAAE,KAAU,EAAA;IACjF,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,EAAC,GAAG,EAAE,MAAM,KAAK,EAAE,YAAY,EAAE,IAAI,EAAC,CAAC,CAAC;AACrF;;ACpKA;;;;;;AAMG;AAWH;;;AAGG;AACa,SAAA,aAAa,CAAkB,IAAmB,EAAE,KAAQ,EAAA;AAC1E,IAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1B,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;AAGG;SACa,iBAAiB,CAAC,IAAmB,EAAE,IAAY,EAAE,OAAiB,EAAA;IACpF,OAAO,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;;;AAIG;AACG,SAAU,qBAAqB,CACnC,IAAU,EACV,IAAY,EACZ,OAAgB,EAChB,GAAY,EACZ,SAAwB,EAAA;AAExB,IAAA,OAAO,aAAa,CAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;AACjF,CAAC;AAED;;;AAGG;AACG,SAAU,kBAAkB,CAChC,IAAU,EACV,IAAY,EACZ,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,CAAC,EACX,OAAgB,EAChB,OAAgB,EAChB,MAAe,EACf,SAAwB,EAAA;IAExB,OAAO,aAAa,CAClB,IAAI,EACJ,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAC9E,CAAC;AACJ,CAAC;AAED;;;AAGG;SACa,oBAAoB,CAClC,IAAU,EACV,IAAY,EACZ,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,CAAC,EACX,OAAgB,EAChB,OAAgB,EAChB,OAA0B,EAAA;AAE1B,IAAA,OAAO,aAAa,CAClB,IAAI,EACJ,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CACtD,CAAC;AACpB,CAAC;AAED;;;AAGG;AACG,SAAU,kBAAkB,CAChC,IAAU,EACV,IAAY,EACZ,KAAK,GAAG,CAAC,EACT,KAAK,GAAG,CAAC,EACT,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,CAAC,EAAA;AAEX,IAAA,OAAO,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AACrF;;ACrGA;;;;;;AAMG;AAIH,SAAS,kBAAkB,CAAC,OAAoB,EAAE,KAAuB,EAAA;IACvE,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,OAAO,GAAG,OAAO,UAAU,GAAG,IAAI,CAAC,CAAC;AAC1C,IAAA,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzC,IAAA,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AACjB,IAAA,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACnC,KAAA;AACH,CAAC;AAED;;;;;AAKG;AACH;AACA;AACM,SAAU,iBAAiB,CAAC,OAAoB,EAAA;AACpD,IAAA,OAAO,CAAC,KAAK,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1D,IAAA,OAAO,CAAC,IAAI,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC;AAED;AACM,SAAU,YAAY,CAAC,OAAoB,EAAA;AAC/C,IAAA,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAED;AACM,SAAU,WAAW,CAAC,OAAoB,EAAA;AAC9C,IAAA,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACtC;;AC1CA;;;;;;AAMG;AAOH;AACA,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,MAAM;IACN,OAAO;IACP,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,KAAK;IACL,KAAK;AACN,CAAA,CAAC,CAAC;AAEH;;;AAGG;AACG,SAAU,WAAW,CAAC,OAAgB,EAAA;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AAChD,IAAA,OAAO,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,UAAU,CAAC;AACzD,CAAC;SA4Be,aAAa,CAAC,OAAoB,EAAE,GAAG,gBAAuB,EAAA;AAC5E,IAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAClC,IAAA,IAAI,SAAuB,CAAC;AAC5B,IAAA,IAAI,IAAmD,CAAC;IACxD,IACE,KAAK,KAAK,SAAS;QACnB,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,OAAO,KAAK,SAAS;AAC3B,QAAA,KAAK,CAAC,GAAG,KAAK,SAAS,EACvB;QACA,SAAS,GAAG,KAAK,CAAC;AAClB,QAAA,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,KAAA;AAAM,SAAA;QACL,SAAS,GAAG,EAAE,CAAC;QACf,IAAI,GAAG,gBAAgB,CAAC;AACzB,KAAA;AACD,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;IACzD,MAAM,IAAI,GAAuC,IAAI;SAClD,GAAG,CAAC,CAAC,IACJ,OAAO,CAAC,KAAK,QAAQ;AACnB,UAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC;AAC1E,UAAE,CAAC,CAAC,CAAC,CACR;AACA,SAAA,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;;;AAIzC,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,MAAM,uBAAuB,EAAE,CAAC;AACjC,KAAA;;;;;;AAOD,IAAA,MAAM,uBAAuB,GAC3B,SAAS,KAAK,QAAQ;AACpB;YACE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM,CAAC;AACjF,UAAE,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAE3C,YAAY,CAAC,OAAO,CAAC,CAAC;;;IAItB,IAAI,CAAC,uBAAuB,EAAE;QAC3B,OAA4B,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAChG,KAAA;AAED,IAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC3E,QAAA,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC5E,QAAA,IAAI,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9C,YAAA,IAAI,uBAAuB,EAAE;AAC1B,gBAAA,OAAkD,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AACrE,gBAAA,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACrC,aAAA;AACF,SAAA;AACD,QAAA,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC1E,KAAA;;IAGD,IAAI,CAAC,uBAAuB,EAAE;AAC5B,QAAA,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACrC,KAAA;AACH,CAAC;AAED;;;AAGG;AACG,SAAU,YAAY,CAAC,OAA+C,EAAA;IAC1E,YAAY,CAAC,OAAsB,CAAC,CAAC;AACrC,IAAA,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;AACnB,IAAA,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACtC;;ACxIA;;;;;;AAMG;;ACNH;;;;;;AAMG;AAyBH;AACA,MAAM,MAAM,GAAG;AACb,IAAA,CAAC,OAAO,CAAC,SAAS,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,WAAW,EAAC;AACpE,IAAA,CAAC,OAAO,CAAC,GAAG,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC;AAClD,IAAA,CAAC,OAAO,CAAC,KAAK,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAC;AACxD,IAAA,CAAC,OAAO,CAAC,KAAK,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAC;AACxD,IAAA,CAAC,OAAO,CAAC,OAAO,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAC;AAC9D,IAAA,CAAC,OAAO,CAAC,GAAG,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC;AAClD,IAAA,CAAC,OAAO,CAAC,MAAM,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAC;AAC3D,IAAA,CAAC,OAAO,CAAC,OAAO,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAC;AAC7D,IAAA,CAAC,OAAO,CAAC,SAAS,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAC;AACnE,IAAA,CAAC,OAAO,CAAC,GAAG,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC;AAClD,IAAA,CAAC,OAAO,CAAC,IAAI,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAC;AACrD,IAAA,CAAC,OAAO,CAAC,UAAU,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,EAAC;AACtE,IAAA,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAC;AAChE,IAAA,CAAC,OAAO,CAAC,WAAW,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,YAAY,EAAC;AACzE,IAAA,CAAC,OAAO,CAAC,UAAU,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,EAAC;AACtE,IAAA,CAAC,OAAO,CAAC,MAAM,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAC;AAC3D,IAAA,CAAC,OAAO,CAAC,MAAM,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAC;AAC3D,IAAA,CAAC,OAAO,CAAC,EAAE,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAC;AAC/C,IAAA,CAAC,OAAO,CAAC,EAAE,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAC;AAC/C,IAAA,CAAC,OAAO,CAAC,EAAE,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAC;AAC/C,IAAA,CAAC,OAAO,CAAC,EAAE,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAC;AAC/C,IAAA,CAAC,OAAO,CAAC,EAAE,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAC;AAC/C,IAAA,CAAC,OAAO,CAAC,EAAE,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAC;AAC/C,IAAA,CAAC,OAAO,CAAC,EAAE,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAC;AAC/C,IAAA,CAAC,OAAO,CAAC,EAAE,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAC;AAC/C,IAAA,CAAC,OAAO,CAAC,EAAE,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAC;AAC/C,IAAA,CAAC,OAAO,CAAC,GAAG,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC;AAClD,IAAA,CAAC,OAAO,CAAC,GAAG,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC;AAClD,IAAA,CAAC,OAAO,CAAC,GAAG,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC;AAClD,IAAA,CAAC,OAAO,CAAC,IAAI,GAAG,EAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAC;CACtD,CAAC;AAEF;MACa,eAAe,CAAA;IAC1B,WAAqB,CAAA,OAAgB,EAAU,UAA+B,EAAA;QAAzD,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAAU,IAAU,CAAA,UAAA,GAAV,UAAU,CAAqB;KAAI;;AAGlF,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,WAAW,CAAC,IAAI,CAAC,OAAsB,CAAC,CAAC;AACzC,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;KACzB;;AAGD,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC9B,YAAA,MAAM,KAAK,CAAC,wCAAwC,CAAC,CAAC;AACvD,SAAA;AACD,QAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3B,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;KACzB;AAiBD,IAAA,MAAM,KAAK,CACT,GAAG,IAAmF,EAAA;QAEtF,MAAM,UAAU,GAAI,IAAI,CAAC,OAAyC,CAAC,QAAQ,KAAK,IAAI,CAAC;;;;;;;AAQrF,QAAA,MAAM,IAAI,CAAC,2BAA2B,CAAC,UAAU,GAAG,IAAI,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC7E,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;KACzB;AASD,IAAA,MAAM,UAAU,CACd,GAAG,IAAmF,EAAA;QAEtF,MAAM,IAAI,CAAC,2BAA2B,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/D,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;KACzB;;AAGD,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,YAAY,CAAC,IAAI,CAAC,OAAsB,CAAC,CAAC;AAC1C,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;KACzB;;IAGD,MAAM,WAAW,CAAC,QAAgB,EAAA;AAChC,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;;;QAGxB,OAAO,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;KAClE;;AAGD,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,IAAI,CAAC,gCAAgC,CAAC,cAAc,CAAC,CAAC;AACtD,QAAA,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAC9C,QAAA,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAC/C,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;KACzB;;AAGD,IAAA,MAAM,SAAS,GAAA;AACb,QAAA,IAAI,CAAC,gCAAgC,CAAC,cAAc,CAAC,CAAC;AACtD,QAAA,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC7C,QAAA,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAC/C,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;KACzB;AAaD,IAAA,MAAM,QAAQ,CAAC,GAAG,gBAAuB,EAAA;AACvC,QAAA,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,GAAG,MAAM,CAAC,CAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3F,aAAa,CAAC,IAAI,CAAC,OAAsB,EAAE,GAAG,IAAI,CAAC,CAAC;AACpD,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;KACzB;AAED;;;AAGG;IACH,MAAM,IAAI,CAAC,OAAqB,EAAA;AAC9B,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,OAAO,EAAE,OAAO,EAAE;YACpB,OAAO,4BAA4B,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACpE,SAAA;AACD,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;KAChD;AAED;;;AAGG;IACH,MAAM,uBAAuB,CAAC,KAAa,EAAA;QACzC,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;AAEvE,QAAA,IAAI,mBAAmB,KAAK,EAAE,IAAI,mBAAmB,KAAK,MAAM,EAAE;AAChE,YAAA,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;AAC/F,SAAA;AAED,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;KAClC;;IAGD,MAAM,YAAY,CAAC,IAAY,EAAA;AAC7B,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KACxC;;IAGD,MAAM,QAAQ,CAAC,IAAY,EAAA;AACzB,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC9C;;AAGD,IAAA,MAAM,aAAa,GAAA;AACjB,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;KAC7C;;IAGD,MAAM,WAAW,CAAU,IAAY,EAAA;AACrC,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB,QAAA,OAAQ,IAAI,CAAC,OAAe,CAAC,IAAI,CAAC,CAAC;KACpC;;IAGD,MAAM,aAAa,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAe,CAAC,KAAK,GAAG,KAAK,CAAC;AACpC,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;KACzB;;AAGD,IAAA,MAAM,aAAa,CAAC,GAAG,aAAuB,EAAA;QAC5C,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;AAEvC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;;;YAIpC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEjC,YAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE;gBACnC,UAAU,GAAG,IAAI,CAAC;AAClB,gBAAA,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,aAAA;AACF,SAAA;AAED,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACzB,SAAA;KACF;;IAGD,MAAM,eAAe,CAAC,QAAgB,EAAA;AACpC,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB,QAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAgB,CAAC;QAClD,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,mBAAmB,CAAC,EAAE,IAAI,CAChF,IAAI,CAAC,OAAO,EACZ,QAAQ,CACT,CAAC;KACH;;AAGD,IAAA,MAAM,SAAS,GAAA;AACb,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB,QAAA,OAAO,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,CAAC;KAChD;AAED;;;AAGG;AACH,IAAA,MAAM,aAAa,CAAC,IAAY,EAAE,IAAgC,EAAA;AAChE,QAAA,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;AAEpC,QAAA,IAAI,IAAI,EAAE;;AAER,YAAA,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5B,SAAA;AAED,QAAA,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACnC,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;KACzB;AAED;;;;;;AAMG;IACK,gCAAgC,CACtC,IAAY,EACZ,OAAgB,EAChB,OAAgB,EAChB,OAAgB,EAChB,OAAgB,EAChB,MAAe,EAAA;;;;;AAMf,QAAA,IAAI,OAAO,YAAY,KAAK,WAAW,IAAI,YAAY,EAAE;AACvD,YAAA,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;AAC3E,gBAAA,SAAS,EAAE,IAAI;gBACf,MAAM;AACP,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;;AAGG;AACK,IAAA,MAAM,2BAA2B,CACvC,gBAA+B,EAC/B,IAAmF,EACnF,MAAe,EAAA;QAEf,IAAI,OAAO,GAAuB,SAAS,CAAC;QAC5C,IAAI,OAAO,GAAuB,SAAS,CAAC;QAC5C,IAAI,OAAO,GAAuB,SAAS,CAAC;QAC5C,IAAI,OAAO,GAAuB,SAAS,CAAC;QAC5C,IAAI,SAAS,GAAiB,EAAE,CAAC;AAEjC,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC5D,YAAA,SAAS,GAAG,IAAI,CAAC,GAAG,EAAkB,CAAC;AACxC,SAAA;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,MAAM,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAC,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9D,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAI,IAAI,CAAC,CAAC,CAAY,CAAC;YACjE,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAI,IAAI,CAAC,CAAC,CAAY,CAAC;;;YAIlE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;YACrC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC;AACrC,SAAA;AAED,QAAA,IAAI,CAAC,gCAAgC,CACnC,aAAa,EACb,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,MAAM,CACP,CAAC;AACF,QAAA,kBAAkB,CAChB,IAAI,CAAC,OAAO,EACZ,WAAW,EACX,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,MAAM,EACN,SAAS,CACV,CAAC;AACF,QAAA,IAAI,CAAC,gCAAgC,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC/F,QAAA,kBAAkB,CAChB,IAAI,CAAC,OAAO,EACZ,SAAS,EACT,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,MAAM,EACN,SAAS,CACV,CAAC;;QAGF,IAAI,gBAAgB,KAAK,IAAI,EAAE;AAC7B,YAAA,kBAAkB,CAChB,IAAI,CAAC,OAAO,EACZ,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,MAAM,EACN,SAAS,CACV,CAAC;AACH,SAAA;;;;;AAMD,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;KACzB;AACF;;AC5YD;;;;;;AAMG;AAuBH;AACA,MAAM,yBAAyB,GAAqC;AAClE,IAAA,OAAO,EAAE,CAAC,QAAgB,EAAE,IAAa,KAAK,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;CAC9E,CAAC;AAEF;AACA,IAAI,0BAA0B,GAAG,KAAK,CAAC;AAEvC;;AAEG;AACH,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;AAE5D;;;AAGG;AACH,SAAS,uCAAuC,CAAC,OAAkC,EAAA;AACjF,IAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;QACxB,+BAA+B,CAAC,CAAC,EAAC,UAAU,EAAE,kBAAkB,EAAC,KAAI;YACnE,0BAA0B,GAAG,UAAU,CAAC;AACxC,YAAA,IAAI,kBAAkB,EAAE;gBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACrF,aAAA;AACH,SAAC,CAAC,CAAC;AACJ,KAAA;AACD,IAAA,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;AAGG;AACH,SAAS,yCAAyC,CAAC,OAAkC,EAAA;AACnF,IAAA,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AACxB,QAAA,qCAAqC,EAAE,CAAC;AACzC,KAAA;AACH,CAAC;AAED;AACA,SAAS,iBAAiB,GAAA;IACxB,OAAO,IAAK,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC;AAC5D,CAAC;AAED;;;AAGG;AACH,eAAe,aAAa,CAAC,OAAkC,EAAA;IAC7D,OAAO,CAAC,aAAa,EAAE,CAAC;IACxB,IAAI,iBAAiB,EAAE,EAAE;AACvB,QAAA,KAAK,EAAE,CAAC;AACT,KAAA;AAAM,SAAA;AACL,QAAA,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;AAC5B,KAAA;AACH,CAAC;AAED;AACM,MAAO,yBAA0B,SAAQ,kBAA2B,CAAA;AAaxE,IAAA,WAAA,CACE,cAAuB,EACf,QAAmC,EAC3C,OAA0C,EAAA;QAE1C,KAAK,CAAC,cAAc,CAAC,CAAC;QAHd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA2B;;QAbrC,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAiBzB,IAAI,CAAC,QAAQ,GAAG,EAAC,GAAG,yBAAyB,EAAE,GAAG,OAAO,EAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,wBAAwB,CAAC,KAAK,EAAE,CAAC;QACnD,IAAI,CAAC,kBAAkB,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QACtD,uCAAuC,CAAC,QAAQ,CAAC,CAAC;AAClD,QAAA,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;YACnC,yCAAyC,CAAC,QAAQ,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB,SAAC,CAAC,CAAC;KACJ;;AAGD,IAAA,OAAO,MAAM,CACX,OAAkC,EAClC,OAA0C,EAAA;QAE1C,OAAO,IAAI,yBAAyB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KAC/E;AAED;;;AAGG;AACH,IAAA,OAAO,kBAAkB,CACvB,OAAkC,EAClC,OAA0C,EAAA;QAE1C,OAAO,IAAI,yBAAyB,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KACvE;;IAGD,OAAO,gBAAgB,CAAC,EAAe,EAAA;QACrC,IAAI,EAAE,YAAY,eAAe,EAAE;YACjC,OAAO,EAAE,CAAC,OAAO,CAAC;AACnB,SAAA;AACD,QAAA,MAAM,KAAK,CAAC,mEAAmE,CAAC,CAAC;KAClF;AAED;;;;;AAKG;IACH,aAAa,iBAAiB,CAC5B,OAAkC,EAClC,WAA2C,EAC3C,OAA0C,EAAA;AAE1C,QAAA,MAAM,WAAW,GAAG,IAAI,yBAAyB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3F,QAAA,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;QACnC,OAAO,WAAW,CAAC,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;KAC/E;AAED;;;;AAIG;AACH,IAAA,MAAM,cAAc,GAAA;QAClB,IAAI,CAAC,0BAA0B,EAAE;YAC/B,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,MAAM,KAAK,CAAC,yEAAyE,CAAC,CAAC;AACxF,aAAA;AAED,YAAA,MAAM,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpC,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,MAAM,0BAA0B,GAAA;;;;;;;QAO9B,IAAI,iBAAiB,EAAE,EAAE;AACvB,YAAA,KAAK,EAAE,CAAC;AACT,SAAA;;;;;QAMD,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;KAC3E;;IAGS,eAAe,GAAA;QACvB,OAAO,QAAQ,CAAC,IAAI,CAAC;KACtB;;AAGS,IAAA,iBAAiB,CAAC,OAAgB,EAAA;QAC1C,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;KAC9D;;AAGS,IAAA,iBAAiB,CAAC,OAAgB,EAAA;AAC1C,QAAA,OAAO,IAAI,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC7E;AAED;;AAEG;IACO,MAAM,iBAAiB,CAAC,QAAgB,EAAA;AAChD,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5B,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;KACzE;AACF;;AC3ND;;;;;;AAMG;;ACNH;;;;;;AAMG;;;;"}
-------------------- SECTION 184 --------------------
{"version":3,"file":"listbox.mjs","sources":["../../../../../../src/cdk/listbox/listbox.ts","../../../../../../src/cdk/listbox/listbox-module.ts","../../../../../../src/cdk/listbox/public-api.ts","../../../../../../src/cdk/listbox/index.ts","../../../../../../src/cdk/listbox/listbox_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   AfterContentInit,   ChangeDetectorRef,   ContentChildren,   Directive,   ElementRef,   forwardRef,   inject,   Input,   OnDestroy,   Output,   QueryList, } from '@angular/core'; import {ActiveDescendantKeyManager, Highlightable, ListKeyManagerOption} from '@angular/cdk/a11y'; import {   A,   DOWN_ARROW,   END,   ENTER,   hasModifierKey,   HOME,   LEFT_ARROW,   RIGHT_ARROW,   SPACE,   UP_ARROW, } from '@angular/cdk/keycodes'; import {BooleanInput, coerceArray, coerceBooleanProperty} from '@angular/cdk/coercion'; import {SelectionModel} from '@angular/cdk/collections'; import {defer, merge, Observable, Subject} from 'rxjs'; import {filter, map, startWith, switchMap, takeUntil} from 'rxjs/operators'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms'; import {Directionality} from '@angular/cdk/bidi';  /** The next id to use for creating unique DOM IDs. */ let nextId = 0;  /**  * An implementation of SelectionModel that internally always represents the selection as a  * multi-selection. This is necessary so that we can recover the full selection if the user  * switches the listbox from single-selection to multi-selection after initialization.  *  * This selection model may report multiple selected values, even if it is in single-selection  * mode. It is up to the user (CdkListbox) to check for invalid selections.  */ class ListboxSelectionModel<T> extends SelectionModel<T> {   constructor(     public multiple = false,     initiallySelectedValues?: T[],     emitChanges = true,     compareWith?: (o1: T, o2: T) => boolean,   ) {     super(true, initiallySelectedValues, emitChanges, compareWith);   }    override isMultipleSelection(): boolean {     return this.multiple;   }    override select(...values: T[]) {     // The super class is always in multi-selection mode, so we need to override the behavior if     // this selection model actually belongs to a single-selection listbox.     if (this.multiple) {       return super.select(...values);     } else {       return super.setSelection(...values);     }   } }  /** A selectable option in a listbox. */ @Directive({   selector: '[cdkOption]',   standalone: true,   exportAs: 'cdkOption',   host: {     'role': 'option',     'class': 'cdk-option',     '[id]': 'id',     '[attr.aria-selected]': 'isSelected()',     '[attr.tabindex]': '_getTabIndex()',     '[attr.aria-disabled]': 'disabled',     '[class.cdk-option-active]': 'isActive()',     '(click)': '_clicked.next($event)',     '(focus)': '_handleFocus()',   }, }) export class CdkOption<T = unknown> implements ListKeyManagerOption, Highlightable, OnDestroy {   /** The id of the option's host element. */   @Input()   get id() {     return this._id || this._generatedId;   }   set id(value) {     this._id = value;   }   private _id: string;   private _generatedId = `cdk-option-${nextId++}`;    /** The value of this option. */   @Input('cdkOption') value: T;    /**    * The text used to locate this item during listbox typeahead. If not specified,    * the `textContent` of the item will be used.    */   @Input('cdkOptionTypeaheadLabel') typeaheadLabel: string;    /** Whether this option is disabled. */   @Input('cdkOptionDisabled')   get disabled(): boolean {     return this.listbox.disabled || this._disabled;   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);   }   private _disabled: boolean = false;    /** The tabindex of the option when it is enabled. */   @Input('tabindex')   get enabledTabIndex() {     return this._enabledTabIndex === undefined       ? this.listbox.enabledTabIndex       : this._enabledTabIndex;   }   set enabledTabIndex(value) {     this._enabledTabIndex = value;   }   private _enabledTabIndex?: number | null;    /** The option's host element */   readonly element: HTMLElement = inject(ElementRef).nativeElement;    /** The parent listbox this option belongs to. */   protected readonly listbox: CdkListbox<T> = inject(CdkListbox);    /** Emits when the option is destroyed. */   protected destroyed = new Subject<void>();    /** Emits when the option is clicked. */   readonly _clicked = new Subject<MouseEvent>();    ngOnDestroy() {     this.destroyed.next();     this.destroyed.complete();   }    /** Whether this option is selected. */   isSelected() {     return this.listbox.isSelected(this);   }    /** Whether this option is active. */   isActive() {     return this.listbox.isActive(this);   }    /** Toggle the selected state of this option. */   toggle() {     this.listbox.toggle(this);   }    /** Select this option if it is not selected. */   select() {     this.listbox.select(this);   }    /** Deselect this option if it is selected. */   deselect() {     this.listbox.deselect(this);   }    /** Focus this option. */   focus() {     this.element.focus();   }    /** Get the label for this element which is required by the FocusableOption interface. */   getLabel() {     return (this.typeaheadLabel ?? this.element.textContent?.trim()) || '';   }    /**    * No-op implemented as a part of `Highlightable`.    * @docs-private    */   setActiveStyles() {}    /**    * No-op implemented as a part of `Highlightable`.    * @docs-private    */   setInactiveStyles() {}    /** Handle focus events on the option. */   protected _handleFocus() {     // Options can wind up getting focused in active descendant mode if the user clicks on them.     // In this case, we push focus back to the parent listbox to prevent an extra tab stop when     // the user performs a shift+tab.     if (this.listbox.useActiveDescendant) {       this.listbox._setActiveOption(this);       this.listbox.focus();     }   }    /** Get the tabindex for this option. */   protected _getTabIndex() {     if (this.listbox.useActiveDescendant || this.disabled) {       return -1;     }     return this.isActive() ? this.enabledTabIndex : -1;   } }  @Directive({   selector: '[cdkListbox]',   standalone: true,   exportAs: 'cdkListbox',   host: {     'role': 'listbox',     'class': 'cdk-listbox',     '[id]': 'id',     '[attr.tabindex]': '_getTabIndex()',     '[attr.aria-disabled]': 'disabled',     '[attr.aria-multiselectable]': 'multiple',     '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',     '[attr.aria-orientation]': 'orientation',     '(focus)': '_handleFocus()',     '(keydown)': '_handleKeydown($event)',     '(focusout)': '_handleFocusOut($event)',     '(focusin)': '_handleFocusIn()',   },   providers: [     {       provide: NG_VALUE_ACCESSOR,       useExisting: forwardRef(() => CdkListbox),       multi: true,     },   ], }) export class CdkListbox<T = unknown> implements AfterContentInit, OnDestroy, ControlValueAccessor {   /** The id of the option's host element. */   @Input()   get id() {     return this._id || this._generatedId;   }   set id(value) {     this._id = value;   }   private _id: string;   private _generatedId = `cdk-listbox-${nextId++}`;    /** The tabindex to use when the listbox is enabled. */   @Input('tabindex')   get enabledTabIndex() {     return this._enabledTabIndex === undefined ? 0 : this._enabledTabIndex;   }   set enabledTabIndex(value) {     this._enabledTabIndex = value;   }   private _enabledTabIndex?: number | null;    /** The value selected in the listbox, represented as an array of option values. */   @Input('cdkListboxValue')   get value(): readonly T[] {     return this._invalid ? [] : this.selectionModel.selected;   }   set value(value: readonly T[]) {     this._setSelection(value);   }    /**    * Whether the listbox allows multiple options to be selected. If the value switches from `true`    * to `false`, and more than one option is selected, all options are deselected.    */   @Input('cdkListboxMultiple')   get multiple(): boolean {     return this.selectionModel.multiple;   }   set multiple(value: BooleanInput) {     this.selectionModel.multiple = coerceBooleanProperty(value);      if (this.options) {       this._updateInternalValue();     }   }    /** Whether the listbox is disabled. */   @Input('cdkListboxDisabled')   get disabled(): boolean {     return this._disabled;   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);   }   private _disabled: boolean = false;    /** Whether the listbox will use active descendant or will move focus onto the options. */   @Input('cdkListboxUseActiveDescendant')   get useActiveDescendant(): boolean {     return this._useActiveDescendant;   }   set useActiveDescendant(shouldUseActiveDescendant: BooleanInput) {     this._useActiveDescendant = coerceBooleanProperty(shouldUseActiveDescendant);   }   private _useActiveDescendant: boolean = false;    /** The orientation of the listbox. Only affects keyboard interaction, not visual layout. */   @Input('cdkListboxOrientation')   get orientation() {     return this._orientation;   }   set orientation(value: 'horizontal' | 'vertical') {     this._orientation = value === 'horizontal' ? 'horizontal' : 'vertical';     if (value === 'horizontal') {       this.listKeyManager?.withHorizontalOrientation(this._dir?.value || 'ltr');     } else {       this.listKeyManager?.withVerticalOrientation();     }   }   private _orientation: 'horizontal' | 'vertical' = 'vertical';    /** The function used to compare option values. */   @Input('cdkListboxCompareWith')   get compareWith(): undefined | ((o1: T, o2: T) => boolean) {     return this.selectionModel.compareWith;   }   set compareWith(fn: undefined | ((o1: T, o2: T) => boolean)) {     this.selectionModel.compareWith = fn;   }    /**    * Whether the keyboard navigation should wrap when the user presses arrow down on the last item    * or arrow up on the first item.    */   @Input('cdkListboxNavigationWrapDisabled')   get navigationWrapDisabled() {     return this._navigationWrapDisabled;   }   set navigationWrapDisabled(wrap: BooleanInput) {     this._navigationWrapDisabled = coerceBooleanProperty(wrap);     this.listKeyManager?.withWrap(!this._navigationWrapDisabled);   }   private _navigationWrapDisabled = false;    /** Whether keyboard navigation should skip over disabled items. */   @Input('cdkListboxNavigatesDisabledOptions')   get navigateDisabledOptions() {     return this._navigateDisabledOptions;   }   set navigateDisabledOptions(skip: BooleanInput) {     this._navigateDisabledOptions = coerceBooleanProperty(skip);     this.listKeyManager?.skipPredicate(       this._navigateDisabledOptions ? this._skipNonePredicate : this._skipDisabledPredicate,     );   }   private _navigateDisabledOptions = false;    /** Emits when the selected value(s) in the listbox change. */   @Output('cdkListboxValueChange') readonly valueChange = new Subject<ListboxValueChangeEvent<T>>();    /** The child options in this listbox. */   @ContentChildren(CdkOption, {descendants: true}) protected options: QueryList<CdkOption<T>>;    /** The selection model used by the listbox. */   protected selectionModel = new ListboxSelectionModel<T>();    /** The key manager that manages keyboard navigation for this listbox. */   protected listKeyManager: ActiveDescendantKeyManager<CdkOption<T>>;    /** Emits when the listbox is destroyed. */   protected readonly destroyed = new Subject<void>();    /** The host element of the listbox. */   protected readonly element: HTMLElement = inject(ElementRef).nativeElement;    /** The change detector for this listbox. */   protected readonly changeDetectorRef = inject(ChangeDetectorRef);    /** Whether the currently selected value in the selection model is invalid. */   private _invalid = false;    /** The last user-triggered option. */   private _lastTriggered: CdkOption<T> | null = null;    /** Callback called when the listbox has been touched */   private _onTouched = () => {};    /** Callback called when the listbox value changes */   private _onChange: (value: readonly T[]) => void = () => {};    /** Emits when an option has been clicked. */   private _optionClicked = defer(() =>     (this.options.changes as Observable<CdkOption<T>[]>).pipe(       startWith(this.options),       switchMap(options =>         merge(...options.map(option => option._clicked.pipe(map(event => ({option, event}))))),       ),     ),   );    /** The directionality of the page. */   private readonly _dir = inject(Directionality, {optional: true});    /** A predicate that skips disabled options. */   private readonly _skipDisabledPredicate = (option: CdkOption<T>) => option.disabled;    /** A predicate that does not skip any options. */   private readonly _skipNonePredicate = () => false;    /** Whether the listbox currently has focus. */   private _hasFocus = false;    ngAfterContentInit() {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       this._verifyNoOptionValueCollisions();       this._verifyOptionValues();     }      this._initKeyManager();      // Update the internal value whenever the options or the model value changes.     merge(this.selectionModel.changed, this.options.changes)       .pipe(startWith(null), takeUntil(this.destroyed))       .subscribe(() => this._updateInternalValue());      this._optionClicked       .pipe(         filter(({option}) => !option.disabled),         takeUntil(this.destroyed),       )       .subscribe(({option, event}) => this._handleOptionClicked(option, event));   }    ngOnDestroy() {     this.listKeyManager?.destroy();     this.destroyed.next();     this.destroyed.complete();   }    /**    * Toggle the selected state of the given option.    * @param option The option to toggle    */   toggle(option: CdkOption<T>) {     this.toggleValue(option.value);   }    /**    * Toggle the selected state of the given value.    * @param value The value to toggle    */   toggleValue(value: T) {     if (this._invalid) {       this.selectionModel.clear(false);     }     this.selectionModel.toggle(value);   }    /**    * Select the given option.    * @param option The option to select    */   select(option: CdkOption<T>) {     this.selectValue(option.value);   }    /**    * Select the given value.    * @param value The value to select    */   selectValue(value: T) {     if (this._invalid) {       this.selectionModel.clear(false);     }     this.selectionModel.select(value);   }    /**    * Deselect the given option.    * @param option The option to deselect    */   deselect(option: CdkOption<T>) {     this.deselectValue(option.value);   }    /**    * Deselect the given value.    * @param value The value to deselect    */   deselectValue(value: T) {     if (this._invalid) {       this.selectionModel.clear(false);     }     this.selectionModel.deselect(value);   }    /**    * Set the selected state of all options.    * @param isSelected The new selected state to set    */   setAllSelected(isSelected: boolean) {     if (!isSelected) {       this.selectionModel.clear();     } else {       if (this._invalid) {         this.selectionModel.clear(false);       }       this.selectionModel.select(...this.options.map(option => option.value));     }   }    /**    * Get whether the given option is selected.    * @param option The option to get the selected state of    */   isSelected(option: CdkOption<T>) {     return this.isValueSelected(option.value);   }    /**    * Get whether the given option is active.    * @param option The option to get the active state of    */   isActive(option: CdkOption<T>): boolean {     return !!(this.listKeyManager?.activeItem === option);   }    /**    * Get whether the given value is selected.    * @param value The value to get the selected state of    */   isValueSelected(value: T) {     if (this._invalid) {       return false;     }     return this.selectionModel.isSelected(value);   }    /**    * Registers a callback to be invoked when the listbox's value changes from user input.    * @param fn The callback to register    * @docs-private    */   registerOnChange(fn: (value: readonly T[]) => void): void {     this._onChange = fn;   }    /**    * Registers a callback to be invoked when the listbox is blurred by the user.    * @param fn The callback to register    * @docs-private    */   registerOnTouched(fn: () => {}): void {     this._onTouched = fn;   }    /**    * Sets the listbox's value.    * @param value The new value of the listbox    * @docs-private    */   writeValue(value: readonly T[]): void {     this._setSelection(value);     this._verifyOptionValues();   }    /**    * Sets the disabled state of the listbox.    * @param isDisabled The new disabled state    * @docs-private    */   setDisabledState(isDisabled: boolean): void {     this.disabled = isDisabled;   }    /** Focus the listbox's host element. */   focus() {     this.element.focus();   }    /**    * Triggers the given option in response to user interaction.    * - In single selection mode: selects the option and deselects any other selected option.    * - In multi selection mode: toggles the selected state of the option.    * @param option The option to trigger    */   protected triggerOption(option: CdkOption<T> | null) {     if (option && !option.disabled) {       this._lastTriggered = option;       const changed = this.multiple         ? this.selectionModel.toggle(option.value)         : this.selectionModel.select(option.value);       if (changed) {         this._onChange(this.value);         this.valueChange.next({           value: this.value,           listbox: this,           option: option,         });       }     }   }    /**    * Trigger the given range of options in response to user interaction.    * Should only be called in multi-selection mode.    * @param trigger The option that was triggered    * @param from The start index of the options to toggle    * @param to The end index of the options to toggle    * @param on Whether to toggle the option range on    */   protected triggerRange(trigger: CdkOption<T> | null, from: number, to: number, on: boolean) {     if (this.disabled || (trigger && trigger.disabled)) {       return;     }     this._lastTriggered = trigger;     const isEqual = this.compareWith ?? Object.is;     const updateValues = [...this.options]       .slice(Math.max(0, Math.min(from, to)), Math.min(this.options.length, Math.max(from, to) + 1))       .filter(option => !option.disabled)       .map(option => option.value);     const selected = [...this.value];     for (const updateValue of updateValues) {       const selectedIndex = selected.findIndex(selectedValue =>         isEqual(selectedValue, updateValue),       );       if (on && selectedIndex === -1) {         selected.push(updateValue);       } else if (!on && selectedIndex !== -1) {         selected.splice(selectedIndex, 1);       }     }     let changed = this.selectionModel.setSelection(...selected);     if (changed) {       this._onChange(this.value);       this.valueChange.next({         value: this.value,         listbox: this,         option: trigger,       });     }   }    /**    * Sets the given option as active.    * @param option The option to make active    */   _setActiveOption(option: CdkOption<T>) {     this.listKeyManager.setActiveItem(option);   }    /** Called when the listbox receives focus. */   protected _handleFocus() {     if (!this.useActiveDescendant) {       if (this.selectionModel.selected.length > 0) {         this._setNextFocusToSelectedOption();       } else {         this.listKeyManager.setNextItemActive();       }        this._focusActiveOption();     }   }    /** Called when the user presses keydown on the listbox. */   protected _handleKeydown(event: KeyboardEvent) {     if (this._disabled) {       return;     }      const {keyCode} = event;     const previousActiveIndex = this.listKeyManager.activeItemIndex;     const ctrlKeys = ['ctrlKey', 'metaKey'] as const;      if (this.multiple && keyCode === A && hasModifierKey(event, ...ctrlKeys)) {       // Toggle all options off if they're all selected, otherwise toggle them all on.       this.triggerRange(         null,         0,         this.options.length - 1,         this.options.length !== this.value.length,       );       event.preventDefault();       return;     }      if (       this.multiple &&       (keyCode === SPACE || keyCode === ENTER) &&       hasModifierKey(event, 'shiftKey')     ) {       if (this.listKeyManager.activeItem && this.listKeyManager.activeItemIndex != null) {         this.triggerRange(           this.listKeyManager.activeItem,           this._getLastTriggeredIndex() ?? this.listKeyManager.activeItemIndex,           this.listKeyManager.activeItemIndex,           !this.listKeyManager.activeItem.isSelected(),         );       }       event.preventDefault();       return;     }      if (       this.multiple &&       keyCode === HOME &&       hasModifierKey(event, ...ctrlKeys) &&       hasModifierKey(event, 'shiftKey')     ) {       const trigger = this.listKeyManager.activeItem;       if (trigger) {         const from = this.listKeyManager.activeItemIndex!;         this.listKeyManager.setFirstItemActive();         this.triggerRange(           trigger,           from,           this.listKeyManager.activeItemIndex!,           !trigger.isSelected(),         );       }       event.preventDefault();       return;     }      if (       this.multiple &&       keyCode === END &&       hasModifierKey(event, ...ctrlKeys) &&       hasModifierKey(event, 'shiftKey')     ) {       const trigger = this.listKeyManager.activeItem;       if (trigger) {         const from = this.listKeyManager.activeItemIndex!;         this.listKeyManager.setLastItemActive();         this.triggerRange(           trigger,           from,           this.listKeyManager.activeItemIndex!,           !trigger.isSelected(),         );       }       event.preventDefault();       return;     }      if (keyCode === SPACE || keyCode === ENTER) {       this.triggerOption(this.listKeyManager.activeItem);       event.preventDefault();       return;     }      const isNavKey =       keyCode === UP_ARROW ||       keyCode === DOWN_ARROW ||       keyCode === LEFT_ARROW ||       keyCode === RIGHT_ARROW ||       keyCode === HOME ||       keyCode === END;     this.listKeyManager.onKeydown(event);     // Will select an option if shift was pressed while navigating to the option     if (isNavKey && event.shiftKey && previousActiveIndex !== this.listKeyManager.activeItemIndex) {       this.triggerOption(this.listKeyManager.activeItem);     }   }    /** Called when a focus moves into the listbox. */   protected _handleFocusIn() {     // Note that we use a `focusin` handler for this instead of the existing `focus` handler,     // because focus won't land on the listbox if `useActiveDescendant` is enabled.     this._hasFocus = true;   }    /**    * Called when the focus leaves an element in the listbox.    * @param event The focusout event    */   protected _handleFocusOut(event: FocusEvent) {     const otherElement = event.relatedTarget as Element;     if (this.element !== otherElement && !this.element.contains(otherElement)) {       this._onTouched();       this._hasFocus = false;       this._setNextFocusToSelectedOption();     }   }    /** Get the id of the active option if active descendant is being used. */   protected _getAriaActiveDescendant(): string | null | undefined {     return this._useActiveDescendant ? this.listKeyManager?.activeItem?.id : null;   }    /** Get the tabindex for the listbox. */   protected _getTabIndex() {     if (this.disabled) {       return -1;     }     return this.useActiveDescendant || !this.listKeyManager.activeItem ? this.enabledTabIndex : -1;   }    /** Initialize the key manager. */   private _initKeyManager() {     this.listKeyManager = new ActiveDescendantKeyManager(this.options)       .withWrap(!this._navigationWrapDisabled)       .withTypeAhead()       .withHomeAndEnd()       .withAllowedModifierKeys(['shiftKey'])       .skipPredicate(         this._navigateDisabledOptions ? this._skipNonePredicate : this._skipDisabledPredicate,       );      if (this.orientation === 'vertical') {       this.listKeyManager.withVerticalOrientation();     } else {       this.listKeyManager.withHorizontalOrientation(this._dir?.value || 'ltr');     }      if (this.selectionModel.selected.length) {       Promise.resolve().then(() => this._setNextFocusToSelectedOption());     }      this.listKeyManager.change.subscribe(() => this._focusActiveOption());   }    /** Focus the active option. */   private _focusActiveOption() {     if (!this.useActiveDescendant) {       this.listKeyManager.activeItem?.focus();     }     this.changeDetectorRef.markForCheck();   }    /**    * Set the selected values.    * @param value The list of new selected values.    */   private _setSelection(value: readonly T[]) {     if (this._invalid) {       this.selectionModel.clear(false);     }     this.selectionModel.setSelection(...this._coerceValue(value));      if (!this._hasFocus) {       this._setNextFocusToSelectedOption();     }   }    /** Sets the first selected option as first in the keyboard focus order. */   private _setNextFocusToSelectedOption() {     // Null check the options since they only get defined after `ngAfterContentInit`.     const selected = this.options?.find(option => option.isSelected());      if (selected) {       this.listKeyManager.updateActiveItem(selected);     }   }    /** Update the internal value of the listbox based on the selection model. */   private _updateInternalValue() {     const indexCache = new Map<T, number>();     this.selectionModel.sort((a: T, b: T) => {       const aIndex = this._getIndexForValue(indexCache, a);       const bIndex = this._getIndexForValue(indexCache, b);       return aIndex - bIndex;     });     const selected = this.selectionModel.selected;     this._invalid =       (!this.multiple && selected.length > 1) || !!this._getInvalidOptionValues(selected).length;     this.changeDetectorRef.markForCheck();   }    /**    * Gets the index of the given value in the given list of options.    * @param cache The cache of indices found so far    * @param value The value to find    * @return The index of the value in the options list    */   private _getIndexForValue(cache: Map<T, number>, value: T) {     const isEqual = this.compareWith || Object.is;     if (!cache.has(value)) {       let index = -1;       for (let i = 0; i < this.options.length; i++) {         if (isEqual(value, this.options.get(i)!.value)) {           index = i;           break;         }       }       cache.set(value, index);     }     return cache.get(value)!;   }    /**    * Handle the user clicking an option.    * @param option The option that was clicked.    */   private _handleOptionClicked(option: CdkOption<T>, event: MouseEvent) {     event.preventDefault();     this.listKeyManager.setActiveItem(option);     if (event.shiftKey && this.multiple) {       this.triggerRange(         option,         this._getLastTriggeredIndex() ?? this.listKeyManager.activeItemIndex!,         this.listKeyManager.activeItemIndex!,         !option.isSelected(),       );     } else {       this.triggerOption(option);     }   }    /** Verifies that no two options represent the same value under the compareWith function. */   private _verifyNoOptionValueCollisions() {     this.options.changes.pipe(startWith(this.options), takeUntil(this.destroyed)).subscribe(() => {       const isEqual = this.compareWith ?? Object.is;       for (let i = 0; i < this.options.length; i++) {         const option = this.options.get(i)!;         let duplicate: CdkOption<T> | null = null;         for (let j = i + 1; j < this.options.length; j++) {           const other = this.options.get(j)!;           if (isEqual(option.value, other.value)) {             duplicate = other;             break;           }         }         if (duplicate) {           // TODO(mmalerba): Link to docs about this.           if (this.compareWith) {             console.warn(               `Found multiple CdkOption representing the same value under the given compareWith function`,               {                 option1: option.element,                 option2: duplicate.element,                 compareWith: this.compareWith,               },             );           } else {             console.warn(`Found multiple CdkOption with the same value`, {               option1: option.element,               option2: duplicate.element,             });           }           return;         }       }     });   }    /** Verifies that the option values are valid. */   private _verifyOptionValues() {     if (this.options && (typeof ngDevMode === 'undefined' || ngDevMode)) {       const selected = this.selectionModel.selected;       const invalidValues = this._getInvalidOptionValues(selected);        if (!this.multiple && selected.length > 1) {         throw Error('Listbox cannot have more than one selected value in multi-selection mode.');       }        if (invalidValues.length) {         throw Error('Listbox has selected values that do not match any of its options.');       }     }   }    /**    * Coerces a value into an array representing a listbox selection.    * @param value The value to coerce    * @return An array    */   private _coerceValue(value: readonly T[]) {     return value == null ? [] : coerceArray(value);   }    /**    * Get the sublist of values that do not represent valid option values in this listbox.    * @param values The list of values    * @return The sublist of values that are not valid option values    */   private _getInvalidOptionValues(values: readonly T[]) {     const isEqual = this.compareWith || Object.is;     const validValues = (this.options || []).map(option => option.value);     return values.filter(value => !validValues.some(validValue => isEqual(value, validValue)));   }    /** Get the index of the last triggered option. */   private _getLastTriggeredIndex() {     const index = this.options.toArray().indexOf(this._lastTriggered!);     return index === -1 ? null : index;   } }  /** Change event that is fired whenever the value of the listbox changes. */ export interface ListboxValueChangeEvent<T> {   /** The new value of the listbox. */   readonly value: readonly T[];    /** Reference to the listbox that emitted the event. */   readonly listbox: CdkListbox<T>;    /** Reference to the option that was triggered. */   readonly option: CdkOption<T> | null; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {CdkListbox, CdkOption} from './listbox';  const EXPORTED_DECLARATIONS = [CdkListbox, CdkOption];  @NgModule({   imports: [...EXPORTED_DECLARATIONS],   exports: [...EXPORTED_DECLARATIONS], }) export class CdkListboxModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './listbox'; export * from './listbox-module'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":";;;;;;;;;;;AAAA;;;;;;AAMG;AAmCH;AACA,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf;;;;;;;AAOG;AACH,MAAM,qBAAyB,SAAQ,cAAiB,CAAA;IACtD,WACS,CAAA,QAAA,GAAW,KAAK,EACvB,uBAA6B,EAC7B,WAAW,GAAG,IAAI,EAClB,WAAuC,EAAA;QAEvC,KAAK,CAAC,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QALxD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;KAMxB;IAEQ,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAEQ,MAAM,CAAC,GAAG,MAAW,EAAA;;;QAG5B,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAChC,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC;AACtC,SAAA;KACF;AACF,CAAA;AAED;MAiBa,SAAS,CAAA;AAhBtB,IAAA,WAAA,GAAA;AA0BU,QAAA,IAAA,CAAA,YAAY,GAAG,CAAA,WAAA,EAAc,MAAM,EAAE,EAAE,CAAC;QAmBxC,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;;AAe1B,QAAA,IAAA,CAAA,OAAO,GAAgB,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC;;AAG9C,QAAA,IAAA,CAAA,OAAO,GAAkB,MAAM,CAAC,UAAU,CAAC,CAAC;;AAGrD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;;AAGjC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAc,CAAC;AAwE/C,KAAA;;AA3HC,IAAA,IACI,EAAE,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC;KACtC;IACD,IAAI,EAAE,CAAC,KAAK,EAAA;AACV,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;KAClB;;AAcD,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC;KAChD;IACD,IAAI,QAAQ,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC/C;;AAID,IAAA,IACI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,SAAS;AACxC,cAAE,IAAI,CAAC,OAAO,CAAC,eAAe;AAC9B,cAAE,IAAI,CAAC,gBAAgB,CAAC;KAC3B;IACD,IAAI,eAAe,CAAC,KAAK,EAAA;AACvB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KAC/B;IAeD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;;IAGD,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACtC;;IAGD,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACpC;;IAGD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC3B;;IAGD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC3B;;IAGD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC7B;;IAGD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtB;;IAGD,QAAQ,GAAA;AACN,QAAA,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;KACxE;AAED;;;AAGG;AACH,IAAA,eAAe,MAAK;AAEpB;;;AAGG;AACH,IAAA,iBAAiB,MAAK;;IAGZ,YAAY,GAAA;;;;AAIpB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;AACpC,YAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACtB,SAAA;KACF;;IAGS,YAAY,GAAA;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACrD,OAAO,CAAC,CAAC,CAAC;AACX,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;KACpD;;2GA5HU,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,WAAA,EAAA,OAAA,CAAA,EAAA,cAAA,EAAA,CAAA,yBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,CAAA,EAAA,eAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAhBrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,OAAO,EAAE,YAAY;AACrB,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,sBAAsB,EAAE,cAAc;AACtC,wBAAA,iBAAiB,EAAE,gBAAgB;AACnC,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,2BAA2B,EAAE,YAAY;AACzC,wBAAA,SAAS,EAAE,uBAAuB;AAClC,wBAAA,SAAS,EAAE,gBAAgB;AAC5B,qBAAA;AACF,iBAAA,CAAA;8BAIK,EAAE,EAAA,CAAA;sBADL,KAAK;gBAWc,KAAK,EAAA,CAAA;sBAAxB,KAAK;uBAAC,WAAW,CAAA;gBAMgB,cAAc,EAAA,CAAA;sBAA/C,KAAK;uBAAC,yBAAyB,CAAA;gBAI5B,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,mBAAmB,CAAA;gBAWtB,eAAe,EAAA,CAAA;sBADlB,KAAK;uBAAC,UAAU,CAAA;;MAyHN,UAAU,CAAA;AA1BvB,IAAA,WAAA,GAAA;AAoCU,QAAA,IAAA,CAAA,YAAY,GAAG,CAAA,YAAA,EAAe,MAAM,EAAE,EAAE,CAAC;QA6CzC,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAU3B,IAAoB,CAAA,oBAAA,GAAY,KAAK,CAAC;QAetC,IAAY,CAAA,YAAA,GAA8B,UAAU,CAAC;QAuBrD,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;QAahC,IAAwB,CAAA,wBAAA,GAAG,KAAK,CAAC;;AAGC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAA8B,CAAC;;AAMxF,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,qBAAqB,EAAK,CAAC;;AAMvC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;;AAGhC,QAAA,IAAA,CAAA,OAAO,GAAgB,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC;;AAGxD,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;;QAGzD,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;QAGjB,IAAc,CAAA,cAAA,GAAwB,IAAI,CAAC;;AAG3C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAK,GAAG,CAAC;;AAGtB,QAAA,IAAA,CAAA,SAAS,GAAkC,MAAK,GAAG,CAAC;;AAGpD,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAC,MAC5B,IAAI,CAAC,OAAO,CAAC,OAAsC,CAAC,IAAI,CACvD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EACvB,SAAS,CAAC,OAAO,IACf,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,EAAC,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvF,CACF,CACF,CAAC;;QAGe,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC,cAAc,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;;QAGhD,IAAsB,CAAA,sBAAA,GAAG,CAAC,MAAoB,KAAK,MAAM,CAAC,QAAQ,CAAC;;AAGnE,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,KAAK,CAAC;;QAG1C,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAikB3B,KAAA;;AA1uBC,IAAA,IACI,EAAE,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC;KACtC;IACD,IAAI,EAAE,CAAC,KAAK,EAAA;AACV,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;KAClB;;AAKD,IAAA,IACI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;KACxE;IACD,IAAI,eAAe,CAAC,KAAK,EAAA;AACvB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KAC/B;;AAID,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;KAC1D;IACD,IAAI,KAAK,CAAC,KAAmB,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC3B;AAED;;;AAGG;AACH,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;KACrC;IACD,IAAI,QAAQ,CAAC,KAAmB,EAAA;QAC9B,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAE5D,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC7B,SAAA;KACF;;AAGD,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC/C;;AAID,IAAA,IACI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC;KAClC;IACD,IAAI,mBAAmB,CAAC,yBAAuC,EAAA;AAC7D,QAAA,IAAI,CAAC,oBAAoB,GAAG,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;KAC9E;;AAID,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IACD,IAAI,WAAW,CAAC,KAAgC,EAAA;AAC9C,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,KAAK,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC;QACvE,IAAI,KAAK,KAAK,YAAY,EAAE;AAC1B,YAAA,IAAI,CAAC,cAAc,EAAE,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC;AAC3E,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,EAAE,uBAAuB,EAAE,CAAC;AAChD,SAAA;KACF;;AAID,IAAA,IACI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;KACxC;IACD,IAAI,WAAW,CAAC,EAA2C,EAAA;AACzD,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,EAAE,CAAC;KACtC;AAED;;;AAGG;AACH,IAAA,IACI,sBAAsB,GAAA;QACxB,OAAO,IAAI,CAAC,uBAAuB,CAAC;KACrC;IACD,IAAI,sBAAsB,CAAC,IAAkB,EAAA;AAC3C,QAAA,IAAI,CAAC,uBAAuB,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;KAC9D;;AAID,IAAA,IACI,uBAAuB,GAAA;QACzB,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACtC;IACD,IAAI,uBAAuB,CAAC,IAAkB,EAAA;AAC5C,QAAA,IAAI,CAAC,wBAAwB,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,EAAE,aAAa,CAChC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CACtF,CAAC;KACH;IA0DD,kBAAkB,GAAA;AAChB,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;YACjD,IAAI,CAAC,8BAA8B,EAAE,CAAC;YACtC,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC5B,SAAA;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;;AAGvB,QAAA,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AACrD,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAChD,SAAS,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAEhD,QAAA,IAAI,CAAC,cAAc;aAChB,IAAI,CACH,MAAM,CAAC,CAAC,EAAC,MAAM,EAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EACtC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,CAAC,CAAC,EAAC,MAAM,EAAE,KAAK,EAAC,KAAK,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;KAC7E;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;AAED;;;AAGG;AACH,IAAA,MAAM,CAAC,MAAoB,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAChC;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,KAAQ,EAAA;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClC,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACnC;AAED;;;AAGG;AACH,IAAA,MAAM,CAAC,MAAoB,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAChC;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,KAAQ,EAAA;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClC,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACnC;AAED;;;AAGG;AACH,IAAA,QAAQ,CAAC,MAAoB,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAClC;AAED;;;AAGG;AACH,IAAA,aAAa,CAAC,KAAQ,EAAA;QACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClC,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACrC;AAED;;;AAGG;AACH,IAAA,cAAc,CAAC,UAAmB,EAAA;QAChC,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAC7B,SAAA;AAAM,aAAA;YACL,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClC,aAAA;YACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,MAAoB,EAAA;QAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC3C;AAED;;;AAGG;AACH,IAAA,QAAQ,CAAC,MAAoB,EAAA;QAC3B,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,KAAK,MAAM,CAAC,CAAC;KACvD;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,KAAQ,EAAA;QACtB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KAC9C;AAED;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,EAAiC,EAAA;AAChD,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED;;;;AAIG;AACH,IAAA,iBAAiB,CAAC,EAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACtB;AAED;;;;AAIG;AACH,IAAA,UAAU,CAAC,KAAmB,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AAED;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC5B;;IAGD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtB;AAED;;;;;AAKG;AACO,IAAA,aAAa,CAAC,MAA2B,EAAA;AACjD,QAAA,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC9B,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;AAC7B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;kBACzB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;kBACxC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7C,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;oBACpB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,MAAM,EAAE,MAAM;AACf,iBAAA,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;KACF;AAED;;;;;;;AAOG;AACO,IAAA,YAAY,CAAC,OAA4B,EAAE,IAAY,EAAE,EAAU,EAAE,EAAW,EAAA;QACxF,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YAClD,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,EAAE,CAAC;AAC9C,QAAA,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;AACnC,aAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;aAC7F,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;aAClC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;AACtC,YAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,aAAa,IACpD,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CACpC,CAAC;AACF,YAAA,IAAI,EAAE,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;AAC9B,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5B,aAAA;AAAM,iBAAA,IAAI,CAAC,EAAE,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;AACtC,gBAAA,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AACnC,aAAA;AACF,SAAA;QACD,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC5D,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,MAAM,EAAE,OAAO;AAChB,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,MAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;KAC3C;;IAGS,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7B,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3C,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACtC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;AACzC,aAAA;YAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC3B,SAAA;KACF;;AAGS,IAAA,cAAc,CAAC,KAAoB,EAAA;QAC3C,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;AACR,SAAA;AAED,QAAA,MAAM,EAAC,OAAO,EAAC,GAAG,KAAK,CAAC;AACxB,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;AAChE,QAAA,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,SAAS,CAAU,CAAC;AAEjD,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,cAAc,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,EAAE;;YAExE,IAAI,CAAC,YAAY,CACf,IAAI,EACJ,CAAC,EACD,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EACvB,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAC1C,CAAC;YACF,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;AACR,SAAA;QAED,IACE,IAAI,CAAC,QAAQ;AACb,aAAC,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,CAAC;AACxC,YAAA,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,EACjC;AACA,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,IAAI,IAAI,EAAE;AACjF,gBAAA,IAAI,CAAC,YAAY,CACf,IAAI,CAAC,cAAc,CAAC,UAAU,EAC9B,IAAI,CAAC,sBAAsB,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,EACpE,IAAI,CAAC,cAAc,CAAC,eAAe,EACnC,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,EAAE,CAC7C,CAAC;AACH,aAAA;YACD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;AACR,SAAA;QAED,IACE,IAAI,CAAC,QAAQ;AACb,YAAA,OAAO,KAAK,IAAI;AAChB,YAAA,cAAc,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC;AAClC,YAAA,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,EACjC;AACA,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AAC/C,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,eAAgB,CAAC;AAClD,gBAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;AACzC,gBAAA,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,EACJ,IAAI,CAAC,cAAc,CAAC,eAAgB,EACpC,CAAC,OAAO,CAAC,UAAU,EAAE,CACtB,CAAC;AACH,aAAA;YACD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;AACR,SAAA;QAED,IACE,IAAI,CAAC,QAAQ;AACb,YAAA,OAAO,KAAK,GAAG;AACf,YAAA,cAAc,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC;AAClC,YAAA,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,EACjC;AACA,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AAC/C,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,eAAgB,CAAC;AAClD,gBAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;AACxC,gBAAA,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,EACJ,IAAI,CAAC,cAAc,CAAC,eAAgB,EACpC,CAAC,OAAO,CAAC,UAAU,EAAE,CACtB,CAAC;AACH,aAAA;YACD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,EAAE;YAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACnD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;AACR,SAAA;AAED,QAAA,MAAM,QAAQ,GACZ,OAAO,KAAK,QAAQ;AACpB,YAAA,OAAO,KAAK,UAAU;AACtB,YAAA,OAAO,KAAK,UAAU;AACtB,YAAA,OAAO,KAAK,WAAW;AACvB,YAAA,OAAO,KAAK,IAAI;YAChB,OAAO,KAAK,GAAG,CAAC;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;AAErC,QAAA,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,mBAAmB,KAAK,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE;YAC7F,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AACpD,SAAA;KACF;;IAGS,cAAc,GAAA;;;AAGtB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACvB;AAED;;;AAGG;AACO,IAAA,eAAe,CAAC,KAAiB,EAAA;AACzC,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,aAAwB,CAAC;AACpD,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YACzE,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACtC,SAAA;KACF;;IAGS,wBAAwB,GAAA;AAChC,QAAA,OAAO,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC;KAC/E;;IAGS,YAAY,GAAA;QACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,CAAC,CAAC,CAAC;AACX,SAAA;QACD,OAAO,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;KAChG;;IAGO,eAAe,GAAA;QACrB,IAAI,CAAC,cAAc,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/D,aAAA,QAAQ,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC;AACvC,aAAA,aAAa,EAAE;AACf,aAAA,cAAc,EAAE;AAChB,aAAA,uBAAuB,CAAC,CAAC,UAAU,CAAC,CAAC;AACrC,aAAA,aAAa,CACZ,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CACtF,CAAC;AAEJ,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;AACnC,YAAA,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC;AAC/C,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC;AAC1E,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE;AACvC,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;AACpE,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;KACvE;;IAGO,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC7B,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;AACzC,SAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;;AAGG;AACK,IAAA,aAAa,CAAC,KAAmB,EAAA;QACvC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClC,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAE9D,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACtC,SAAA;KACF;;IAGO,6BAA6B,GAAA;;AAEnC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AAEnE,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAChD,SAAA;KACF;;IAGO,oBAAoB,GAAA;AAC1B,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAa,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAI,EAAE,CAAI,KAAI;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACrD,OAAO,MAAM,GAAG,MAAM,CAAC;AACzB,SAAC,CAAC,CAAC;AACH,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC9C,QAAA,IAAI,CAAC,QAAQ;YACX,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AAC7F,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED;;;;;AAKG;IACK,iBAAiB,CAAC,KAAqB,EAAE,KAAQ,EAAA;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACrB,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AACf,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,gBAAA,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,EAAE;oBAC9C,KAAK,GAAG,CAAC,CAAC;oBACV,MAAM;AACP,iBAAA;AACF,aAAA;AACD,YAAA,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACzB,SAAA;AACD,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;KAC1B;AAED;;;AAGG;IACK,oBAAoB,CAAC,MAAoB,EAAE,KAAiB,EAAA;QAClE,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC1C,QAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnC,YAAA,IAAI,CAAC,YAAY,CACf,MAAM,EACN,IAAI,CAAC,sBAAsB,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,eAAgB,EACrE,IAAI,CAAC,cAAc,CAAC,eAAgB,EACpC,CAAC,MAAM,CAAC,UAAU,EAAE,CACrB,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC5B,SAAA;KACF;;IAGO,8BAA8B,GAAA;QACpC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC3F,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,EAAE,CAAC;AAC9C,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;gBACpC,IAAI,SAAS,GAAwB,IAAI,CAAC;AAC1C,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAChD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;oBACnC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;wBACtC,SAAS,GAAG,KAAK,CAAC;wBAClB,MAAM;AACP,qBAAA;AACF,iBAAA;AACD,gBAAA,IAAI,SAAS,EAAE;;oBAEb,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,wBAAA,OAAO,CAAC,IAAI,CACV,CAAA,yFAAA,CAA2F,EAC3F;4BACE,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,OAAO,EAAE,SAAS,CAAC,OAAO;4BAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;AAC9B,yBAAA,CACF,CAAC;AACH,qBAAA;AAAM,yBAAA;AACL,wBAAA,OAAO,CAAC,IAAI,CAAC,CAAA,4CAAA,CAA8C,EAAE;4BAC3D,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,OAAO,EAAE,SAAS,CAAC,OAAO;AAC3B,yBAAA,CAAC,CAAC;AACJ,qBAAA;oBACD,OAAO;AACR,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;IAGO,mBAAmB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AACnE,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YAE7D,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,gBAAA,MAAM,KAAK,CAAC,2EAA2E,CAAC,CAAC;AAC1F,aAAA;YAED,IAAI,aAAa,CAAC,MAAM,EAAE;AACxB,gBAAA,MAAM,KAAK,CAAC,mEAAmE,CAAC,CAAC;AAClF,aAAA;AACF,SAAA;KACF;AAED;;;;AAIG;AACK,IAAA,YAAY,CAAC,KAAmB,EAAA;AACtC,QAAA,OAAO,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;KAChD;AAED;;;;AAIG;AACK,IAAA,uBAAuB,CAAC,MAAoB,EAAA;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,EAAE,CAAC;QAC9C,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QACrE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;KAC5F;;IAGO,sBAAsB,GAAA;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,cAAe,CAAC,CAAC;AACnE,QAAA,OAAO,KAAK,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;KACpC;;4GA3uBU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,IAAA,EAAA,UAAU,EARV,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,KAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,+BAAA,EAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,CAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,WAAA,EAAA,CAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,kCAAA,EAAA,wBAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,oCAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,UAAU,CAAC;AACzC,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACF,KAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EA4HgB,SAAS,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGA1Hf,UAAU,EAAA,UAAA,EAAA,CAAA;kBA1BtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,iBAAiB,EAAE,gBAAgB;AACnC,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,6BAA6B,EAAE,UAAU;AACzC,wBAAA,8BAA8B,EAAE,4BAA4B;AAC5D,wBAAA,yBAAyB,EAAE,aAAa;AACxC,wBAAA,SAAS,EAAE,gBAAgB;AAC3B,wBAAA,WAAW,EAAE,wBAAwB;AACrC,wBAAA,YAAY,EAAE,yBAAyB;AACvC,wBAAA,WAAW,EAAE,kBAAkB;AAChC,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,gBAAgB,CAAC;AACzC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAA;8BAIK,EAAE,EAAA,CAAA;sBADL,KAAK;gBAYF,eAAe,EAAA,CAAA;sBADlB,KAAK;uBAAC,UAAU,CAAA;gBAWb,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,iBAAiB,CAAA;gBAapB,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,oBAAoB,CAAA;gBAcvB,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,oBAAoB,CAAA;gBAWvB,mBAAmB,EAAA,CAAA;sBADtB,KAAK;uBAAC,+BAA+B,CAAA;gBAWlC,WAAW,EAAA,CAAA;sBADd,KAAK;uBAAC,uBAAuB,CAAA;gBAgB1B,WAAW,EAAA,CAAA;sBADd,KAAK;uBAAC,uBAAuB,CAAA;gBAa1B,sBAAsB,EAAA,CAAA;sBADzB,KAAK;uBAAC,kCAAkC,CAAA;gBAYrC,uBAAuB,EAAA,CAAA;sBAD1B,KAAK;uBAAC,oCAAoC,CAAA;gBAaD,WAAW,EAAA,CAAA;sBAApD,MAAM;uBAAC,uBAAuB,CAAA;gBAG4B,OAAO,EAAA,CAAA;sBAAjE,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,CAAA;;;ACjXjD;;;;;;AAMG;AAKH,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;MAMzC,gBAAgB,CAAA;;kHAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YANE,UAAU,EAAE,SAAS,CAArB,EAAA,OAAA,EAAA,CAAA,UAAU,EAAE,SAAS,CAAA,EAAA,CAAA,CAAA;mHAMvC,gBAAgB,EAAA,CAAA,CAAA;gGAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,GAAG,qBAAqB,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,GAAG,qBAAqB,CAAC;AACpC,iBAAA,CAAA;;;AChBD;;;;;;AAMG;;ACNH;;;;;;AAMG;;ACNH;;AAEG;;;;"}
-------------------- SECTION 185 --------------------
{"version":3,"file":"dialog.mjs","sources":["../../../../../../src/cdk/dialog/dialog-config.ts","../../../../../../src/cdk/dialog/dialog-container.ts","../../../../../../src/cdk/dialog/dialog-container.html","../../../../../../src/cdk/dialog/dialog-ref.ts","../../../../../../src/cdk/dialog/dialog-injectors.ts","../../../../../../src/cdk/dialog/dialog.ts","../../../../../../src/cdk/dialog/dialog-module.ts","../../../../../../src/cdk/dialog/public-api.ts","../../../../../../src/cdk/dialog/index.ts","../../../../../../src/cdk/dialog/dialog_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   ViewContainerRef,   ComponentFactoryResolver,   Injector,   StaticProvider,   Type, } from '@angular/core'; import {Direction} from '@angular/cdk/bidi'; import {PositionStrategy, ScrollStrategy} from '@angular/cdk/overlay'; import {BasePortalOutlet} from '@angular/cdk/portal';  /** Options for where to set focus to automatically on dialog open */ export type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';  /** Valid ARIA roles for a dialog. */ export type DialogRole = 'dialog' | 'alertdialog';  /** Configuration for opening a modal dialog. */ export class DialogConfig<D = unknown, R = unknown, C extends BasePortalOutlet = BasePortalOutlet> {   /**    * Where the attached component should live in Angular's *logical* component tree.    * This affects what is available for injection and the change detection order for the    * component instantiated inside of the dialog. This does not affect where the dialog    * content will be rendered.    */   viewContainerRef?: ViewContainerRef;    /**    * Injector used for the instantiation of the component to be attached. If provided,    * takes precedence over the injector indirectly provided by `ViewContainerRef`.    */   injector?: Injector;    /** ID for the dialog. If omitted, a unique one will be generated. */   id?: string;    /** The ARIA role of the dialog element. */   role?: DialogRole = 'dialog';    /** Optional CSS class or classes applied to the overlay panel. */   panelClass?: string | string[] = '';    /** Whether the dialog has a backdrop. */   hasBackdrop?: boolean = true;    /** Optional CSS class or classes applied to the overlay backdrop. */   backdropClass?: string | string[] = '';    /** Whether the dialog closes with the escape key or pointer events outside the panel element. */   disableClose?: boolean = false;    /** Width of the dialog. */   width?: string = '';    /** Height of the dialog. */   height?: string = '';    /** Min-width of the dialog. If a number is provided, assumes pixel units. */   minWidth?: number | string;    /** Min-height of the dialog. If a number is provided, assumes pixel units. */   minHeight?: number | string;    /** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */   maxWidth?: number | string;    /** Max-height of the dialog. If a number is provided, assumes pixel units. */   maxHeight?: number | string;    /** Strategy to use when positioning the dialog. Defaults to centering it on the page. */   positionStrategy?: PositionStrategy;    /** Data being injected into the child component. */   data?: D | null = null;    /** Layout direction for the dialog's content. */   direction?: Direction;    /** ID of the element that describes the dialog. */   ariaDescribedBy?: string | null = null;    /** ID of the element that labels the dialog. */   ariaLabelledBy?: string | null = null;    /** Dialog label applied via `aria-label` */   ariaLabel?: string | null = null;    /** Whether this is a modal dialog. Used to set the `aria-modal` attribute. */   ariaModal?: boolean = true;    /**    * Where the dialog should focus on open.    * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or    * AutoFocusTarget instead.    */   autoFocus?: AutoFocusTarget | string | boolean = 'first-tabbable';    /**    * Whether the dialog should restore focus to the previously-focused element upon closing.    * Has the following behavior based on the type that is passed in:    * - `boolean` - when true, will return focus to the element that was focused before the dialog    *    was opened, otherwise won't restore focus at all.    * - `string` - focus will be restored to the first element that matches the CSS selector.    * - `HTMLElement` - focus will be restored to the specific element.    */   restoreFocus?: boolean | string | HTMLElement = true;    /**    * Scroll strategy to be used for the dialog. This determines how    * the dialog responds to scrolling underneath the panel element.    */   scrollStrategy?: ScrollStrategy;    /**    * Whether the dialog should close when the user navigates backwards or forwards through browser    * history. This does not apply to navigation via anchor element unless using URL-hash based    * routing (`HashLocationStrategy` in the Angular router).    */   closeOnNavigation?: boolean = true;    /**    * Whether the dialog should close when the dialog service is destroyed. This is useful if    * another service is wrapping the dialog and is managing the destruction instead.    */   closeOnDestroy?: boolean = true;    /**    * Whether the dialog should close when the underlying overlay is detached. This is useful if    * another service is wrapping the dialog and is managing the destruction instead. E.g. an    * external detachment can happen as a result of a scroll strategy triggering it or when the    * browser location changes.    */   closeOnOverlayDetachments?: boolean = true;    /** Alternate `ComponentFactoryResolver` to use when resolving the associated component. */   componentFactoryResolver?: ComponentFactoryResolver;    /**    * Providers that will be exposed to the contents of the dialog. Can also    * be provided as a function in order to generate the providers lazily.    */   providers?:     | StaticProvider[]     | ((dialogRef: R, config: DialogConfig<D, R, C>, container: C) => StaticProvider[]);    /**    * Component into which the dialog content will be rendered. Defaults to `CdkDialogContainer`.    * A configuration object can be passed in to customize the providers that will be exposed    * to the dialog container.    */   container?:     | Type<C>     | {         type: Type<C>;         providers: (config: DialogConfig<D, R, C>) => StaticProvider[];       };    /**    * Context that will be passed to template-based dialogs.    * A function can be passed in to resolve the context lazily.    */   templateContext?: Record<string, any> | (() => Record<string, any>); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   FocusMonitor,   FocusOrigin,   FocusTrap,   FocusTrapFactory,   InteractivityChecker, } from '@angular/cdk/a11y'; import {OverlayRef} from '@angular/cdk/overlay'; import {_getFocusedElementPierceShadowDom} from '@angular/cdk/platform'; import {   BasePortalOutlet,   CdkPortalOutlet,   ComponentPortal,   DomPortal,   TemplatePortal, } from '@angular/cdk/portal'; import {DOCUMENT} from '@angular/common'; import {   ChangeDetectionStrategy,   Component,   ComponentRef,   ElementRef,   EmbeddedViewRef,   Inject,   NgZone,   OnDestroy,   Optional,   ViewChild,   ViewEncapsulation, } from '@angular/core'; import {DialogConfig} from './dialog-config';  export function throwDialogContentAlreadyAttachedError() {   throw Error('Attempting to attach dialog content after content is already attached'); }  /**  * Internal component that wraps user-provided dialog content.  * @docs-private  */ @Component({   selector: 'cdk-dialog-container',   templateUrl: './dialog-container.html',   styleUrls: ['dialog-container.css'],   encapsulation: ViewEncapsulation.None,   // Using OnPush for dialogs caused some G3 sync issues. Disabled until we can track them down.   // tslint:disable-next-line:validate-decorators   changeDetection: ChangeDetectionStrategy.Default,   host: {     'class': 'cdk-dialog-container',     'tabindex': '-1',     '[attr.id]': '_config.id || null',     '[attr.role]': '_config.role',     '[attr.aria-modal]': '_config.ariaModal',     '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',     '[attr.aria-label]': '_config.ariaLabel',     '[attr.aria-describedby]': '_config.ariaDescribedBy || null',   }, }) export class CdkDialogContainer<C extends DialogConfig = DialogConfig>   extends BasePortalOutlet   implements OnDestroy {   protected _document: Document;    /** The portal outlet inside of this container into which the dialog content will be loaded. */   @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;    /** The class that traps and manages focus within the dialog. */   private _focusTrap: FocusTrap;    /** Element that was focused before the dialog was opened. Save this to restore upon close. */   private _elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;    /**    * Type of interaction that led to the dialog being closed. This is used to determine    * whether the focus style will be applied when returning focus to its original location    * after the dialog is closed.    */   _closeInteractionType: FocusOrigin | null = null;    /** ID of the element that should be considered as the dialog's label. */   _ariaLabelledBy: string | null;    constructor(     protected _elementRef: ElementRef,     protected _focusTrapFactory: FocusTrapFactory,     @Optional() @Inject(DOCUMENT) _document: any,     @Inject(DialogConfig) readonly _config: C,     private _interactivityChecker: InteractivityChecker,     private _ngZone: NgZone,     private _overlayRef: OverlayRef,     private _focusMonitor?: FocusMonitor,   ) {     super();     this._ariaLabelledBy = this._config.ariaLabelledBy || null;     this._document = _document;   }    protected _contentAttached() {     this._initializeFocusTrap();     this._handleBackdropClicks();     this._captureInitialFocus();   }    /**    * Can be used by child classes to customize the initial focus    * capturing behavior (e.g. if it's tied to an animation).    */   protected _captureInitialFocus() {     this._trapFocus();   }    ngOnDestroy() {     this._restoreFocus();   }    /**    * Attach a ComponentPortal as content to this dialog container.    * @param portal Portal to be attached as the dialog content.    */   attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {     if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throwDialogContentAlreadyAttachedError();     }      const result = this._portalOutlet.attachComponentPortal(portal);     this._contentAttached();     return result;   }    /**    * Attach a TemplatePortal as content to this dialog container.    * @param portal Portal to be attached as the dialog content.    */   attachTemplatePortal<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T> {     if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throwDialogContentAlreadyAttachedError();     }      const result = this._portalOutlet.attachTemplatePortal(portal);     this._contentAttached();     return result;   }    /**    * Attaches a DOM portal to the dialog container.    * @param portal Portal to be attached.    * @deprecated To be turned into a method.    * @breaking-change 10.0.0    */   override attachDomPortal = (portal: DomPortal) => {     if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throwDialogContentAlreadyAttachedError();     }      const result = this._portalOutlet.attachDomPortal(portal);     this._contentAttached();     return result;   };    // TODO(crisbeto): this shouldn't be exposed, but there are internal references to it.   /** Captures focus if it isn't already inside the dialog. */   _recaptureFocus() {     if (!this._containsFocus()) {       this._trapFocus();     }   }    /**    * Focuses the provided element. If the element is not focusable, it will add a tabIndex    * attribute to forcefully focus it. The attribute is removed after focus is moved.    * @param element The element to focus.    */   private _forceFocus(element: HTMLElement, options?: FocusOptions) {     if (!this._interactivityChecker.isFocusable(element)) {       element.tabIndex = -1;       // The tabindex attribute should be removed to avoid navigating to that element again       this._ngZone.runOutsideAngular(() => {         const callback = () => {           element.removeEventListener('blur', callback);           element.removeEventListener('mousedown', callback);           element.removeAttribute('tabindex');         };          element.addEventListener('blur', callback);         element.addEventListener('mousedown', callback);       });     }     element.focus(options);   }    /**    * Focuses the first element that matches the given selector within the focus trap.    * @param selector The CSS selector for the element to set focus to.    */   private _focusByCssSelector(selector: string, options?: FocusOptions) {     let elementToFocus = this._elementRef.nativeElement.querySelector(       selector,     ) as HTMLElement | null;     if (elementToFocus) {       this._forceFocus(elementToFocus, options);     }   }    /**    * Moves the focus inside the focus trap. When autoFocus is not set to 'dialog', if focus    * cannot be moved then focus will go to the dialog container.    */   protected _trapFocus() {     const element = this._elementRef.nativeElement;     // If were to attempt to focus immediately, then the content of the dialog would not yet be     // ready in instances where change detection has to run first. To deal with this, we simply     // wait for the microtask queue to be empty when setting focus when autoFocus isn't set to     // dialog. If the element inside the dialog can't be focused, then the container is focused     // so the user can't tab into other elements behind it.     switch (this._config.autoFocus) {       case false:       case 'dialog':         // Ensure that focus is on the dialog container. It's possible that a different         // component tried to move focus while the open animation was running. See:         // https://github.com/angular/components/issues/16215. Note that we only want to do this         // if the focus isn't inside the dialog already, because it's possible that the consumer         // turned off `autoFocus` in order to move focus themselves.         if (!this._containsFocus()) {           element.focus();         }         break;       case true:       case 'first-tabbable':         this._focusTrap.focusInitialElementWhenReady().then(focusedSuccessfully => {           // If we weren't able to find a focusable element in the dialog, then focus the dialog           // container instead.           if (!focusedSuccessfully) {             this._focusDialogContainer();           }         });         break;       case 'first-heading':         this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role=\"heading\"]');         break;       default:         this._focusByCssSelector(this._config.autoFocus!);         break;     }   }    /** Restores focus to the element that was focused before the dialog opened. */   private _restoreFocus() {     const focusConfig = this._config.restoreFocus;     let focusTargetElement: HTMLElement | null = null;      if (typeof focusConfig === 'string') {       focusTargetElement = this._document.querySelector(focusConfig);     } else if (typeof focusConfig === 'boolean') {       focusTargetElement = focusConfig ? this._elementFocusedBeforeDialogWasOpened : null;     } else if (focusConfig) {       focusTargetElement = focusConfig;     }      // We need the extra check, because IE can set the `activeElement` to null in some cases.     if (       this._config.restoreFocus &&       focusTargetElement &&       typeof focusTargetElement.focus === 'function'     ) {       const activeElement = _getFocusedElementPierceShadowDom();       const element = this._elementRef.nativeElement;        // Make sure that focus is still inside the dialog or is on the body (usually because a       // non-focusable element like the backdrop was clicked) before moving it. It's possible that       // the consumer moved it themselves before the animation was done, in which case we shouldn't       // do anything.       if (         !activeElement ||         activeElement === this._document.body ||         activeElement === element ||         element.contains(activeElement)       ) {         if (this._focusMonitor) {           this._focusMonitor.focusVia(focusTargetElement, this._closeInteractionType);           this._closeInteractionType = null;         } else {           focusTargetElement.focus();         }       }     }      if (this._focusTrap) {       this._focusTrap.destroy();     }   }    /** Focuses the dialog container. */   private _focusDialogContainer() {     // Note that there is no focus method when rendering on the server.     if (this._elementRef.nativeElement.focus) {       this._elementRef.nativeElement.focus();     }   }    /** Returns whether focus is inside the dialog. */   private _containsFocus() {     const element = this._elementRef.nativeElement;     const activeElement = _getFocusedElementPierceShadowDom();     return element === activeElement || element.contains(activeElement);   }    /** Sets up the focus trap. */   private _initializeFocusTrap() {     this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);      // Save the previously focused element. This element will be re-focused     // when the dialog closes.     if (this._document) {       this._elementFocusedBeforeDialogWasOpened = _getFocusedElementPierceShadowDom();     }   }    /** Sets up the listener that handles clicks on the dialog backdrop. */   private _handleBackdropClicks() {     // Clicking on the backdrop will move focus out of dialog.     // Recapture it if closing via the backdrop is disabled.     this._overlayRef.backdropClick().subscribe(() => {       if (this._config.disableClose) {         this._recaptureFocus();       }     });   } } ","<ng-template cdkPortalOutlet></ng-template> ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {OverlayRef} from '@angular/cdk/overlay'; import {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes'; import {Observable, Subject, Subscription} from 'rxjs'; import {DialogConfig} from './dialog-config'; import {FocusOrigin} from '@angular/cdk/a11y'; import {BasePortalOutlet} from '@angular/cdk/portal';  /** Additional options that can be passed in when closing a dialog. */ export interface DialogCloseOptions {   /** Focus original to use when restoring focus. */   focusOrigin?: FocusOrigin; }  /**  * Reference to a dialog opened via the Dialog service.  */ export class DialogRef<R = unknown, C = unknown> {   /**    * Instance of component opened into the dialog. Will be    * null when the dialog is opened using a `TemplateRef`.    */   readonly componentInstance: C | null;    /** Instance of the container that is rendering out the dialog content. */   readonly containerInstance: BasePortalOutlet & {_closeInteractionType?: FocusOrigin};    /** Whether the user is allowed to close the dialog. */   disableClose: boolean | undefined;    /** Emits when the dialog has been closed. */   readonly closed: Observable<R | undefined> = new Subject<R | undefined>();    /** Emits when the backdrop of the dialog is clicked. */   readonly backdropClick: Observable<MouseEvent>;    /** Emits when on keyboard events within the dialog. */   readonly keydownEvents: Observable<KeyboardEvent>;    /** Emits on pointer events that happen outside of the dialog. */   readonly outsidePointerEvents: Observable<MouseEvent>;    /** Unique ID for the dialog. */   readonly id: string;    /** Subscription to external detachments of the dialog. */   private _detachSubscription: Subscription;    constructor(     readonly overlayRef: OverlayRef,     readonly config: DialogConfig<any, DialogRef<R, C>, BasePortalOutlet>,   ) {     this.disableClose = config.disableClose;     this.backdropClick = overlayRef.backdropClick();     this.keydownEvents = overlayRef.keydownEvents();     this.outsidePointerEvents = overlayRef.outsidePointerEvents();     this.id = config.id!; // By the time the dialog is created we are guaranteed to have an ID.      this.keydownEvents.subscribe(event => {       if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {         event.preventDefault();         this.close(undefined, {focusOrigin: 'keyboard'});       }     });      this.backdropClick.subscribe(() => {       if (!this.disableClose) {         this.close(undefined, {focusOrigin: 'mouse'});       }     });      this._detachSubscription = overlayRef.detachments().subscribe(() => {       // Check specifically for `false`, because we want `undefined` to be treated like `true`.       if (config.closeOnOverlayDetachments !== false) {         this.close();       }     });   }    /**    * Close the dialog.    * @param result Optional result to return to the dialog opener.    * @param options Additional options to customize the closing behavior.    */   close(result?: R, options?: DialogCloseOptions): void {     if (this.containerInstance) {       const closedSubject = this.closed as Subject<R | undefined>;       this.containerInstance._closeInteractionType = options?.focusOrigin || 'program';       // Drop the detach subscription first since it can be triggered by the       // `dispose` call and override the result of this closing sequence.       this._detachSubscription.unsubscribe();       this.overlayRef.dispose();       closedSubject.next(result);       closedSubject.complete();       (this as {componentInstance: C}).componentInstance = (         this as {containerInstance: BasePortalOutlet}       ).containerInstance = null!;     }   }    /** Updates the position of the dialog based on the current position strategy. */   updatePosition(): this {     this.overlayRef.updatePosition();     return this;   }    /**    * Updates the dialog's width and height.    * @param width New width of the dialog.    * @param height New height of the dialog.    */   updateSize(width: string | number = '', height: string | number = ''): this {     this.overlayRef.updateSize({width, height});     return this;   }    /** Add a CSS class or an array of classes to the overlay pane. */   addPanelClass(classes: string | string[]): this {     this.overlayRef.addPanelClass(classes);     return this;   }    /** Remove a CSS class or an array of classes from the overlay pane. */   removePanelClass(classes: string | string[]): this {     this.overlayRef.removePanelClass(classes);     return this;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core'; import {Overlay, ScrollStrategy} from '@angular/cdk/overlay'; import {DialogConfig} from './dialog-config';  /** Injection token for the Dialog's ScrollStrategy. */ export const DIALOG_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(   'DialogScrollStrategy', );  /** Injection token for the Dialog's Data. */ export const DIALOG_DATA = new InjectionToken<any>('DialogData');  /** Injection token that can be used to provide default options for the dialog module. */ export const DEFAULT_DIALOG_CONFIG = new InjectionToken<DialogConfig>('DefaultDialogConfig');  /** @docs-private */ export function DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay): () => ScrollStrategy {   return () => overlay.scrollStrategies.block(); }  /** @docs-private */ export const DIALOG_SCROLL_STRATEGY_PROVIDER = {   provide: DIALOG_SCROLL_STRATEGY,   deps: [Overlay],   useFactory: DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, }; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   TemplateRef,   Injectable,   Injector,   OnDestroy,   Type,   StaticProvider,   Inject,   Optional,   SkipSelf, } from '@angular/core'; import {BasePortalOutlet, ComponentPortal, TemplatePortal} from '@angular/cdk/portal'; import {of as observableOf, Observable, Subject, defer} from 'rxjs'; import {DialogRef} from './dialog-ref'; import {DialogConfig} from './dialog-config'; import {Directionality} from '@angular/cdk/bidi'; import {   ComponentType,   Overlay,   OverlayRef,   OverlayConfig,   ScrollStrategy,   OverlayContainer, } from '@angular/cdk/overlay'; import {startWith} from 'rxjs/operators';  import {DEFAULT_DIALOG_CONFIG, DIALOG_DATA, DIALOG_SCROLL_STRATEGY} from './dialog-injectors'; import {CdkDialogContainer} from './dialog-container';  /** Unique id for the created dialog. */ let uniqueId = 0;  @Injectable() export class Dialog implements OnDestroy {   private _openDialogsAtThisLevel: DialogRef<any, any>[] = [];   private readonly _afterAllClosedAtThisLevel = new Subject<void>();   private readonly _afterOpenedAtThisLevel = new Subject<DialogRef>();   private _ariaHiddenElements = new Map<Element, string | null>();   private _scrollStrategy: () => ScrollStrategy;    /** Keeps track of the currently-open dialogs. */   get openDialogs(): readonly DialogRef<any, any>[] {     return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;   }    /** Stream that emits when a dialog has been opened. */   get afterOpened(): Subject<DialogRef<any, any>> {     return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;   }    /**    * Stream that emits when all open dialog have finished closing.    * Will emit on subscribe if there are no open dialogs to begin with.    */   readonly afterAllClosed: Observable<void> = defer(() =>     this.openDialogs.length       ? this._getAfterAllClosed()       : this._getAfterAllClosed().pipe(startWith(undefined)),   );    constructor(     private _overlay: Overlay,     private _injector: Injector,     @Optional() @Inject(DEFAULT_DIALOG_CONFIG) private _defaultOptions: DialogConfig,     @Optional() @SkipSelf() private _parentDialog: Dialog,     private _overlayContainer: OverlayContainer,     @Inject(DIALOG_SCROLL_STRATEGY) scrollStrategy: any,   ) {     this._scrollStrategy = scrollStrategy;   }    /**    * Opens a modal dialog containing the given component.    * @param component Type of the component to load into the dialog.    * @param config Extra configuration options.    * @returns Reference to the newly-opened dialog.    */   open<R = unknown, D = unknown, C = unknown>(     component: ComponentType<C>,     config?: DialogConfig<D, DialogRef<R, C>>,   ): DialogRef<R, C>;    /**    * Opens a modal dialog containing the given template.    * @param template TemplateRef to instantiate as the dialog content.    * @param config Extra configuration options.    * @returns Reference to the newly-opened dialog.    */   open<R = unknown, D = unknown, C = unknown>(     template: TemplateRef<C>,     config?: DialogConfig<D, DialogRef<R, C>>,   ): DialogRef<R, C>;    open<R = unknown, D = unknown, C = unknown>(     componentOrTemplateRef: ComponentType<C> | TemplateRef<C>,     config?: DialogConfig<D, DialogRef<R, C>>,   ): DialogRef<R, C>;    open<R = unknown, D = unknown, C = unknown>(     componentOrTemplateRef: ComponentType<C> | TemplateRef<C>,     config?: DialogConfig<D, DialogRef<R, C>>,   ): DialogRef<R, C> {     const defaults = (this._defaultOptions || new DialogConfig()) as DialogConfig<       D,       DialogRef<R, C>     >;     config = {...defaults, ...config};     config.id = config.id || `cdk-dialog-${uniqueId++}`;      if (       config.id &&       this.getDialogById(config.id) &&       (typeof ngDevMode === 'undefined' || ngDevMode)     ) {       throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`);     }      const overlayConfig = this._getOverlayConfig(config);     const overlayRef = this._overlay.create(overlayConfig);     const dialogRef = new DialogRef(overlayRef, config);     const dialogContainer = this._attachContainer(overlayRef, dialogRef, config);      (dialogRef as {containerInstance: BasePortalOutlet}).containerInstance = dialogContainer;     this._attachDialogContent(componentOrTemplateRef, dialogRef, dialogContainer, config);      // If this is the first dialog that we're opening, hide all the non-overlay content.     if (!this.openDialogs.length) {       this._hideNonDialogContentFromAssistiveTechnology();     }      (this.openDialogs as DialogRef<R, C>[]).push(dialogRef);     dialogRef.closed.subscribe(() => this._removeOpenDialog(dialogRef, true));     this.afterOpened.next(dialogRef);      return dialogRef;   }    /**    * Closes all of the currently-open dialogs.    */   closeAll(): void {     reverseForEach(this.openDialogs, dialog => dialog.close());   }    /**    * Finds an open dialog by its id.    * @param id ID to use when looking up the dialog.    */   getDialogById<R, C>(id: string): DialogRef<R, C> | undefined {     return this.openDialogs.find(dialog => dialog.id === id);   }    ngOnDestroy() {     // Make one pass over all the dialogs that need to be untracked, but should not be closed. We     // want to stop tracking the open dialog even if it hasn't been closed, because the tracking     // determines when `aria-hidden` is removed from elements outside the dialog.     reverseForEach(this._openDialogsAtThisLevel, dialog => {       // Check for `false` specifically since we want `undefined` to be interpreted as `true`.       if (dialog.config.closeOnDestroy === false) {         this._removeOpenDialog(dialog, false);       }     });      // Make a second pass and close the remaining dialogs. We do this second pass in order to     // correctly dispatch the `afterAllClosed` event in case we have a mixed array of dialogs     // that should be closed and dialogs that should not.     reverseForEach(this._openDialogsAtThisLevel, dialog => dialog.close());      this._afterAllClosedAtThisLevel.complete();     this._afterOpenedAtThisLevel.complete();     this._openDialogsAtThisLevel = [];   }    /**    * Creates an overlay config from a dialog config.    * @param config The dialog configuration.    * @returns The overlay configuration.    */   private _getOverlayConfig<D, R>(config: DialogConfig<D, R>): OverlayConfig {     const state = new OverlayConfig({       positionStrategy:         config.positionStrategy ||         this._overlay.position().global().centerHorizontally().centerVertically(),       scrollStrategy: config.scrollStrategy || this._scrollStrategy(),       panelClass: config.panelClass,       hasBackdrop: config.hasBackdrop,       direction: config.direction,       minWidth: config.minWidth,       minHeight: config.minHeight,       maxWidth: config.maxWidth,       maxHeight: config.maxHeight,       width: config.width,       height: config.height,       disposeOnNavigation: config.closeOnNavigation,     });      if (config.backdropClass) {       state.backdropClass = config.backdropClass;     }      return state;   }    /**    * Attaches a dialog container to a dialog's already-created overlay.    * @param overlay Reference to the dialog's underlying overlay.    * @param config The dialog configuration.    * @returns A promise resolving to a ComponentRef for the attached container.    */   private _attachContainer<R, D, C>(     overlay: OverlayRef,     dialogRef: DialogRef<R, C>,     config: DialogConfig<D, DialogRef<R, C>>,   ): BasePortalOutlet {     const userInjector = config.injector || config.viewContainerRef?.injector;     const providers: StaticProvider[] = [       {provide: DialogConfig, useValue: config},       {provide: DialogRef, useValue: dialogRef},       {provide: OverlayRef, useValue: overlay},     ];     let containerType: Type<BasePortalOutlet>;      if (config.container) {       if (typeof config.container === 'function') {         containerType = config.container;       } else {         containerType = config.container.type;         providers.push(...config.container.providers(config));       }     } else {       containerType = CdkDialogContainer;     }      const containerPortal = new ComponentPortal(       containerType,       config.viewContainerRef,       Injector.create({parent: userInjector || this._injector, providers}),       config.componentFactoryResolver,     );     const containerRef = overlay.attach(containerPortal);      return containerRef.instance;   }    /**    * Attaches the user-provided component to the already-created dialog container.    * @param componentOrTemplateRef The type of component being loaded into the dialog,    *     or a TemplateRef to instantiate as the content.    * @param dialogRef Reference to the dialog being opened.    * @param dialogContainer Component that is going to wrap the dialog content.    * @param config Configuration used to open the dialog.    */   private _attachDialogContent<R, D, C>(     componentOrTemplateRef: ComponentType<C> | TemplateRef<C>,     dialogRef: DialogRef<R, C>,     dialogContainer: BasePortalOutlet,     config: DialogConfig<D, DialogRef<R, C>>,   ) {     if (componentOrTemplateRef instanceof TemplateRef) {       const injector = this._createInjector(config, dialogRef, dialogContainer, undefined);       let context: any = {$implicit: config.data, dialogRef};        if (config.templateContext) {         context = {           ...context,           ...(typeof config.templateContext === 'function'             ? config.templateContext()             : config.templateContext),         };       }        dialogContainer.attachTemplatePortal(         new TemplatePortal<C>(componentOrTemplateRef, null!, context, injector),       );     } else {       const injector = this._createInjector(config, dialogRef, dialogContainer, this._injector);       const contentRef = dialogContainer.attachComponentPortal<C>(         new ComponentPortal(           componentOrTemplateRef,           config.viewContainerRef,           injector,           config.componentFactoryResolver,         ),       );       (dialogRef as {componentInstance: C}).componentInstance = contentRef.instance;     }   }    /**    * Creates a custom injector to be used inside the dialog. This allows a component loaded inside    * of a dialog to close itself and, optionally, to return a value.    * @param config Config object that is used to construct the dialog.    * @param dialogRef Reference to the dialog being opened.    * @param dialogContainer Component that is going to wrap the dialog content.    * @param fallbackInjector Injector to use as a fallback when a lookup fails in the custom    * dialog injector, if the user didn't provide a custom one.    * @returns The custom injector that can be used inside the dialog.    */   private _createInjector<R, D, C>(     config: DialogConfig<D, DialogRef<R, C>>,     dialogRef: DialogRef<R, C>,     dialogContainer: BasePortalOutlet,     fallbackInjector: Injector | undefined,   ): Injector {     const userInjector = config.injector || config.viewContainerRef?.injector;     const providers: StaticProvider[] = [       {provide: DIALOG_DATA, useValue: config.data},       {provide: DialogRef, useValue: dialogRef},     ];      if (config.providers) {       if (typeof config.providers === 'function') {         providers.push(...config.providers(dialogRef, config, dialogContainer));       } else {         providers.push(...config.providers);       }     }      if (       config.direction &&       (!userInjector ||         !userInjector.get<Directionality | null>(Directionality, null, {optional: true}))     ) {       providers.push({         provide: Directionality,         useValue: {value: config.direction, change: observableOf()},       });     }      return Injector.create({parent: userInjector || fallbackInjector, providers});   }    /**    * Removes a dialog from the array of open dialogs.    * @param dialogRef Dialog to be removed.    * @param emitEvent Whether to emit an event if this is the last dialog.    */   private _removeOpenDialog<R, C>(dialogRef: DialogRef<R, C>, emitEvent: boolean) {     const index = this.openDialogs.indexOf(dialogRef);      if (index > -1) {       (this.openDialogs as DialogRef<R, C>[]).splice(index, 1);        // If all the dialogs were closed, remove/restore the `aria-hidden`       // to a the siblings and emit to the `afterAllClosed` stream.       if (!this.openDialogs.length) {         this._ariaHiddenElements.forEach((previousValue, element) => {           if (previousValue) {             element.setAttribute('aria-hidden', previousValue);           } else {             element.removeAttribute('aria-hidden');           }         });          this._ariaHiddenElements.clear();          if (emitEvent) {           this._getAfterAllClosed().next();         }       }     }   }    /** Hides all of the content that isn't an overlay from assistive technology. */   private _hideNonDialogContentFromAssistiveTechnology() {     const overlayContainer = this._overlayContainer.getContainerElement();      // Ensure that the overlay container is attached to the DOM.     if (overlayContainer.parentElement) {       const siblings = overlayContainer.parentElement.children;        for (let i = siblings.length - 1; i > -1; i--) {         const sibling = siblings[i];          if (           sibling !== overlayContainer &&           sibling.nodeName !== 'SCRIPT' &&           sibling.nodeName !== 'STYLE' &&           !sibling.hasAttribute('aria-live')         ) {           this._ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));           sibling.setAttribute('aria-hidden', 'true');         }       }     }   }    private _getAfterAllClosed(): Subject<void> {     const parent = this._parentDialog;     return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;   } }  /**  * Executes a callback against all elements in an array while iterating in reverse.  * Useful if the array is being modified as it is being iterated.  */ function reverseForEach<T>(items: T[] | readonly T[], callback: (current: T) => void) {   let i = items.length;    while (i--) {     callback(items[i]);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {OverlayModule} from '@angular/cdk/overlay'; import {PortalModule} from '@angular/cdk/portal'; import {A11yModule} from '@angular/cdk/a11y'; import {Dialog} from './dialog'; import {CdkDialogContainer} from './dialog-container'; import {DIALOG_SCROLL_STRATEGY_PROVIDER} from './dialog-injectors';  @NgModule({   imports: [OverlayModule, PortalModule, A11yModule],   exports: [     // Re-export the PortalModule so that people extending the `CdkDialogContainer`     // don't have to remember to import it or be faced with an unhelpful error.     PortalModule,     CdkDialogContainer,   ],   declarations: [CdkDialogContainer],   providers: [Dialog, DIALOG_SCROLL_STRATEGY_PROVIDER], }) export class DialogModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './dialog-container'; export * from './dialog-config'; export * from './dialog-ref'; export * from './dialog'; export * from './dialog-module'; export * from './dialog-injectors'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["i2","observableOf","i1"],"mappings":"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"}
-------------------- SECTION 186 --------------------
{"version":3,"file":"platform.mjs","sources":["../../../../../../src/cdk/platform/platform.ts","../../../../../../src/cdk/platform/platform-module.ts","../../../../../../src/cdk/platform/features/input-types.ts","../../../../../../src/cdk/platform/features/passive-listeners.ts","../../../../../../src/cdk/platform/features/scrolling.ts","../../../../../../src/cdk/platform/features/shadow-dom.ts","../../../../../../src/cdk/platform/features/test-environment.ts","../../../../../../src/cdk/platform/public-api.ts","../../../../../../src/cdk/platform/index.ts","../../../../../../src/cdk/platform/platform_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, Injectable, PLATFORM_ID} from '@angular/core'; import {isPlatformBrowser} from '@angular/common';  // Whether the current platform supports the V8 Break Iterator. The V8 check // is necessary to detect all Blink based browsers. let hasV8BreakIterator: boolean;  // We need a try/catch around the reference to `Intl`, because accessing it in some cases can // cause IE to throw. These cases are tied to particular versions of Windows and can happen if // the consumer is providing a polyfilled `Map`. See: // https://github.com/Microsoft/ChakraCore/issues/3189 // https://github.com/angular/components/issues/15687 try {   hasV8BreakIterator = typeof Intl !== 'undefined' && (Intl as any).v8BreakIterator; } catch {   hasV8BreakIterator = false; }  /**  * Service to detect the current platform by comparing the userAgent strings and  * checking browser-specific global properties.  */ @Injectable({providedIn: 'root'}) export class Platform {   // We want to use the Angular platform check because if the Document is shimmed   // without the navigator, the following checks will fail. This is preferred because   // sometimes the Document may be shimmed without the user's knowledge or intention   /** Whether the Angular application is being rendered in the browser. */   isBrowser: boolean = this._platformId     ? isPlatformBrowser(this._platformId)     : typeof document === 'object' && !!document;    /** Whether the current browser is Microsoft Edge. */   EDGE: boolean = this.isBrowser && /(edge)/i.test(navigator.userAgent);    /** Whether the current rendering engine is Microsoft Trident. */   TRIDENT: boolean = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);    // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.   /** Whether the current rendering engine is Blink. */   BLINK: boolean =     this.isBrowser &&     !!((window as any).chrome || hasV8BreakIterator) &&     typeof CSS !== 'undefined' &&     !this.EDGE &&     !this.TRIDENT;    // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to   // ensure that Webkit runs standalone and is not used as another engine's base.   /** Whether the current rendering engine is WebKit. */   WEBKIT: boolean =     this.isBrowser &&     /AppleWebKit/i.test(navigator.userAgent) &&     !this.BLINK &&     !this.EDGE &&     !this.TRIDENT;    /** Whether the current platform is Apple iOS. */   IOS: boolean =     this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);    // It's difficult to detect the plain Gecko engine, because most of the browsers identify   // them self as Gecko-like browsers and modify the userAgent's according to that.   // Since we only cover one explicit Firefox case, we can simply check for Firefox   // instead of having an unstable check for Gecko.   /** Whether the current browser is Firefox. */   FIREFOX: boolean = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);    /** Whether the current platform is Android. */   // Trident on mobile adds the android platform to the userAgent to trick detections.   ANDROID: boolean = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;    // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake   // this and just place the Safari keyword in the userAgent. To be more safe about Safari every   // Safari browser should also use Webkit as its layout engine.   /** Whether the current browser is Safari. */   SAFARI: boolean = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;    constructor(@Inject(PLATFORM_ID) private _platformId: Object) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core';  @NgModule({}) export class PlatformModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Cached result Set of input types support by the current browser. */ let supportedInputTypes: Set<string>;  /** Types of `<input>` that *might* be supported. */ const candidateInputTypes = [   // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after   // first changing it to something else:   // The specified value \"\" does not conform to the required format.   // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.   'color',   'button',   'checkbox',   'date',   'datetime-local',   'email',   'file',   'hidden',   'image',   'month',   'number',   'password',   'radio',   'range',   'reset',   'search',   'submit',   'tel',   'text',   'time',   'url',   'week', ];  /** @returns The input types supported by this browser. */ export function getSupportedInputTypes(): Set<string> {   // Result is cached.   if (supportedInputTypes) {     return supportedInputTypes;   }    // We can't check if an input type is not supported until we're on the browser, so say that   // everything is supported when not on the browser. We don't use `Platform` here since it's   // just a helper function and can't inject it.   if (typeof document !== 'object' || !document) {     supportedInputTypes = new Set(candidateInputTypes);     return supportedInputTypes;   }    let featureTestInput = document.createElement('input');   supportedInputTypes = new Set(     candidateInputTypes.filter(value => {       featureTestInput.setAttribute('type', value);       return featureTestInput.type === value;     }),   );    return supportedInputTypes; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Cached result of whether the user's browser supports passive event listeners. */ let supportsPassiveEvents: boolean;  /**  * Checks whether the user's browser supports passive event listeners.  * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md  */ export function supportsPassiveEventListeners(): boolean {   if (supportsPassiveEvents == null && typeof window !== 'undefined') {     try {       window.addEventListener(         'test',         null!,         Object.defineProperty({}, 'passive', {           get: () => (supportsPassiveEvents = true),         }),       );     } finally {       supportsPassiveEvents = supportsPassiveEvents || false;     }   }    return supportsPassiveEvents; }  /**  * Normalizes an `AddEventListener` object to something that can be passed  * to `addEventListener` on any browser, no matter whether it supports the  * `options` parameter.  * @param options Object to be normalized.  */ export function normalizePassiveListenerOptions(   options: AddEventListenerOptions, ): AddEventListenerOptions | boolean {   return supportsPassiveEventListeners() ? options : !!options.capture; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** The possible ways the browser may handle the horizontal scroll axis in RTL languages. */ export const enum RtlScrollAxisType {   /**    * scrollLeft is 0 when scrolled all the way left and (scrollWidth - clientWidth) when scrolled    * all the way right.    */   NORMAL,   /**    * scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled    * all the way right.    */   NEGATED,   /**    * scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled    * all the way right.    */   INVERTED, }  /** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */ let rtlScrollAxisType: RtlScrollAxisType | undefined;  /** Cached result of the check that indicates whether the browser supports scroll behaviors. */ let scrollBehaviorSupported: boolean | undefined;  /** Check whether the browser supports scroll behaviors. */ export function supportsScrollBehavior(): boolean {   if (scrollBehaviorSupported == null) {     // If we're not in the browser, it can't be supported. Also check for `Element`, because     // some projects stub out the global `document` during SSR which can throw us off.     if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {       scrollBehaviorSupported = false;       return scrollBehaviorSupported;     }      // If the element can have a `scrollBehavior` style, we can be sure that it's supported.     if ('scrollBehavior' in document.documentElement!.style) {       scrollBehaviorSupported = true;     } else {       // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's       // supported but it doesn't handle scroll behavior, or it has been polyfilled.       const scrollToFunction: Function | undefined = Element.prototype.scrollTo;        if (scrollToFunction) {         // We can detect if the function has been polyfilled by calling `toString` on it. Native         // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get         // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider         // polyfilled functions as supporting scroll behavior.         scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());       } else {         scrollBehaviorSupported = false;       }     }   }    return scrollBehaviorSupported; }  /**  * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,  * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.  */ export function getRtlScrollAxisType(): RtlScrollAxisType {   // We can't check unless we're on the browser. Just assume 'normal' if we're not.   if (typeof document !== 'object' || !document) {     return RtlScrollAxisType.NORMAL;   }    if (rtlScrollAxisType == null) {     // Create a 1px wide scrolling container and a 2px wide content element.     const scrollContainer = document.createElement('div');     const containerStyle = scrollContainer.style;     scrollContainer.dir = 'rtl';     containerStyle.width = '1px';     containerStyle.overflow = 'auto';     containerStyle.visibility = 'hidden';     containerStyle.pointerEvents = 'none';     containerStyle.position = 'absolute';      const content = document.createElement('div');     const contentStyle = content.style;     contentStyle.width = '2px';     contentStyle.height = '1px';      scrollContainer.appendChild(content);     document.body.appendChild(scrollContainer);      rtlScrollAxisType = RtlScrollAxisType.NORMAL;      // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL     // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're     // dealing with one of the other two types of browsers.     if (scrollContainer.scrollLeft === 0) {       // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an       // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by       // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will       // return 0 when we read it again.       scrollContainer.scrollLeft = 1;       rtlScrollAxisType =         scrollContainer.scrollLeft === 0 ? RtlScrollAxisType.NEGATED : RtlScrollAxisType.INVERTED;     }      scrollContainer.remove();   }   return rtlScrollAxisType; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  let shadowDomIsSupported: boolean;  /** Checks whether the user's browser support Shadow DOM. */ export function _supportsShadowDom(): boolean {   if (shadowDomIsSupported == null) {     const head = typeof document !== 'undefined' ? document.head : null;     shadowDomIsSupported = !!(head && ((head as any).createShadowRoot || head.attachShadow));   }    return shadowDomIsSupported; }  /** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */ export function _getShadowRoot(element: HTMLElement): ShadowRoot | null {   if (_supportsShadowDom()) {     const rootNode = element.getRootNode ? element.getRootNode() : null;      // Note that this should be caught by `_supportsShadowDom`, but some     // teams have been able to hit this code path on unsupported browsers.     if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {       return rootNode;     }   }    return null; }  /**  * Gets the currently-focused element on the page while  * also piercing through Shadow DOM boundaries.  */ export function _getFocusedElementPierceShadowDom(): HTMLElement | null {   let activeElement =     typeof document !== 'undefined' && document       ? (document.activeElement as HTMLElement | null)       : null;    while (activeElement && activeElement.shadowRoot) {     const newActiveElement = activeElement.shadowRoot.activeElement as HTMLElement | null;     if (newActiveElement === activeElement) {       break;     } else {       activeElement = newActiveElement;     }   }    return activeElement; }  /** Gets the target of an event while accounting for Shadow DOM. */ export function _getEventTarget<T extends EventTarget>(event: Event): T | null {   // If an event is bound outside the Shadow DOM, the `event.target` will   // point to the shadow root so we have to use `composedPath` instead.   return (event.composedPath ? event.composedPath()[0] : event.target) as T | null; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Gets whether the code is currently running in a test environment. */ export function _isTestEnvironment(): boolean {   // We can't use `declare const` because it causes conflicts inside Google with the real typings   // for these symbols and we can't read them off the global object, because they don't appear to   // be attached there for some runners like Jest.   // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)   return (     // @ts-ignore     (typeof __karma__ !== 'undefined' && !!__karma__) ||     // @ts-ignore     (typeof jasmine !== 'undefined' && !!jasmine) ||     // @ts-ignore     (typeof jest !== 'undefined' && !!jest) ||     // @ts-ignore     (typeof Mocha !== 'undefined' && !!Mocha)   ); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './platform'; export * from './platform-module'; export * from './features/input-types'; export * from './features/passive-listeners'; export * from './features/scrolling'; export * from './features/shadow-dom'; export * from './features/test-environment'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 187 --------------------
{"version":3,"file":"layout.mjs","sources":["../../../../../../src/cdk/layout/layout-module.ts","../../../../../../src/cdk/layout/media-matcher.ts","../../../../../../src/cdk/layout/breakpoints-observer.ts","../../../../../../src/cdk/layout/breakpoints.ts","../../../../../../src/cdk/layout/public-api.ts","../../../../../../src/cdk/layout/index.ts","../../../../../../src/cdk/layout/layout_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {NgModule} from '@angular/core';  @NgModule({}) export class LayoutModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {Injectable} from '@angular/core'; import {Platform} from '@angular/cdk/platform';  /** Global registry for all dynamically-created, injected media queries. */ const mediaQueriesForWebkitCompatibility: Set<string> = new Set<string>();  /** Style tag that holds all of the dynamically-created media queries. */ let mediaQueryStyleNode: HTMLStyleElement | undefined;  /** A utility for calling matchMedia queries. */ @Injectable({providedIn: 'root'}) export class MediaMatcher {   /** The internal matchMedia method to return back a MediaQueryList like object. */   private _matchMedia: (query: string) => MediaQueryList;    constructor(private _platform: Platform) {     this._matchMedia =       this._platform.isBrowser && window.matchMedia         ? // matchMedia is bound to the window scope intentionally as it is an illegal invocation to           // call it from a different scope.           window.matchMedia.bind(window)         : noopMatchMedia;   }    /**    * Evaluates the given media query and returns the native MediaQueryList from which results    * can be retrieved.    * Confirms the layout engine will trigger for the selector query provided and returns the    * MediaQueryList for the query provided.    */   matchMedia(query: string): MediaQueryList {     if (this._platform.WEBKIT || this._platform.BLINK) {       createEmptyStyleRule(query);     }     return this._matchMedia(query);   } }  /**  * Creates an empty stylesheet that is used to work around browser inconsistencies related to  * `matchMedia`. At the time of writing, it handles the following cases:  * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`  * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.  * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules  * inside the `@media` match existing elements on the page. We work around it by having one rule  * targeting the `body`. See https://github.com/angular/components/issues/23546.  */ function createEmptyStyleRule(query: string) {   if (mediaQueriesForWebkitCompatibility.has(query)) {     return;   }    try {     if (!mediaQueryStyleNode) {       mediaQueryStyleNode = document.createElement('style');       mediaQueryStyleNode.setAttribute('type', 'text/css');       document.head!.appendChild(mediaQueryStyleNode);     }      if (mediaQueryStyleNode.sheet) {       mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);       mediaQueriesForWebkitCompatibility.add(query);     }   } catch (e) {     console.error(e);   } }  /** No-op matchMedia replacement for non-browser platforms. */ function noopMatchMedia(query: string): MediaQueryList {   // Use `as any` here to avoid adding additional necessary properties for   // the noop matcher.   return {     matches: query === 'all' || query === '',     media: query,     addListener: () => {},     removeListener: () => {},   } as any; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {coerceArray} from '@angular/cdk/coercion'; import {Injectable, NgZone, OnDestroy} from '@angular/core'; import {combineLatest, concat, Observable, Observer, Subject} from 'rxjs'; import {debounceTime, map, skip, startWith, take, takeUntil} from 'rxjs/operators'; import {MediaMatcher} from './media-matcher';  /** The current state of a layout breakpoint. */ export interface BreakpointState {   /** Whether the breakpoint is currently matching. */   matches: boolean;   /**    * A key boolean pair for each query provided to the observe method,    * with its current matched state.    */   breakpoints: {     [key: string]: boolean;   }; }  /** The current state of a layout breakpoint. */ interface InternalBreakpointState {   /** Whether the breakpoint is currently matching. */   matches: boolean;   /** The media query being to be matched */   query: string; }  interface Query {   observable: Observable<InternalBreakpointState>;   mql: MediaQueryList; }  /** Utility for checking the matching state of @media queries. */ @Injectable({providedIn: 'root'}) export class BreakpointObserver implements OnDestroy {   /**  A map of all media queries currently being listened for. */   private _queries = new Map<string, Query>();   /** A subject for all other observables to takeUntil based on. */   private readonly _destroySubject = new Subject<void>();    constructor(private _mediaMatcher: MediaMatcher, private _zone: NgZone) {}    /** Completes the active subject, signalling to all other observables to complete. */   ngOnDestroy() {     this._destroySubject.next();     this._destroySubject.complete();   }    /**    * Whether one or more media queries match the current viewport size.    * @param value One or more media queries to check.    * @returns Whether any of the media queries match.    */   isMatched(value: string | readonly string[]): boolean {     const queries = splitQueries(coerceArray(value));     return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);   }    /**    * Gets an observable of results for the given queries that will emit new results for any changes    * in matching of the given queries.    * @param value One or more media queries to check.    * @returns A stream of matches for the given queries.    */   observe(value: string | readonly string[]): Observable<BreakpointState> {     const queries = splitQueries(coerceArray(value));     const observables = queries.map(query => this._registerQuery(query).observable);      let stateObservable = combineLatest(observables);     // Emit the first state immediately, and then debounce the subsequent emissions.     stateObservable = concat(       stateObservable.pipe(take(1)),       stateObservable.pipe(skip(1), debounceTime(0)),     );     return stateObservable.pipe(       map(breakpointStates => {         const response: BreakpointState = {           matches: false,           breakpoints: {},         };         breakpointStates.forEach(({matches, query}) => {           response.matches = response.matches || matches;           response.breakpoints[query] = matches;         });         return response;       }),     );   }    /** Registers a specific query to be listened for. */   private _registerQuery(query: string): Query {     // Only set up a new MediaQueryList if it is not already being listened for.     if (this._queries.has(query)) {       return this._queries.get(query)!;     }      const mql = this._mediaMatcher.matchMedia(query);      // Create callback for match changes and add it is as a listener.     const queryObservable = new Observable((observer: Observer<MediaQueryListEvent>) => {       // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed       // back into the zone because matchMedia is only included in Zone.js by loading the       // webapis-media-query.js file alongside the zone.js file.  Additionally, some browsers do not       // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js       // patches it.       const handler = (e: MediaQueryListEvent): void => this._zone.run(() => observer.next(e));       mql.addListener(handler);        return () => {         mql.removeListener(handler);       };     }).pipe(       startWith(mql),       map(({matches}) => ({query, matches})),       takeUntil(this._destroySubject),     );      // Add the MediaQueryList to the set of queries.     const output = {observable: queryObservable, mql};     this._queries.set(query, output);     return output;   } }  /**  * Split each query string into separate query strings if two queries are provided as comma  * separated.  */ function splitQueries(queries: readonly string[]): readonly string[] {   return queries     .map(query => query.split(','))     .reduce((a1, a2) => a1.concat(a2))     .map(query => query.trim()); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ // PascalCase is being used as Breakpoints is used like an enum. // tslint:disable-next-line:variable-name export const Breakpoints = {   XSmall: '(max-width: 599.98px)',   Small: '(min-width: 600px) and (max-width: 959.98px)',   Medium: '(min-width: 960px) and (max-width: 1279.98px)',   Large: '(min-width: 1280px) and (max-width: 1919.98px)',   XLarge: '(min-width: 1920px)',    Handset:     '(max-width: 599.98px) and (orientation: portrait), ' +     '(max-width: 959.98px) and (orientation: landscape)',   Tablet:     '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), ' +     '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',   Web:     '(min-width: 840px) and (orientation: portrait), ' +     '(min-width: 1280px) and (orientation: landscape)',    HandsetPortrait: '(max-width: 599.98px) and (orientation: portrait)',   TabletPortrait: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)',   WebPortrait: '(min-width: 840px) and (orientation: portrait)',    HandsetLandscape: '(max-width: 959.98px) and (orientation: landscape)',   TabletLandscape: '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',   WebLandscape: '(min-width: 1280px) and (orientation: landscape)', }; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export {LayoutModule} from './layout-module'; export {BreakpointObserver, BreakpointState} from './breakpoints-observer'; export {Breakpoints} from './breakpoints'; export {MediaMatcher} from './media-matcher'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["i1.MediaMatcher"],"mappings":"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"}
-------------------- SECTION 188 --------------------
{"version":3,"file":"selenium-webdriver.mjs","sources":["../../../../../../../src/cdk/testing/selenium-webdriver/selenium-webdriver-keys.ts","../../../../../../../src/cdk/testing/selenium-webdriver/selenium-web-driver-element.ts","../../../../../../../src/cdk/testing/selenium-webdriver/selenium-web-driver-harness-environment.ts","../../../../../../../src/cdk/testing/selenium-webdriver/public-api.ts","../../../../../../../src/cdk/testing/selenium-webdriver/index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ModifierKeys, TestKey} from '@angular/cdk/testing'; import * as webdriver from 'selenium-webdriver';  /**  * Maps the `TestKey` constants to WebDriver's `webdriver.Key` constants.  * See https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/webdriver/key.js#L29  */ export const seleniumWebDriverKeyMap = {   [TestKey.BACKSPACE]: webdriver.Key.BACK_SPACE,   [TestKey.TAB]: webdriver.Key.TAB,   [TestKey.ENTER]: webdriver.Key.ENTER,   [TestKey.SHIFT]: webdriver.Key.SHIFT,   [TestKey.CONTROL]: webdriver.Key.CONTROL,   [TestKey.ALT]: webdriver.Key.ALT,   [TestKey.ESCAPE]: webdriver.Key.ESCAPE,   [TestKey.PAGE_UP]: webdriver.Key.PAGE_UP,   [TestKey.PAGE_DOWN]: webdriver.Key.PAGE_DOWN,   [TestKey.END]: webdriver.Key.END,   [TestKey.HOME]: webdriver.Key.HOME,   [TestKey.LEFT_ARROW]: webdriver.Key.ARROW_LEFT,   [TestKey.UP_ARROW]: webdriver.Key.ARROW_UP,   [TestKey.RIGHT_ARROW]: webdriver.Key.ARROW_RIGHT,   [TestKey.DOWN_ARROW]: webdriver.Key.ARROW_DOWN,   [TestKey.INSERT]: webdriver.Key.INSERT,   [TestKey.DELETE]: webdriver.Key.DELETE,   [TestKey.F1]: webdriver.Key.F1,   [TestKey.F2]: webdriver.Key.F2,   [TestKey.F3]: webdriver.Key.F3,   [TestKey.F4]: webdriver.Key.F4,   [TestKey.F5]: webdriver.Key.F5,   [TestKey.F6]: webdriver.Key.F6,   [TestKey.F7]: webdriver.Key.F7,   [TestKey.F8]: webdriver.Key.F8,   [TestKey.F9]: webdriver.Key.F9,   [TestKey.F10]: webdriver.Key.F10,   [TestKey.F11]: webdriver.Key.F11,   [TestKey.F12]: webdriver.Key.F12,   [TestKey.META]: webdriver.Key.META, };  /** Gets a list of WebDriver `Key`s for the given `ModifierKeys`. */ export function getSeleniumWebDriverModifierKeys(modifiers: ModifierKeys): string[] {   const result: string[] = [];   if (modifiers.control) {     result.push(webdriver.Key.CONTROL);   }   if (modifiers.alt) {     result.push(webdriver.Key.ALT);   }   if (modifiers.shift) {     result.push(webdriver.Key.SHIFT);   }   if (modifiers.meta) {     result.push(webdriver.Key.META);   }   return result; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   _getTextWithExcludedElements,   ElementDimensions,   EventData,   getNoKeysSpecifiedError,   ModifierKeys,   TestElement,   TestKey,   TextOptions, } from '@angular/cdk/testing'; import * as webdriver from 'selenium-webdriver'; import {getSeleniumWebDriverModifierKeys, seleniumWebDriverKeyMap} from './selenium-webdriver-keys';  /** A `TestElement` implementation for WebDriver. */ export class SeleniumWebDriverElement implements TestElement {   constructor(     readonly element: () => webdriver.WebElement,     private _stabilize: () => Promise<void>,   ) {}    /** Blur the element. */   async blur(): Promise<void> {     await this._executeScript((element: HTMLElement) => element.blur(), this.element());     await this._stabilize();   }    /** Clear the element's input (for input and textarea elements only). */   async clear(): Promise<void> {     await this.element().clear();     await this._stabilize();   }    /**    * Click the element at the default location for the current environment. If you need to guarantee    * the element is clicked at a specific location, consider using `click('center')` or    * `click(x, y)` instead.    */   click(modifiers?: ModifierKeys): Promise<void>;   /** Click the element at the element's center. */   click(location: 'center', modifiers?: ModifierKeys): Promise<void>;   /**    * Click the element at the specified coordinates relative to the top-left of the element.    * @param relativeX Coordinate within the element, along the X-axis at which to click.    * @param relativeY Coordinate within the element, along the Y-axis at which to click.    * @param modifiers Modifier keys held while clicking    */   click(relativeX: number, relativeY: number, modifiers?: ModifierKeys): Promise<void>;   async click(     ...args: [ModifierKeys?] | ['center', ModifierKeys?] | [number, number, ModifierKeys?]   ): Promise<void> {     await this._dispatchClickEventSequence(args, webdriver.Button.LEFT);     await this._stabilize();   }    /**    * Right clicks on the element at the specified coordinates relative to the top-left of it.    * @param relativeX Coordinate within the element, along the X-axis at which to click.    * @param relativeY Coordinate within the element, along the Y-axis at which to click.    * @param modifiers Modifier keys held while clicking    */   rightClick(relativeX: number, relativeY: number, modifiers?: ModifierKeys): Promise<void>;   async rightClick(     ...args: [ModifierKeys?] | ['center', ModifierKeys?] | [number, number, ModifierKeys?]   ): Promise<void> {     await this._dispatchClickEventSequence(args, webdriver.Button.RIGHT);     await this._stabilize();   }    /** Focus the element. */   async focus(): Promise<void> {     await this._executeScript((element: HTMLElement) => element.focus(), this.element());     await this._stabilize();   }    /** Get the computed value of the given CSS property for the element. */   async getCssValue(property: string): Promise<string> {     await this._stabilize();     return this.element().getCssValue(property);   }    /** Hovers the mouse over the element. */   async hover(): Promise<void> {     await this._actions().mouseMove(this.element()).perform();     await this._stabilize();   }    /** Moves the mouse away from the element. */   async mouseAway(): Promise<void> {     await this._actions().mouseMove(this.element(), {x: -1, y: -1}).perform();     await this._stabilize();   }    /**    * Sends the given string to the input as a series of key presses. Also fires input events    * and attempts to add the string to the Element's value.    */   async sendKeys(...keys: (string | TestKey)[]): Promise<void>;   /**    * Sends the given string to the input as a series of key presses. Also fires input events    * and attempts to add the string to the Element's value.    */   async sendKeys(modifiers: ModifierKeys, ...keys: (string | TestKey)[]): Promise<void>;   async sendKeys(...modifiersAndKeys: any[]): Promise<void> {     const first = modifiersAndKeys[0];     let modifiers: ModifierKeys;     let rest: (string | TestKey)[];     if (first !== undefined && typeof first !== 'string' && typeof first !== 'number') {       modifiers = first;       rest = modifiersAndKeys.slice(1);     } else {       modifiers = {};       rest = modifiersAndKeys;     }      const modifierKeys = getSeleniumWebDriverModifierKeys(modifiers);     const keys = rest       .map(k => (typeof k === 'string' ? k.split('') : [seleniumWebDriverKeyMap[k]]))       .reduce((arr, k) => arr.concat(k), [])       // webdriver.Key.chord doesn't work well with geckodriver (mozilla/geckodriver#1502),       // so avoid it if no modifier keys are required.       .map(k => (modifierKeys.length > 0 ? webdriver.Key.chord(...modifierKeys, k) : k));      // Throw an error if no keys have been specified. Calling this function with no     // keys should not result in a focus event being dispatched unexpectedly.     if (keys.length === 0) {       throw getNoKeysSpecifiedError();     }      await this.element().sendKeys(...keys);     await this._stabilize();   }    /**    * Gets the text from the element.    * @param options Options that affect what text is included.    */   async text(options?: TextOptions): Promise<string> {     await this._stabilize();     if (options?.exclude) {       return this._executeScript(_getTextWithExcludedElements, this.element(), options.exclude);     }     // We don't go through the WebDriver `getText`, because it excludes text from hidden elements.     return this._executeScript(       (element: Element) => (element.textContent || '').trim(),       this.element(),     );   }    /**    * Sets the value of a `contenteditable` element.    * @param value Value to be set on the element.    */   async setContenteditableValue(value: string): Promise<void> {     const contenteditableAttr = await this.getAttribute('contenteditable');      if (contenteditableAttr !== '' && contenteditableAttr !== 'true') {       throw new Error('setContenteditableValue can only be called on a `contenteditable` element.');     }      await this._stabilize();     return this._executeScript(       (element: Element, valueToSet: string) => (element.textContent = valueToSet),       this.element(),       value,     );   }    /** Gets the value for the given attribute from the element. */   async getAttribute(name: string): Promise<string | null> {     await this._stabilize();     return this._executeScript(       (element: Element, attribute: string) => element.getAttribute(attribute),       this.element(),       name,     );   }    /** Checks whether the element has the given class. */   async hasClass(name: string): Promise<boolean> {     await this._stabilize();     const classes = (await this.getAttribute('class')) || '';     return new Set(classes.split(/\\s+/).filter(c => c)).has(name);   }    /** Gets the dimensions of the element. */   async getDimensions(): Promise<ElementDimensions> {     await this._stabilize();     const {width, height} = await this.element().getSize();     const {x: left, y: top} = await this.element().getLocation();     return {width, height, left, top};   }    /** Gets the value of a property of an element. */   async getProperty<T = any>(name: string): Promise<T> {     await this._stabilize();     return this._executeScript(       (element: Element, property: keyof Element) => element[property],       this.element(),       name,     );   }    /** Sets the value of a property of an input. */   async setInputValue(newValue: string): Promise<void> {     await this._executeScript(       (element: HTMLInputElement, value: string) => (element.value = value),       this.element(),       newValue,     );     await this._stabilize();   }    /** Selects the options at the specified indexes inside of a native `select` element. */   async selectOptions(...optionIndexes: number[]): Promise<void> {     await this._stabilize();     const options = await this.element().findElements(webdriver.By.css('option'));     const indexes = new Set(optionIndexes); // Convert to a set to remove duplicates.      if (options.length && indexes.size) {       // Reset the value so all the selected states are cleared. We can       // reuse the input-specific method since the logic is the same.       await this.setInputValue('');        for (let i = 0; i < options.length; i++) {         if (indexes.has(i)) {           // We have to hold the control key while clicking on options so that multiple can be           // selected in multi-selection mode. The key doesn't do anything for single selection.           await this._actions().keyDown(webdriver.Key.CONTROL).perform();           await options[i].click();           await this._actions().keyUp(webdriver.Key.CONTROL).perform();         }       }        await this._stabilize();     }   }    /** Checks whether this element matches the given selector. */   async matchesSelector(selector: string): Promise<boolean> {     await this._stabilize();     return this._executeScript(       (element: Element, s: string) =>         (Element.prototype.matches || (Element.prototype as any).msMatchesSelector).call(           element,           s,         ),       this.element(),       selector,     );   }    /** Checks whether the element is focused. */   async isFocused(): Promise<boolean> {     await this._stabilize();     return webdriver.WebElement.equals(       this.element(),       this.element().getDriver().switchTo().activeElement(),     );   }    /**    * Dispatches an event with a particular name.    * @param name Name of the event to be dispatched.    */   async dispatchEvent(name: string, data?: Record<string, EventData>): Promise<void> {     await this._executeScript(dispatchEvent, name, this.element(), data);     await this._stabilize();   }    /** Gets the webdriver action sequence. */   private _actions() {     return this.element().getDriver().actions();   }    /** Executes a function in the browser. */   private async _executeScript<T>(script: Function, ...var_args: any[]): Promise<T> {     return this.element()       .getDriver()       .executeScript(script, ...var_args);   }    /** Dispatches all the events that are part of a click event sequence. */   private async _dispatchClickEventSequence(     args: [ModifierKeys?] | ['center', ModifierKeys?] | [number, number, ModifierKeys?],     button: string,   ) {     let modifiers: ModifierKeys = {};     if (args.length && typeof args[args.length - 1] === 'object') {       modifiers = args.pop() as ModifierKeys;     }     const modifierKeys = getSeleniumWebDriverModifierKeys(modifiers);      // Omitting the offset argument to mouseMove results in clicking the center.     // This is the default behavior we want, so we use an empty array of offsetArgs if     // no args remain after popping the modifiers from the args passed to this function.     const offsetArgs = (args.length === 2 ? [{x: args[0], y: args[1]}] : []) as [       {x: number; y: number},     ];      let actions = this._actions().mouseMove(this.element(), ...offsetArgs);      for (const modifierKey of modifierKeys) {       actions = actions.keyDown(modifierKey);     }     actions = actions.click(button);     for (const modifierKey of modifierKeys) {       actions = actions.keyUp(modifierKey);     }      await actions.perform();   } }  /**  * Dispatches an event with a particular name and data to an element. Note that this needs to be a  * pure function, because it gets stringified by WebDriver and is executed inside the browser.  */ function dispatchEvent(name: string, element: Element, data?: Record<string, EventData>) {   const event = document.createEvent('Event');   event.initEvent(name);   // tslint:disable-next-line:ban Have to use `Object.assign` to preserve the original object.   Object.assign(event, data || {});   element.dispatchEvent(event); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HarnessEnvironment, HarnessLoader, TestElement} from '@angular/cdk/testing'; import * as webdriver from 'selenium-webdriver'; import {SeleniumWebDriverElement} from './selenium-web-driver-element';  /**  * An Angular framework stabilizer function that takes a callback and calls it when the application  * is stable, passing a boolean indicating if any work was done.  */ declare interface FrameworkStabilizer {   (callback: (didWork: boolean) => void): void; }  declare global {   interface Window {     /**      * These hooks are exposed by Angular to register a callback for when the application is stable      * (no more pending tasks).      *      * For the implementation, see: https://github.com/      *  angular/angular/blob/main/packages/platform-browser/src/browser/testability.ts#L30-L49      */     frameworkStabilizers: FrameworkStabilizer[];   } }  /** Options to configure the environment. */ export interface WebDriverHarnessEnvironmentOptions {   /** The query function used to find DOM elements. */   queryFn: (selector: string, root: () => webdriver.WebElement) => Promise<webdriver.WebElement[]>; }  /** The default environment options. */ const defaultEnvironmentOptions: WebDriverHarnessEnvironmentOptions = {   queryFn: async (selector: string, root: () => webdriver.WebElement) =>     root().findElements(webdriver.By.css(selector)), };  /**  * This function is meant to be executed in the browser. It taps into the hooks exposed by Angular  * and invokes the specified `callback` when the application is stable (no more pending tasks).  */ function whenStable(callback: (didWork: boolean[]) => void): void {   Promise.all(window.frameworkStabilizers.map(stabilizer => new Promise(stabilizer))).then(     callback,   ); }  /**  * This function is meant to be executed in the browser. It checks whether the Angular framework has  * bootstrapped yet.  */ function isBootstrapped() {   return !!window.frameworkStabilizers; }  /** Waits for angular to be ready after the page load. */ export async function waitForAngularReady(wd: webdriver.WebDriver) {   await wd.wait(() => wd.executeScript(isBootstrapped));   await wd.executeAsyncScript(whenStable); }  /** A `HarnessEnvironment` implementation for WebDriver. */ export class SeleniumWebDriverHarnessEnvironment extends HarnessEnvironment<   () => webdriver.WebElement > {   /** The options for this environment. */   private _options: WebDriverHarnessEnvironmentOptions;    /** Environment stabilization callback passed to the created test elements. */   private _stabilizeCallback: () => Promise<void>;    protected constructor(     rawRootElement: () => webdriver.WebElement,     options?: WebDriverHarnessEnvironmentOptions,   ) {     super(rawRootElement);     this._options = {...defaultEnvironmentOptions, ...options};     this._stabilizeCallback = () => this.forceStabilize();   }    /** Gets the ElementFinder corresponding to the given TestElement. */   static getNativeElement(el: TestElement): webdriver.WebElement {     if (el instanceof SeleniumWebDriverElement) {       return el.element();     }     throw Error('This TestElement was not created by the WebDriverHarnessEnvironment');   }    /** Creates a `HarnessLoader` rooted at the document root. */   static loader(     driver: webdriver.WebDriver,     options?: WebDriverHarnessEnvironmentOptions,   ): HarnessLoader {     return new SeleniumWebDriverHarnessEnvironment(       () => driver.findElement(webdriver.By.css('body')),       options,     );   }    /**    * Flushes change detection and async tasks captured in the Angular zone.    * In most cases it should not be necessary to call this manually. However, there may be some edge    * cases where it is needed to fully flush animation events.    */   async forceStabilize(): Promise<void> {     await this.rawRootElement().getDriver().executeAsyncScript(whenStable);   }    /** @docs-private */   async waitForTasksOutsideAngular(): Promise<void> {     // TODO: figure out how we can do this for the webdriver environment.     //  https://github.com/angular/components/issues/17412   }    /** Gets the root element for the document. */   protected getDocumentRoot(): () => webdriver.WebElement {     return () => this.rawRootElement().getDriver().findElement(webdriver.By.css('body'));   }    /** Creates a `TestElement` from a raw element. */   protected createTestElement(element: () => webdriver.WebElement): TestElement {     return new SeleniumWebDriverElement(element, this._stabilizeCallback);   }    /** Creates a `HarnessLoader` rooted at the given raw element. */   protected createEnvironment(     element: () => webdriver.WebElement,   ): HarnessEnvironment<() => webdriver.WebElement> {     return new SeleniumWebDriverHarnessEnvironment(element, this._options);   }    // Note: This seems to be working, though we may need to re-evaluate if we encounter issues with   // stale element references. `() => Promise<webdriver.WebElement[]>` seems like a more correct   // return type, though supporting it would require changes to the public harness API.   /**    * Gets a list of all elements matching the given selector under this environment's root element.    */   protected async getAllRawElements(selector: string): Promise<(() => webdriver.WebElement)[]> {     const els = await this._options.queryFn(selector, this.rawRootElement);     return els.map((x: webdriver.WebElement) => () => x);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './selenium-web-driver-element'; export * from './selenium-web-driver-harness-environment'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; "],"names":[],"mappings":"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"}
-------------------- SECTION 189 --------------------
{"version":3,"file":"drag-drop.mjs","sources":["../../../../../../src/cdk/drag-drop/dom/styling.ts","../../../../../../src/cdk/drag-drop/dom/transition-duration.ts","../../../../../../src/cdk/drag-drop/dom/client-rect.ts","../../../../../../src/cdk/drag-drop/dom/parent-position-tracker.ts","../../../../../../src/cdk/drag-drop/dom/clone-node.ts","../../../../../../src/cdk/drag-drop/drag-ref.ts","../../../../../../src/cdk/drag-drop/drag-utils.ts","../../../../../../src/cdk/drag-drop/sorting/single-axis-sort-strategy.ts","../../../../../../src/cdk/drag-drop/drop-list-ref.ts","../../../../../../src/cdk/drag-drop/drag-drop-registry.ts","../../../../../../src/cdk/drag-drop/drag-drop.ts","../../../../../../src/cdk/drag-drop/drag-parent.ts","../../../../../../src/cdk/drag-drop/directives/drop-list-group.ts","../../../../../../src/cdk/drag-drop/directives/config.ts","../../../../../../src/cdk/drag-drop/directives/assertions.ts","../../../../../../src/cdk/drag-drop/directives/drop-list.ts","../../../../../../src/cdk/drag-drop/directives/drag-handle.ts","../../../../../../src/cdk/drag-drop/directives/drag-placeholder.ts","../../../../../../src/cdk/drag-drop/directives/drag-preview.ts","../../../../../../src/cdk/drag-drop/directives/drag.ts","../../../../../../src/cdk/drag-drop/drag-drop-module.ts","../../../../../../src/cdk/drag-drop/public-api.ts","../../../../../../src/cdk/drag-drop/index.ts","../../../../../../src/cdk/drag-drop/drag-drop_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Extended CSSStyleDeclaration that includes a couple of drag-related  * properties that aren't in the built-in TS typings.  */ export interface DragCSSStyleDeclaration extends CSSStyleDeclaration {   msScrollSnapType: string;   scrollSnapType: string;   webkitTapHighlightColor: string; }  /**  * Shallow-extends a stylesheet object with another stylesheet-like object.  * Note that the keys in `source` have to be dash-cased.  * @docs-private  */ export function extendStyles(   dest: CSSStyleDeclaration,   source: Record<string, string>,   importantProperties?: Set<string>, ) {   for (let key in source) {     if (source.hasOwnProperty(key)) {       const value = source[key];        if (value) {         dest.setProperty(key, value, importantProperties?.has(key) ? 'important' : '');       } else {         dest.removeProperty(key);       }     }   }    return dest; }  /**  * Toggles whether the native drag interactions should be enabled for an element.  * @param element Element on which to toggle the drag interactions.  * @param enable Whether the drag interactions should be enabled.  * @docs-private  */ export function toggleNativeDragInteractions(element: HTMLElement, enable: boolean) {   const userSelect = enable ? '' : 'none';    extendStyles(element.style, {     'touch-action': enable ? '' : 'none',     '-webkit-user-drag': enable ? '' : 'none',     '-webkit-tap-highlight-color': enable ? '' : 'transparent',     'user-select': userSelect,     '-ms-user-select': userSelect,     '-webkit-user-select': userSelect,     '-moz-user-select': userSelect,   }); }  /**  * Toggles whether an element is visible while preserving its dimensions.  * @param element Element whose visibility to toggle  * @param enable Whether the element should be visible.  * @param importantProperties Properties to be set as `!important`.  * @docs-private  */ export function toggleVisibility(   element: HTMLElement,   enable: boolean,   importantProperties?: Set<string>, ) {   extendStyles(     element.style,     {       position: enable ? '' : 'fixed',       top: enable ? '' : '0',       opacity: enable ? '' : '0',       left: enable ? '' : '-999em',     },     importantProperties,   ); }  /**  * Combines a transform string with an optional other transform  * that exited before the base transform was applied.  */ export function combineTransforms(transform: string, initialTransform?: string): string {   return initialTransform && initialTransform != 'none'     ? transform + ' ' + initialTransform     : transform; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Parses a CSS time value to milliseconds. */ function parseCssTimeUnitsToMs(value: string): number {   // Some browsers will return it in seconds, whereas others will return milliseconds.   const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;   return parseFloat(value) * multiplier; }  /** Gets the transform transition duration, including the delay, of an element in milliseconds. */ export function getTransformTransitionDurationInMs(element: HTMLElement): number {   const computedStyle = getComputedStyle(element);   const transitionedProperties = parseCssPropertyValue(computedStyle, 'transition-property');   const property = transitionedProperties.find(prop => prop === 'transform' || prop === 'all');    // If there's no transition for `all` or `transform`, we shouldn't do anything.   if (!property) {     return 0;   }    // Get the index of the property that we're interested in and match   // it up to the same index in `transition-delay` and `transition-duration`.   const propertyIndex = transitionedProperties.indexOf(property);   const rawDurations = parseCssPropertyValue(computedStyle, 'transition-duration');   const rawDelays = parseCssPropertyValue(computedStyle, 'transition-delay');    return (     parseCssTimeUnitsToMs(rawDurations[propertyIndex]) +     parseCssTimeUnitsToMs(rawDelays[propertyIndex])   ); }  /** Parses out multiple values from a computed style into an array. */ function parseCssPropertyValue(computedStyle: CSSStyleDeclaration, name: string): string[] {   const value = computedStyle.getPropertyValue(name);   return value.split(',').map(part => part.trim()); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Gets a mutable version of an element's bounding `ClientRect`. */ export function getMutableClientRect(element: Element): ClientRect {   const clientRect = element.getBoundingClientRect();    // We need to clone the `clientRect` here, because all the values on it are readonly   // and we need to be able to update them. Also we can't use a spread here, because   // the values on a `ClientRect` aren't own properties. See:   // https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect#Notes   return {     top: clientRect.top,     right: clientRect.right,     bottom: clientRect.bottom,     left: clientRect.left,     width: clientRect.width,     height: clientRect.height,     x: clientRect.x,     y: clientRect.y,   } as ClientRect; }  /**  * Checks whether some coordinates are within a `ClientRect`.  * @param clientRect ClientRect that is being checked.  * @param x Coordinates along the X axis.  * @param y Coordinates along the Y axis.  */ export function isInsideClientRect(clientRect: ClientRect, x: number, y: number) {   const {top, bottom, left, right} = clientRect;   return y >= top && y <= bottom && x >= left && x <= right; }  /**  * Updates the top/left positions of a `ClientRect`, as well as their bottom/right counterparts.  * @param clientRect `ClientRect` that should be updated.  * @param top Amount to add to the `top` position.  * @param left Amount to add to the `left` position.  */ export function adjustClientRect(   clientRect: {     top: number;     bottom: number;     left: number;     right: number;     width: number;     height: number;   },   top: number,   left: number, ) {   clientRect.top += top;   clientRect.bottom = clientRect.top + clientRect.height;    clientRect.left += left;   clientRect.right = clientRect.left + clientRect.width; }  /**  * Checks whether the pointer coordinates are close to a ClientRect.  * @param rect ClientRect to check against.  * @param threshold Threshold around the ClientRect.  * @param pointerX Coordinates along the X axis.  * @param pointerY Coordinates along the Y axis.  */ export function isPointerNearClientRect(   rect: ClientRect,   threshold: number,   pointerX: number,   pointerY: number, ): boolean {   const {top, right, bottom, left, width, height} = rect;   const xThreshold = width * threshold;   const yThreshold = height * threshold;    return (     pointerY > top - yThreshold &&     pointerY < bottom + yThreshold &&     pointerX > left - xThreshold &&     pointerX < right + xThreshold   ); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {_getEventTarget} from '@angular/cdk/platform'; import {getMutableClientRect, adjustClientRect} from './client-rect';  /** Object holding the scroll position of something. */ interface ScrollPosition {   top: number;   left: number; }  /** Keeps track of the scroll position and dimensions of the parents of an element. */ export class ParentPositionTracker {   /** Cached positions of the scrollable parent elements. */   readonly positions = new Map<     Document | HTMLElement,     {       scrollPosition: ScrollPosition;       clientRect?: ClientRect;     }   >();    constructor(private _document: Document) {}    /** Clears the cached positions. */   clear() {     this.positions.clear();   }    /** Caches the positions. Should be called at the beginning of a drag sequence. */   cache(elements: readonly HTMLElement[]) {     this.clear();     this.positions.set(this._document, {       scrollPosition: this.getViewportScrollPosition(),     });      elements.forEach(element => {       this.positions.set(element, {         scrollPosition: {top: element.scrollTop, left: element.scrollLeft},         clientRect: getMutableClientRect(element),       });     });   }    /** Handles scrolling while a drag is taking place. */   handleScroll(event: Event): ScrollPosition | null {     const target = _getEventTarget<HTMLElement | Document>(event)!;     const cachedPosition = this.positions.get(target);      if (!cachedPosition) {       return null;     }      const scrollPosition = cachedPosition.scrollPosition;     let newTop: number;     let newLeft: number;      if (target === this._document) {       const viewportScrollPosition = this.getViewportScrollPosition();       newTop = viewportScrollPosition.top;       newLeft = viewportScrollPosition.left;     } else {       newTop = (target as HTMLElement).scrollTop;       newLeft = (target as HTMLElement).scrollLeft;     }      const topDifference = scrollPosition.top - newTop;     const leftDifference = scrollPosition.left - newLeft;      // Go through and update the cached positions of the scroll     // parents that are inside the element that was scrolled.     this.positions.forEach((position, node) => {       if (position.clientRect && target !== node && target.contains(node)) {         adjustClientRect(position.clientRect, topDifference, leftDifference);       }     });      scrollPosition.top = newTop;     scrollPosition.left = newLeft;      return {top: topDifference, left: leftDifference};   }    /**    * Gets the scroll position of the viewport. Note that we use the scrollX and scrollY directly,    * instead of going through the `ViewportRuler`, because the first value the ruler looks at is    * the top/left offset of the `document.documentElement` which works for most cases, but breaks    * if the element is offset by something like the `BlockScrollStrategy`.    */   getViewportScrollPosition() {     return {top: window.scrollY, left: window.scrollX};   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Creates a deep clone of an element. */ export function deepCloneNode(node: HTMLElement): HTMLElement {   const clone = node.cloneNode(true) as HTMLElement;   const descendantsWithId = clone.querySelectorAll('[id]');   const nodeName = node.nodeName.toLowerCase();    // Remove the `id` to avoid having multiple elements with the same id on the page.   clone.removeAttribute('id');    for (let i = 0; i < descendantsWithId.length; i++) {     descendantsWithId[i].removeAttribute('id');   }    if (nodeName === 'canvas') {     transferCanvasData(node as HTMLCanvasElement, clone as HTMLCanvasElement);   } else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {     transferInputData(node as HTMLInputElement, clone as HTMLInputElement);   }    transferData('canvas', node, clone, transferCanvasData);   transferData('input, textarea, select', node, clone, transferInputData);   return clone; }  /** Matches elements between an element and its clone and allows for their data to be cloned. */ function transferData<T extends Element>(   selector: string,   node: HTMLElement,   clone: HTMLElement,   callback: (source: T, clone: T) => void, ) {   const descendantElements = node.querySelectorAll<T>(selector);    if (descendantElements.length) {     const cloneElements = clone.querySelectorAll<T>(selector);      for (let i = 0; i < descendantElements.length; i++) {       callback(descendantElements[i], cloneElements[i]);     }   } }  // Counter for unique cloned radio button names. let cloneUniqueId = 0;  /** Transfers the data of one input element to another. */ function transferInputData(   source: Element & {value: string},   clone: Element & {value: string; name: string; type: string}, ) {   // Browsers throw an error when assigning the value of a file input programmatically.   if (clone.type !== 'file') {     clone.value = source.value;   }    // Radio button `name` attributes must be unique for radio button groups   // otherwise original radio buttons can lose their checked state   // once the clone is inserted in the DOM.   if (clone.type === 'radio' && clone.name) {     clone.name = `mat-clone-${clone.name}-${cloneUniqueId++}`;   } }  /** Transfers the data of one canvas element to another. */ function transferCanvasData(source: HTMLCanvasElement, clone: HTMLCanvasElement) {   const context = clone.getContext('2d');    if (context) {     // In some cases `drawImage` can throw (e.g. if the canvas size is 0x0).     // We can't do much about it so just ignore the error.     try {       context.drawImage(source, 0, 0);     } catch {}   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EmbeddedViewRef, ElementRef, NgZone, ViewContainerRef, TemplateRef} from '@angular/core'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {Direction} from '@angular/cdk/bidi'; import {   normalizePassiveListenerOptions,   _getEventTarget,   _getShadowRoot, } from '@angular/cdk/platform'; import {coerceBooleanProperty, coerceElement} from '@angular/cdk/coercion'; import {isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader} from '@angular/cdk/a11y'; import {Subscription, Subject, Observable} from 'rxjs'; import {DropListRefInternal as DropListRef} from './drop-list-ref'; import {DragDropRegistry} from './drag-drop-registry'; import {   combineTransforms,   DragCSSStyleDeclaration,   extendStyles,   toggleNativeDragInteractions,   toggleVisibility, } from './dom/styling'; import {getTransformTransitionDurationInMs} from './dom/transition-duration'; import {getMutableClientRect, adjustClientRect} from './dom/client-rect'; import {ParentPositionTracker} from './dom/parent-position-tracker'; import {deepCloneNode} from './dom/clone-node';  /** Object that can be used to configure the behavior of DragRef. */ export interface DragRefConfig {   /**    * Minimum amount of pixels that the user should    * drag, before the CDK initiates a drag sequence.    */   dragStartThreshold: number;    /**    * Amount the pixels the user should drag before the CDK    * considers them to have changed the drag direction.    */   pointerDirectionChangeThreshold: number;    /** `z-index` for the absolutely-positioned elements that are created by the drag item. */   zIndex?: number;    /** Ref that the current drag item is nested in. */   parentDragRef?: DragRef; }  /** Options that can be used to bind a passive event listener. */ const passiveEventListenerOptions = normalizePassiveListenerOptions({passive: true});  /** Options that can be used to bind an active event listener. */ const activeEventListenerOptions = normalizePassiveListenerOptions({passive: false});  /**  * Time in milliseconds for which to ignore mouse events, after  * receiving a touch event. Used to avoid doing double work for  * touch devices where the browser fires fake mouse events, in  * addition to touch events.  */ const MOUSE_EVENT_IGNORE_TIME = 800;  // TODO(crisbeto): add an API for moving a draggable up/down the // list programmatically. Useful for keyboard controls.  /**  * Internal compile-time-only representation of a `DragRef`.  * Used to avoid circular import issues between the `DragRef` and the `DropListRef`.  * @docs-private  */ export interface DragRefInternal extends DragRef {}  /** Template that can be used to create a drag helper element (e.g. a preview or a placeholder). */ interface DragHelperTemplate<T = any> {   template: TemplateRef<T> | null;   viewContainer: ViewContainerRef;   context: T; }  /** Template that can be used to create a drag preview element. */ interface DragPreviewTemplate<T = any> extends DragHelperTemplate<T> {   matchSize?: boolean; }  /** Point on the page or within an element. */ export interface Point {   x: number;   y: number; }  /** Inline styles to be set as `!important` while dragging. */ const dragImportantProperties = new Set([   // Needs to be important, because some `mat-table` sets `position: sticky !important`. See #22781.   'position', ]);  /**  * Possible places into which the preview of a drag item can be inserted.  * - `global` - Preview will be inserted at the bottom of the `<body>`. The advantage is that  * you don't have to worry about `overflow: hidden` or `z-index`, but the item won't retain  * its inherited styles.  * - `parent` - Preview will be inserted into the parent of the drag item. The advantage is that  * inherited styles will be preserved, but it may be clipped by `overflow: hidden` or not be  * visible due to `z-index`. Furthermore, the preview is going to have an effect over selectors  * like `:nth-child` and some flexbox configurations.  * - `ElementRef<HTMLElement> | HTMLElement` - Preview will be inserted into a specific element.  * Same advantages and disadvantages as `parent`.  */ export type PreviewContainer = 'global' | 'parent' | ElementRef<HTMLElement> | HTMLElement;  /**  * Reference to a draggable item. Used to manipulate or dispose of the item.  */ export class DragRef<T = any> {   /** Element displayed next to the user's pointer while the element is dragged. */   private _preview: HTMLElement;    /** Reference to the view of the preview element. */   private _previewRef: EmbeddedViewRef<any> | null;    /** Container into which to insert the preview. */   private _previewContainer: PreviewContainer | undefined;    /** Reference to the view of the placeholder element. */   private _placeholderRef: EmbeddedViewRef<any> | null;    /** Element that is rendered instead of the draggable item while it is being sorted. */   private _placeholder: HTMLElement;    /** Coordinates within the element at which the user picked up the element. */   private _pickupPositionInElement: Point;    /** Coordinates on the page at which the user picked up the element. */   private _pickupPositionOnPage: Point;    /**    * Anchor node used to save the place in the DOM where the element was    * picked up so that it can be restored at the end of the drag sequence.    */   private _anchor: Comment;    /**    * CSS `transform` applied to the element when it isn't being dragged. We need a    * passive transform in order for the dragged element to retain its new position    * after the user has stopped dragging and because we need to know the relative    * position in case they start dragging again. This corresponds to `element.style.transform`.    */   private _passiveTransform: Point = {x: 0, y: 0};    /** CSS `transform` that is applied to the element while it's being dragged. */   private _activeTransform: Point = {x: 0, y: 0};    /** Inline `transform` value that the element had before the first dragging sequence. */   private _initialTransform?: string;    /**    * Whether the dragging sequence has been started. Doesn't    * necessarily mean that the element has been moved.    */   private _hasStartedDragging = false;    /** Whether the element has moved since the user started dragging it. */   private _hasMoved: boolean;    /** Drop container in which the DragRef resided when dragging began. */   private _initialContainer: DropListRef;    /** Index at which the item started in its initial container. */   private _initialIndex: number;    /** Cached positions of scrollable parent elements. */   private _parentPositions: ParentPositionTracker;    /** Emits when the item is being moved. */   private readonly _moveEvents = new Subject<{     source: DragRef;     pointerPosition: {x: number; y: number};     event: MouseEvent | TouchEvent;     distance: Point;     delta: {x: -1 | 0 | 1; y: -1 | 0 | 1};   }>();    /** Keeps track of the direction in which the user is dragging along each axis. */   private _pointerDirectionDelta: {x: -1 | 0 | 1; y: -1 | 0 | 1};    /** Pointer position at which the last change in the delta occurred. */   private _pointerPositionAtLastDirectionChange: Point;    /** Position of the pointer at the last pointer event. */   private _lastKnownPointerPosition: Point;    /**    * Root DOM node of the drag instance. This is the element that will    * be moved around as the user is dragging.    */   private _rootElement: HTMLElement;    /**    * Nearest ancestor SVG, relative to which coordinates are calculated if dragging SVGElement    */   private _ownerSVGElement: SVGSVGElement | null;    /**    * Inline style value of `-webkit-tap-highlight-color` at the time the    * dragging was started. Used to restore the value once we're done dragging.    */   private _rootElementTapHighlight: string;    /** Subscription to pointer movement events. */   private _pointerMoveSubscription = Subscription.EMPTY;    /** Subscription to the event that is dispatched when the user lifts their pointer. */   private _pointerUpSubscription = Subscription.EMPTY;    /** Subscription to the viewport being scrolled. */   private _scrollSubscription = Subscription.EMPTY;    /** Subscription to the viewport being resized. */   private _resizeSubscription = Subscription.EMPTY;    /**    * Time at which the last touch event occurred. Used to avoid firing the same    * events multiple times on touch devices where the browser will fire a fake    * mouse event for each touch event, after a certain time.    */   private _lastTouchEventTime: number;    /** Time at which the last dragging sequence was started. */   private _dragStartTime: number;    /** Cached reference to the boundary element. */   private _boundaryElement: HTMLElement | null = null;    /** Whether the native dragging interactions have been enabled on the root element. */   private _nativeInteractionsEnabled = true;    /** Client rect of the root element when the dragging sequence has started. */   private _initialClientRect?: ClientRect;    /** Cached dimensions of the preview element. Should be read via `_getPreviewRect`. */   private _previewRect?: ClientRect;    /** Cached dimensions of the boundary element. */   private _boundaryRect?: ClientRect;    /** Element that will be used as a template to create the draggable item's preview. */   private _previewTemplate?: DragPreviewTemplate | null;    /** Template for placeholder element rendered to show where a draggable would be dropped. */   private _placeholderTemplate?: DragHelperTemplate | null;    /** Elements that can be used to drag the draggable item. */   private _handles: HTMLElement[] = [];    /** Registered handles that are currently disabled. */   private _disabledHandles = new Set<HTMLElement>();    /** Droppable container that the draggable is a part of. */   private _dropContainer?: DropListRef;    /** Layout direction of the item. */   private _direction: Direction = 'ltr';    /** Ref that the current drag item is nested in. */   private _parentDragRef: DragRef<unknown> | null;    /**    * Cached shadow root that the element is placed in. `null` means that the element isn't in    * the shadow DOM and `undefined` means that it hasn't been resolved yet. Should be read via    * `_getShadowRoot`, not directly.    */   private _cachedShadowRoot: ShadowRoot | null | undefined;    /** Axis along which dragging is locked. */   lockAxis: 'x' | 'y';    /**    * Amount of milliseconds to wait after the user has put their    * pointer down before starting to drag the element.    */   dragStartDelay: number | {touch: number; mouse: number} = 0;    /** Class to be added to the preview element. */   previewClass: string | string[] | undefined;    /** Whether starting to drag this element is disabled. */   get disabled(): boolean {     return this._disabled || !!(this._dropContainer && this._dropContainer.disabled);   }   set disabled(value: boolean) {     const newValue = coerceBooleanProperty(value);      if (newValue !== this._disabled) {       this._disabled = newValue;       this._toggleNativeDragInteractions();       this._handles.forEach(handle => toggleNativeDragInteractions(handle, newValue));     }   }   private _disabled = false;    /** Emits as the drag sequence is being prepared. */   readonly beforeStarted = new Subject<void>();    /** Emits when the user starts dragging the item. */   readonly started = new Subject<{source: DragRef; event: MouseEvent | TouchEvent}>();    /** Emits when the user has released a drag item, before any animations have started. */   readonly released = new Subject<{source: DragRef; event: MouseEvent | TouchEvent}>();    /** Emits when the user stops dragging an item in the container. */   readonly ended = new Subject<{     source: DragRef;     distance: Point;     dropPoint: Point;     event: MouseEvent | TouchEvent;   }>();    /** Emits when the user has moved the item into a new container. */   readonly entered = new Subject<{container: DropListRef; item: DragRef; currentIndex: number}>();    /** Emits when the user removes the item its container by dragging it into another container. */   readonly exited = new Subject<{container: DropListRef; item: DragRef}>();    /** Emits when the user drops the item inside a container. */   readonly dropped = new Subject<{     previousIndex: number;     currentIndex: number;     item: DragRef;     container: DropListRef;     previousContainer: DropListRef;     distance: Point;     dropPoint: Point;     isPointerOverContainer: boolean;     event: MouseEvent | TouchEvent;   }>();    /**    * Emits as the user is dragging the item. Use with caution,    * because this event will fire for every pixel that the user has dragged.    */   readonly moved: Observable<{     source: DragRef;     pointerPosition: {x: number; y: number};     event: MouseEvent | TouchEvent;     distance: Point;     delta: {x: -1 | 0 | 1; y: -1 | 0 | 1};   }> = this._moveEvents;    /** Arbitrary data that can be attached to the drag item. */   data: T;    /**    * Function that can be used to customize the logic of how the position of the drag item    * is limited while it's being dragged. Gets called with a point containing the current position    * of the user's pointer on the page, a reference to the item being dragged and its dimensions.    * Should return a point describing where the item should be rendered.    */   constrainPosition?: (     userPointerPosition: Point,     dragRef: DragRef,     dimensions: ClientRect,     pickupPositionInElement: Point,   ) => Point;    constructor(     element: ElementRef<HTMLElement> | HTMLElement,     private _config: DragRefConfig,     private _document: Document,     private _ngZone: NgZone,     private _viewportRuler: ViewportRuler,     private _dragDropRegistry: DragDropRegistry<DragRef, DropListRef>,   ) {     this.withRootElement(element).withParent(_config.parentDragRef || null);     this._parentPositions = new ParentPositionTracker(_document);     _dragDropRegistry.registerDragItem(this);   }    /**    * Returns the element that is being used as a placeholder    * while the current element is being dragged.    */   getPlaceholderElement(): HTMLElement {     return this._placeholder;   }    /** Returns the root draggable element. */   getRootElement(): HTMLElement {     return this._rootElement;   }    /**    * Gets the currently-visible element that represents the drag item.    * While dragging this is the placeholder, otherwise it's the root element.    */   getVisibleElement(): HTMLElement {     return this.isDragging() ? this.getPlaceholderElement() : this.getRootElement();   }    /** Registers the handles that can be used to drag the element. */   withHandles(handles: (HTMLElement | ElementRef<HTMLElement>)[]): this {     this._handles = handles.map(handle => coerceElement(handle));     this._handles.forEach(handle => toggleNativeDragInteractions(handle, this.disabled));     this._toggleNativeDragInteractions();      // Delete any lingering disabled handles that may have been destroyed. Note that we re-create     // the set, rather than iterate over it and filter out the destroyed handles, because while     // the ES spec allows for sets to be modified while they're being iterated over, some polyfills     // use an array internally which may throw an error.     const disabledHandles = new Set<HTMLElement>();     this._disabledHandles.forEach(handle => {       if (this._handles.indexOf(handle) > -1) {         disabledHandles.add(handle);       }     });     this._disabledHandles = disabledHandles;     return this;   }    /**    * Registers the template that should be used for the drag preview.    * @param template Template that from which to stamp out the preview.    */   withPreviewTemplate(template: DragPreviewTemplate | null): this {     this._previewTemplate = template;     return this;   }    /**    * Registers the template that should be used for the drag placeholder.    * @param template Template that from which to stamp out the placeholder.    */   withPlaceholderTemplate(template: DragHelperTemplate | null): this {     this._placeholderTemplate = template;     return this;   }    /**    * Sets an alternate drag root element. The root element is the element that will be moved as    * the user is dragging. Passing an alternate root element is useful when trying to enable    * dragging on an element that you might not have access to.    */   withRootElement(rootElement: ElementRef<HTMLElement> | HTMLElement): this {     const element = coerceElement(rootElement);      if (element !== this._rootElement) {       if (this._rootElement) {         this._removeRootElementListeners(this._rootElement);       }        this._ngZone.runOutsideAngular(() => {         element.addEventListener('mousedown', this._pointerDown, activeEventListenerOptions);         element.addEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);         element.addEventListener('dragstart', this._nativeDragStart, activeEventListenerOptions);       });       this._initialTransform = undefined;       this._rootElement = element;     }      if (typeof SVGElement !== 'undefined' && this._rootElement instanceof SVGElement) {       this._ownerSVGElement = this._rootElement.ownerSVGElement;     }      return this;   }    /**    * Element to which the draggable's position will be constrained.    */   withBoundaryElement(boundaryElement: ElementRef<HTMLElement> | HTMLElement | null): this {     this._boundaryElement = boundaryElement ? coerceElement(boundaryElement) : null;     this._resizeSubscription.unsubscribe();     if (boundaryElement) {       this._resizeSubscription = this._viewportRuler         .change(10)         .subscribe(() => this._containInsideBoundaryOnResize());     }     return this;   }    /** Sets the parent ref that the ref is nested in.  */   withParent(parent: DragRef<unknown> | null): this {     this._parentDragRef = parent;     return this;   }    /** Removes the dragging functionality from the DOM element. */   dispose() {     this._removeRootElementListeners(this._rootElement);      // Do this check before removing from the registry since it'll     // stop being considered as dragged once it is removed.     if (this.isDragging()) {       // Since we move out the element to the end of the body while it's being       // dragged, we have to make sure that it's removed if it gets destroyed.       this._rootElement?.remove();     }      this._anchor?.remove();     this._destroyPreview();     this._destroyPlaceholder();     this._dragDropRegistry.removeDragItem(this);     this._removeSubscriptions();     this.beforeStarted.complete();     this.started.complete();     this.released.complete();     this.ended.complete();     this.entered.complete();     this.exited.complete();     this.dropped.complete();     this._moveEvents.complete();     this._handles = [];     this._disabledHandles.clear();     this._dropContainer = undefined;     this._resizeSubscription.unsubscribe();     this._parentPositions.clear();     this._boundaryElement =       this._rootElement =       this._ownerSVGElement =       this._placeholderTemplate =       this._previewTemplate =       this._anchor =       this._parentDragRef =         null!;   }    /** Checks whether the element is currently being dragged. */   isDragging(): boolean {     return this._hasStartedDragging && this._dragDropRegistry.isDragging(this);   }    /** Resets a standalone drag item to its initial position. */   reset(): void {     this._rootElement.style.transform = this._initialTransform || '';     this._activeTransform = {x: 0, y: 0};     this._passiveTransform = {x: 0, y: 0};   }    /**    * Sets a handle as disabled. While a handle is disabled, it'll capture and interrupt dragging.    * @param handle Handle element that should be disabled.    */   disableHandle(handle: HTMLElement) {     if (!this._disabledHandles.has(handle) && this._handles.indexOf(handle) > -1) {       this._disabledHandles.add(handle);       toggleNativeDragInteractions(handle, true);     }   }    /**    * Enables a handle, if it has been disabled.    * @param handle Handle element to be enabled.    */   enableHandle(handle: HTMLElement) {     if (this._disabledHandles.has(handle)) {       this._disabledHandles.delete(handle);       toggleNativeDragInteractions(handle, this.disabled);     }   }    /** Sets the layout direction of the draggable item. */   withDirection(direction: Direction): this {     this._direction = direction;     return this;   }    /** Sets the container that the item is part of. */   _withDropContainer(container: DropListRef) {     this._dropContainer = container;   }    /**    * Gets the current position in pixels the draggable outside of a drop container.    */   getFreeDragPosition(): Readonly<Point> {     const position = this.isDragging() ? this._activeTransform : this._passiveTransform;     return {x: position.x, y: position.y};   }    /**    * Sets the current position in pixels the draggable outside of a drop container.    * @param value New position to be set.    */   setFreeDragPosition(value: Point): this {     this._activeTransform = {x: 0, y: 0};     this._passiveTransform.x = value.x;     this._passiveTransform.y = value.y;      if (!this._dropContainer) {       this._applyRootElementTransform(value.x, value.y);     }      return this;   }    /**    * Sets the container into which to insert the preview element.    * @param value Container into which to insert the preview.    */   withPreviewContainer(value: PreviewContainer): this {     this._previewContainer = value;     return this;   }    /** Updates the item's sort order based on the last-known pointer position. */   _sortFromLastPointerPosition() {     const position = this._lastKnownPointerPosition;      if (position && this._dropContainer) {       this._updateActiveDropContainer(this._getConstrainedPointerPosition(position), position);     }   }    /** Unsubscribes from the global subscriptions. */   private _removeSubscriptions() {     this._pointerMoveSubscription.unsubscribe();     this._pointerUpSubscription.unsubscribe();     this._scrollSubscription.unsubscribe();   }    /** Destroys the preview element and its ViewRef. */   private _destroyPreview() {     this._preview?.remove();     this._previewRef?.destroy();     this._preview = this._previewRef = null!;   }    /** Destroys the placeholder element and its ViewRef. */   private _destroyPlaceholder() {     this._placeholder?.remove();     this._placeholderRef?.destroy();     this._placeholder = this._placeholderRef = null!;   }    /** Handler for the `mousedown`/`touchstart` events. */   private _pointerDown = (event: MouseEvent | TouchEvent) => {     this.beforeStarted.next();      // Delegate the event based on whether it started from a handle or the element itself.     if (this._handles.length) {       const targetHandle = this._getTargetHandle(event);        if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {         this._initializeDragSequence(targetHandle, event);       }     } else if (!this.disabled) {       this._initializeDragSequence(this._rootElement, event);     }   };    /** Handler that is invoked when the user moves their pointer after they've initiated a drag. */   private _pointerMove = (event: MouseEvent | TouchEvent) => {     const pointerPosition = this._getPointerPositionOnPage(event);      if (!this._hasStartedDragging) {       const distanceX = Math.abs(pointerPosition.x - this._pickupPositionOnPage.x);       const distanceY = Math.abs(pointerPosition.y - this._pickupPositionOnPage.y);       const isOverThreshold = distanceX + distanceY >= this._config.dragStartThreshold;        // Only start dragging after the user has moved more than the minimum distance in either       // direction. Note that this is preferable over doing something like `skip(minimumDistance)`       // in the `pointerMove` subscription, because we're not guaranteed to have one move event       // per pixel of movement (e.g. if the user moves their pointer quickly).       if (isOverThreshold) {         const isDelayElapsed = Date.now() >= this._dragStartTime + this._getDragStartDelay(event);         const container = this._dropContainer;          if (!isDelayElapsed) {           this._endDragSequence(event);           return;         }          // Prevent other drag sequences from starting while something in the container is still         // being dragged. This can happen while we're waiting for the drop animation to finish         // and can cause errors, because some elements might still be moving around.         if (!container || (!container.isDragging() && !container.isReceiving())) {           // Prevent the default action as soon as the dragging sequence is considered as           // \"started\" since waiting for the next event can allow the device to begin scrolling.           event.preventDefault();           this._hasStartedDragging = true;           this._ngZone.run(() => this._startDragSequence(event));         }       }        return;     }      // We prevent the default action down here so that we know that dragging has started. This is     // important for touch devices where doing this too early can unnecessarily block scrolling,     // if there's a dragging delay.     event.preventDefault();      const constrainedPointerPosition = this._getConstrainedPointerPosition(pointerPosition);     this._hasMoved = true;     this._lastKnownPointerPosition = pointerPosition;     this._updatePointerDirectionDelta(constrainedPointerPosition);      if (this._dropContainer) {       this._updateActiveDropContainer(constrainedPointerPosition, pointerPosition);     } else {       // If there's a position constraint function, we want the element's top/left to be at the       // specific position on the page. Use the initial position as a reference if that's the case.       const offset = this.constrainPosition ? this._initialClientRect! : this._pickupPositionOnPage;       const activeTransform = this._activeTransform;       activeTransform.x = constrainedPointerPosition.x - offset.x + this._passiveTransform.x;       activeTransform.y = constrainedPointerPosition.y - offset.y + this._passiveTransform.y;       this._applyRootElementTransform(activeTransform.x, activeTransform.y);     }      // Since this event gets fired for every pixel while dragging, we only     // want to fire it if the consumer opted into it. Also we have to     // re-enter the zone because we run all of the events on the outside.     if (this._moveEvents.observers.length) {       this._ngZone.run(() => {         this._moveEvents.next({           source: this,           pointerPosition: constrainedPointerPosition,           event,           distance: this._getDragDistance(constrainedPointerPosition),           delta: this._pointerDirectionDelta,         });       });     }   };    /** Handler that is invoked when the user lifts their pointer up, after initiating a drag. */   private _pointerUp = (event: MouseEvent | TouchEvent) => {     this._endDragSequence(event);   };    /**    * Clears subscriptions and stops the dragging sequence.    * @param event Browser event object that ended the sequence.    */   private _endDragSequence(event: MouseEvent | TouchEvent) {     // Note that here we use `isDragging` from the service, rather than from `this`.     // The difference is that the one from the service reflects whether a dragging sequence     // has been initiated, whereas the one on `this` includes whether the user has passed     // the minimum dragging threshold.     if (!this._dragDropRegistry.isDragging(this)) {       return;     }      this._removeSubscriptions();     this._dragDropRegistry.stopDragging(this);     this._toggleNativeDragInteractions();      if (this._handles) {       (this._rootElement.style as DragCSSStyleDeclaration).webkitTapHighlightColor =         this._rootElementTapHighlight;     }      if (!this._hasStartedDragging) {       return;     }      this.released.next({source: this, event});      if (this._dropContainer) {       // Stop scrolling immediately, instead of waiting for the animation to finish.       this._dropContainer._stopScrolling();       this._animatePreviewToPlaceholder().then(() => {         this._cleanupDragArtifacts(event);         this._cleanupCachedDimensions();         this._dragDropRegistry.stopDragging(this);       });     } else {       // Convert the active transform into a passive one. This means that next time       // the user starts dragging the item, its position will be calculated relatively       // to the new passive transform.       this._passiveTransform.x = this._activeTransform.x;       const pointerPosition = this._getPointerPositionOnPage(event);       this._passiveTransform.y = this._activeTransform.y;       this._ngZone.run(() => {         this.ended.next({           source: this,           distance: this._getDragDistance(pointerPosition),           dropPoint: pointerPosition,           event,         });       });       this._cleanupCachedDimensions();       this._dragDropRegistry.stopDragging(this);     }   }    /** Starts the dragging sequence. */   private _startDragSequence(event: MouseEvent | TouchEvent) {     if (isTouchEvent(event)) {       this._lastTouchEventTime = Date.now();     }      this._toggleNativeDragInteractions();      const dropContainer = this._dropContainer;      if (dropContainer) {       const element = this._rootElement;       const parent = element.parentNode as HTMLElement;       const placeholder = (this._placeholder = this._createPlaceholderElement());       const anchor = (this._anchor = this._anchor || this._document.createComment(''));        // Needs to happen before the root element is moved.       const shadowRoot = this._getShadowRoot();        // Insert an anchor node so that we can restore the element's position in the DOM.       parent.insertBefore(anchor, element);        // There's no risk of transforms stacking when inside a drop container so       // we can keep the initial transform up to date any time dragging starts.       this._initialTransform = element.style.transform || '';        // Create the preview after the initial transform has       // been cached, because it can be affected by the transform.       this._preview = this._createPreviewElement();        // We move the element out at the end of the body and we make it hidden, because keeping it in       // place will throw off the consumer's `:last-child` selectors. We can't remove the element       // from the DOM completely, because iOS will stop firing all subsequent events in the chain.       toggleVisibility(element, false, dragImportantProperties);       this._document.body.appendChild(parent.replaceChild(placeholder, element));       this._getPreviewInsertionPoint(parent, shadowRoot).appendChild(this._preview);       this.started.next({source: this, event}); // Emit before notifying the container.       dropContainer.start();       this._initialContainer = dropContainer;       this._initialIndex = dropContainer.getItemIndex(this);     } else {       this.started.next({source: this, event});       this._initialContainer = this._initialIndex = undefined!;     }      // Important to run after we've called `start` on the parent container     // so that it has had time to resolve its scrollable parents.     this._parentPositions.cache(dropContainer ? dropContainer.getScrollableParents() : []);   }    /**    * Sets up the different variables and subscriptions    * that will be necessary for the dragging sequence.    * @param referenceElement Element that started the drag sequence.    * @param event Browser event object that started the sequence.    */   private _initializeDragSequence(referenceElement: HTMLElement, event: MouseEvent | TouchEvent) {     // Stop propagation if the item is inside another     // draggable so we don't start multiple drag sequences.     if (this._parentDragRef) {       event.stopPropagation();     }      const isDragging = this.isDragging();     const isTouchSequence = isTouchEvent(event);     const isAuxiliaryMouseButton = !isTouchSequence && (event as MouseEvent).button !== 0;     const rootElement = this._rootElement;     const target = _getEventTarget(event);     const isSyntheticEvent =       !isTouchSequence &&       this._lastTouchEventTime &&       this._lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now();     const isFakeEvent = isTouchSequence       ? isFakeTouchstartFromScreenReader(event as TouchEvent)       : isFakeMousedownFromScreenReader(event as MouseEvent);      // If the event started from an element with the native HTML drag&drop, it'll interfere     // with our own dragging (e.g. `img` tags do it by default). Prevent the default action     // to stop it from happening. Note that preventing on `dragstart` also seems to work, but     // it's flaky and it fails if the user drags it away quickly. Also note that we only want     // to do this for `mousedown` since doing the same for `touchstart` will stop any `click`     // events from firing on touch devices.     if (target && (target as HTMLElement).draggable && event.type === 'mousedown') {       event.preventDefault();     }      // Abort if the user is already dragging or is using a mouse button other than the primary one.     if (isDragging || isAuxiliaryMouseButton || isSyntheticEvent || isFakeEvent) {       return;     }      // If we've got handles, we need to disable the tap highlight on the entire root element,     // otherwise iOS will still add it, even though all the drag interactions on the handle     // are disabled.     if (this._handles.length) {       const rootStyles = rootElement.style as DragCSSStyleDeclaration;       this._rootElementTapHighlight = rootStyles.webkitTapHighlightColor || '';       rootStyles.webkitTapHighlightColor = 'transparent';     }      this._hasStartedDragging = this._hasMoved = false;      // Avoid multiple subscriptions and memory leaks when multi touch     // (isDragging check above isn't enough because of possible temporal and/or dimensional delays)     this._removeSubscriptions();     this._initialClientRect = this._rootElement.getBoundingClientRect();     this._pointerMoveSubscription = this._dragDropRegistry.pointerMove.subscribe(this._pointerMove);     this._pointerUpSubscription = this._dragDropRegistry.pointerUp.subscribe(this._pointerUp);     this._scrollSubscription = this._dragDropRegistry       .scrolled(this._getShadowRoot())       .subscribe(scrollEvent => this._updateOnScroll(scrollEvent));      if (this._boundaryElement) {       this._boundaryRect = getMutableClientRect(this._boundaryElement);     }      // If we have a custom preview we can't know ahead of time how large it'll be so we position     // it next to the cursor. The exception is when the consumer has opted into making the preview     // the same size as the root element, in which case we do know the size.     const previewTemplate = this._previewTemplate;     this._pickupPositionInElement =       previewTemplate && previewTemplate.template && !previewTemplate.matchSize         ? {x: 0, y: 0}         : this._getPointerPositionInElement(this._initialClientRect, referenceElement, event);     const pointerPosition =       (this._pickupPositionOnPage =       this._lastKnownPointerPosition =         this._getPointerPositionOnPage(event));     this._pointerDirectionDelta = {x: 0, y: 0};     this._pointerPositionAtLastDirectionChange = {x: pointerPosition.x, y: pointerPosition.y};     this._dragStartTime = Date.now();     this._dragDropRegistry.startDragging(this, event);   }    /** Cleans up the DOM artifacts that were added to facilitate the element being dragged. */   private _cleanupDragArtifacts(event: MouseEvent | TouchEvent) {     // Restore the element's visibility and insert it at its old position in the DOM.     // It's important that we maintain the position, because moving the element around in the DOM     // can throw off `NgFor` which does smart diffing and re-creates elements only when necessary,     // while moving the existing elements in all other cases.     toggleVisibility(this._rootElement, true, dragImportantProperties);     this._anchor.parentNode!.replaceChild(this._rootElement, this._anchor);      this._destroyPreview();     this._destroyPlaceholder();     this._initialClientRect =       this._boundaryRect =       this._previewRect =       this._initialTransform =         undefined;      // Re-enter the NgZone since we bound `document` events on the outside.     this._ngZone.run(() => {       const container = this._dropContainer!;       const currentIndex = container.getItemIndex(this);       const pointerPosition = this._getPointerPositionOnPage(event);       const distance = this._getDragDistance(pointerPosition);       const isPointerOverContainer = container._isOverContainer(         pointerPosition.x,         pointerPosition.y,       );        this.ended.next({source: this, distance, dropPoint: pointerPosition, event});       this.dropped.next({         item: this,         currentIndex,         previousIndex: this._initialIndex,         container: container,         previousContainer: this._initialContainer,         isPointerOverContainer,         distance,         dropPoint: pointerPosition,         event,       });       container.drop(         this,         currentIndex,         this._initialIndex,         this._initialContainer,         isPointerOverContainer,         distance,         pointerPosition,         event,       );       this._dropContainer = this._initialContainer;     });   }    /**    * Updates the item's position in its drop container, or moves it    * into a new one, depending on its current drag position.    */   private _updateActiveDropContainer({x, y}: Point, {x: rawX, y: rawY}: Point) {     // Drop container that draggable has been moved into.     let newContainer = this._initialContainer._getSiblingContainerFromPosition(this, x, y);      // If we couldn't find a new container to move the item into, and the item has left its     // initial container, check whether the it's over the initial container. This handles the     // case where two containers are connected one way and the user tries to undo dragging an     // item into a new container.     if (       !newContainer &&       this._dropContainer !== this._initialContainer &&       this._initialContainer._isOverContainer(x, y)     ) {       newContainer = this._initialContainer;     }      if (newContainer && newContainer !== this._dropContainer) {       this._ngZone.run(() => {         // Notify the old container that the item has left.         this.exited.next({item: this, container: this._dropContainer!});         this._dropContainer!.exit(this);         // Notify the new container that the item has entered.         this._dropContainer = newContainer!;         this._dropContainer.enter(           this,           x,           y,           newContainer === this._initialContainer &&             // If we're re-entering the initial container and sorting is disabled,             // put item the into its starting index to begin with.             newContainer.sortingDisabled             ? this._initialIndex             : undefined,         );         this.entered.next({           item: this,           container: newContainer!,           currentIndex: newContainer!.getItemIndex(this),         });       });     }      // Dragging may have been interrupted as a result of the events above.     if (this.isDragging()) {       this._dropContainer!._startScrollingIfNecessary(rawX, rawY);       this._dropContainer!._sortItem(this, x, y, this._pointerDirectionDelta);        if (this.constrainPosition) {         this._applyPreviewTransform(x, y);       } else {         this._applyPreviewTransform(           x - this._pickupPositionInElement.x,           y - this._pickupPositionInElement.y,         );       }     }   }    /**    * Creates the element that will be rendered next to the user's pointer    * and will be used as a preview of the element that is being dragged.    */   private _createPreviewElement(): HTMLElement {     const previewConfig = this._previewTemplate;     const previewClass = this.previewClass;     const previewTemplate = previewConfig ? previewConfig.template : null;     let preview: HTMLElement;      if (previewTemplate && previewConfig) {       // Measure the element before we've inserted the preview       // since the insertion could throw off the measurement.       const rootRect = previewConfig.matchSize ? this._initialClientRect : null;       const viewRef = previewConfig.viewContainer.createEmbeddedView(         previewTemplate,         previewConfig.context,       );       viewRef.detectChanges();       preview = getRootNode(viewRef, this._document);       this._previewRef = viewRef;       if (previewConfig.matchSize) {         matchElementSize(preview, rootRect!);       } else {         preview.style.transform = getTransform(           this._pickupPositionOnPage.x,           this._pickupPositionOnPage.y,         );       }     } else {       preview = deepCloneNode(this._rootElement);       matchElementSize(preview, this._initialClientRect!);        if (this._initialTransform) {         preview.style.transform = this._initialTransform;       }     }      extendStyles(       preview.style,       {         // It's important that we disable the pointer events on the preview, because         // it can throw off the `document.elementFromPoint` calls in the `CdkDropList`.         'pointer-events': 'none',         // We have to reset the margin, because it can throw off positioning relative to the viewport.         'margin': '0',         'position': 'fixed',         'top': '0',         'left': '0',         'z-index': `${this._config.zIndex || 1000}`,       },       dragImportantProperties,     );      toggleNativeDragInteractions(preview, false);     preview.classList.add('cdk-drag-preview');     preview.setAttribute('dir', this._direction);      if (previewClass) {       if (Array.isArray(previewClass)) {         previewClass.forEach(className => preview.classList.add(className));       } else {         preview.classList.add(previewClass);       }     }      return preview;   }    /**    * Animates the preview element from its current position to the location of the drop placeholder.    * @returns Promise that resolves when the animation completes.    */   private _animatePreviewToPlaceholder(): Promise<void> {     // If the user hasn't moved yet, the transitionend event won't fire.     if (!this._hasMoved) {       return Promise.resolve();     }      const placeholderRect = this._placeholder.getBoundingClientRect();      // Apply the class that adds a transition to the preview.     this._preview.classList.add('cdk-drag-animating');      // Move the preview to the placeholder position.     this._applyPreviewTransform(placeholderRect.left, placeholderRect.top);      // If the element doesn't have a `transition`, the `transitionend` event won't fire. Since     // we need to trigger a style recalculation in order for the `cdk-drag-animating` class to     // apply its style, we take advantage of the available info to figure out whether we need to     // bind the event in the first place.     const duration = getTransformTransitionDurationInMs(this._preview);      if (duration === 0) {       return Promise.resolve();     }      return this._ngZone.runOutsideAngular(() => {       return new Promise(resolve => {         const handler = ((event: TransitionEvent) => {           if (             !event ||             (_getEventTarget(event) === this._preview && event.propertyName === 'transform')           ) {             this._preview?.removeEventListener('transitionend', handler);             resolve();             clearTimeout(timeout);           }         }) as EventListenerOrEventListenerObject;          // If a transition is short enough, the browser might not fire the `transitionend` event.         // Since we know how long it's supposed to take, add a timeout with a 50% buffer that'll         // fire if the transition hasn't completed when it was supposed to.         const timeout = setTimeout(handler as Function, duration * 1.5);         this._preview.addEventListener('transitionend', handler);       });     });   }    /** Creates an element that will be shown instead of the current element while dragging. */   private _createPlaceholderElement(): HTMLElement {     const placeholderConfig = this._placeholderTemplate;     const placeholderTemplate = placeholderConfig ? placeholderConfig.template : null;     let placeholder: HTMLElement;      if (placeholderTemplate) {       this._placeholderRef = placeholderConfig!.viewContainer.createEmbeddedView(         placeholderTemplate,         placeholderConfig!.context,       );       this._placeholderRef.detectChanges();       placeholder = getRootNode(this._placeholderRef, this._document);     } else {       placeholder = deepCloneNode(this._rootElement);     }      // Stop pointer events on the preview so the user can't     // interact with it while the preview is animating.     placeholder.style.pointerEvents = 'none';     placeholder.classList.add('cdk-drag-placeholder');     return placeholder;   }    /**    * Figures out the coordinates at which an element was picked up.    * @param referenceElement Element that initiated the dragging.    * @param event Event that initiated the dragging.    */   private _getPointerPositionInElement(     elementRect: ClientRect,     referenceElement: HTMLElement,     event: MouseEvent | TouchEvent,   ): Point {     const handleElement = referenceElement === this._rootElement ? null : referenceElement;     const referenceRect = handleElement ? handleElement.getBoundingClientRect() : elementRect;     const point = isTouchEvent(event) ? event.targetTouches[0] : event;     const scrollPosition = this._getViewportScrollPosition();     const x = point.pageX - referenceRect.left - scrollPosition.left;     const y = point.pageY - referenceRect.top - scrollPosition.top;      return {       x: referenceRect.left - elementRect.left + x,       y: referenceRect.top - elementRect.top + y,     };   }    /** Determines the point of the page that was touched by the user. */   private _getPointerPositionOnPage(event: MouseEvent | TouchEvent): Point {     const scrollPosition = this._getViewportScrollPosition();     const point = isTouchEvent(event)       ? // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.         // Also note that on real devices we're guaranteed for either `touches` or `changedTouches`         // to have a value, but Firefox in device emulation mode has a bug where both can be empty         // for `touchstart` and `touchend` so we fall back to a dummy object in order to avoid         // throwing an error. The value returned here will be incorrect, but since this only         // breaks inside a developer tool and the value is only used for secondary information,         // we can get away with it. See https://bugzilla.mozilla.org/show_bug.cgi?id=1615824.         event.touches[0] || event.changedTouches[0] || {pageX: 0, pageY: 0}       : event;      const x = point.pageX - scrollPosition.left;     const y = point.pageY - scrollPosition.top;      // if dragging SVG element, try to convert from the screen coordinate system to the SVG     // coordinate system     if (this._ownerSVGElement) {       const svgMatrix = this._ownerSVGElement.getScreenCTM();       if (svgMatrix) {         const svgPoint = this._ownerSVGElement.createSVGPoint();         svgPoint.x = x;         svgPoint.y = y;         return svgPoint.matrixTransform(svgMatrix.inverse());       }     }      return {x, y};   }    /** Gets the pointer position on the page, accounting for any position constraints. */   private _getConstrainedPointerPosition(point: Point): Point {     const dropContainerLock = this._dropContainer ? this._dropContainer.lockAxis : null;     let {x, y} = this.constrainPosition       ? this.constrainPosition(point, this, this._initialClientRect!, this._pickupPositionInElement)       : point;      if (this.lockAxis === 'x' || dropContainerLock === 'x') {       y = this._pickupPositionOnPage.y;     } else if (this.lockAxis === 'y' || dropContainerLock === 'y') {       x = this._pickupPositionOnPage.x;     }      if (this._boundaryRect) {       const {x: pickupX, y: pickupY} = this._pickupPositionInElement;       const boundaryRect = this._boundaryRect;       const {width: previewWidth, height: previewHeight} = this._getPreviewRect();       const minY = boundaryRect.top + pickupY;       const maxY = boundaryRect.bottom - (previewHeight - pickupY);       const minX = boundaryRect.left + pickupX;       const maxX = boundaryRect.right - (previewWidth - pickupX);        x = clamp(x, minX, maxX);       y = clamp(y, minY, maxY);     }      return {x, y};   }    /** Updates the current drag delta, based on the user's current pointer position on the page. */   private _updatePointerDirectionDelta(pointerPositionOnPage: Point) {     const {x, y} = pointerPositionOnPage;     const delta = this._pointerDirectionDelta;     const positionSinceLastChange = this._pointerPositionAtLastDirectionChange;      // Amount of pixels the user has dragged since the last time the direction changed.     const changeX = Math.abs(x - positionSinceLastChange.x);     const changeY = Math.abs(y - positionSinceLastChange.y);      // Because we handle pointer events on a per-pixel basis, we don't want the delta     // to change for every pixel, otherwise anything that depends on it can look erratic.     // To make the delta more consistent, we track how much the user has moved since the last     // delta change and we only update it after it has reached a certain threshold.     if (changeX > this._config.pointerDirectionChangeThreshold) {       delta.x = x > positionSinceLastChange.x ? 1 : -1;       positionSinceLastChange.x = x;     }      if (changeY > this._config.pointerDirectionChangeThreshold) {       delta.y = y > positionSinceLastChange.y ? 1 : -1;       positionSinceLastChange.y = y;     }      return delta;   }    /** Toggles the native drag interactions, based on how many handles are registered. */   private _toggleNativeDragInteractions() {     if (!this._rootElement || !this._handles) {       return;     }      const shouldEnable = this._handles.length > 0 || !this.isDragging();      if (shouldEnable !== this._nativeInteractionsEnabled) {       this._nativeInteractionsEnabled = shouldEnable;       toggleNativeDragInteractions(this._rootElement, shouldEnable);     }   }    /** Removes the manually-added event listeners from the root element. */   private _removeRootElementListeners(element: HTMLElement) {     element.removeEventListener('mousedown', this._pointerDown, activeEventListenerOptions);     element.removeEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);     element.removeEventListener('dragstart', this._nativeDragStart, activeEventListenerOptions);   }    /**    * Applies a `transform` to the root element, taking into account any existing transforms on it.    * @param x New transform value along the X axis.    * @param y New transform value along the Y axis.    */   private _applyRootElementTransform(x: number, y: number) {     const transform = getTransform(x, y);     const styles = this._rootElement.style;      // Cache the previous transform amount only after the first drag sequence, because     // we don't want our own transforms to stack on top of each other.     // Should be excluded none because none + translate3d(x, y, x) is invalid css     if (this._initialTransform == null) {       this._initialTransform =         styles.transform && styles.transform != 'none' ? styles.transform : '';     }      // Preserve the previous `transform` value, if there was one. Note that we apply our own     // transform before the user's, because things like rotation can affect which direction     // the element will be translated towards.     styles.transform = combineTransforms(transform, this._initialTransform);   }    /**    * Applies a `transform` to the preview, taking into account any existing transforms on it.    * @param x New transform value along the X axis.    * @param y New transform value along the Y axis.    */   private _applyPreviewTransform(x: number, y: number) {     // Only apply the initial transform if the preview is a clone of the original element, otherwise     // it could be completely different and the transform might not make sense anymore.     const initialTransform = this._previewTemplate?.template ? undefined : this._initialTransform;     const transform = getTransform(x, y);     this._preview.style.transform = combineTransforms(transform, initialTransform);   }    /**    * Gets the distance that the user has dragged during the current drag sequence.    * @param currentPosition Current position of the user's pointer.    */   private _getDragDistance(currentPosition: Point): Point {     const pickupPosition = this._pickupPositionOnPage;      if (pickupPosition) {       return {x: currentPosition.x - pickupPosition.x, y: currentPosition.y - pickupPosition.y};     }      return {x: 0, y: 0};   }    /** Cleans up any cached element dimensions that we don't need after dragging has stopped. */   private _cleanupCachedDimensions() {     this._boundaryRect = this._previewRect = undefined;     this._parentPositions.clear();   }    /**    * Checks whether the element is still inside its boundary after the viewport has been resized.    * If not, the position is adjusted so that the element fits again.    */   private _containInsideBoundaryOnResize() {     let {x, y} = this._passiveTransform;      if ((x === 0 && y === 0) || this.isDragging() || !this._boundaryElement) {       return;     }      // Note: don't use `_clientRectAtStart` here, because we want the latest position.     const elementRect = this._rootElement.getBoundingClientRect();     const boundaryRect = this._boundaryElement.getBoundingClientRect();      // It's possible that the element got hidden away after dragging (e.g. by switching to a     // different tab). Don't do anything in this case so we don't clear the user's position.     if (       (boundaryRect.width === 0 && boundaryRect.height === 0) ||       (elementRect.width === 0 && elementRect.height === 0)     ) {       return;     }      const leftOverflow = boundaryRect.left - elementRect.left;     const rightOverflow = elementRect.right - boundaryRect.right;     const topOverflow = boundaryRect.top - elementRect.top;     const bottomOverflow = elementRect.bottom - boundaryRect.bottom;      // If the element has become wider than the boundary, we can't     // do much to make it fit so we just anchor it to the left.     if (boundaryRect.width > elementRect.width) {       if (leftOverflow > 0) {         x += leftOverflow;       }        if (rightOverflow > 0) {         x -= rightOverflow;       }     } else {       x = 0;     }      // If the element has become taller than the boundary, we can't     // do much to make it fit so we just anchor it to the top.     if (boundaryRect.height > elementRect.height) {       if (topOverflow > 0) {         y += topOverflow;       }        if (bottomOverflow > 0) {         y -= bottomOverflow;       }     } else {       y = 0;     }      if (x !== this._passiveTransform.x || y !== this._passiveTransform.y) {       this.setFreeDragPosition({y, x});     }   }    /** Gets the drag start delay, based on the event type. */   private _getDragStartDelay(event: MouseEvent | TouchEvent): number {     const value = this.dragStartDelay;      if (typeof value === 'number') {       return value;     } else if (isTouchEvent(event)) {       return value.touch;     }      return value ? value.mouse : 0;   }    /** Updates the internal state of the draggable element when scrolling has occurred. */   private _updateOnScroll(event: Event) {     const scrollDifference = this._parentPositions.handleScroll(event);      if (scrollDifference) {       const target = _getEventTarget<HTMLElement | Document>(event)!;        // ClientRect dimensions are based on the scroll position of the page and its parent       // node so we have to update the cached boundary ClientRect if the user has scrolled.       if (         this._boundaryRect &&         target !== this._boundaryElement &&         target.contains(this._boundaryElement)       ) {         adjustClientRect(this._boundaryRect, scrollDifference.top, scrollDifference.left);       }        this._pickupPositionOnPage.x += scrollDifference.left;       this._pickupPositionOnPage.y += scrollDifference.top;        // If we're in free drag mode, we have to update the active transform, because       // it isn't relative to the viewport like the preview inside a drop list.       if (!this._dropContainer) {         this._activeTransform.x -= scrollDifference.left;         this._activeTransform.y -= scrollDifference.top;         this._applyRootElementTransform(this._activeTransform.x, this._activeTransform.y);       }     }   }    /** Gets the scroll position of the viewport. */   private _getViewportScrollPosition() {     return (       this._parentPositions.positions.get(this._document)?.scrollPosition ||       this._parentPositions.getViewportScrollPosition()     );   }    /**    * Lazily resolves and returns the shadow root of the element. We do this in a function, rather    * than saving it in property directly on init, because we want to resolve it as late as possible    * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the    * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.    */   private _getShadowRoot(): ShadowRoot | null {     if (this._cachedShadowRoot === undefined) {       this._cachedShadowRoot = _getShadowRoot(this._rootElement);     }      return this._cachedShadowRoot;   }    /** Gets the element into which the drag preview should be inserted. */   private _getPreviewInsertionPoint(     initialParent: HTMLElement,     shadowRoot: ShadowRoot | null,   ): HTMLElement {     const previewContainer = this._previewContainer || 'global';      if (previewContainer === 'parent') {       return initialParent;     }      if (previewContainer === 'global') {       const documentRef = this._document;        // We can't use the body if the user is in fullscreen mode,       // because the preview will render under the fullscreen element.       // TODO(crisbeto): dedupe this with the `FullscreenOverlayContainer` eventually.       return (         shadowRoot ||         documentRef.fullscreenElement ||         (documentRef as any).webkitFullscreenElement ||         (documentRef as any).mozFullScreenElement ||         (documentRef as any).msFullscreenElement ||         documentRef.body       );     }      return coerceElement(previewContainer);   }    /** Lazily resolves and returns the dimensions of the preview. */   private _getPreviewRect(): ClientRect {     // Cache the preview element rect if we haven't cached it already or if     // we cached it too early before the element dimensions were computed.     if (!this._previewRect || (!this._previewRect.width && !this._previewRect.height)) {       this._previewRect = this._preview         ? this._preview.getBoundingClientRect()         : this._initialClientRect!;     }      return this._previewRect;   }    /** Handles a native `dragstart` event. */   private _nativeDragStart = (event: DragEvent) => {     if (this._handles.length) {       const targetHandle = this._getTargetHandle(event);        if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {         event.preventDefault();       }     } else if (!this.disabled) {       // Usually this isn't necessary since the we prevent the default action in `pointerDown`,       // but some cases like dragging of links can slip through (see #24403).       event.preventDefault();     }   };    /** Gets a handle that is the target of an event. */   private _getTargetHandle(event: Event): HTMLElement | undefined {     return this._handles.find(handle => {       return event.target && (event.target === handle || handle.contains(event.target as Node));     });   } }  /**  * Gets a 3d `transform` that can be applied to an element.  * @param x Desired position of the element along the X axis.  * @param y Desired position of the element along the Y axis.  */ function getTransform(x: number, y: number): string {   // Round the transforms since some browsers will   // blur the elements for sub-pixel transforms.   return `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`; }  /** Clamps a value between a minimum and a maximum. */ function clamp(value: number, min: number, max: number) {   return Math.max(min, Math.min(max, value)); }  /** Determines whether an event is a touch event. */ function isTouchEvent(event: MouseEvent | TouchEvent): event is TouchEvent {   // This function is called for every pixel that the user has dragged so we need it to be   // as fast as possible. Since we only bind mouse events and touch events, we can assume   // that if the event's name starts with `t`, it's a touch event.   return event.type[0] === 't'; }  /**  * Gets the root HTML element of an embedded view.  * If the root is not an HTML element it gets wrapped in one.  */ function getRootNode(viewRef: EmbeddedViewRef<any>, _document: Document): HTMLElement {   const rootNodes: Node[] = viewRef.rootNodes;    if (rootNodes.length === 1 && rootNodes[0].nodeType === _document.ELEMENT_NODE) {     return rootNodes[0] as HTMLElement;   }    const wrapper = _document.createElement('div');   rootNodes.forEach(node => wrapper.appendChild(node));   return wrapper; }  /**  * Matches the target element's size to the source's size.  * @param target Element that needs to be resized.  * @param sourceRect Dimensions of the source element.  */ function matchElementSize(target: HTMLElement, sourceRect: ClientRect): void {   target.style.width = `${sourceRect.width}px`;   target.style.height = `${sourceRect.height}px`;   target.style.transform = getTransform(sourceRect.left, sourceRect.top); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Moves an item one index in an array to another.  * @param array Array in which to move the item.  * @param fromIndex Starting index of the item.  * @param toIndex Index to which the item should be moved.  */ export function moveItemInArray<T = any>(array: T[], fromIndex: number, toIndex: number): void {   const from = clamp(fromIndex, array.length - 1);   const to = clamp(toIndex, array.length - 1);    if (from === to) {     return;   }    const target = array[from];   const delta = to < from ? -1 : 1;    for (let i = from; i !== to; i += delta) {     array[i] = array[i + delta];   }    array[to] = target; }  /**  * Moves an item from one array to another.  * @param currentArray Array from which to transfer the item.  * @param targetArray Array into which to put the item.  * @param currentIndex Index of the item in its current array.  * @param targetIndex Index at which to insert the item.  */ export function transferArrayItem<T = any>(   currentArray: T[],   targetArray: T[],   currentIndex: number,   targetIndex: number, ): void {   const from = clamp(currentIndex, currentArray.length - 1);   const to = clamp(targetIndex, targetArray.length);    if (currentArray.length) {     targetArray.splice(to, 0, currentArray.splice(from, 1)[0]);   } }  /**  * Copies an item from one array to another, leaving it in its  * original position in current array.  * @param currentArray Array from which to copy the item.  * @param targetArray Array into which is copy the item.  * @param currentIndex Index of the item in its current array.  * @param targetIndex Index at which to insert the item.  *  */ export function copyArrayItem<T = any>(   currentArray: T[],   targetArray: T[],   currentIndex: number,   targetIndex: number, ): void {   const to = clamp(targetIndex, targetArray.length);    if (currentArray.length) {     targetArray.splice(to, 0, currentArray[currentIndex]);   } }  /** Clamps a number between zero and a maximum. */ function clamp(value: number, max: number): number {   return Math.max(0, Math.min(max, value)); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Direction} from '@angular/cdk/bidi'; import {ElementRef} from '@angular/core'; import {coerceElement} from '@angular/cdk/coercion'; import {DragDropRegistry} from '../drag-drop-registry'; import {moveItemInArray} from '../drag-utils'; import {combineTransforms} from '../dom/styling'; import {adjustClientRect, getMutableClientRect, isInsideClientRect} from '../dom/client-rect'; import {   DropListSortStrategy,   DropListSortStrategyItem,   SortPredicate, } from './drop-list-sort-strategy';  /**  * Entry in the position cache for draggable items.  * @docs-private  */ interface CachedItemPosition<T> {   /** Instance of the drag item. */   drag: T;   /** Dimensions of the item. */   clientRect: ClientRect;   /** Amount by which the item has been moved since dragging started. */   offset: number;   /** Inline transform that the drag item had when dragging started. */   initialTransform: string; }  /**  * Strategy that only supports sorting along a single axis.  * Items are reordered using CSS transforms which allows for sorting to be animated.  * @docs-private  */ export class SingleAxisSortStrategy<T extends DropListSortStrategyItem>   implements DropListSortStrategy<T> {   /** Function used to determine if an item can be sorted into a specific index. */   private _sortPredicate: SortPredicate<T>;    /** Cache of the dimensions of all the items inside the container. */   private _itemPositions: CachedItemPosition<T>[] = [];    /**    * Draggable items that are currently active inside the container. Includes the items    * that were there at the start of the sequence, as well as any items that have been dragged    * in, but haven't been dropped yet.    */   private _activeDraggables: T[];    /** Direction in which the list is oriented. */   orientation: 'vertical' | 'horizontal' = 'vertical';    /** Layout direction of the drop list. */   direction: Direction;    constructor(     private _element: HTMLElement | ElementRef<HTMLElement>,     private _dragDropRegistry: DragDropRegistry<T, unknown>,   ) {}    /**    * Keeps track of the item that was last swapped with the dragged item, as well as what direction    * the pointer was moving in when the swap occurred and whether the user's pointer continued to    * overlap with the swapped item after the swapping occurred.    */   private _previousSwap = {     drag: null as T | null,     delta: 0,     overlaps: false,   };    /**    * To be called when the drag sequence starts.    * @param items Items that are currently in the list.    */   start(items: readonly T[]) {     this.withItems(items);   }    /**    * To be called when an item is being sorted.    * @param item Item to be sorted.    * @param pointerX Position of the item along the X axis.    * @param pointerY Position of the item along the Y axis.    * @param pointerDelta Direction in which the pointer is moving along each axis.    */   sort(item: T, pointerX: number, pointerY: number, pointerDelta: {x: number; y: number}) {     const siblings = this._itemPositions;     const newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY, pointerDelta);      if (newIndex === -1 && siblings.length > 0) {       return null;     }      const isHorizontal = this.orientation === 'horizontal';     const currentIndex = siblings.findIndex(currentItem => currentItem.drag === item);     const siblingAtNewPosition = siblings[newIndex];     const currentPosition = siblings[currentIndex].clientRect;     const newPosition = siblingAtNewPosition.clientRect;     const delta = currentIndex > newIndex ? 1 : -1;      // How many pixels the item's placeholder should be offset.     const itemOffset = this._getItemOffsetPx(currentPosition, newPosition, delta);      // How many pixels all the other items should be offset.     const siblingOffset = this._getSiblingOffsetPx(currentIndex, siblings, delta);      // Save the previous order of the items before moving the item to its new index.     // We use this to check whether an item has been moved as a result of the sorting.     const oldOrder = siblings.slice();      // Shuffle the array in place.     moveItemInArray(siblings, currentIndex, newIndex);      siblings.forEach((sibling, index) => {       // Don't do anything if the position hasn't changed.       if (oldOrder[index] === sibling) {         return;       }        const isDraggedItem = sibling.drag === item;       const offset = isDraggedItem ? itemOffset : siblingOffset;       const elementToOffset = isDraggedItem         ? item.getPlaceholderElement()         : sibling.drag.getRootElement();        // Update the offset to reflect the new position.       sibling.offset += offset;        // Since we're moving the items with a `transform`, we need to adjust their cached       // client rects to reflect their new position, as well as swap their positions in the cache.       // Note that we shouldn't use `getBoundingClientRect` here to update the cache, because the       // elements may be mid-animation which will give us a wrong result.       if (isHorizontal) {         // Round the transforms since some browsers will         // blur the elements, for sub-pixel transforms.         elementToOffset.style.transform = combineTransforms(           `translate3d(${Math.round(sibling.offset)}px, 0, 0)`,           sibling.initialTransform,         );         adjustClientRect(sibling.clientRect, 0, offset);       } else {         elementToOffset.style.transform = combineTransforms(           `translate3d(0, ${Math.round(sibling.offset)}px, 0)`,           sibling.initialTransform,         );         adjustClientRect(sibling.clientRect, offset, 0);       }     });      // Note that it's important that we do this after the client rects have been adjusted.     this._previousSwap.overlaps = isInsideClientRect(newPosition, pointerX, pointerY);     this._previousSwap.drag = siblingAtNewPosition.drag;     this._previousSwap.delta = isHorizontal ? pointerDelta.x : pointerDelta.y;      return {previousIndex: currentIndex, currentIndex: newIndex};   }    /**    * Called when an item is being moved into the container.    * @param item Item that was moved into the container.    * @param pointerX Position of the item along the X axis.    * @param pointerY Position of the item along the Y axis.    * @param index Index at which the item entered. If omitted, the container will try to figure it    *   out automatically.    */   enter(item: T, pointerX: number, pointerY: number, index?: number): void {     const newIndex =       index == null || index < 0         ? // We use the coordinates of where the item entered the drop           // zone to figure out at which index it should be inserted.           this._getItemIndexFromPointerPosition(item, pointerX, pointerY)         : index;      const activeDraggables = this._activeDraggables;     const currentIndex = activeDraggables.indexOf(item);     const placeholder = item.getPlaceholderElement();     let newPositionReference: T | undefined = activeDraggables[newIndex];      // If the item at the new position is the same as the item that is being dragged,     // it means that we're trying to restore the item to its initial position. In this     // case we should use the next item from the list as the reference.     if (newPositionReference === item) {       newPositionReference = activeDraggables[newIndex + 1];     }      // If we didn't find a new position reference, it means that either the item didn't start off     // in this container, or that the item requested to be inserted at the end of the list.     if (       !newPositionReference &&       (newIndex == null || newIndex === -1 || newIndex < activeDraggables.length - 1) &&       this._shouldEnterAsFirstChild(pointerX, pointerY)     ) {       newPositionReference = activeDraggables[0];     }      // Since the item may be in the `activeDraggables` already (e.g. if the user dragged it     // into another container and back again), we have to ensure that it isn't duplicated.     if (currentIndex > -1) {       activeDraggables.splice(currentIndex, 1);     }      // Don't use items that are being dragged as a reference, because     // their element has been moved down to the bottom of the body.     if (newPositionReference && !this._dragDropRegistry.isDragging(newPositionReference)) {       const element = newPositionReference.getRootElement();       element.parentElement!.insertBefore(placeholder, element);       activeDraggables.splice(newIndex, 0, item);     } else {       coerceElement(this._element).appendChild(placeholder);       activeDraggables.push(item);     }      // The transform needs to be cleared so it doesn't throw off the measurements.     placeholder.style.transform = '';      // Note that usually `start` is called together with `enter` when an item goes into a new     // container. This will cache item positions, but we need to refresh them since the amount     // of items has changed.     this._cacheItemPositions();   }    /** Sets the items that are currently part of the list. */   withItems(items: readonly T[]): void {     this._activeDraggables = items.slice();     this._cacheItemPositions();   }    /** Assigns a sort predicate to the strategy. */   withSortPredicate(predicate: SortPredicate<T>): void {     this._sortPredicate = predicate;   }    /** Resets the strategy to its initial state before dragging was started. */   reset() {     // TODO(crisbeto): may have to wait for the animations to finish.     this._activeDraggables.forEach(item => {       const rootElement = item.getRootElement();        if (rootElement) {         const initialTransform = this._itemPositions.find(p => p.drag === item)?.initialTransform;         rootElement.style.transform = initialTransform || '';       }     });      this._itemPositions = [];     this._activeDraggables = [];     this._previousSwap.drag = null;     this._previousSwap.delta = 0;     this._previousSwap.overlaps = false;   }    /**    * Gets a snapshot of items currently in the list.    * Can include items that we dragged in from another list.    */   getActiveItemsSnapshot(): readonly T[] {     return this._activeDraggables;   }    /** Gets the index of a specific item. */   getItemIndex(item: T): number {     // Items are sorted always by top/left in the cache, however they flow differently in RTL.     // The rest of the logic still stands no matter what orientation we're in, however     // we need to invert the array when determining the index.     const items =       this.orientation === 'horizontal' && this.direction === 'rtl'         ? this._itemPositions.slice().reverse()         : this._itemPositions;      return items.findIndex(currentItem => currentItem.drag === item);   }    /** Used to notify the strategy that the scroll position has changed. */   updateOnScroll(topDifference: number, leftDifference: number) {     // Since we know the amount that the user has scrolled we can shift all of the     // client rectangles ourselves. This is cheaper than re-measuring everything and     // we can avoid inconsistent behavior where we might be measuring the element before     // its position has changed.     this._itemPositions.forEach(({clientRect}) => {       adjustClientRect(clientRect, topDifference, leftDifference);     });      // We need two loops for this, because we want all of the cached     // positions to be up-to-date before we re-sort the item.     this._itemPositions.forEach(({drag}) => {       if (this._dragDropRegistry.isDragging(drag)) {         // We need to re-sort the item manually, because the pointer move         // events won't be dispatched while the user is scrolling.         drag._sortFromLastPointerPosition();       }     });   }    /** Refreshes the position cache of the items and sibling containers. */   private _cacheItemPositions() {     const isHorizontal = this.orientation === 'horizontal';      this._itemPositions = this._activeDraggables       .map(drag => {         const elementToMeasure = drag.getVisibleElement();         return {           drag,           offset: 0,           initialTransform: elementToMeasure.style.transform || '',           clientRect: getMutableClientRect(elementToMeasure),         };       })       .sort((a, b) => {         return isHorizontal           ? a.clientRect.left - b.clientRect.left           : a.clientRect.top - b.clientRect.top;       });   }    /**    * Gets the offset in pixels by which the item that is being dragged should be moved.    * @param currentPosition Current position of the item.    * @param newPosition Position of the item where the current item should be moved.    * @param delta Direction in which the user is moving.    */   private _getItemOffsetPx(currentPosition: ClientRect, newPosition: ClientRect, delta: 1 | -1) {     const isHorizontal = this.orientation === 'horizontal';     let itemOffset = isHorizontal       ? newPosition.left - currentPosition.left       : newPosition.top - currentPosition.top;      // Account for differences in the item width/height.     if (delta === -1) {       itemOffset += isHorizontal         ? newPosition.width - currentPosition.width         : newPosition.height - currentPosition.height;     }      return itemOffset;   }    /**    * Gets the offset in pixels by which the items that aren't being dragged should be moved.    * @param currentIndex Index of the item currently being dragged.    * @param siblings All of the items in the list.    * @param delta Direction in which the user is moving.    */   private _getSiblingOffsetPx(     currentIndex: number,     siblings: CachedItemPosition<T>[],     delta: 1 | -1,   ) {     const isHorizontal = this.orientation === 'horizontal';     const currentPosition = siblings[currentIndex].clientRect;     const immediateSibling = siblings[currentIndex + delta * -1];     let siblingOffset = currentPosition[isHorizontal ? 'width' : 'height'] * delta;      if (immediateSibling) {       const start = isHorizontal ? 'left' : 'top';       const end = isHorizontal ? 'right' : 'bottom';        // Get the spacing between the start of the current item and the end of the one immediately       // after it in the direction in which the user is dragging, or vice versa. We add it to the       // offset in order to push the element to where it will be when it's inline and is influenced       // by the `margin` of its siblings.       if (delta === -1) {         siblingOffset -= immediateSibling.clientRect[start] - currentPosition[end];       } else {         siblingOffset += currentPosition[start] - immediateSibling.clientRect[end];       }     }      return siblingOffset;   }    /**    * Checks if pointer is entering in the first position    * @param pointerX Position of the user's pointer along the X axis.    * @param pointerY Position of the user's pointer along the Y axis.    */   private _shouldEnterAsFirstChild(pointerX: number, pointerY: number) {     if (!this._activeDraggables.length) {       return false;     }      const itemPositions = this._itemPositions;     const isHorizontal = this.orientation === 'horizontal';      // `itemPositions` are sorted by position while `activeDraggables` are sorted by child index     // check if container is using some sort of \"reverse\" ordering (eg: flex-direction: row-reverse)     const reversed = itemPositions[0].drag !== this._activeDraggables[0];     if (reversed) {       const lastItemRect = itemPositions[itemPositions.length - 1].clientRect;       return isHorizontal ? pointerX >= lastItemRect.right : pointerY >= lastItemRect.bottom;     } else {       const firstItemRect = itemPositions[0].clientRect;       return isHorizontal ? pointerX <= firstItemRect.left : pointerY <= firstItemRect.top;     }   }    /**    * Gets the index of an item in the drop container, based on the position of the user's pointer.    * @param item Item that is being sorted.    * @param pointerX Position of the user's pointer along the X axis.    * @param pointerY Position of the user's pointer along the Y axis.    * @param delta Direction in which the user is moving their pointer.    */   private _getItemIndexFromPointerPosition(     item: T,     pointerX: number,     pointerY: number,     delta?: {x: number; y: number},   ): number {     const isHorizontal = this.orientation === 'horizontal';     const index = this._itemPositions.findIndex(({drag, clientRect}) => {       // Skip the item itself.       if (drag === item) {         return false;       }        if (delta) {         const direction = isHorizontal ? delta.x : delta.y;          // If the user is still hovering over the same item as last time, their cursor hasn't left         // the item after we made the swap, and they didn't change the direction in which they're         // dragging, we don't consider it a direction swap.         if (           drag === this._previousSwap.drag &&           this._previousSwap.overlaps &&           direction === this._previousSwap.delta         ) {           return false;         }       }        return isHorizontal         ? // Round these down since most browsers report client rects with           // sub-pixel precision, whereas the pointer coordinates are rounded to pixels.           pointerX >= Math.floor(clientRect.left) && pointerX < Math.floor(clientRect.right)         : pointerY >= Math.floor(clientRect.top) && pointerY < Math.floor(clientRect.bottom);     });      return index === -1 || !this._sortPredicate(index, item) ? -1 : index;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ElementRef, NgZone} from '@angular/core'; import {Direction} from '@angular/cdk/bidi'; import {coerceElement} from '@angular/cdk/coercion'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {_getShadowRoot} from '@angular/cdk/platform'; import {Subject, Subscription, interval, animationFrameScheduler} from 'rxjs'; import {takeUntil} from 'rxjs/operators'; import {DragDropRegistry} from './drag-drop-registry'; import {DragRefInternal as DragRef, Point} from './drag-ref'; import {isPointerNearClientRect, isInsideClientRect} from './dom/client-rect'; import {ParentPositionTracker} from './dom/parent-position-tracker'; import {DragCSSStyleDeclaration} from './dom/styling'; import {DropListSortStrategy} from './sorting/drop-list-sort-strategy'; import {SingleAxisSortStrategy} from './sorting/single-axis-sort-strategy';  /**  * Proximity, as a ratio to width/height, at which a  * dragged item will affect the drop container.  */ const DROP_PROXIMITY_THRESHOLD = 0.05;  /**  * Proximity, as a ratio to width/height at which to start auto-scrolling the drop list or the  * viewport. The value comes from trying it out manually until it feels right.  */ const SCROLL_PROXIMITY_THRESHOLD = 0.05;  /** Vertical direction in which we can auto-scroll. */ const enum AutoScrollVerticalDirection {   NONE,   UP,   DOWN, }  /** Horizontal direction in which we can auto-scroll. */ const enum AutoScrollHorizontalDirection {   NONE,   LEFT,   RIGHT, }  /**  * Internal compile-time-only representation of a `DropListRef`.  * Used to avoid circular import issues between the `DropListRef` and the `DragRef`.  * @docs-private  */ export interface DropListRefInternal extends DropListRef {}  type RootNode = DocumentOrShadowRoot & {   // As of TS 4.4 the built in DOM typings don't include `elementFromPoint` on `ShadowRoot`,   // even though it exists (see https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot).   // This type is a utility to avoid having to add casts everywhere.   elementFromPoint(x: number, y: number): Element | null; };  /**  * Reference to a drop list. Used to manipulate or dispose of the container.  */ export class DropListRef<T = any> {   /** Element that the drop list is attached to. */   element: HTMLElement | ElementRef<HTMLElement>;    /** Whether starting a dragging sequence from this container is disabled. */   disabled: boolean = false;    /** Whether sorting items within the list is disabled. */   sortingDisabled: boolean = false;    /** Locks the position of the draggable elements inside the container along the specified axis. */   lockAxis: 'x' | 'y';    /**    * Whether auto-scrolling the view when the user    * moves their pointer close to the edges is disabled.    */   autoScrollDisabled: boolean = false;    /** Number of pixels to scroll for each frame when auto-scrolling an element. */   autoScrollStep: number = 2;    /**    * Function that is used to determine whether an item    * is allowed to be moved into a drop container.    */   enterPredicate: (drag: DragRef, drop: DropListRef) => boolean = () => true;    /** Function that is used to determine whether an item can be sorted into a particular index. */   sortPredicate: (index: number, drag: DragRef, drop: DropListRef) => boolean = () => true;    /** Emits right before dragging has started. */   readonly beforeStarted = new Subject<void>();    /**    * Emits when the user has moved a new drag item into this container.    */   readonly entered = new Subject<{item: DragRef; container: DropListRef; currentIndex: number}>();    /**    * Emits when the user removes an item from the container    * by dragging it into another container.    */   readonly exited = new Subject<{item: DragRef; container: DropListRef}>();    /** Emits when the user drops an item inside the container. */   readonly dropped = new Subject<{     item: DragRef;     currentIndex: number;     previousIndex: number;     container: DropListRef;     previousContainer: DropListRef;     isPointerOverContainer: boolean;     distance: Point;     dropPoint: Point;     event: MouseEvent | TouchEvent;   }>();    /** Emits as the user is swapping items while actively dragging. */   readonly sorted = new Subject<{     previousIndex: number;     currentIndex: number;     container: DropListRef;     item: DragRef;   }>();    /** Emits when a dragging sequence is started in a list connected to the current one. */   readonly receivingStarted = new Subject<{     receiver: DropListRef;     initiator: DropListRef;     items: DragRef[];   }>();    /** Emits when a dragging sequence is stopped from a list connected to the current one. */   readonly receivingStopped = new Subject<{     receiver: DropListRef;     initiator: DropListRef;   }>();    /** Arbitrary data that can be attached to the drop list. */   data: T;    /** Whether an item in the list is being dragged. */   private _isDragging = false;    /** Keeps track of the positions of any parent scrollable elements. */   private _parentPositions: ParentPositionTracker;    /** Strategy being used to sort items within the list. */   private _sortStrategy: DropListSortStrategy<DragRef>;    /** Cached `ClientRect` of the drop list. */   private _clientRect: ClientRect | undefined;    /** Draggable items in the container. */   private _draggables: readonly DragRef[] = [];    /** Drop lists that are connected to the current one. */   private _siblings: readonly DropListRef[] = [];    /** Connected siblings that currently have a dragged item. */   private _activeSiblings = new Set<DropListRef>();    /** Subscription to the window being scrolled. */   private _viewportScrollSubscription = Subscription.EMPTY;    /** Vertical direction in which the list is currently scrolling. */   private _verticalScrollDirection = AutoScrollVerticalDirection.NONE;    /** Horizontal direction in which the list is currently scrolling. */   private _horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;    /** Node that is being auto-scrolled. */   private _scrollNode: HTMLElement | Window;    /** Used to signal to the current auto-scroll sequence when to stop. */   private readonly _stopScrollTimers = new Subject<void>();    /** Shadow root of the current element. Necessary for `elementFromPoint` to resolve correctly. */   private _cachedShadowRoot: RootNode | null = null;    /** Reference to the document. */   private _document: Document;    /** Elements that can be scrolled while the user is dragging. */   private _scrollableElements: HTMLElement[];    /** Initial value for the element's `scroll-snap-type` style. */   private _initialScrollSnap: string;    constructor(     element: ElementRef<HTMLElement> | HTMLElement,     private _dragDropRegistry: DragDropRegistry<DragRef, DropListRef>,     _document: any,     private _ngZone: NgZone,     private _viewportRuler: ViewportRuler,   ) {     this.element = coerceElement(element);     this._document = _document;     this.withScrollableParents([this.element]);     _dragDropRegistry.registerDropContainer(this);     this._parentPositions = new ParentPositionTracker(_document);     this._sortStrategy = new SingleAxisSortStrategy(this.element, _dragDropRegistry);     this._sortStrategy.withSortPredicate((index, item) => this.sortPredicate(index, item, this));   }    /** Removes the drop list functionality from the DOM element. */   dispose() {     this._stopScrolling();     this._stopScrollTimers.complete();     this._viewportScrollSubscription.unsubscribe();     this.beforeStarted.complete();     this.entered.complete();     this.exited.complete();     this.dropped.complete();     this.sorted.complete();     this.receivingStarted.complete();     this.receivingStopped.complete();     this._activeSiblings.clear();     this._scrollNode = null!;     this._parentPositions.clear();     this._dragDropRegistry.removeDropContainer(this);   }    /** Whether an item from this list is currently being dragged. */   isDragging() {     return this._isDragging;   }    /** Starts dragging an item. */   start(): void {     this._draggingStarted();     this._notifyReceivingSiblings();   }    /**    * Attempts to move an item into the container.    * @param item Item that was moved into the container.    * @param pointerX Position of the item along the X axis.    * @param pointerY Position of the item along the Y axis.    * @param index Index at which the item entered. If omitted, the container will try to figure it    *   out automatically.    */   enter(item: DragRef, pointerX: number, pointerY: number, index?: number): void {     this._draggingStarted();      // If sorting is disabled, we want the item to return to its starting     // position if the user is returning it to its initial container.     if (index == null && this.sortingDisabled) {       index = this._draggables.indexOf(item);     }      this._sortStrategy.enter(item, pointerX, pointerY, index);      // Note that this usually happens inside `_draggingStarted` as well, but the dimensions     // can change when the sort strategy moves the item around inside `enter`.     this._cacheParentPositions();      // Notify siblings at the end so that the item has been inserted into the `activeDraggables`.     this._notifyReceivingSiblings();     this.entered.next({item, container: this, currentIndex: this.getItemIndex(item)});   }    /**    * Removes an item from the container after it was dragged into another container by the user.    * @param item Item that was dragged out.    */   exit(item: DragRef): void {     this._reset();     this.exited.next({item, container: this});   }    /**    * Drops an item into this container.    * @param item Item being dropped into the container.    * @param currentIndex Index at which the item should be inserted.    * @param previousIndex Index of the item when dragging started.    * @param previousContainer Container from which the item got dragged in.    * @param isPointerOverContainer Whether the user's pointer was over the    *    container when the item was dropped.    * @param distance Distance the user has dragged since the start of the dragging sequence.    * @param event Event that triggered the dropping sequence.    *    * @breaking-change 15.0.0 `previousIndex` and `event` parameters to become required.    */   drop(     item: DragRef,     currentIndex: number,     previousIndex: number,     previousContainer: DropListRef,     isPointerOverContainer: boolean,     distance: Point,     dropPoint: Point,     event: MouseEvent | TouchEvent = {} as any,   ): void {     this._reset();     this.dropped.next({       item,       currentIndex,       previousIndex,       container: this,       previousContainer,       isPointerOverContainer,       distance,       dropPoint,       event,     });   }    /**    * Sets the draggable items that are a part of this list.    * @param items Items that are a part of this list.    */   withItems(items: DragRef[]): this {     const previousItems = this._draggables;     this._draggables = items;     items.forEach(item => item._withDropContainer(this));      if (this.isDragging()) {       const draggedItems = previousItems.filter(item => item.isDragging());        // If all of the items being dragged were removed       // from the list, abort the current drag sequence.       if (draggedItems.every(item => items.indexOf(item) === -1)) {         this._reset();       } else {         this._sortStrategy.withItems(this._draggables);       }     }      return this;   }    /** Sets the layout direction of the drop list. */   withDirection(direction: Direction): this {     this._sortStrategy.direction = direction;     return this;   }    /**    * Sets the containers that are connected to this one. When two or more containers are    * connected, the user will be allowed to transfer items between them.    * @param connectedTo Other containers that the current containers should be connected to.    */   connectedTo(connectedTo: DropListRef[]): this {     this._siblings = connectedTo.slice();     return this;   }    /**    * Sets the orientation of the container.    * @param orientation New orientation for the container.    */   withOrientation(orientation: 'vertical' | 'horizontal'): this {     // TODO(crisbeto): eventually we should be constructing the new sort strategy here based on     // the new orientation. For now we can assume that it'll always be `SingleAxisSortStrategy`.     (this._sortStrategy as SingleAxisSortStrategy<DragRef>).orientation = orientation;     return this;   }    /**    * Sets which parent elements are can be scrolled while the user is dragging.    * @param elements Elements that can be scrolled.    */   withScrollableParents(elements: HTMLElement[]): this {     const element = coerceElement(this.element);      // We always allow the current element to be scrollable     // so we need to ensure that it's in the array.     this._scrollableElements =       elements.indexOf(element) === -1 ? [element, ...elements] : elements.slice();     return this;   }    /** Gets the scrollable parents that are registered with this drop container. */   getScrollableParents(): readonly HTMLElement[] {     return this._scrollableElements;   }    /**    * Figures out the index of an item in the container.    * @param item Item whose index should be determined.    */   getItemIndex(item: DragRef): number {     return this._isDragging       ? this._sortStrategy.getItemIndex(item)       : this._draggables.indexOf(item);   }    /**    * Whether the list is able to receive the item that    * is currently being dragged inside a connected drop list.    */   isReceiving(): boolean {     return this._activeSiblings.size > 0;   }    /**    * Sorts an item inside the container based on its position.    * @param item Item to be sorted.    * @param pointerX Position of the item along the X axis.    * @param pointerY Position of the item along the Y axis.    * @param pointerDelta Direction in which the pointer is moving along each axis.    */   _sortItem(     item: DragRef,     pointerX: number,     pointerY: number,     pointerDelta: {x: number; y: number},   ): void {     // Don't sort the item if sorting is disabled or it's out of range.     if (       this.sortingDisabled ||       !this._clientRect ||       !isPointerNearClientRect(this._clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)     ) {       return;     }      const result = this._sortStrategy.sort(item, pointerX, pointerY, pointerDelta);      if (result) {       this.sorted.next({         previousIndex: result.previousIndex,         currentIndex: result.currentIndex,         container: this,         item,       });     }   }    /**    * Checks whether the user's pointer is close to the edges of either the    * viewport or the drop list and starts the auto-scroll sequence.    * @param pointerX User's pointer position along the x axis.    * @param pointerY User's pointer position along the y axis.    */   _startScrollingIfNecessary(pointerX: number, pointerY: number) {     if (this.autoScrollDisabled) {       return;     }      let scrollNode: HTMLElement | Window | undefined;     let verticalScrollDirection = AutoScrollVerticalDirection.NONE;     let horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;      // Check whether we should start scrolling any of the parent containers.     this._parentPositions.positions.forEach((position, element) => {       // We have special handling for the `document` below. Also this would be       // nicer with a  for...of loop, but it requires changing a compiler flag.       if (element === this._document || !position.clientRect || scrollNode) {         return;       }        if (         isPointerNearClientRect(position.clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)       ) {         [verticalScrollDirection, horizontalScrollDirection] = getElementScrollDirections(           element as HTMLElement,           position.clientRect,           pointerX,           pointerY,         );          if (verticalScrollDirection || horizontalScrollDirection) {           scrollNode = element as HTMLElement;         }       }     });      // Otherwise check if we can start scrolling the viewport.     if (!verticalScrollDirection && !horizontalScrollDirection) {       const {width, height} = this._viewportRuler.getViewportSize();       const clientRect = {         width,         height,         top: 0,         right: width,         bottom: height,         left: 0,       } as ClientRect;       verticalScrollDirection = getVerticalScrollDirection(clientRect, pointerY);       horizontalScrollDirection = getHorizontalScrollDirection(clientRect, pointerX);       scrollNode = window;     }      if (       scrollNode &&       (verticalScrollDirection !== this._verticalScrollDirection ||         horizontalScrollDirection !== this._horizontalScrollDirection ||         scrollNode !== this._scrollNode)     ) {       this._verticalScrollDirection = verticalScrollDirection;       this._horizontalScrollDirection = horizontalScrollDirection;       this._scrollNode = scrollNode;        if ((verticalScrollDirection || horizontalScrollDirection) && scrollNode) {         this._ngZone.runOutsideAngular(this._startScrollInterval);       } else {         this._stopScrolling();       }     }   }    /** Stops any currently-running auto-scroll sequences. */   _stopScrolling() {     this._stopScrollTimers.next();   }    /** Starts the dragging sequence within the list. */   private _draggingStarted() {     const styles = coerceElement(this.element).style as DragCSSStyleDeclaration;     this.beforeStarted.next();     this._isDragging = true;      // We need to disable scroll snapping while the user is dragging, because it breaks automatic     // scrolling. The browser seems to round the value based on the snapping points which means     // that we can't increment/decrement the scroll position.     this._initialScrollSnap = styles.msScrollSnapType || styles.scrollSnapType || '';     styles.scrollSnapType = styles.msScrollSnapType = 'none';     this._sortStrategy.start(this._draggables);     this._cacheParentPositions();     this._viewportScrollSubscription.unsubscribe();     this._listenToScrollEvents();   }    /** Caches the positions of the configured scrollable parents. */   private _cacheParentPositions() {     const element = coerceElement(this.element);     this._parentPositions.cache(this._scrollableElements);      // The list element is always in the `scrollableElements`     // so we can take advantage of the cached `ClientRect`.     this._clientRect = this._parentPositions.positions.get(element)!.clientRect!;   }    /** Resets the container to its initial state. */   private _reset() {     this._isDragging = false;      const styles = coerceElement(this.element).style as DragCSSStyleDeclaration;     styles.scrollSnapType = styles.msScrollSnapType = this._initialScrollSnap;      this._siblings.forEach(sibling => sibling._stopReceiving(this));     this._sortStrategy.reset();     this._stopScrolling();     this._viewportScrollSubscription.unsubscribe();     this._parentPositions.clear();   }    /** Starts the interval that'll auto-scroll the element. */   private _startScrollInterval = () => {     this._stopScrolling();      interval(0, animationFrameScheduler)       .pipe(takeUntil(this._stopScrollTimers))       .subscribe(() => {         const node = this._scrollNode;         const scrollStep = this.autoScrollStep;          if (this._verticalScrollDirection === AutoScrollVerticalDirection.UP) {           node.scrollBy(0, -scrollStep);         } else if (this._verticalScrollDirection === AutoScrollVerticalDirection.DOWN) {           node.scrollBy(0, scrollStep);         }          if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.LEFT) {           node.scrollBy(-scrollStep, 0);         } else if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.RIGHT) {           node.scrollBy(scrollStep, 0);         }       });   };    /**    * Checks whether the user's pointer is positioned over the container.    * @param x Pointer position along the X axis.    * @param y Pointer position along the Y axis.    */   _isOverContainer(x: number, y: number): boolean {     return this._clientRect != null && isInsideClientRect(this._clientRect, x, y);   }    /**    * Figures out whether an item should be moved into a sibling    * drop container, based on its current position.    * @param item Drag item that is being moved.    * @param x Position of the item along the X axis.    * @param y Position of the item along the Y axis.    */   _getSiblingContainerFromPosition(item: DragRef, x: number, y: number): DropListRef | undefined {     return this._siblings.find(sibling => sibling._canReceive(item, x, y));   }    /**    * Checks whether the drop list can receive the passed-in item.    * @param item Item that is being dragged into the list.    * @param x Position of the item along the X axis.    * @param y Position of the item along the Y axis.    */   _canReceive(item: DragRef, x: number, y: number): boolean {     if (       !this._clientRect ||       !isInsideClientRect(this._clientRect, x, y) ||       !this.enterPredicate(item, this)     ) {       return false;     }      const elementFromPoint = this._getShadowRoot().elementFromPoint(x, y) as HTMLElement | null;      // If there's no element at the pointer position, then     // the client rect is probably scrolled out of the view.     if (!elementFromPoint) {       return false;     }      const nativeElement = coerceElement(this.element);      // The `ClientRect`, that we're using to find the container over which the user is     // hovering, doesn't give us any information on whether the element has been scrolled     // out of the view or whether it's overlapping with other containers. This means that     // we could end up transferring the item into a container that's invisible or is positioned     // below another one. We use the result from `elementFromPoint` to get the top-most element     // at the pointer position and to find whether it's one of the intersecting drop containers.     return elementFromPoint === nativeElement || nativeElement.contains(elementFromPoint);   }    /**    * Called by one of the connected drop lists when a dragging sequence has started.    * @param sibling Sibling in which dragging has started.    */   _startReceiving(sibling: DropListRef, items: DragRef[]) {     const activeSiblings = this._activeSiblings;      if (       !activeSiblings.has(sibling) &&       items.every(item => {         // Note that we have to add an exception to the `enterPredicate` for items that started off         // in this drop list. The drag ref has logic that allows an item to return to its initial         // container, if it has left the initial container and none of the connected containers         // allow it to enter. See `DragRef._updateActiveDropContainer` for more context.         return this.enterPredicate(item, this) || this._draggables.indexOf(item) > -1;       })     ) {       activeSiblings.add(sibling);       this._cacheParentPositions();       this._listenToScrollEvents();       this.receivingStarted.next({         initiator: sibling,         receiver: this,         items,       });     }   }    /**    * Called by a connected drop list when dragging has stopped.    * @param sibling Sibling whose dragging has stopped.    */   _stopReceiving(sibling: DropListRef) {     this._activeSiblings.delete(sibling);     this._viewportScrollSubscription.unsubscribe();     this.receivingStopped.next({initiator: sibling, receiver: this});   }    /**    * Starts listening to scroll events on the viewport.    * Used for updating the internal state of the list.    */   private _listenToScrollEvents() {     this._viewportScrollSubscription = this._dragDropRegistry       .scrolled(this._getShadowRoot())       .subscribe(event => {         if (this.isDragging()) {           const scrollDifference = this._parentPositions.handleScroll(event);            if (scrollDifference) {             this._sortStrategy.updateOnScroll(scrollDifference.top, scrollDifference.left);           }         } else if (this.isReceiving()) {           this._cacheParentPositions();         }       });   }    /**    * Lazily resolves and returns the shadow root of the element. We do this in a function, rather    * than saving it in property directly on init, because we want to resolve it as late as possible    * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the    * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.    */   private _getShadowRoot(): RootNode {     if (!this._cachedShadowRoot) {       const shadowRoot = _getShadowRoot(coerceElement(this.element));       this._cachedShadowRoot = (shadowRoot || this._document) as RootNode;     }      return this._cachedShadowRoot;   }    /** Notifies any siblings that may potentially receive the item. */   private _notifyReceivingSiblings() {     const draggedItems = this._sortStrategy       .getActiveItemsSnapshot()       .filter(item => item.isDragging());     this._siblings.forEach(sibling => sibling._startReceiving(this, draggedItems));   } }  /**  * Gets whether the vertical auto-scroll direction of a node.  * @param clientRect Dimensions of the node.  * @param pointerY Position of the user's pointer along the y axis.  */ function getVerticalScrollDirection(clientRect: ClientRect, pointerY: number) {   const {top, bottom, height} = clientRect;   const yThreshold = height * SCROLL_PROXIMITY_THRESHOLD;    if (pointerY >= top - yThreshold && pointerY <= top + yThreshold) {     return AutoScrollVerticalDirection.UP;   } else if (pointerY >= bottom - yThreshold && pointerY <= bottom + yThreshold) {     return AutoScrollVerticalDirection.DOWN;   }    return AutoScrollVerticalDirection.NONE; }  /**  * Gets whether the horizontal auto-scroll direction of a node.  * @param clientRect Dimensions of the node.  * @param pointerX Position of the user's pointer along the x axis.  */ function getHorizontalScrollDirection(clientRect: ClientRect, pointerX: number) {   const {left, right, width} = clientRect;   const xThreshold = width * SCROLL_PROXIMITY_THRESHOLD;    if (pointerX >= left - xThreshold && pointerX <= left + xThreshold) {     return AutoScrollHorizontalDirection.LEFT;   } else if (pointerX >= right - xThreshold && pointerX <= right + xThreshold) {     return AutoScrollHorizontalDirection.RIGHT;   }    return AutoScrollHorizontalDirection.NONE; }  /**  * Gets the directions in which an element node should be scrolled,  * assuming that the user's pointer is already within it scrollable region.  * @param element Element for which we should calculate the scroll direction.  * @param clientRect Bounding client rectangle of the element.  * @param pointerX Position of the user's pointer along the x axis.  * @param pointerY Position of the user's pointer along the y axis.  */ function getElementScrollDirections(   element: HTMLElement,   clientRect: ClientRect,   pointerX: number,   pointerY: number, ): [AutoScrollVerticalDirection, AutoScrollHorizontalDirection] {   const computedVertical = getVerticalScrollDirection(clientRect, pointerY);   const computedHorizontal = getHorizontalScrollDirection(clientRect, pointerX);   let verticalScrollDirection = AutoScrollVerticalDirection.NONE;   let horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;    // Note that we here we do some extra checks for whether the element is actually scrollable in   // a certain direction and we only assign the scroll direction if it is. We do this so that we   // can allow other elements to be scrolled, if the current element can't be scrolled anymore.   // This allows us to handle cases where the scroll regions of two scrollable elements overlap.   if (computedVertical) {     const scrollTop = element.scrollTop;      if (computedVertical === AutoScrollVerticalDirection.UP) {       if (scrollTop > 0) {         verticalScrollDirection = AutoScrollVerticalDirection.UP;       }     } else if (element.scrollHeight - scrollTop > element.clientHeight) {       verticalScrollDirection = AutoScrollVerticalDirection.DOWN;     }   }    if (computedHorizontal) {     const scrollLeft = element.scrollLeft;      if (computedHorizontal === AutoScrollHorizontalDirection.LEFT) {       if (scrollLeft > 0) {         horizontalScrollDirection = AutoScrollHorizontalDirection.LEFT;       }     } else if (element.scrollWidth - scrollLeft > element.clientWidth) {       horizontalScrollDirection = AutoScrollHorizontalDirection.RIGHT;     }   }    return [verticalScrollDirection, horizontalScrollDirection]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable, NgZone, OnDestroy, Inject} from '@angular/core'; import {DOCUMENT} from '@angular/common'; import {normalizePassiveListenerOptions} from '@angular/cdk/platform'; import {merge, Observable, Observer, Subject} from 'rxjs';  /** Event options that can be used to bind an active, capturing event. */ const activeCapturingEventOptions = normalizePassiveListenerOptions({   passive: false,   capture: true, });  /**  * Service that keeps track of all the drag item and drop container  * instances, and manages global event listeners on the `document`.  * @docs-private  */ // Note: this class is generic, rather than referencing CdkDrag and CdkDropList directly, in order // to avoid circular imports. If we were to reference them here, importing the registry into the // classes that are registering themselves will introduce a circular import. @Injectable({providedIn: 'root'}) export class DragDropRegistry<I extends {isDragging(): boolean}, C> implements OnDestroy {   private _document: Document;    /** Registered drop container instances. */   private _dropInstances = new Set<C>();    /** Registered drag item instances. */   private _dragInstances = new Set<I>();    /** Drag item instances that are currently being dragged. */   private _activeDragInstances: I[] = [];    /** Keeps track of the event listeners that we've bound to the `document`. */   private _globalListeners = new Map<     string,     {       handler: (event: Event) => void;       options?: AddEventListenerOptions | boolean;     }   >();    /**    * Predicate function to check if an item is being dragged.  Moved out into a property,    * because it'll be called a lot and we don't want to create a new function every time.    */   private _draggingPredicate = (item: I) => item.isDragging();    /**    * Emits the `touchmove` or `mousemove` events that are dispatched    * while the user is dragging a drag item instance.    */   readonly pointerMove: Subject<TouchEvent | MouseEvent> = new Subject<TouchEvent | MouseEvent>();    /**    * Emits the `touchend` or `mouseup` events that are dispatched    * while the user is dragging a drag item instance.    */   readonly pointerUp: Subject<TouchEvent | MouseEvent> = new Subject<TouchEvent | MouseEvent>();    /**    * Emits when the viewport has been scrolled while the user is dragging an item.    * @deprecated To be turned into a private member. Use the `scrolled` method instead.    * @breaking-change 13.0.0    */   readonly scroll: Subject<Event> = new Subject<Event>();    constructor(private _ngZone: NgZone, @Inject(DOCUMENT) _document: any) {     this._document = _document;   }    /** Adds a drop container to the registry. */   registerDropContainer(drop: C) {     if (!this._dropInstances.has(drop)) {       this._dropInstances.add(drop);     }   }    /** Adds a drag item instance to the registry. */   registerDragItem(drag: I) {     this._dragInstances.add(drag);      // The `touchmove` event gets bound once, ahead of time, because WebKit     // won't preventDefault on a dynamically-added `touchmove` listener.     // See https://bugs.webkit.org/show_bug.cgi?id=184250.     if (this._dragInstances.size === 1) {       this._ngZone.runOutsideAngular(() => {         // The event handler has to be explicitly active,         // because newer browsers make it passive by default.         this._document.addEventListener(           'touchmove',           this._persistentTouchmoveListener,           activeCapturingEventOptions,         );       });     }   }    /** Removes a drop container from the registry. */   removeDropContainer(drop: C) {     this._dropInstances.delete(drop);   }    /** Removes a drag item instance from the registry. */   removeDragItem(drag: I) {     this._dragInstances.delete(drag);     this.stopDragging(drag);      if (this._dragInstances.size === 0) {       this._document.removeEventListener(         'touchmove',         this._persistentTouchmoveListener,         activeCapturingEventOptions,       );     }   }    /**    * Starts the dragging sequence for a drag instance.    * @param drag Drag instance which is being dragged.    * @param event Event that initiated the dragging.    */   startDragging(drag: I, event: TouchEvent | MouseEvent) {     // Do not process the same drag twice to avoid memory leaks and redundant listeners     if (this._activeDragInstances.indexOf(drag) > -1) {       return;     }      this._activeDragInstances.push(drag);      if (this._activeDragInstances.length === 1) {       const isTouchEvent = event.type.startsWith('touch');        // We explicitly bind __active__ listeners here, because newer browsers will default to       // passive ones for `mousemove` and `touchmove`. The events need to be active, because we       // use `preventDefault` to prevent the page from scrolling while the user is dragging.       this._globalListeners         .set(isTouchEvent ? 'touchend' : 'mouseup', {           handler: (e: Event) => this.pointerUp.next(e as TouchEvent | MouseEvent),           options: true,         })         .set('scroll', {           handler: (e: Event) => this.scroll.next(e),           // Use capturing so that we pick up scroll changes in any scrollable nodes that aren't           // the document. See https://github.com/angular/components/issues/17144.           options: true,         })         // Preventing the default action on `mousemove` isn't enough to disable text selection         // on Safari so we need to prevent the selection event as well. Alternatively this can         // be done by setting `user-select: none` on the `body`, however it has causes a style         // recalculation which can be expensive on pages with a lot of elements.         .set('selectstart', {           handler: this._preventDefaultWhileDragging,           options: activeCapturingEventOptions,         });        // We don't have to bind a move event for touch drag sequences, because       // we already have a persistent global one bound from `registerDragItem`.       if (!isTouchEvent) {         this._globalListeners.set('mousemove', {           handler: (e: Event) => this.pointerMove.next(e as MouseEvent),           options: activeCapturingEventOptions,         });       }        this._ngZone.runOutsideAngular(() => {         this._globalListeners.forEach((config, name) => {           this._document.addEventListener(name, config.handler, config.options);         });       });     }   }    /** Stops dragging a drag item instance. */   stopDragging(drag: I) {     const index = this._activeDragInstances.indexOf(drag);      if (index > -1) {       this._activeDragInstances.splice(index, 1);        if (this._activeDragInstances.length === 0) {         this._clearGlobalListeners();       }     }   }    /** Gets whether a drag item instance is currently being dragged. */   isDragging(drag: I) {     return this._activeDragInstances.indexOf(drag) > -1;   }    /**    * Gets a stream that will emit when any element on the page is scrolled while an item is being    * dragged.    * @param shadowRoot Optional shadow root that the current dragging sequence started from.    *   Top-level listeners won't pick up events coming from the shadow DOM so this parameter can    *   be used to include an additional top-level listener at the shadow root level.    */   scrolled(shadowRoot?: DocumentOrShadowRoot | null): Observable<Event> {     const streams: Observable<Event>[] = [this.scroll];      if (shadowRoot && shadowRoot !== this._document) {       // Note that this is basically the same as `fromEvent` from rxjs, but we do it ourselves,       // because we want to guarantee that the event is bound outside of the `NgZone`. With       // `fromEvent` it'll only happen if the subscription is outside the `NgZone`.       streams.push(         new Observable((observer: Observer<Event>) => {           return this._ngZone.runOutsideAngular(() => {             const eventOptions = true;             const callback = (event: Event) => {               if (this._activeDragInstances.length) {                 observer.next(event);               }             };              (shadowRoot as ShadowRoot).addEventListener('scroll', callback, eventOptions);              return () => {               (shadowRoot as ShadowRoot).removeEventListener('scroll', callback, eventOptions);             };           });         }),       );     }      return merge(...streams);   }    ngOnDestroy() {     this._dragInstances.forEach(instance => this.removeDragItem(instance));     this._dropInstances.forEach(instance => this.removeDropContainer(instance));     this._clearGlobalListeners();     this.pointerMove.complete();     this.pointerUp.complete();   }    /**    * Event listener that will prevent the default browser action while the user is dragging.    * @param event Event whose default action should be prevented.    */   private _preventDefaultWhileDragging = (event: Event) => {     if (this._activeDragInstances.length > 0) {       event.preventDefault();     }   };    /** Event listener for `touchmove` that is bound even if no dragging is happening. */   private _persistentTouchmoveListener = (event: TouchEvent) => {     if (this._activeDragInstances.length > 0) {       // Note that we only want to prevent the default action after dragging has actually started.       // Usually this is the same time at which the item is added to the `_activeDragInstances`,       // but it could be pushed back if the user has set up a drag delay or threshold.       if (this._activeDragInstances.some(this._draggingPredicate)) {         event.preventDefault();       }        this.pointerMove.next(event);     }   };    /** Clears out the global event listeners from the `document`. */   private _clearGlobalListeners() {     this._globalListeners.forEach((config, name) => {       this._document.removeEventListener(name, config.handler, config.options);     });      this._globalListeners.clear();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable, Inject, NgZone, ElementRef} from '@angular/core'; import {DOCUMENT} from '@angular/common'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {DragRef, DragRefConfig} from './drag-ref'; import {DropListRef} from './drop-list-ref'; import {DragDropRegistry} from './drag-drop-registry';  /** Default configuration to be used when creating a `DragRef`. */ const DEFAULT_CONFIG = {   dragStartThreshold: 5,   pointerDirectionChangeThreshold: 5, };  /**  * Service that allows for drag-and-drop functionality to be attached to DOM elements.  */ @Injectable({providedIn: 'root'}) export class DragDrop {   constructor(     @Inject(DOCUMENT) private _document: any,     private _ngZone: NgZone,     private _viewportRuler: ViewportRuler,     private _dragDropRegistry: DragDropRegistry<DragRef, DropListRef>,   ) {}    /**    * Turns an element into a draggable item.    * @param element Element to which to attach the dragging functionality.    * @param config Object used to configure the dragging behavior.    */   createDrag<T = any>(     element: ElementRef<HTMLElement> | HTMLElement,     config: DragRefConfig = DEFAULT_CONFIG,   ): DragRef<T> {     return new DragRef<T>(       element,       config,       this._document,       this._ngZone,       this._viewportRuler,       this._dragDropRegistry,     );   }    /**    * Turns an element into a drop list.    * @param element Element to which to attach the drop list functionality.    */   createDropList<T = any>(element: ElementRef<HTMLElement> | HTMLElement): DropListRef<T> {     return new DropListRef<T>(       element,       this._dragDropRegistry,       this._document,       this._ngZone,       this._viewportRuler,     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core';  /**  * Injection token that can be used for a `CdkDrag` to provide itself as a parent to the  * drag-specific child directive (`CdkDragHandle`, `CdkDragPreview` etc.). Used primarily  * to avoid circular imports.  * @docs-private  */ export const CDK_DRAG_PARENT = new InjectionToken<{}>('CDK_DRAG_PARENT'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, OnDestroy, Input, InjectionToken} from '@angular/core'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';  /**  * Injection token that can be used to reference instances of `CdkDropListGroup`. It serves as  * alternative token to the actual `CdkDropListGroup` class which could cause unnecessary  * retention of the class and its directive metadata.  */ export const CDK_DROP_LIST_GROUP = new InjectionToken<CdkDropListGroup<unknown>>(   'CdkDropListGroup', );  /**  * Declaratively connects sibling `cdkDropList` instances together. All of the `cdkDropList`  * elements that are placed inside a `cdkDropListGroup` will be connected to each other  * automatically. Can be used as an alternative to the `cdkDropListConnectedTo` input  * from `cdkDropList`.  */ @Directive({   selector: '[cdkDropListGroup]',   exportAs: 'cdkDropListGroup',   standalone: true,   providers: [{provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup}], }) export class CdkDropListGroup<T> implements OnDestroy {   /** Drop lists registered inside the group. */   readonly _items = new Set<T>();    /** Whether starting a dragging sequence from inside this group is disabled. */   @Input('cdkDropListGroupDisabled')   get disabled(): boolean {     return this._disabled;   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);   }   private _disabled = false;    ngOnDestroy() {     this._items.clear();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core'; import {DragRefConfig, Point, DragRef} from '../drag-ref';  /** Possible values that can be used to configure the drag start delay. */ export type DragStartDelay = number | {touch: number; mouse: number};  /** Possible axis along which dragging can be locked. */ export type DragAxis = 'x' | 'y';  /** Function that can be used to constrain the position of a dragged element. */ export type DragConstrainPosition = (point: Point, dragRef: DragRef) => Point;  /** Possible orientations for a drop list. */ export type DropListOrientation = 'horizontal' | 'vertical';  /**  * Injection token that can be used to configure the  * behavior of the drag&drop-related components.  */ export const CDK_DRAG_CONFIG = new InjectionToken<DragDropConfig>('CDK_DRAG_CONFIG');  /**  * Object that can be used to configure the drag  * items and drop lists within a module or a component.  */ export interface DragDropConfig extends Partial<DragRefConfig> {   lockAxis?: DragAxis;   dragStartDelay?: DragStartDelay;   constrainPosition?: DragConstrainPosition;   previewClass?: string | string[];   boundaryElement?: string;   rootElementSelector?: string;   draggingDisabled?: boolean;   sortingDisabled?: boolean;   listAutoScrollDisabled?: boolean;   listOrientation?: DropListOrientation;   zIndex?: number;   previewContainer?: 'global' | 'parent'; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Asserts that a particular node is an element.  * @param node Node to be checked.  * @param name Name to attach to the error message.  */ export function assertElementNode(node: Node, name: string): asserts node is HTMLElement {   if (node.nodeType !== 1) {     throw Error(       `${name} must be attached to an element node. ` + `Currently attached to \"${node.nodeName}\".`,     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   BooleanInput,   coerceArray,   coerceNumberProperty,   coerceBooleanProperty,   NumberInput, } from '@angular/cdk/coercion'; import {   ElementRef,   EventEmitter,   Input,   OnDestroy,   Output,   Optional,   Directive,   ChangeDetectorRef,   SkipSelf,   Inject,   InjectionToken, } from '@angular/core'; import {Directionality} from '@angular/cdk/bidi'; import {ScrollDispatcher} from '@angular/cdk/scrolling'; import {CdkDrag} from './drag'; import {CdkDragDrop, CdkDragEnter, CdkDragExit, CdkDragSortEvent} from '../drag-events'; import {CDK_DROP_LIST_GROUP, CdkDropListGroup} from './drop-list-group'; import {DropListRef} from '../drop-list-ref'; import {DragRef} from '../drag-ref'; import {DragDrop} from '../drag-drop'; import {DropListOrientation, DragAxis, DragDropConfig, CDK_DRAG_CONFIG} from './config'; import {merge, Subject} from 'rxjs'; import {startWith, takeUntil} from 'rxjs/operators'; import {assertElementNode} from './assertions';  /** Counter used to generate unique ids for drop zones. */ let _uniqueIdCounter = 0;  /**  * Internal compile-time-only representation of a `CdkDropList`.  * Used to avoid circular import issues between the `CdkDropList` and the `CdkDrag`.  * @docs-private  */ export interface CdkDropListInternal extends CdkDropList {}  /**  * Injection token that can be used to reference instances of `CdkDropList`. It serves as  * alternative token to the actual `CdkDropList` class which could cause unnecessary  * retention of the class and its directive metadata.  */ export const CDK_DROP_LIST = new InjectionToken<CdkDropList>('CdkDropList');  /** Container that wraps a set of draggable items. */ @Directive({   selector: '[cdkDropList], cdk-drop-list',   exportAs: 'cdkDropList',   standalone: true,   providers: [     // Prevent child drop lists from picking up the same group as their parent.     {provide: CDK_DROP_LIST_GROUP, useValue: undefined},     {provide: CDK_DROP_LIST, useExisting: CdkDropList},   ],   host: {     'class': 'cdk-drop-list',     '[attr.id]': 'id',     '[class.cdk-drop-list-disabled]': 'disabled',     '[class.cdk-drop-list-dragging]': '_dropListRef.isDragging()',     '[class.cdk-drop-list-receiving]': '_dropListRef.isReceiving()',   }, }) export class CdkDropList<T = any> implements OnDestroy {   /** Emits when the list has been destroyed. */   private readonly _destroyed = new Subject<void>();    /** Whether the element's scrollable parents have been resolved. */   private _scrollableParentsResolved: boolean;    /** Keeps track of the drop lists that are currently on the page. */   private static _dropLists: CdkDropList[] = [];    /** Reference to the underlying drop list instance. */   _dropListRef: DropListRef<CdkDropList<T>>;    /**    * Other draggable containers that this container is connected to and into which the    * container's items can be transferred. Can either be references to other drop containers,    * or their unique IDs.    */   @Input('cdkDropListConnectedTo')   connectedTo: (CdkDropList | string)[] | CdkDropList | string = [];    /** Arbitrary data to attach to this container. */   @Input('cdkDropListData') data: T;    /** Direction in which the list is oriented. */   @Input('cdkDropListOrientation') orientation: DropListOrientation;    /**    * Unique ID for the drop zone. Can be used as a reference    * in the `connectedTo` of another `CdkDropList`.    */   @Input() id: string = `cdk-drop-list-${_uniqueIdCounter++}`;    /** Locks the position of the draggable elements inside the container along the specified axis. */   @Input('cdkDropListLockAxis') lockAxis: DragAxis;    /** Whether starting a dragging sequence from this container is disabled. */   @Input('cdkDropListDisabled')   get disabled(): boolean {     return this._disabled || (!!this._group && this._group.disabled);   }   set disabled(value: BooleanInput) {     // Usually we sync the directive and ref state right before dragging starts, in order to have     // a single point of failure and to avoid having to use setters for everything. `disabled` is     // a special case, because it can prevent the `beforeStarted` event from firing, which can lock     // the user in a disabled state, so we also need to sync it as it's being set.     this._dropListRef.disabled = this._disabled = coerceBooleanProperty(value);   }   private _disabled: boolean;    /** Whether sorting within this drop list is disabled. */   @Input('cdkDropListSortingDisabled')   sortingDisabled: BooleanInput;    /**    * Function that is used to determine whether an item    * is allowed to be moved into a drop container.    */   @Input('cdkDropListEnterPredicate')   enterPredicate: (drag: CdkDrag, drop: CdkDropList) => boolean = () => true;    /** Functions that is used to determine whether an item can be sorted into a particular index. */   @Input('cdkDropListSortPredicate')   sortPredicate: (index: number, drag: CdkDrag, drop: CdkDropList) => boolean = () => true;    /** Whether to auto-scroll the view when the user moves their pointer close to the edges. */   @Input('cdkDropListAutoScrollDisabled')   autoScrollDisabled: BooleanInput;    /** Number of pixels to scroll for each frame when auto-scrolling an element. */   @Input('cdkDropListAutoScrollStep')   autoScrollStep: NumberInput;    /** Emits when the user drops an item inside the container. */   @Output('cdkDropListDropped')   readonly dropped: EventEmitter<CdkDragDrop<T, any>> = new EventEmitter<CdkDragDrop<T, any>>();    /**    * Emits when the user has moved a new drag item into this container.    */   @Output('cdkDropListEntered')   readonly entered: EventEmitter<CdkDragEnter<T>> = new EventEmitter<CdkDragEnter<T>>();    /**    * Emits when the user removes an item from the container    * by dragging it into another container.    */   @Output('cdkDropListExited')   readonly exited: EventEmitter<CdkDragExit<T>> = new EventEmitter<CdkDragExit<T>>();    /** Emits as the user is swapping items while actively dragging. */   @Output('cdkDropListSorted')   readonly sorted: EventEmitter<CdkDragSortEvent<T>> = new EventEmitter<CdkDragSortEvent<T>>();    /**    * Keeps track of the items that are registered with this container. Historically we used to    * do this with a `ContentChildren` query, however queries don't handle transplanted views very    * well which means that we can't handle cases like dragging the headers of a `mat-table`    * correctly. What we do instead is to have the items register themselves with the container    * and then we sort them based on their position in the DOM.    */   private _unsortedItems = new Set<CdkDrag>();    constructor(     /** Element that the drop list is attached to. */     public element: ElementRef<HTMLElement>,     dragDrop: DragDrop,     private _changeDetectorRef: ChangeDetectorRef,     private _scrollDispatcher: ScrollDispatcher,     @Optional() private _dir?: Directionality,     @Optional()     @Inject(CDK_DROP_LIST_GROUP)     @SkipSelf()     private _group?: CdkDropListGroup<CdkDropList>,     @Optional() @Inject(CDK_DRAG_CONFIG) config?: DragDropConfig,   ) {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       assertElementNode(element.nativeElement, 'cdkDropList');     }      this._dropListRef = dragDrop.createDropList(element);     this._dropListRef.data = this;      if (config) {       this._assignDefaults(config);     }      this._dropListRef.enterPredicate = (drag: DragRef<CdkDrag>, drop: DropListRef<CdkDropList>) => {       return this.enterPredicate(drag.data, drop.data);     };      this._dropListRef.sortPredicate = (       index: number,       drag: DragRef<CdkDrag>,       drop: DropListRef<CdkDropList>,     ) => {       return this.sortPredicate(index, drag.data, drop.data);     };      this._setupInputSyncSubscription(this._dropListRef);     this._handleEvents(this._dropListRef);     CdkDropList._dropLists.push(this);      if (_group) {       _group._items.add(this);     }   }    /** Registers an items with the drop list. */   addItem(item: CdkDrag): void {     this._unsortedItems.add(item);      if (this._dropListRef.isDragging()) {       this._syncItemsWithRef();     }   }    /** Removes an item from the drop list. */   removeItem(item: CdkDrag): void {     this._unsortedItems.delete(item);      if (this._dropListRef.isDragging()) {       this._syncItemsWithRef();     }   }    /** Gets the registered items in the list, sorted by their position in the DOM. */   getSortedItems(): CdkDrag[] {     return Array.from(this._unsortedItems).sort((a: CdkDrag, b: CdkDrag) => {       const documentPosition = a._dragRef         .getVisibleElement()         .compareDocumentPosition(b._dragRef.getVisibleElement());        // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.       // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition       // tslint:disable-next-line:no-bitwise       return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;     });   }    ngOnDestroy() {     const index = CdkDropList._dropLists.indexOf(this);      if (index > -1) {       CdkDropList._dropLists.splice(index, 1);     }      if (this._group) {       this._group._items.delete(this);     }      this._unsortedItems.clear();     this._dropListRef.dispose();     this._destroyed.next();     this._destroyed.complete();   }    /** Syncs the inputs of the CdkDropList with the options of the underlying DropListRef. */   private _setupInputSyncSubscription(ref: DropListRef<CdkDropList>) {     if (this._dir) {       this._dir.change         .pipe(startWith(this._dir.value), takeUntil(this._destroyed))         .subscribe(value => ref.withDirection(value));     }      ref.beforeStarted.subscribe(() => {       const siblings = coerceArray(this.connectedTo).map(drop => {         if (typeof drop === 'string') {           const correspondingDropList = CdkDropList._dropLists.find(list => list.id === drop);            if (!correspondingDropList && (typeof ngDevMode === 'undefined' || ngDevMode)) {             console.warn(`CdkDropList could not find connected drop list with id \"${drop}\"`);           }            return correspondingDropList!;         }          return drop;       });        if (this._group) {         this._group._items.forEach(drop => {           if (siblings.indexOf(drop) === -1) {             siblings.push(drop);           }         });       }        // Note that we resolve the scrollable parents here so that we delay the resolution       // as long as possible, ensuring that the element is in its final place in the DOM.       if (!this._scrollableParentsResolved) {         const scrollableParents = this._scrollDispatcher           .getAncestorScrollContainers(this.element)           .map(scrollable => scrollable.getElementRef().nativeElement);         this._dropListRef.withScrollableParents(scrollableParents);          // Only do this once since it involves traversing the DOM and the parents         // shouldn't be able to change without the drop list being destroyed.         this._scrollableParentsResolved = true;       }        ref.disabled = this.disabled;       ref.lockAxis = this.lockAxis;       ref.sortingDisabled = coerceBooleanProperty(this.sortingDisabled);       ref.autoScrollDisabled = coerceBooleanProperty(this.autoScrollDisabled);       ref.autoScrollStep = coerceNumberProperty(this.autoScrollStep, 2);       ref         .connectedTo(siblings.filter(drop => drop && drop !== this).map(list => list._dropListRef))         .withOrientation(this.orientation);     });   }    /** Handles events from the underlying DropListRef. */   private _handleEvents(ref: DropListRef<CdkDropList>) {     ref.beforeStarted.subscribe(() => {       this._syncItemsWithRef();       this._changeDetectorRef.markForCheck();     });      ref.entered.subscribe(event => {       this.entered.emit({         container: this,         item: event.item.data,         currentIndex: event.currentIndex,       });     });      ref.exited.subscribe(event => {       this.exited.emit({         container: this,         item: event.item.data,       });       this._changeDetectorRef.markForCheck();     });      ref.sorted.subscribe(event => {       this.sorted.emit({         previousIndex: event.previousIndex,         currentIndex: event.currentIndex,         container: this,         item: event.item.data,       });     });      ref.dropped.subscribe(dropEvent => {       this.dropped.emit({         previousIndex: dropEvent.previousIndex,         currentIndex: dropEvent.currentIndex,         previousContainer: dropEvent.previousContainer.data,         container: dropEvent.container.data,         item: dropEvent.item.data,         isPointerOverContainer: dropEvent.isPointerOverContainer,         distance: dropEvent.distance,         dropPoint: dropEvent.dropPoint,         event: dropEvent.event,       });        // Mark for check since all of these events run outside of change       // detection and we're not guaranteed for something else to have triggered it.       this._changeDetectorRef.markForCheck();     });      merge(ref.receivingStarted, ref.receivingStopped).subscribe(() =>       this._changeDetectorRef.markForCheck(),     );   }    /** Assigns the default input values based on a provided config object. */   private _assignDefaults(config: DragDropConfig) {     const {lockAxis, draggingDisabled, sortingDisabled, listAutoScrollDisabled, listOrientation} =       config;      this.disabled = draggingDisabled == null ? false : draggingDisabled;     this.sortingDisabled = sortingDisabled == null ? false : sortingDisabled;     this.autoScrollDisabled = listAutoScrollDisabled == null ? false : listAutoScrollDisabled;     this.orientation = listOrientation || 'vertical';      if (lockAxis) {       this.lockAxis = lockAxis;     }   }    /** Syncs up the registered drag items with underlying drop list ref. */   private _syncItemsWithRef() {     this._dropListRef.withItems(this.getSortedItems().map(item => item._dragRef));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {   Directive,   ElementRef,   Inject,   InjectionToken,   Input,   OnDestroy,   Optional,   SkipSelf, } from '@angular/core'; import {Subject} from 'rxjs'; import {CDK_DRAG_PARENT} from '../drag-parent'; import {assertElementNode} from './assertions';  /**  * Injection token that can be used to reference instances of `CdkDragHandle`. It serves as  * alternative token to the actual `CdkDragHandle` class which could cause unnecessary  * retention of the class and its directive metadata.  */ export const CDK_DRAG_HANDLE = new InjectionToken<CdkDragHandle>('CdkDragHandle');  /** Handle that can be used to drag a CdkDrag instance. */ @Directive({   selector: '[cdkDragHandle]',   standalone: true,   host: {     'class': 'cdk-drag-handle',   },   providers: [{provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle}], }) export class CdkDragHandle implements OnDestroy {   /** Closest parent draggable instance. */   _parentDrag: {} | undefined;    /** Emits when the state of the handle has changed. */   readonly _stateChanges = new Subject<CdkDragHandle>();    /** Whether starting to drag through this handle is disabled. */   @Input('cdkDragHandleDisabled')   get disabled(): boolean {     return this._disabled;   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);     this._stateChanges.next(this);   }   private _disabled = false;    constructor(     public element: ElementRef<HTMLElement>,     @Inject(CDK_DRAG_PARENT) @Optional() @SkipSelf() parentDrag?: any,   ) {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       assertElementNode(element.nativeElement, 'cdkDragHandle');     }      this._parentDrag = parentDrag;   }    ngOnDestroy() {     this._stateChanges.complete();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, TemplateRef, Input, InjectionToken} from '@angular/core';  /**  * Injection token that can be used to reference instances of `CdkDragPlaceholder`. It serves as  * alternative token to the actual `CdkDragPlaceholder` class which could cause unnecessary  * retention of the class and its directive metadata.  */ export const CDK_DRAG_PLACEHOLDER = new InjectionToken<CdkDragPlaceholder>('CdkDragPlaceholder');  /**  * Element that will be used as a template for the placeholder of a CdkDrag when  * it is being dragged. The placeholder is displayed in place of the element being dragged.  */ @Directive({   selector: 'ng-template[cdkDragPlaceholder]',   standalone: true,   providers: [{provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder}], }) export class CdkDragPlaceholder<T = any> {   /** Context data to be added to the placeholder template instance. */   @Input() data: T;   constructor(public templateRef: TemplateRef<T>) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {Directive, InjectionToken, Input, TemplateRef} from '@angular/core';  /**  * Injection token that can be used to reference instances of `CdkDragPreview`. It serves as  * alternative token to the actual `CdkDragPreview` class which could cause unnecessary  * retention of the class and its directive metadata.  */ export const CDK_DRAG_PREVIEW = new InjectionToken<CdkDragPreview>('CdkDragPreview');  /**  * Element that will be used as a template for the preview  * of a CdkDrag when it is being dragged.  */ @Directive({   selector: 'ng-template[cdkDragPreview]',   standalone: true,   providers: [{provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview}], }) export class CdkDragPreview<T = any> {   /** Context data to be added to the preview template instance. */   @Input() data: T;    /** Whether the preview should preserve the same size as the item that is being dragged. */   @Input()   get matchSize(): boolean {     return this._matchSize;   }   set matchSize(value: BooleanInput) {     this._matchSize = coerceBooleanProperty(value);   }   private _matchSize = false;    constructor(public templateRef: TemplateRef<T>) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {DOCUMENT} from '@angular/common'; import {   AfterViewInit,   ContentChild,   ContentChildren,   Directive,   ElementRef,   EventEmitter,   Inject,   Input,   NgZone,   OnDestroy,   Optional,   Output,   QueryList,   SkipSelf,   ViewContainerRef,   OnChanges,   SimpleChanges,   ChangeDetectorRef,   Self, } from '@angular/core'; import {   coerceBooleanProperty,   coerceNumberProperty,   coerceElement,   BooleanInput, } from '@angular/cdk/coercion'; import {Observable, Observer, Subject, merge} from 'rxjs'; import {startWith, take, map, takeUntil, switchMap, tap} from 'rxjs/operators'; import {   CdkDragDrop,   CdkDragEnd,   CdkDragEnter,   CdkDragExit,   CdkDragMove,   CdkDragStart,   CdkDragRelease, } from '../drag-events'; import {CDK_DRAG_HANDLE, CdkDragHandle} from './drag-handle'; import {CDK_DRAG_PLACEHOLDER, CdkDragPlaceholder} from './drag-placeholder'; import {CDK_DRAG_PREVIEW, CdkDragPreview} from './drag-preview'; import {CDK_DRAG_PARENT} from '../drag-parent'; import {DragRef, Point, PreviewContainer} from '../drag-ref'; import {CDK_DROP_LIST, CdkDropListInternal as CdkDropList} from './drop-list'; import {DragDrop} from '../drag-drop'; import {CDK_DRAG_CONFIG, DragDropConfig, DragStartDelay, DragAxis} from './config'; import {assertElementNode} from './assertions';  const DRAG_HOST_CLASS = 'cdk-drag';  /** Element that can be moved inside a CdkDropList container. */ @Directive({   selector: '[cdkDrag]',   exportAs: 'cdkDrag',   standalone: true,   host: {     'class': DRAG_HOST_CLASS,     '[class.cdk-drag-disabled]': 'disabled',     '[class.cdk-drag-dragging]': '_dragRef.isDragging()',   },   providers: [{provide: CDK_DRAG_PARENT, useExisting: CdkDrag}], }) export class CdkDrag<T = any> implements AfterViewInit, OnChanges, OnDestroy {   private readonly _destroyed = new Subject<void>();   private static _dragInstances: CdkDrag[] = [];    /** Reference to the underlying drag instance. */   _dragRef: DragRef<CdkDrag<T>>;    /** Elements that can be used to drag the draggable item. */   @ContentChildren(CDK_DRAG_HANDLE, {descendants: true}) _handles: QueryList<CdkDragHandle>;    /** Element that will be used as a template to create the draggable item's preview. */   @ContentChild(CDK_DRAG_PREVIEW) _previewTemplate: CdkDragPreview;    /** Template for placeholder element rendered to show where a draggable would be dropped. */   @ContentChild(CDK_DRAG_PLACEHOLDER) _placeholderTemplate: CdkDragPlaceholder;    /** Arbitrary data to attach to this drag instance. */   @Input('cdkDragData') data: T;    /** Locks the position of the dragged element along the specified axis. */   @Input('cdkDragLockAxis') lockAxis: DragAxis;    /**    * Selector that will be used to determine the root draggable element, starting from    * the `cdkDrag` element and going up the DOM. Passing an alternate root element is useful    * when trying to enable dragging on an element that you might not have access to.    */   @Input('cdkDragRootElement') rootElementSelector: string;    /**    * Node or selector that will be used to determine the element to which the draggable's    * position will be constrained. If a string is passed in, it'll be used as a selector that    * will be matched starting from the element's parent and going up the DOM until a match    * has been found.    */   @Input('cdkDragBoundary') boundaryElement: string | ElementRef<HTMLElement> | HTMLElement;    /**    * Amount of milliseconds to wait after the user has put their    * pointer down before starting to drag the element.    */   @Input('cdkDragStartDelay') dragStartDelay: DragStartDelay;    /**    * Sets the position of a `CdkDrag` that is outside of a drop container.    * Can be used to restore the element's position for a returning user.    */   @Input('cdkDragFreeDragPosition') freeDragPosition: Point;    /** Whether starting to drag this element is disabled. */   @Input('cdkDragDisabled')   get disabled(): boolean {     return this._disabled || (this.dropContainer && this.dropContainer.disabled);   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);     this._dragRef.disabled = this._disabled;   }   private _disabled: boolean;    /**    * Function that can be used to customize the logic of how the position of the drag item    * is limited while it's being dragged. Gets called with a point containing the current position    * of the user's pointer on the page, a reference to the item being dragged and its dimensions.    * Should return a point describing where the item should be rendered.    */   @Input('cdkDragConstrainPosition') constrainPosition?: (     userPointerPosition: Point,     dragRef: DragRef,     dimensions: ClientRect,     pickupPositionInElement: Point,   ) => Point;    /** Class to be added to the preview element. */   @Input('cdkDragPreviewClass') previewClass: string | string[];    /**    * Configures the place into which the preview of the item will be inserted. Can be configured    * globally through `CDK_DROP_LIST`. Possible values:    * - `global` - Preview will be inserted at the bottom of the `<body>`. The advantage is that    * you don't have to worry about `overflow: hidden` or `z-index`, but the item won't retain    * its inherited styles.    * - `parent` - Preview will be inserted into the parent of the drag item. The advantage is that    * inherited styles will be preserved, but it may be clipped by `overflow: hidden` or not be    * visible due to `z-index`. Furthermore, the preview is going to have an effect over selectors    * like `:nth-child` and some flexbox configurations.    * - `ElementRef<HTMLElement> | HTMLElement` - Preview will be inserted into a specific element.    * Same advantages and disadvantages as `parent`.    */   @Input('cdkDragPreviewContainer') previewContainer: PreviewContainer;    /** Emits when the user starts dragging the item. */   @Output('cdkDragStarted') readonly started: EventEmitter<CdkDragStart> =     new EventEmitter<CdkDragStart>();    /** Emits when the user has released a drag item, before any animations have started. */   @Output('cdkDragReleased') readonly released: EventEmitter<CdkDragRelease> =     new EventEmitter<CdkDragRelease>();    /** Emits when the user stops dragging an item in the container. */   @Output('cdkDragEnded') readonly ended: EventEmitter<CdkDragEnd> = new EventEmitter<CdkDragEnd>();    /** Emits when the user has moved the item into a new container. */   @Output('cdkDragEntered') readonly entered: EventEmitter<CdkDragEnter<any>> = new EventEmitter<     CdkDragEnter<any>   >();    /** Emits when the user removes the item its container by dragging it into another container. */   @Output('cdkDragExited') readonly exited: EventEmitter<CdkDragExit<any>> = new EventEmitter<     CdkDragExit<any>   >();    /** Emits when the user drops the item inside a container. */   @Output('cdkDragDropped') readonly dropped: EventEmitter<CdkDragDrop<any>> = new EventEmitter<     CdkDragDrop<any>   >();    /**    * Emits as the user is dragging the item. Use with caution,    * because this event will fire for every pixel that the user has dragged.    */   @Output('cdkDragMoved')   readonly moved: Observable<CdkDragMove<T>> = new Observable(     (observer: Observer<CdkDragMove<T>>) => {       const subscription = this._dragRef.moved         .pipe(           map(movedEvent => ({             source: this,             pointerPosition: movedEvent.pointerPosition,             event: movedEvent.event,             delta: movedEvent.delta,             distance: movedEvent.distance,           })),         )         .subscribe(observer);        return () => {         subscription.unsubscribe();       };     },   );    constructor(     /** Element that the draggable is attached to. */     public element: ElementRef<HTMLElement>,     /** Droppable container that the draggable is a part of. */     @Inject(CDK_DROP_LIST) @Optional() @SkipSelf() public dropContainer: CdkDropList,     /**      * @deprecated `_document` parameter no longer being used and will be removed.      * @breaking-change 12.0.0      */     @Inject(DOCUMENT) _document: any,     private _ngZone: NgZone,     private _viewContainerRef: ViewContainerRef,     @Optional() @Inject(CDK_DRAG_CONFIG) config: DragDropConfig,     @Optional() private _dir: Directionality,     dragDrop: DragDrop,     private _changeDetectorRef: ChangeDetectorRef,     @Optional() @Self() @Inject(CDK_DRAG_HANDLE) private _selfHandle?: CdkDragHandle,     @Optional() @SkipSelf() @Inject(CDK_DRAG_PARENT) private _parentDrag?: CdkDrag,   ) {     this._dragRef = dragDrop.createDrag(element, {       dragStartThreshold:         config && config.dragStartThreshold != null ? config.dragStartThreshold : 5,       pointerDirectionChangeThreshold:         config && config.pointerDirectionChangeThreshold != null           ? config.pointerDirectionChangeThreshold           : 5,       zIndex: config?.zIndex,     });     this._dragRef.data = this;      // We have to keep track of the drag instances in order to be able to match an element to     // a drag instance. We can't go through the global registry of `DragRef`, because the root     // element could be different.     CdkDrag._dragInstances.push(this);      if (config) {       this._assignDefaults(config);     }      // Note that usually the container is assigned when the drop list is picks up the item, but in     // some cases (mainly transplanted views with OnPush, see #18341) we may end up in a situation     // where there are no items on the first change detection pass, but the items get picked up as     // soon as the user triggers another pass by dragging. This is a problem, because the item would     // have to switch from standalone mode to drag mode in the middle of the dragging sequence which     // is too late since the two modes save different kinds of information. We work around it by     // assigning the drop container both from here and the list.     if (dropContainer) {       this._dragRef._withDropContainer(dropContainer._dropListRef);       dropContainer.addItem(this);     }      this._syncInputs(this._dragRef);     this._handleEvents(this._dragRef);   }    /**    * Returns the element that is being used as a placeholder    * while the current element is being dragged.    */   getPlaceholderElement(): HTMLElement {     return this._dragRef.getPlaceholderElement();   }    /** Returns the root draggable element. */   getRootElement(): HTMLElement {     return this._dragRef.getRootElement();   }    /** Resets a standalone drag item to its initial position. */   reset(): void {     this._dragRef.reset();   }    /**    * Gets the pixel coordinates of the draggable outside of a drop container.    */   getFreeDragPosition(): Readonly<Point> {     return this._dragRef.getFreeDragPosition();   }    /**    * Sets the current position in pixels the draggable outside of a drop container.    * @param value New position to be set.    */   setFreeDragPosition(value: Point): void {     this._dragRef.setFreeDragPosition(value);   }    ngAfterViewInit() {     // Normally this isn't in the zone, but it can cause major performance regressions for apps     // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.     this._ngZone.runOutsideAngular(() => {       // We need to wait for the zone to stabilize, in order for the reference       // element to be in the proper place in the DOM. This is mostly relevant       // for draggable elements inside portals since they get stamped out in       // their original DOM position and then they get transferred to the portal.       this._ngZone.onStable.pipe(take(1), takeUntil(this._destroyed)).subscribe(() => {         this._updateRootElement();         this._setupHandlesListener();          if (this.freeDragPosition) {           this._dragRef.setFreeDragPosition(this.freeDragPosition);         }       });     });   }    ngOnChanges(changes: SimpleChanges) {     const rootSelectorChange = changes['rootElementSelector'];     const positionChange = changes['freeDragPosition'];      // We don't have to react to the first change since it's being     // handled in `ngAfterViewInit` where it needs to be deferred.     if (rootSelectorChange && !rootSelectorChange.firstChange) {       this._updateRootElement();     }      // Skip the first change since it's being handled in `ngAfterViewInit`.     if (positionChange && !positionChange.firstChange && this.freeDragPosition) {       this._dragRef.setFreeDragPosition(this.freeDragPosition);     }   }    ngOnDestroy() {     if (this.dropContainer) {       this.dropContainer.removeItem(this);     }      const index = CdkDrag._dragInstances.indexOf(this);     if (index > -1) {       CdkDrag._dragInstances.splice(index, 1);     }      // Unnecessary in most cases, but used to avoid extra change detections with `zone-paths-rxjs`.     this._ngZone.runOutsideAngular(() => {       this._destroyed.next();       this._destroyed.complete();       this._dragRef.dispose();     });   }    /** Syncs the root element with the `DragRef`. */   private _updateRootElement() {     const element = this.element.nativeElement as HTMLElement;     let rootElement = element;     if (this.rootElementSelector) {       rootElement =         element.closest !== undefined           ? (element.closest(this.rootElementSelector) as HTMLElement)           : // Comment tag doesn't have closest method, so use parent's one.             (element.parentElement?.closest(this.rootElementSelector) as HTMLElement);     }      if (rootElement && (typeof ngDevMode === 'undefined' || ngDevMode)) {       assertElementNode(rootElement, 'cdkDrag');     }      this._dragRef.withRootElement(rootElement || element);   }    /** Gets the boundary element, based on the `boundaryElement` value. */   private _getBoundaryElement() {     const boundary = this.boundaryElement;      if (!boundary) {       return null;     }      if (typeof boundary === 'string') {       return this.element.nativeElement.closest<HTMLElement>(boundary);     }      return coerceElement(boundary);   }    /** Syncs the inputs of the CdkDrag with the options of the underlying DragRef. */   private _syncInputs(ref: DragRef<CdkDrag<T>>) {     ref.beforeStarted.subscribe(() => {       if (!ref.isDragging()) {         const dir = this._dir;         const dragStartDelay = this.dragStartDelay;         const placeholder = this._placeholderTemplate           ? {               template: this._placeholderTemplate.templateRef,               context: this._placeholderTemplate.data,               viewContainer: this._viewContainerRef,             }           : null;         const preview = this._previewTemplate           ? {               template: this._previewTemplate.templateRef,               context: this._previewTemplate.data,               matchSize: this._previewTemplate.matchSize,               viewContainer: this._viewContainerRef,             }           : null;          ref.disabled = this.disabled;         ref.lockAxis = this.lockAxis;         ref.dragStartDelay =           typeof dragStartDelay === 'object' && dragStartDelay             ? dragStartDelay             : coerceNumberProperty(dragStartDelay);         ref.constrainPosition = this.constrainPosition;         ref.previewClass = this.previewClass;         ref           .withBoundaryElement(this._getBoundaryElement())           .withPlaceholderTemplate(placeholder)           .withPreviewTemplate(preview)           .withPreviewContainer(this.previewContainer || 'global');          if (dir) {           ref.withDirection(dir.value);         }       }     });      // This only needs to be resolved once.     ref.beforeStarted.pipe(take(1)).subscribe(() => {       // If we managed to resolve a parent through DI, use it.       if (this._parentDrag) {         ref.withParent(this._parentDrag._dragRef);         return;       }        // Otherwise fall back to resolving the parent by looking up the DOM. This can happen if       // the item was projected into another item by something like `ngTemplateOutlet`.       let parent = this.element.nativeElement.parentElement;       while (parent) {         if (parent.classList.contains(DRAG_HOST_CLASS)) {           ref.withParent(             CdkDrag._dragInstances.find(drag => {               return drag.element.nativeElement === parent;             })?._dragRef || null,           );           break;         }         parent = parent.parentElement;       }     });   }    /** Handles the events from the underlying `DragRef`. */   private _handleEvents(ref: DragRef<CdkDrag<T>>) {     ref.started.subscribe(startEvent => {       this.started.emit({source: this, event: startEvent.event});        // Since all of these events run outside of change detection,       // we need to ensure that everything is marked correctly.       this._changeDetectorRef.markForCheck();     });      ref.released.subscribe(releaseEvent => {       this.released.emit({source: this, event: releaseEvent.event});     });      ref.ended.subscribe(endEvent => {       this.ended.emit({         source: this,         distance: endEvent.distance,         dropPoint: endEvent.dropPoint,         event: endEvent.event,       });        // Since all of these events run outside of change detection,       // we need to ensure that everything is marked correctly.       this._changeDetectorRef.markForCheck();     });      ref.entered.subscribe(enterEvent => {       this.entered.emit({         container: enterEvent.container.data,         item: this,         currentIndex: enterEvent.currentIndex,       });     });      ref.exited.subscribe(exitEvent => {       this.exited.emit({         container: exitEvent.container.data,         item: this,       });     });      ref.dropped.subscribe(dropEvent => {       this.dropped.emit({         previousIndex: dropEvent.previousIndex,         currentIndex: dropEvent.currentIndex,         previousContainer: dropEvent.previousContainer.data,         container: dropEvent.container.data,         isPointerOverContainer: dropEvent.isPointerOverContainer,         item: this,         distance: dropEvent.distance,         dropPoint: dropEvent.dropPoint,         event: dropEvent.event,       });     });   }    /** Assigns the default input values based on a provided config object. */   private _assignDefaults(config: DragDropConfig) {     const {       lockAxis,       dragStartDelay,       constrainPosition,       previewClass,       boundaryElement,       draggingDisabled,       rootElementSelector,       previewContainer,     } = config;      this.disabled = draggingDisabled == null ? false : draggingDisabled;     this.dragStartDelay = dragStartDelay || 0;      if (lockAxis) {       this.lockAxis = lockAxis;     }      if (constrainPosition) {       this.constrainPosition = constrainPosition;     }      if (previewClass) {       this.previewClass = previewClass;     }      if (boundaryElement) {       this.boundaryElement = boundaryElement;     }      if (rootElementSelector) {       this.rootElementSelector = rootElementSelector;     }      if (previewContainer) {       this.previewContainer = previewContainer;     }   }    /** Sets up the listener that syncs the handles with the drag ref. */   private _setupHandlesListener() {     // Listen for any newly-added handles.     this._handles.changes       .pipe(         startWith(this._handles),         // Sync the new handles with the DragRef.         tap((handles: QueryList<CdkDragHandle>) => {           const childHandleElements = handles             .filter(handle => handle._parentDrag === this)             .map(handle => handle.element);            // Usually handles are only allowed to be a descendant of the drag element, but if           // the consumer defined a different drag root, we should allow the drag element           // itself to be a handle too.           if (this._selfHandle && this.rootElementSelector) {             childHandleElements.push(this.element);           }            this._dragRef.withHandles(childHandleElements);         }),         // Listen if the state of any of the handles changes.         switchMap((handles: QueryList<CdkDragHandle>) => {           return merge(             ...handles.map(item => {               return item._stateChanges.pipe(startWith(item));             }),           ) as Observable<CdkDragHandle>;         }),         takeUntil(this._destroyed),       )       .subscribe(handleInstance => {         // Enabled/disable the handle that changed in the DragRef.         const dragRef = this._dragRef;         const handle = handleInstance.element.nativeElement;         handleInstance.disabled ? dragRef.disableHandle(handle) : dragRef.enableHandle(handle);       });   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {CdkScrollableModule} from '@angular/cdk/scrolling'; import {CdkDropList} from './directives/drop-list'; import {CdkDropListGroup} from './directives/drop-list-group'; import {CdkDrag} from './directives/drag'; import {CdkDragHandle} from './directives/drag-handle'; import {CdkDragPreview} from './directives/drag-preview'; import {CdkDragPlaceholder} from './directives/drag-placeholder'; import {DragDrop} from './drag-drop';  const DRAG_DROP_DIRECTIVES = [   CdkDropList,   CdkDropListGroup,   CdkDrag,   CdkDragHandle,   CdkDragPreview,   CdkDragPlaceholder, ];  @NgModule({   imports: DRAG_DROP_DIRECTIVES,   exports: [CdkScrollableModule, ...DRAG_DROP_DIRECTIVES],   providers: [DragDrop], }) export class DragDropModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export {DragDrop} from './drag-drop'; export {DragRef, DragRefConfig, Point, PreviewContainer} from './drag-ref'; export {DropListRef} from './drop-list-ref'; export {CDK_DRAG_PARENT} from './drag-parent';  export * from './drag-events'; export * from './drag-utils'; export * from './drag-drop-module'; export * from './drag-drop-registry';  export {CdkDropList, CDK_DROP_LIST} from './directives/drop-list'; export * from './directives/config'; export * from './directives/drop-list-group'; export * from './directives/drag'; export * from './directives/drag-handle'; export * from './directives/drag-preview'; export * from './directives/drag-placeholder'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["clamp","i2.DragDropRegistry","i1.DragDrop","i2","i1","i2.DragDrop"],"mappings":"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"}
-------------------- SECTION 190 --------------------
{"version":3,"file":"listbox.mjs","sources":["../../../../../../src/cdk/listbox/listbox.ts","../../../../../../src/cdk/listbox/listbox-module.ts","../../../../../../src/cdk/listbox/public-api.ts","../../../../../../src/cdk/listbox/index.ts","../../../../../../src/cdk/listbox/listbox_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   AfterContentInit,   ChangeDetectorRef,   ContentChildren,   Directive,   ElementRef,   forwardRef,   inject,   Input,   OnDestroy,   Output,   QueryList, } from '@angular/core'; import {ActiveDescendantKeyManager, Highlightable, ListKeyManagerOption} from '@angular/cdk/a11y'; import {   A,   DOWN_ARROW,   END,   ENTER,   hasModifierKey,   HOME,   LEFT_ARROW,   RIGHT_ARROW,   SPACE,   UP_ARROW, } from '@angular/cdk/keycodes'; import {BooleanInput, coerceArray, coerceBooleanProperty} from '@angular/cdk/coercion'; import {SelectionModel} from '@angular/cdk/collections'; import {defer, merge, Observable, Subject} from 'rxjs'; import {filter, map, startWith, switchMap, takeUntil} from 'rxjs/operators'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms'; import {Directionality} from '@angular/cdk/bidi';  /** The next id to use for creating unique DOM IDs. */ let nextId = 0;  /**  * An implementation of SelectionModel that internally always represents the selection as a  * multi-selection. This is necessary so that we can recover the full selection if the user  * switches the listbox from single-selection to multi-selection after initialization.  *  * This selection model may report multiple selected values, even if it is in single-selection  * mode. It is up to the user (CdkListbox) to check for invalid selections.  */ class ListboxSelectionModel<T> extends SelectionModel<T> {   constructor(     public multiple = false,     initiallySelectedValues?: T[],     emitChanges = true,     compareWith?: (o1: T, o2: T) => boolean,   ) {     super(true, initiallySelectedValues, emitChanges, compareWith);   }    override isMultipleSelection(): boolean {     return this.multiple;   }    override select(...values: T[]) {     // The super class is always in multi-selection mode, so we need to override the behavior if     // this selection model actually belongs to a single-selection listbox.     if (this.multiple) {       return super.select(...values);     } else {       return super.setSelection(...values);     }   } }  /** A selectable option in a listbox. */ @Directive({   selector: '[cdkOption]',   standalone: true,   exportAs: 'cdkOption',   host: {     'role': 'option',     'class': 'cdk-option',     '[id]': 'id',     '[attr.aria-selected]': 'isSelected()',     '[attr.tabindex]': '_getTabIndex()',     '[attr.aria-disabled]': 'disabled',     '[class.cdk-option-active]': 'isActive()',     '(click)': '_clicked.next($event)',     '(focus)': '_handleFocus()',   }, }) export class CdkOption<T = unknown> implements ListKeyManagerOption, Highlightable, OnDestroy {   /** The id of the option's host element. */   @Input()   get id() {     return this._id || this._generatedId;   }   set id(value) {     this._id = value;   }   private _id: string;   private _generatedId = `cdk-option-${nextId++}`;    /** The value of this option. */   @Input('cdkOption') value: T;    /**    * The text used to locate this item during listbox typeahead. If not specified,    * the `textContent` of the item will be used.    */   @Input('cdkOptionTypeaheadLabel') typeaheadLabel: string;    /** Whether this option is disabled. */   @Input('cdkOptionDisabled')   get disabled(): boolean {     return this.listbox.disabled || this._disabled;   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);   }   private _disabled: boolean = false;    /** The tabindex of the option when it is enabled. */   @Input('tabindex')   get enabledTabIndex() {     return this._enabledTabIndex === undefined       ? this.listbox.enabledTabIndex       : this._enabledTabIndex;   }   set enabledTabIndex(value) {     this._enabledTabIndex = value;   }   private _enabledTabIndex?: number | null;    /** The option's host element */   readonly element: HTMLElement = inject(ElementRef).nativeElement;    /** The parent listbox this option belongs to. */   protected readonly listbox: CdkListbox<T> = inject(CdkListbox);    /** Emits when the option is destroyed. */   protected destroyed = new Subject<void>();    /** Emits when the option is clicked. */   readonly _clicked = new Subject<MouseEvent>();    ngOnDestroy() {     this.destroyed.next();     this.destroyed.complete();   }    /** Whether this option is selected. */   isSelected() {     return this.listbox.isSelected(this);   }    /** Whether this option is active. */   isActive() {     return this.listbox.isActive(this);   }    /** Toggle the selected state of this option. */   toggle() {     this.listbox.toggle(this);   }    /** Select this option if it is not selected. */   select() {     this.listbox.select(this);   }    /** Deselect this option if it is selected. */   deselect() {     this.listbox.deselect(this);   }    /** Focus this option. */   focus() {     this.element.focus();   }    /** Get the label for this element which is required by the FocusableOption interface. */   getLabel() {     return (this.typeaheadLabel ?? this.element.textContent?.trim()) || '';   }    /**    * No-op implemented as a part of `Highlightable`.    * @docs-private    */   setActiveStyles() {}    /**    * No-op implemented as a part of `Highlightable`.    * @docs-private    */   setInactiveStyles() {}    /** Handle focus events on the option. */   protected _handleFocus() {     // Options can wind up getting focused in active descendant mode if the user clicks on them.     // In this case, we push focus back to the parent listbox to prevent an extra tab stop when     // the user performs a shift+tab.     if (this.listbox.useActiveDescendant) {       this.listbox._setActiveOption(this);       this.listbox.focus();     }   }    /** Get the tabindex for this option. */   protected _getTabIndex() {     if (this.listbox.useActiveDescendant || this.disabled) {       return -1;     }     return this.isActive() ? this.enabledTabIndex : -1;   } }  @Directive({   selector: '[cdkListbox]',   standalone: true,   exportAs: 'cdkListbox',   host: {     'role': 'listbox',     'class': 'cdk-listbox',     '[id]': 'id',     '[attr.tabindex]': '_getTabIndex()',     '[attr.aria-disabled]': 'disabled',     '[attr.aria-multiselectable]': 'multiple',     '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',     '[attr.aria-orientation]': 'orientation',     '(focus)': '_handleFocus()',     '(keydown)': '_handleKeydown($event)',     '(focusout)': '_handleFocusOut($event)',     '(focusin)': '_handleFocusIn()',   },   providers: [     {       provide: NG_VALUE_ACCESSOR,       useExisting: forwardRef(() => CdkListbox),       multi: true,     },   ], }) export class CdkListbox<T = unknown> implements AfterContentInit, OnDestroy, ControlValueAccessor {   /** The id of the option's host element. */   @Input()   get id() {     return this._id || this._generatedId;   }   set id(value) {     this._id = value;   }   private _id: string;   private _generatedId = `cdk-listbox-${nextId++}`;    /** The tabindex to use when the listbox is enabled. */   @Input('tabindex')   get enabledTabIndex() {     return this._enabledTabIndex === undefined ? 0 : this._enabledTabIndex;   }   set enabledTabIndex(value) {     this._enabledTabIndex = value;   }   private _enabledTabIndex?: number | null;    /** The value selected in the listbox, represented as an array of option values. */   @Input('cdkListboxValue')   get value(): readonly T[] {     return this._invalid ? [] : this.selectionModel.selected;   }   set value(value: readonly T[]) {     this._setSelection(value);   }    /**    * Whether the listbox allows multiple options to be selected. If the value switches from `true`    * to `false`, and more than one option is selected, all options are deselected.    */   @Input('cdkListboxMultiple')   get multiple(): boolean {     return this.selectionModel.multiple;   }   set multiple(value: BooleanInput) {     this.selectionModel.multiple = coerceBooleanProperty(value);      if (this.options) {       this._updateInternalValue();     }   }    /** Whether the listbox is disabled. */   @Input('cdkListboxDisabled')   get disabled(): boolean {     return this._disabled;   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);   }   private _disabled: boolean = false;    /** Whether the listbox will use active descendant or will move focus onto the options. */   @Input('cdkListboxUseActiveDescendant')   get useActiveDescendant(): boolean {     return this._useActiveDescendant;   }   set useActiveDescendant(shouldUseActiveDescendant: BooleanInput) {     this._useActiveDescendant = coerceBooleanProperty(shouldUseActiveDescendant);   }   private _useActiveDescendant: boolean = false;    /** The orientation of the listbox. Only affects keyboard interaction, not visual layout. */   @Input('cdkListboxOrientation')   get orientation() {     return this._orientation;   }   set orientation(value: 'horizontal' | 'vertical') {     this._orientation = value === 'horizontal' ? 'horizontal' : 'vertical';     if (value === 'horizontal') {       this.listKeyManager?.withHorizontalOrientation(this._dir?.value || 'ltr');     } else {       this.listKeyManager?.withVerticalOrientation();     }   }   private _orientation: 'horizontal' | 'vertical' = 'vertical';    /** The function used to compare option values. */   @Input('cdkListboxCompareWith')   get compareWith(): undefined | ((o1: T, o2: T) => boolean) {     return this.selectionModel.compareWith;   }   set compareWith(fn: undefined | ((o1: T, o2: T) => boolean)) {     this.selectionModel.compareWith = fn;   }    /**    * Whether the keyboard navigation should wrap when the user presses arrow down on the last item    * or arrow up on the first item.    */   @Input('cdkListboxNavigationWrapDisabled')   get navigationWrapDisabled() {     return this._navigationWrapDisabled;   }   set navigationWrapDisabled(wrap: BooleanInput) {     this._navigationWrapDisabled = coerceBooleanProperty(wrap);     this.listKeyManager?.withWrap(!this._navigationWrapDisabled);   }   private _navigationWrapDisabled = false;    /** Whether keyboard navigation should skip over disabled items. */   @Input('cdkListboxNavigatesDisabledOptions')   get navigateDisabledOptions() {     return this._navigateDisabledOptions;   }   set navigateDisabledOptions(skip: BooleanInput) {     this._navigateDisabledOptions = coerceBooleanProperty(skip);     this.listKeyManager?.skipPredicate(       this._navigateDisabledOptions ? this._skipNonePredicate : this._skipDisabledPredicate,     );   }   private _navigateDisabledOptions = false;    /** Emits when the selected value(s) in the listbox change. */   @Output('cdkListboxValueChange') readonly valueChange = new Subject<ListboxValueChangeEvent<T>>();    /** The child options in this listbox. */   @ContentChildren(CdkOption, {descendants: true}) protected options: QueryList<CdkOption<T>>;    /** The selection model used by the listbox. */   protected selectionModel = new ListboxSelectionModel<T>();    /** The key manager that manages keyboard navigation for this listbox. */   protected listKeyManager: ActiveDescendantKeyManager<CdkOption<T>>;    /** Emits when the listbox is destroyed. */   protected readonly destroyed = new Subject<void>();    /** The host element of the listbox. */   protected readonly element: HTMLElement = inject(ElementRef).nativeElement;    /** The change detector for this listbox. */   protected readonly changeDetectorRef = inject(ChangeDetectorRef);    /** Whether the currently selected value in the selection model is invalid. */   private _invalid = false;    /** The last user-triggered option. */   private _lastTriggered: CdkOption<T> | null = null;    /** Callback called when the listbox has been touched */   private _onTouched = () => {};    /** Callback called when the listbox value changes */   private _onChange: (value: readonly T[]) => void = () => {};    /** Emits when an option has been clicked. */   private _optionClicked = defer(() =>     (this.options.changes as Observable<CdkOption<T>[]>).pipe(       startWith(this.options),       switchMap(options =>         merge(...options.map(option => option._clicked.pipe(map(event => ({option, event}))))),       ),     ),   );    /** The directionality of the page. */   private readonly _dir = inject(Directionality, {optional: true});    /** A predicate that skips disabled options. */   private readonly _skipDisabledPredicate = (option: CdkOption<T>) => option.disabled;    /** A predicate that does not skip any options. */   private readonly _skipNonePredicate = () => false;    /** Whether the listbox currently has focus. */   private _hasFocus = false;    ngAfterContentInit() {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       this._verifyNoOptionValueCollisions();       this._verifyOptionValues();     }      this._initKeyManager();      // Update the internal value whenever the options or the model value changes.     merge(this.selectionModel.changed, this.options.changes)       .pipe(startWith(null), takeUntil(this.destroyed))       .subscribe(() => this._updateInternalValue());      this._optionClicked       .pipe(         filter(({option}) => !option.disabled),         takeUntil(this.destroyed),       )       .subscribe(({option, event}) => this._handleOptionClicked(option, event));   }    ngOnDestroy() {     this.listKeyManager?.destroy();     this.destroyed.next();     this.destroyed.complete();   }    /**    * Toggle the selected state of the given option.    * @param option The option to toggle    */   toggle(option: CdkOption<T>) {     this.toggleValue(option.value);   }    /**    * Toggle the selected state of the given value.    * @param value The value to toggle    */   toggleValue(value: T) {     if (this._invalid) {       this.selectionModel.clear(false);     }     this.selectionModel.toggle(value);   }    /**    * Select the given option.    * @param option The option to select    */   select(option: CdkOption<T>) {     this.selectValue(option.value);   }    /**    * Select the given value.    * @param value The value to select    */   selectValue(value: T) {     if (this._invalid) {       this.selectionModel.clear(false);     }     this.selectionModel.select(value);   }    /**    * Deselect the given option.    * @param option The option to deselect    */   deselect(option: CdkOption<T>) {     this.deselectValue(option.value);   }    /**    * Deselect the given value.    * @param value The value to deselect    */   deselectValue(value: T) {     if (this._invalid) {       this.selectionModel.clear(false);     }     this.selectionModel.deselect(value);   }    /**    * Set the selected state of all options.    * @param isSelected The new selected state to set    */   setAllSelected(isSelected: boolean) {     if (!isSelected) {       this.selectionModel.clear();     } else {       if (this._invalid) {         this.selectionModel.clear(false);       }       this.selectionModel.select(...this.options.map(option => option.value));     }   }    /**    * Get whether the given option is selected.    * @param option The option to get the selected state of    */   isSelected(option: CdkOption<T>) {     return this.isValueSelected(option.value);   }    /**    * Get whether the given option is active.    * @param option The option to get the active state of    */   isActive(option: CdkOption<T>): boolean {     return !!(this.listKeyManager?.activeItem === option);   }    /**    * Get whether the given value is selected.    * @param value The value to get the selected state of    */   isValueSelected(value: T) {     if (this._invalid) {       return false;     }     return this.selectionModel.isSelected(value);   }    /**    * Registers a callback to be invoked when the listbox's value changes from user input.    * @param fn The callback to register    * @docs-private    */   registerOnChange(fn: (value: readonly T[]) => void): void {     this._onChange = fn;   }    /**    * Registers a callback to be invoked when the listbox is blurred by the user.    * @param fn The callback to register    * @docs-private    */   registerOnTouched(fn: () => {}): void {     this._onTouched = fn;   }    /**    * Sets the listbox's value.    * @param value The new value of the listbox    * @docs-private    */   writeValue(value: readonly T[]): void {     this._setSelection(value);     this._verifyOptionValues();   }    /**    * Sets the disabled state of the listbox.    * @param isDisabled The new disabled state    * @docs-private    */   setDisabledState(isDisabled: boolean): void {     this.disabled = isDisabled;   }    /** Focus the listbox's host element. */   focus() {     this.element.focus();   }    /**    * Triggers the given option in response to user interaction.    * - In single selection mode: selects the option and deselects any other selected option.    * - In multi selection mode: toggles the selected state of the option.    * @param option The option to trigger    */   protected triggerOption(option: CdkOption<T> | null) {     if (option && !option.disabled) {       this._lastTriggered = option;       const changed = this.multiple         ? this.selectionModel.toggle(option.value)         : this.selectionModel.select(option.value);       if (changed) {         this._onChange(this.value);         this.valueChange.next({           value: this.value,           listbox: this,           option: option,         });       }     }   }    /**    * Trigger the given range of options in response to user interaction.    * Should only be called in multi-selection mode.    * @param trigger The option that was triggered    * @param from The start index of the options to toggle    * @param to The end index of the options to toggle    * @param on Whether to toggle the option range on    */   protected triggerRange(trigger: CdkOption<T> | null, from: number, to: number, on: boolean) {     if (this.disabled || (trigger && trigger.disabled)) {       return;     }     this._lastTriggered = trigger;     const isEqual = this.compareWith ?? Object.is;     const updateValues = [...this.options]       .slice(Math.max(0, Math.min(from, to)), Math.min(this.options.length, Math.max(from, to) + 1))       .filter(option => !option.disabled)       .map(option => option.value);     const selected = [...this.value];     for (const updateValue of updateValues) {       const selectedIndex = selected.findIndex(selectedValue =>         isEqual(selectedValue, updateValue),       );       if (on && selectedIndex === -1) {         selected.push(updateValue);       } else if (!on && selectedIndex !== -1) {         selected.splice(selectedIndex, 1);       }     }     let changed = this.selectionModel.setSelection(...selected);     if (changed) {       this._onChange(this.value);       this.valueChange.next({         value: this.value,         listbox: this,         option: trigger,       });     }   }    /**    * Sets the given option as active.    * @param option The option to make active    */   _setActiveOption(option: CdkOption<T>) {     this.listKeyManager.setActiveItem(option);   }    /** Called when the listbox receives focus. */   protected _handleFocus() {     if (!this.useActiveDescendant) {       if (this.selectionModel.selected.length > 0) {         this._setNextFocusToSelectedOption();       } else {         this.listKeyManager.setNextItemActive();       }        this._focusActiveOption();     }   }    /** Called when the user presses keydown on the listbox. */   protected _handleKeydown(event: KeyboardEvent) {     if (this._disabled) {       return;     }      const {keyCode} = event;     const previousActiveIndex = this.listKeyManager.activeItemIndex;     const ctrlKeys = ['ctrlKey', 'metaKey'] as const;      if (this.multiple && keyCode === A && hasModifierKey(event, ...ctrlKeys)) {       // Toggle all options off if they're all selected, otherwise toggle them all on.       this.triggerRange(         null,         0,         this.options.length - 1,         this.options.length !== this.value.length,       );       event.preventDefault();       return;     }      if (       this.multiple &&       (keyCode === SPACE || keyCode === ENTER) &&       hasModifierKey(event, 'shiftKey')     ) {       if (this.listKeyManager.activeItem && this.listKeyManager.activeItemIndex != null) {         this.triggerRange(           this.listKeyManager.activeItem,           this._getLastTriggeredIndex() ?? this.listKeyManager.activeItemIndex,           this.listKeyManager.activeItemIndex,           !this.listKeyManager.activeItem.isSelected(),         );       }       event.preventDefault();       return;     }      if (       this.multiple &&       keyCode === HOME &&       hasModifierKey(event, ...ctrlKeys) &&       hasModifierKey(event, 'shiftKey')     ) {       const trigger = this.listKeyManager.activeItem;       if (trigger) {         const from = this.listKeyManager.activeItemIndex!;         this.listKeyManager.setFirstItemActive();         this.triggerRange(           trigger,           from,           this.listKeyManager.activeItemIndex!,           !trigger.isSelected(),         );       }       event.preventDefault();       return;     }      if (       this.multiple &&       keyCode === END &&       hasModifierKey(event, ...ctrlKeys) &&       hasModifierKey(event, 'shiftKey')     ) {       const trigger = this.listKeyManager.activeItem;       if (trigger) {         const from = this.listKeyManager.activeItemIndex!;         this.listKeyManager.setLastItemActive();         this.triggerRange(           trigger,           from,           this.listKeyManager.activeItemIndex!,           !trigger.isSelected(),         );       }       event.preventDefault();       return;     }      if (keyCode === SPACE || keyCode === ENTER) {       this.triggerOption(this.listKeyManager.activeItem);       event.preventDefault();       return;     }      const isNavKey =       keyCode === UP_ARROW ||       keyCode === DOWN_ARROW ||       keyCode === LEFT_ARROW ||       keyCode === RIGHT_ARROW ||       keyCode === HOME ||       keyCode === END;     this.listKeyManager.onKeydown(event);     // Will select an option if shift was pressed while navigating to the option     if (isNavKey && event.shiftKey && previousActiveIndex !== this.listKeyManager.activeItemIndex) {       this.triggerOption(this.listKeyManager.activeItem);     }   }    /** Called when a focus moves into the listbox. */   protected _handleFocusIn() {     // Note that we use a `focusin` handler for this instead of the existing `focus` handler,     // because focus won't land on the listbox if `useActiveDescendant` is enabled.     this._hasFocus = true;   }    /**    * Called when the focus leaves an element in the listbox.    * @param event The focusout event    */   protected _handleFocusOut(event: FocusEvent) {     const otherElement = event.relatedTarget as Element;     if (this.element !== otherElement && !this.element.contains(otherElement)) {       this._onTouched();       this._hasFocus = false;       this._setNextFocusToSelectedOption();     }   }    /** Get the id of the active option if active descendant is being used. */   protected _getAriaActiveDescendant(): string | null | undefined {     return this._useActiveDescendant ? this.listKeyManager?.activeItem?.id : null;   }    /** Get the tabindex for the listbox. */   protected _getTabIndex() {     if (this.disabled) {       return -1;     }     return this.useActiveDescendant || !this.listKeyManager.activeItem ? this.enabledTabIndex : -1;   }    /** Initialize the key manager. */   private _initKeyManager() {     this.listKeyManager = new ActiveDescendantKeyManager(this.options)       .withWrap(!this._navigationWrapDisabled)       .withTypeAhead()       .withHomeAndEnd()       .withAllowedModifierKeys(['shiftKey'])       .skipPredicate(         this._navigateDisabledOptions ? this._skipNonePredicate : this._skipDisabledPredicate,       );      if (this.orientation === 'vertical') {       this.listKeyManager.withVerticalOrientation();     } else {       this.listKeyManager.withHorizontalOrientation(this._dir?.value || 'ltr');     }      if (this.selectionModel.selected.length) {       Promise.resolve().then(() => this._setNextFocusToSelectedOption());     }      this.listKeyManager.change.subscribe(() => this._focusActiveOption());   }    /** Focus the active option. */   private _focusActiveOption() {     if (!this.useActiveDescendant) {       this.listKeyManager.activeItem?.focus();     }     this.changeDetectorRef.markForCheck();   }    /**    * Set the selected values.    * @param value The list of new selected values.    */   private _setSelection(value: readonly T[]) {     if (this._invalid) {       this.selectionModel.clear(false);     }     this.selectionModel.setSelection(...this._coerceValue(value));      if (!this._hasFocus) {       this._setNextFocusToSelectedOption();     }   }    /** Sets the first selected option as first in the keyboard focus order. */   private _setNextFocusToSelectedOption() {     // Null check the options since they only get defined after `ngAfterContentInit`.     const selected = this.options?.find(option => option.isSelected());      if (selected) {       this.listKeyManager.updateActiveItem(selected);     }   }    /** Update the internal value of the listbox based on the selection model. */   private _updateInternalValue() {     const indexCache = new Map<T, number>();     this.selectionModel.sort((a: T, b: T) => {       const aIndex = this._getIndexForValue(indexCache, a);       const bIndex = this._getIndexForValue(indexCache, b);       return aIndex - bIndex;     });     const selected = this.selectionModel.selected;     this._invalid =       (!this.multiple && selected.length > 1) || !!this._getInvalidOptionValues(selected).length;     this.changeDetectorRef.markForCheck();   }    /**    * Gets the index of the given value in the given list of options.    * @param cache The cache of indices found so far    * @param value The value to find    * @return The index of the value in the options list    */   private _getIndexForValue(cache: Map<T, number>, value: T) {     const isEqual = this.compareWith || Object.is;     if (!cache.has(value)) {       let index = -1;       for (let i = 0; i < this.options.length; i++) {         if (isEqual(value, this.options.get(i)!.value)) {           index = i;           break;         }       }       cache.set(value, index);     }     return cache.get(value)!;   }    /**    * Handle the user clicking an option.    * @param option The option that was clicked.    */   private _handleOptionClicked(option: CdkOption<T>, event: MouseEvent) {     event.preventDefault();     this.listKeyManager.setActiveItem(option);     if (event.shiftKey && this.multiple) {       this.triggerRange(         option,         this._getLastTriggeredIndex() ?? this.listKeyManager.activeItemIndex!,         this.listKeyManager.activeItemIndex!,         !option.isSelected(),       );     } else {       this.triggerOption(option);     }   }    /** Verifies that no two options represent the same value under the compareWith function. */   private _verifyNoOptionValueCollisions() {     this.options.changes.pipe(startWith(this.options), takeUntil(this.destroyed)).subscribe(() => {       const isEqual = this.compareWith ?? Object.is;       for (let i = 0; i < this.options.length; i++) {         const option = this.options.get(i)!;         let duplicate: CdkOption<T> | null = null;         for (let j = i + 1; j < this.options.length; j++) {           const other = this.options.get(j)!;           if (isEqual(option.value, other.value)) {             duplicate = other;             break;           }         }         if (duplicate) {           // TODO(mmalerba): Link to docs about this.           if (this.compareWith) {             console.warn(               `Found multiple CdkOption representing the same value under the given compareWith function`,               {                 option1: option.element,                 option2: duplicate.element,                 compareWith: this.compareWith,               },             );           } else {             console.warn(`Found multiple CdkOption with the same value`, {               option1: option.element,               option2: duplicate.element,             });           }           return;         }       }     });   }    /** Verifies that the option values are valid. */   private _verifyOptionValues() {     if (this.options && (typeof ngDevMode === 'undefined' || ngDevMode)) {       const selected = this.selectionModel.selected;       const invalidValues = this._getInvalidOptionValues(selected);        if (!this.multiple && selected.length > 1) {         throw Error('Listbox cannot have more than one selected value in multi-selection mode.');       }        if (invalidValues.length) {         throw Error('Listbox has selected values that do not match any of its options.');       }     }   }    /**    * Coerces a value into an array representing a listbox selection.    * @param value The value to coerce    * @return An array    */   private _coerceValue(value: readonly T[]) {     return value == null ? [] : coerceArray(value);   }    /**    * Get the sublist of values that do not represent valid option values in this listbox.    * @param values The list of values    * @return The sublist of values that are not valid option values    */   private _getInvalidOptionValues(values: readonly T[]) {     const isEqual = this.compareWith || Object.is;     const validValues = (this.options || []).map(option => option.value);     return values.filter(value => !validValues.some(validValue => isEqual(value, validValue)));   }    /** Get the index of the last triggered option. */   private _getLastTriggeredIndex() {     const index = this.options.toArray().indexOf(this._lastTriggered!);     return index === -1 ? null : index;   } }  /** Change event that is fired whenever the value of the listbox changes. */ export interface ListboxValueChangeEvent<T> {   /** The new value of the listbox. */   readonly value: readonly T[];    /** Reference to the listbox that emitted the event. */   readonly listbox: CdkListbox<T>;    /** Reference to the option that was triggered. */   readonly option: CdkOption<T> | null; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {CdkListbox, CdkOption} from './listbox';  const EXPORTED_DECLARATIONS = [CdkListbox, CdkOption];  @NgModule({   imports: [...EXPORTED_DECLARATIONS],   exports: [...EXPORTED_DECLARATIONS], }) export class CdkListboxModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './listbox'; export * from './listbox-module'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 191 --------------------
{"version":3,"file":"text-field.mjs","sources":["../../../../../../src/cdk/text-field/autofill.ts","../../../../../../src/cdk/text-field/autosize.ts","../../../../../../src/cdk/text-field/text-field-module.ts","../../../../../../src/cdk/text-field/public-api.ts","../../../../../../src/cdk/text-field/index.ts","../../../../../../src/cdk/text-field/text-field_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform'; import {   Directive,   ElementRef,   EventEmitter,   Injectable,   NgZone,   OnDestroy,   OnInit,   Output, } from '@angular/core'; import {coerceElement} from '@angular/cdk/coercion'; import {EMPTY, Observable, Subject} from 'rxjs';  /** An event that is emitted when the autofill state of an input changes. */ export type AutofillEvent = {   /** The element whose autofill state changes. */   target: Element;   /** Whether the element is currently autofilled. */   isAutofilled: boolean; };  /** Used to track info about currently monitored elements. */ type MonitoredElementInfo = {   readonly subject: Subject<AutofillEvent>;   unlisten: () => void; };  /** Options to pass to the animationstart listener. */ const listenerOptions = normalizePassiveListenerOptions({passive: true});  /**  * An injectable service that can be used to monitor the autofill state of an input.  * Based on the following blog post:  * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7  */ @Injectable({providedIn: 'root'}) export class AutofillMonitor implements OnDestroy {   private _monitoredElements = new Map<Element, MonitoredElementInfo>();    constructor(private _platform: Platform, private _ngZone: NgZone) {}    /**    * Monitor for changes in the autofill state of the given input element.    * @param element The element to monitor.    * @return A stream of autofill state changes.    */   monitor(element: Element): Observable<AutofillEvent>;    /**    * Monitor for changes in the autofill state of the given input element.    * @param element The element to monitor.    * @return A stream of autofill state changes.    */   monitor(element: ElementRef<Element>): Observable<AutofillEvent>;    monitor(elementOrRef: Element | ElementRef<Element>): Observable<AutofillEvent> {     if (!this._platform.isBrowser) {       return EMPTY;     }      const element = coerceElement(elementOrRef);     const info = this._monitoredElements.get(element);      if (info) {       return info.subject;     }      const result = new Subject<AutofillEvent>();     const cssClass = 'cdk-text-field-autofilled';     const listener = ((event: AnimationEvent) => {       // Animation events fire on initial element render, we check for the presence of the autofill       // CSS class to make sure this is a real change in state, not just the initial render before       // we fire off events.       if (         event.animationName === 'cdk-text-field-autofill-start' &&         !element.classList.contains(cssClass)       ) {         element.classList.add(cssClass);         this._ngZone.run(() => result.next({target: event.target as Element, isAutofilled: true}));       } else if (         event.animationName === 'cdk-text-field-autofill-end' &&         element.classList.contains(cssClass)       ) {         element.classList.remove(cssClass);         this._ngZone.run(() => result.next({target: event.target as Element, isAutofilled: false}));       }     }) as EventListenerOrEventListenerObject;      this._ngZone.runOutsideAngular(() => {       element.addEventListener('animationstart', listener, listenerOptions);       element.classList.add('cdk-text-field-autofill-monitored');     });      this._monitoredElements.set(element, {       subject: result,       unlisten: () => {         element.removeEventListener('animationstart', listener, listenerOptions);       },     });      return result;   }    /**    * Stop monitoring the autofill state of the given input element.    * @param element The element to stop monitoring.    */   stopMonitoring(element: Element): void;    /**    * Stop monitoring the autofill state of the given input element.    * @param element The element to stop monitoring.    */   stopMonitoring(element: ElementRef<Element>): void;    stopMonitoring(elementOrRef: Element | ElementRef<Element>): void {     const element = coerceElement(elementOrRef);     const info = this._monitoredElements.get(element);      if (info) {       info.unlisten();       info.subject.complete();       element.classList.remove('cdk-text-field-autofill-monitored');       element.classList.remove('cdk-text-field-autofilled');       this._monitoredElements.delete(element);     }   }    ngOnDestroy() {     this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));   } }  /** A directive that can be used to monitor the autofill state of an input. */ @Directive({   selector: '[cdkAutofill]', }) export class CdkAutofill implements OnDestroy, OnInit {   /** Emits when the autofill state of the element changes. */   @Output() readonly cdkAutofill = new EventEmitter<AutofillEvent>();    constructor(     private _elementRef: ElementRef<HTMLElement>,     private _autofillMonitor: AutofillMonitor,   ) {}    ngOnInit() {     this._autofillMonitor       .monitor(this._elementRef)       .subscribe(event => this.cdkAutofill.emit(event));   }    ngOnDestroy() {     this._autofillMonitor.stopMonitoring(this._elementRef);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   BooleanInput,   coerceBooleanProperty,   coerceNumberProperty,   NumberInput, } from '@angular/cdk/coercion'; import {   Directive,   ElementRef,   Input,   AfterViewInit,   DoCheck,   OnDestroy,   NgZone,   Optional,   Inject, } from '@angular/core'; import {Platform} from '@angular/cdk/platform'; import {auditTime, takeUntil} from 'rxjs/operators'; import {fromEvent, Subject} from 'rxjs'; import {DOCUMENT} from '@angular/common';  /** Directive to automatically resize a textarea to fit its content. */ @Directive({   selector: 'textarea[cdkTextareaAutosize]',   exportAs: 'cdkTextareaAutosize',   host: {     'class': 'cdk-textarea-autosize',     // Textarea elements that have the directive applied should have a single row by default.     // Browsers normally show two rows by default and therefore this limits the minRows binding.     'rows': '1',     '(input)': '_noopInputHandler()',   }, }) export class CdkTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy {   /** Keep track of the previous textarea value to avoid resizing when the value hasn't changed. */   private _previousValue?: string;   private _initialHeight: string | undefined;   private readonly _destroyed = new Subject<void>();    private _minRows: number;   private _maxRows: number;   private _enabled: boolean = true;    /**    * Value of minRows as of last resize. If the minRows has decreased, the    * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight    * does not have the same problem because it does not affect the textarea's scrollHeight.    */   private _previousMinRows: number = -1;    private _textareaElement: HTMLTextAreaElement;    /** Minimum amount of rows in the textarea. */   @Input('cdkAutosizeMinRows')   get minRows(): number {     return this._minRows;   }   set minRows(value: NumberInput) {     this._minRows = coerceNumberProperty(value);     this._setMinHeight();   }    /** Maximum amount of rows in the textarea. */   @Input('cdkAutosizeMaxRows')   get maxRows(): number {     return this._maxRows;   }   set maxRows(value: NumberInput) {     this._maxRows = coerceNumberProperty(value);     this._setMaxHeight();   }    /** Whether autosizing is enabled or not */   @Input('cdkTextareaAutosize')   get enabled(): boolean {     return this._enabled;   }   set enabled(value: BooleanInput) {     value = coerceBooleanProperty(value);      // Only act if the actual value changed. This specifically helps to not run     // resizeToFitContent too early (i.e. before ngAfterViewInit)     if (this._enabled !== value) {       (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();     }   }    @Input()   get placeholder(): string {     return this._textareaElement.placeholder;   }   set placeholder(value: string) {     this._cachedPlaceholderHeight = undefined;      if (value) {       this._textareaElement.setAttribute('placeholder', value);     } else {       this._textareaElement.removeAttribute('placeholder');     }      this._cacheTextareaPlaceholderHeight();   }    /** Cached height of a textarea with a single row. */   private _cachedLineHeight: number;   /** Cached height of a textarea with only the placeholder. */   private _cachedPlaceholderHeight?: number;    /** Used to reference correct document/window */   protected _document?: Document;    private _hasFocus: boolean;    private _isViewInited = false;    constructor(     private _elementRef: ElementRef<HTMLElement>,     private _platform: Platform,     private _ngZone: NgZone,     /** @breaking-change 11.0.0 make document required */     @Optional() @Inject(DOCUMENT) document?: any,   ) {     this._document = document;      this._textareaElement = this._elementRef.nativeElement as HTMLTextAreaElement;   }    /** Sets the minimum height of the textarea as determined by minRows. */   _setMinHeight(): void {     const minHeight =       this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;      if (minHeight) {       this._textareaElement.style.minHeight = minHeight;     }   }    /** Sets the maximum height of the textarea as determined by maxRows. */   _setMaxHeight(): void {     const maxHeight =       this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;      if (maxHeight) {       this._textareaElement.style.maxHeight = maxHeight;     }   }    ngAfterViewInit() {     if (this._platform.isBrowser) {       // Remember the height which we started with in case autosizing is disabled       this._initialHeight = this._textareaElement.style.height;       this.resizeToFitContent();        this._ngZone.runOutsideAngular(() => {         const window = this._getWindow();          fromEvent(window, 'resize')           .pipe(auditTime(16), takeUntil(this._destroyed))           .subscribe(() => this.resizeToFitContent(true));          this._textareaElement.addEventListener('focus', this._handleFocusEvent);         this._textareaElement.addEventListener('blur', this._handleFocusEvent);       });        this._isViewInited = true;       this.resizeToFitContent(true);     }   }    ngOnDestroy() {     this._textareaElement.removeEventListener('focus', this._handleFocusEvent);     this._textareaElement.removeEventListener('blur', this._handleFocusEvent);     this._destroyed.next();     this._destroyed.complete();   }    /**    * Cache the height of a single-row textarea if it has not already been cached.    *    * We need to know how large a single \"row\" of a textarea is in order to apply minRows and    * maxRows. For the initial version, we will assume that the height of a single line in the    * textarea does not ever change.    */   private _cacheTextareaLineHeight(): void {     if (this._cachedLineHeight) {       return;     }      // Use a clone element because we have to override some styles.     let textareaClone = this._textareaElement.cloneNode(false) as HTMLTextAreaElement;     textareaClone.rows = 1;      // Use `position: absolute` so that this doesn't cause a browser layout and use     // `visibility: hidden` so that nothing is rendered. Clear any other styles that     // would affect the height.     textareaClone.style.position = 'absolute';     textareaClone.style.visibility = 'hidden';     textareaClone.style.border = 'none';     textareaClone.style.padding = '0';     textareaClone.style.height = '';     textareaClone.style.minHeight = '';     textareaClone.style.maxHeight = '';      // In Firefox it happens that textarea elements are always bigger than the specified amount     // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.     // As a workaround that removes the extra space for the scrollbar, we can just set overflow     // to hidden. This ensures that there is no invalid calculation of the line height.     // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654     textareaClone.style.overflow = 'hidden';      this._textareaElement.parentNode!.appendChild(textareaClone);     this._cachedLineHeight = textareaClone.clientHeight;     textareaClone.remove();      // Min and max heights have to be re-calculated if the cached line height changes     this._setMinHeight();     this._setMaxHeight();   }    private _measureScrollHeight(): number {     const element = this._textareaElement;     const previousMargin = element.style.marginBottom || '';     const isFirefox = this._platform.FIREFOX;     const needsMarginFiller = isFirefox && this._hasFocus;     const measuringClass = isFirefox       ? 'cdk-textarea-autosize-measuring-firefox'       : 'cdk-textarea-autosize-measuring';      // In some cases the page might move around while we're measuring the `textarea` on Firefox. We     // work around it by assigning a temporary margin with the same height as the `textarea` so that     // it occupies the same amount of space. See #23233.     if (needsMarginFiller) {       element.style.marginBottom = `${element.clientHeight}px`;     }      // Reset the textarea height to auto in order to shrink back to its default size.     // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.     element.classList.add(measuringClass);     // The measuring class includes a 2px padding to workaround an issue with Chrome,     // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).     const scrollHeight = element.scrollHeight - 4;     element.classList.remove(measuringClass);      if (needsMarginFiller) {       element.style.marginBottom = previousMargin;     }      return scrollHeight;   }    private _cacheTextareaPlaceholderHeight(): void {     if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {       return;     }     if (!this.placeholder) {       this._cachedPlaceholderHeight = 0;       return;     }      const value = this._textareaElement.value;      this._textareaElement.value = this._textareaElement.placeholder;     this._cachedPlaceholderHeight = this._measureScrollHeight();     this._textareaElement.value = value;   }    /** Handles `focus` and `blur` events. */   private _handleFocusEvent = (event: FocusEvent) => {     this._hasFocus = event.type === 'focus';   };    ngDoCheck() {     if (this._platform.isBrowser) {       this.resizeToFitContent();     }   }    /**    * Resize the textarea to fit its content.    * @param force Whether to force a height recalculation. By default the height will be    *    recalculated only if the value changed since the last call.    */   resizeToFitContent(force: boolean = false) {     // If autosizing is disabled, just skip everything else     if (!this._enabled) {       return;     }      this._cacheTextareaLineHeight();     this._cacheTextareaPlaceholderHeight();      // If we haven't determined the line-height yet, we know we're still hidden and there's no point     // in checking the height of the textarea.     if (!this._cachedLineHeight) {       return;     }      const textarea = this._elementRef.nativeElement as HTMLTextAreaElement;     const value = textarea.value;      // Only resize if the value or minRows have changed since these calculations can be expensive.     if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {       return;     }      const scrollHeight = this._measureScrollHeight();     const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0);      // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.     textarea.style.height = `${height}px`;      this._ngZone.runOutsideAngular(() => {       if (typeof requestAnimationFrame !== 'undefined') {         requestAnimationFrame(() => this._scrollToCaretPosition(textarea));       } else {         setTimeout(() => this._scrollToCaretPosition(textarea));       }     });      this._previousValue = value;     this._previousMinRows = this._minRows;   }    /**    * Resets the textarea to its original size    */   reset() {     // Do not try to change the textarea, if the initialHeight has not been determined yet     // This might potentially remove styles when reset() is called before ngAfterViewInit     if (this._initialHeight !== undefined) {       this._textareaElement.style.height = this._initialHeight;     }   }    _noopInputHandler() {     // no-op handler that ensures we're running change detection on input events.   }    /** Access injected document if available or fallback to global document reference */   private _getDocument(): Document {     return this._document || document;   }    /** Use defaultView of injected document if available or fallback to global window reference */   private _getWindow(): Window {     const doc = this._getDocument();     return doc.defaultView || window;   }    /**    * Scrolls a textarea to the caret position. On Firefox resizing the textarea will    * prevent it from scrolling to the caret position. We need to re-set the selection    * in order for it to scroll to the proper position.    */   private _scrollToCaretPosition(textarea: HTMLTextAreaElement) {     const {selectionStart, selectionEnd} = textarea;      // IE will throw an \"Unspecified error\" if we try to set the selection range after the     // element has been removed from the DOM. Assert that the directive hasn't been destroyed     // between the time we requested the animation frame and when it was executed.     // Also note that we have to assert that the textarea is focused before we set the     // selection range. Setting the selection range on a non-focused textarea will cause     // it to receive focus on IE and Edge.     if (!this._destroyed.isStopped && this._hasFocus) {       textarea.setSelectionRange(selectionStart, selectionEnd);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {CdkAutofill} from './autofill'; import {CdkTextareaAutosize} from './autosize';  @NgModule({   declarations: [CdkAutofill, CdkTextareaAutosize],   exports: [CdkAutofill, CdkTextareaAutosize], }) export class TextFieldModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './autofill'; export * from './autosize'; export * from './text-field-module'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 192 --------------------
{"version":3,"file":"a11y.mjs","sources":["../../../../../../src/cdk/a11y/aria-describer/aria-reference.ts","../../../../../../src/cdk/a11y/aria-describer/aria-describer.ts","../../../../../../src/cdk/a11y/key-manager/list-key-manager.ts","../../../../../../src/cdk/a11y/key-manager/activedescendant-key-manager.ts","../../../../../../src/cdk/a11y/key-manager/focus-key-manager.ts","../../../../../../src/cdk/a11y/interactivity-checker/interactivity-checker.ts","../../../../../../src/cdk/a11y/focus-trap/focus-trap.ts","../../../../../../src/cdk/a11y/focus-trap/configurable-focus-trap.ts","../../../../../../src/cdk/a11y/focus-trap/configurable-focus-trap-config.ts","../../../../../../src/cdk/a11y/focus-trap/focus-trap-inert-strategy.ts","../../../../../../src/cdk/a11y/focus-trap/event-listener-inert-strategy.ts","../../../../../../src/cdk/a11y/focus-trap/focus-trap-manager.ts","../../../../../../src/cdk/a11y/focus-trap/configurable-focus-trap-factory.ts","../../../../../../src/cdk/a11y/fake-event-detection.ts","../../../../../../src/cdk/a11y/input-modality/input-modality-detector.ts","../../../../../../src/cdk/a11y/live-announcer/live-announcer-tokens.ts","../../../../../../src/cdk/a11y/live-announcer/live-announcer.ts","../../../../../../src/cdk/a11y/focus-monitor/focus-monitor.ts","../../../../../../src/cdk/a11y/high-contrast-mode/high-contrast-mode-detector.ts","../../../../../../src/cdk/a11y/a11y-module.ts","../../../../../../src/cdk/a11y/public-api.ts","../../../../../../src/cdk/a11y/index.ts","../../../../../../src/cdk/a11y/a11y_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** IDs are delimited by an empty space, as per the spec. */ const ID_DELIMITER = ' ';  /**  * Adds the given ID to the specified ARIA attribute on an element.  * Used for attributes such as aria-labelledby, aria-owns, etc.  */ export function addAriaReferencedId(el: Element, attr: `aria-${string}`, id: string) {   const ids = getAriaReferenceIds(el, attr);   if (ids.some(existingId => existingId.trim() == id.trim())) {     return;   }   ids.push(id.trim());    el.setAttribute(attr, ids.join(ID_DELIMITER)); }  /**  * Removes the given ID from the specified ARIA attribute on an element.  * Used for attributes such as aria-labelledby, aria-owns, etc.  */ export function removeAriaReferencedId(el: Element, attr: `aria-${string}`, id: string) {   const ids = getAriaReferenceIds(el, attr);   const filteredIds = ids.filter(val => val != id.trim());    if (filteredIds.length) {     el.setAttribute(attr, filteredIds.join(ID_DELIMITER));   } else {     el.removeAttribute(attr);   } }  /**  * Gets the list of IDs referenced by the given ARIA attribute on an element.  * Used for attributes such as aria-labelledby, aria-owns, etc.  */ export function getAriaReferenceIds(el: Element, attr: string): string[] {   // Get string array of all individual ids (whitespace delimited) in the attribute value   return (el.getAttribute(attr) || '').match(/\\S+/g) || []; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, OnDestroy, APP_ID, inject} from '@angular/core'; import {Platform} from '@angular/cdk/platform'; import {addAriaReferencedId, getAriaReferenceIds, removeAriaReferencedId} from './aria-reference';  /**  * Interface used to register message elements and keep a count of how many registrations have  * the same message and the reference to the message element used for the `aria-describedby`.  */ export interface RegisteredMessage {   /** The element containing the message. */   messageElement: Element;    /** The number of elements that reference this message element via `aria-describedby`. */   referenceCount: number; }  /**  * ID used for the body container where all messages are appended.  * @deprecated No longer being used. To be removed.  * @breaking-change 14.0.0  */ export const MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';  /**  * ID prefix used for each created message element.  * @deprecated To be turned into a private variable.  * @breaking-change 14.0.0  */ export const CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';  /**  * Attribute given to each host element that is described by a message element.  * @deprecated To be turned into a private variable.  * @breaking-change 14.0.0  */ export const CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';  /** Global incremental identifier for each registered message element. */ let nextId = 0;  /**  * Utility that creates visually hidden elements with a message content. Useful for elements that  * want to use aria-describedby to further describe themselves without adding additional visual  * content.  */ @Injectable({providedIn: 'root'}) export class AriaDescriber implements OnDestroy {   private _document: Document;    /** Map of all registered message elements that have been placed into the document. */   private _messageRegistry = new Map<string | Element, RegisteredMessage>();    /** Container for all registered messages. */   private _messagesContainer: HTMLElement | null = null;    /** Unique ID for the service. */   private readonly _id = `${nextId++}`;    constructor(     @Inject(DOCUMENT) _document: any,     /**      * @deprecated To be turned into a required parameter.      * @breaking-change 14.0.0      */     private _platform?: Platform,   ) {     this._document = _document;     this._id = inject(APP_ID) + '-' + nextId++;   }    /**    * Adds to the host element an aria-describedby reference to a hidden element that contains    * the message. If the same message has already been registered, then it will reuse the created    * message element.    */   describe(hostElement: Element, message: string, role?: string): void;    /**    * Adds to the host element an aria-describedby reference to an already-existing message element.    */   describe(hostElement: Element, message: HTMLElement): void;    describe(hostElement: Element, message: string | HTMLElement, role?: string): void {     if (!this._canBeDescribed(hostElement, message)) {       return;     }      const key = getKey(message, role);      if (typeof message !== 'string') {       // We need to ensure that the element has an ID.       setMessageId(message, this._id);       this._messageRegistry.set(key, {messageElement: message, referenceCount: 0});     } else if (!this._messageRegistry.has(key)) {       this._createMessageElement(message, role);     }      if (!this._isElementDescribedByMessage(hostElement, key)) {       this._addMessageReference(hostElement, key);     }   }    /** Removes the host element's aria-describedby reference to the message. */   removeDescription(hostElement: Element, message: string, role?: string): void;    /** Removes the host element's aria-describedby reference to the message element. */   removeDescription(hostElement: Element, message: HTMLElement): void;    removeDescription(hostElement: Element, message: string | HTMLElement, role?: string): void {     if (!message || !this._isElementNode(hostElement)) {       return;     }      const key = getKey(message, role);      if (this._isElementDescribedByMessage(hostElement, key)) {       this._removeMessageReference(hostElement, key);     }      // If the message is a string, it means that it's one that we created for the     // consumer so we can remove it safely, otherwise we should leave it in place.     if (typeof message === 'string') {       const registeredMessage = this._messageRegistry.get(key);       if (registeredMessage && registeredMessage.referenceCount === 0) {         this._deleteMessageElement(key);       }     }      if (this._messagesContainer?.childNodes.length === 0) {       this._messagesContainer.remove();       this._messagesContainer = null;     }   }    /** Unregisters all created message elements and removes the message container. */   ngOnDestroy() {     const describedElements = this._document.querySelectorAll(       `[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}=\"${this._id}\"]`,     );      for (let i = 0; i < describedElements.length; i++) {       this._removeCdkDescribedByReferenceIds(describedElements[i]);       describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);     }      this._messagesContainer?.remove();     this._messagesContainer = null;     this._messageRegistry.clear();   }    /**    * Creates a new element in the visually hidden message container element with the message    * as its content and adds it to the message registry.    */   private _createMessageElement(message: string, role?: string) {     const messageElement = this._document.createElement('div');     setMessageId(messageElement, this._id);     messageElement.textContent = message;      if (role) {       messageElement.setAttribute('role', role);     }      this._createMessagesContainer();     this._messagesContainer!.appendChild(messageElement);     this._messageRegistry.set(getKey(message, role), {messageElement, referenceCount: 0});   }    /** Deletes the message element from the global messages container. */   private _deleteMessageElement(key: string | Element) {     this._messageRegistry.get(key)?.messageElement?.remove();     this._messageRegistry.delete(key);   }    /** Creates the global container for all aria-describedby messages. */   private _createMessagesContainer() {     if (this._messagesContainer) {       return;     }      const containerClassName = 'cdk-describedby-message-container';     const serverContainers = this._document.querySelectorAll(       `.${containerClassName}[platform=\"server\"]`,     );      for (let i = 0; i < serverContainers.length; i++) {       // When going from the server to the client, we may end up in a situation where there's       // already a container on the page, but we don't have a reference to it. Clear the       // old container so we don't get duplicates. Doing this, instead of emptying the previous       // container, should be slightly faster.       serverContainers[i].remove();     }      const messagesContainer = this._document.createElement('div');      // We add `visibility: hidden` in order to prevent text in this container from     // being searchable by the browser's Ctrl + F functionality.     // Screen-readers will still read the description for elements with aria-describedby even     // when the description element is not visible.     messagesContainer.style.visibility = 'hidden';     // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that     // the description element doesn't impact page layout.     messagesContainer.classList.add(containerClassName);     messagesContainer.classList.add('cdk-visually-hidden');      // @breaking-change 14.0.0 Remove null check for `_platform`.     if (this._platform && !this._platform.isBrowser) {       messagesContainer.setAttribute('platform', 'server');     }      this._document.body.appendChild(messagesContainer);     this._messagesContainer = messagesContainer;   }    /** Removes all cdk-describedby messages that are hosted through the element. */   private _removeCdkDescribedByReferenceIds(element: Element) {     // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX     const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(       id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0,     );     element.setAttribute('aria-describedby', originalReferenceIds.join(' '));   }    /**    * Adds a message reference to the element using aria-describedby and increments the registered    * message's reference count.    */   private _addMessageReference(element: Element, key: string | Element) {     const registeredMessage = this._messageRegistry.get(key)!;      // Add the aria-describedby reference and set the     // describedby_host attribute to mark the element.     addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);     element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, this._id);     registeredMessage.referenceCount++;   }    /**    * Removes a message reference from the element using aria-describedby    * and decrements the registered message's reference count.    */   private _removeMessageReference(element: Element, key: string | Element) {     const registeredMessage = this._messageRegistry.get(key)!;     registeredMessage.referenceCount--;      removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);     element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);   }    /** Returns true if the element has been described by the provided message ID. */   private _isElementDescribedByMessage(element: Element, key: string | Element): boolean {     const referenceIds = getAriaReferenceIds(element, 'aria-describedby');     const registeredMessage = this._messageRegistry.get(key);     const messageId = registeredMessage && registeredMessage.messageElement.id;      return !!messageId && referenceIds.indexOf(messageId) != -1;   }    /** Determines whether a message can be described on a particular element. */   private _canBeDescribed(element: Element, message: string | HTMLElement | void): boolean {     if (!this._isElementNode(element)) {       return false;     }      if (message && typeof message === 'object') {       // We'd have to make some assumptions about the description element's text, if the consumer       // passed in an element. Assume that if an element is passed in, the consumer has verified       // that it can be used as a description.       return true;     }      const trimmedMessage = message == null ? '' : `${message}`.trim();     const ariaLabel = element.getAttribute('aria-label');      // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the     // element, because screen readers will end up reading out the same text twice in a row.     return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false;   }    /** Checks whether a node is an Element node. */   private _isElementNode(element: Node): element is Element {     return element.nodeType === this._document.ELEMENT_NODE;   } }  /** Gets a key that can be used to look messages up in the registry. */ function getKey(message: string | Element, role?: string): string | Element {   return typeof message === 'string' ? `${role || ''}/${message}` : message; }  /** Assigns a unique ID to an element, if it doesn't have one already. */ function setMessageId(element: HTMLElement, serviceId: string) {   if (!element.id) {     element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${serviceId}-${nextId++}`;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {QueryList} from '@angular/core'; import {Subject, Subscription} from 'rxjs'; import {   UP_ARROW,   DOWN_ARROW,   LEFT_ARROW,   RIGHT_ARROW,   TAB,   A,   Z,   ZERO,   NINE,   hasModifierKey,   HOME,   END,   PAGE_UP,   PAGE_DOWN, } from '@angular/cdk/keycodes'; import {debounceTime, filter, map, tap} from 'rxjs/operators';  /** This interface is for items that can be passed to a ListKeyManager. */ export interface ListKeyManagerOption {   /** Whether the option is disabled. */   disabled?: boolean;    /** Gets the label for this option. */   getLabel?(): string; }  /** Modifier keys handled by the ListKeyManager. */ export type ListKeyManagerModifierKey = 'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey';  /**  * This class manages keyboard events for selectable lists. If you pass it a query list  * of items, it will set the active item correctly when arrow events occur.  */ export class ListKeyManager<T extends ListKeyManagerOption> {   private _activeItemIndex = -1;   private _activeItem: T | null = null;   private _wrap = false;   private readonly _letterKeyStream = new Subject<string>();   private _typeaheadSubscription = Subscription.EMPTY;   private _itemChangesSubscription?: Subscription;   private _vertical = true;   private _horizontal: 'ltr' | 'rtl' | null;   private _allowedModifierKeys: ListKeyManagerModifierKey[] = [];   private _homeAndEnd = false;   private _pageUpAndDown = {enabled: false, delta: 10};    /**    * Predicate function that can be used to check whether an item should be skipped    * by the key manager. By default, disabled items are skipped.    */   private _skipPredicateFn = (item: T) => item.disabled;    // Buffer for the letters that the user has pressed when the typeahead option is turned on.   private _pressedLetters: string[] = [];    constructor(private _items: QueryList<T> | T[]) {     // We allow for the items to be an array because, in some cases, the consumer may     // not have access to a QueryList of the items they want to manage (e.g. when the     // items aren't being collected via `ViewChildren` or `ContentChildren`).     if (_items instanceof QueryList) {       this._itemChangesSubscription = _items.changes.subscribe((newItems: QueryList<T>) => {         if (this._activeItem) {           const itemArray = newItems.toArray();           const newIndex = itemArray.indexOf(this._activeItem);            if (newIndex > -1 && newIndex !== this._activeItemIndex) {             this._activeItemIndex = newIndex;           }         }       });     }   }    /**    * Stream that emits any time the TAB key is pressed, so components can react    * when focus is shifted off of the list.    */   readonly tabOut = new Subject<void>();    /** Stream that emits whenever the active item of the list manager changes. */   readonly change = new Subject<number>();    /**    * Sets the predicate function that determines which items should be skipped by the    * list key manager.    * @param predicate Function that determines whether the given item should be skipped.    */   skipPredicate(predicate: (item: T) => boolean): this {     this._skipPredicateFn = predicate;     return this;   }    /**    * Configures wrapping mode, which determines whether the active item will wrap to    * the other end of list when there are no more items in the given direction.    * @param shouldWrap Whether the list should wrap when reaching the end.    */   withWrap(shouldWrap = true): this {     this._wrap = shouldWrap;     return this;   }    /**    * Configures whether the key manager should be able to move the selection vertically.    * @param enabled Whether vertical selection should be enabled.    */   withVerticalOrientation(enabled: boolean = true): this {     this._vertical = enabled;     return this;   }    /**    * Configures the key manager to move the selection horizontally.    * Passing in `null` will disable horizontal movement.    * @param direction Direction in which the selection can be moved.    */   withHorizontalOrientation(direction: 'ltr' | 'rtl' | null): this {     this._horizontal = direction;     return this;   }    /**    * Modifier keys which are allowed to be held down and whose default actions will be prevented    * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.    */   withAllowedModifierKeys(keys: ListKeyManagerModifierKey[]): this {     this._allowedModifierKeys = keys;     return this;   }    /**    * Turns on typeahead mode which allows users to set the active item by typing.    * @param debounceInterval Time to wait after the last keystroke before setting the active item.    */   withTypeAhead(debounceInterval: number = 200): this {     if (       (typeof ngDevMode === 'undefined' || ngDevMode) &&       this._items.length &&       this._items.some(item => typeof item.getLabel !== 'function')     ) {       throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');     }      this._typeaheadSubscription.unsubscribe();      // Debounce the presses of non-navigational keys, collect the ones that correspond to letters     // and convert those letters back into a string. Afterwards find the first item that starts     // with that string and select it.     this._typeaheadSubscription = this._letterKeyStream       .pipe(         tap(letter => this._pressedLetters.push(letter)),         debounceTime(debounceInterval),         filter(() => this._pressedLetters.length > 0),         map(() => this._pressedLetters.join('')),       )       .subscribe(inputString => {         const items = this._getItemsArray();          // Start at 1 because we want to start searching at the item immediately         // following the current active item.         for (let i = 1; i < items.length + 1; i++) {           const index = (this._activeItemIndex + i) % items.length;           const item = items[index];            if (             !this._skipPredicateFn(item) &&             item.getLabel!().toUpperCase().trim().indexOf(inputString) === 0           ) {             this.setActiveItem(index);             break;           }         }          this._pressedLetters = [];       });      return this;   }    /** Cancels the current typeahead sequence. */   cancelTypeahead(): this {     this._pressedLetters = [];     return this;   }    /**    * Configures the key manager to activate the first and last items    * respectively when the Home or End key is pressed.    * @param enabled Whether pressing the Home or End key activates the first/last item.    */   withHomeAndEnd(enabled: boolean = true): this {     this._homeAndEnd = enabled;     return this;   }    /**    * Configures the key manager to activate every 10th, configured or first/last element in up/down direction    * respectively when the Page-Up or Page-Down key is pressed.    * @param enabled Whether pressing the Page-Up or Page-Down key activates the first/last item.    * @param delta Whether pressing the Home or End key activates the first/last item.    */   withPageUpDown(enabled: boolean = true, delta: number = 10): this {     this._pageUpAndDown = {enabled, delta};     return this;   }    /**    * Sets the active item to the item at the index specified.    * @param index The index of the item to be set as active.    */   setActiveItem(index: number): void;    /**    * Sets the active item to the specified item.    * @param item The item to be set as active.    */   setActiveItem(item: T): void;    setActiveItem(item: any): void {     const previousActiveItem = this._activeItem;      this.updateActiveItem(item);      if (this._activeItem !== previousActiveItem) {       this.change.next(this._activeItemIndex);     }   }    /**    * Sets the active item depending on the key event passed in.    * @param event Keyboard event to be used for determining which element should be active.    */   onKeydown(event: KeyboardEvent): void {     const keyCode = event.keyCode;     const modifiers: ListKeyManagerModifierKey[] = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];     const isModifierAllowed = modifiers.every(modifier => {       return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;     });      switch (keyCode) {       case TAB:         this.tabOut.next();         return;        case DOWN_ARROW:         if (this._vertical && isModifierAllowed) {           this.setNextItemActive();           break;         } else {           return;         }        case UP_ARROW:         if (this._vertical && isModifierAllowed) {           this.setPreviousItemActive();           break;         } else {           return;         }        case RIGHT_ARROW:         if (this._horizontal && isModifierAllowed) {           this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();           break;         } else {           return;         }        case LEFT_ARROW:         if (this._horizontal && isModifierAllowed) {           this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();           break;         } else {           return;         }        case HOME:         if (this._homeAndEnd && isModifierAllowed) {           this.setFirstItemActive();           break;         } else {           return;         }        case END:         if (this._homeAndEnd && isModifierAllowed) {           this.setLastItemActive();           break;         } else {           return;         }        case PAGE_UP:         if (this._pageUpAndDown.enabled && isModifierAllowed) {           const targetIndex = this._activeItemIndex - this._pageUpAndDown.delta;           this._setActiveItemByIndex(targetIndex > 0 ? targetIndex : 0, 1);           break;         } else {           return;         }        case PAGE_DOWN:         if (this._pageUpAndDown.enabled && isModifierAllowed) {           const targetIndex = this._activeItemIndex + this._pageUpAndDown.delta;           const itemsLength = this._getItemsArray().length;           this._setActiveItemByIndex(targetIndex < itemsLength ? targetIndex : itemsLength - 1, -1);           break;         } else {           return;         }        default:         if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {           // Attempt to use the `event.key` which also maps it to the user's keyboard language,           // otherwise fall back to resolving alphanumeric characters via the keyCode.           if (event.key && event.key.length === 1) {             this._letterKeyStream.next(event.key.toLocaleUpperCase());           } else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {             this._letterKeyStream.next(String.fromCharCode(keyCode));           }         }          // Note that we return here, in order to avoid preventing         // the default action of non-navigational keys.         return;     }      this._pressedLetters = [];     event.preventDefault();   }    /** Index of the currently active item. */   get activeItemIndex(): number | null {     return this._activeItemIndex;   }    /** The active item. */   get activeItem(): T | null {     return this._activeItem;   }    /** Gets whether the user is currently typing into the manager using the typeahead feature. */   isTyping(): boolean {     return this._pressedLetters.length > 0;   }    /** Sets the active item to the first enabled item in the list. */   setFirstItemActive(): void {     this._setActiveItemByIndex(0, 1);   }    /** Sets the active item to the last enabled item in the list. */   setLastItemActive(): void {     this._setActiveItemByIndex(this._items.length - 1, -1);   }    /** Sets the active item to the next enabled item in the list. */   setNextItemActive(): void {     this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);   }    /** Sets the active item to a previous enabled item in the list. */   setPreviousItemActive(): void {     this._activeItemIndex < 0 && this._wrap       ? this.setLastItemActive()       : this._setActiveItemByDelta(-1);   }    /**    * Allows setting the active without any other effects.    * @param index Index of the item to be set as active.    */   updateActiveItem(index: number): void;    /**    * Allows setting the active item without any other effects.    * @param item Item to be set as active.    */   updateActiveItem(item: T): void;    updateActiveItem(item: any): void {     const itemArray = this._getItemsArray();     const index = typeof item === 'number' ? item : itemArray.indexOf(item);     const activeItem = itemArray[index];      // Explicitly check for `null` and `undefined` because other falsy values are valid.     this._activeItem = activeItem == null ? null : activeItem;     this._activeItemIndex = index;   }    /** Cleans up the key manager. */   destroy() {     this._typeaheadSubscription.unsubscribe();     this._itemChangesSubscription?.unsubscribe();     this._letterKeyStream.complete();     this.tabOut.complete();     this.change.complete();     this._pressedLetters = [];   }    /**    * This method sets the active item, given a list of items and the delta between the    * currently active item and the new active item. It will calculate differently    * depending on whether wrap mode is turned on.    */   private _setActiveItemByDelta(delta: -1 | 1): void {     this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);   }    /**    * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move    * down the list until it finds an item that is not disabled, and it will wrap if it    * encounters either end of the list.    */   private _setActiveInWrapMode(delta: -1 | 1): void {     const items = this._getItemsArray();      for (let i = 1; i <= items.length; i++) {       const index = (this._activeItemIndex + delta * i + items.length) % items.length;       const item = items[index];        if (!this._skipPredicateFn(item)) {         this.setActiveItem(index);         return;       }     }   }    /**    * Sets the active item properly given the default mode. In other words, it will    * continue to move down the list until it finds an item that is not disabled. If    * it encounters either end of the list, it will stop and not wrap.    */   private _setActiveInDefaultMode(delta: -1 | 1): void {     this._setActiveItemByIndex(this._activeItemIndex + delta, delta);   }    /**    * Sets the active item to the first enabled item starting at the index specified. If the    * item is disabled, it will move in the fallbackDelta direction until it either    * finds an enabled item or encounters the end of the list.    */   private _setActiveItemByIndex(index: number, fallbackDelta: -1 | 1): void {     const items = this._getItemsArray();      if (!items[index]) {       return;     }      while (this._skipPredicateFn(items[index])) {       index += fallbackDelta;        if (!items[index]) {         return;       }     }      this.setActiveItem(index);   }    /** Returns the items as an array. */   private _getItemsArray(): T[] {     return this._items instanceof QueryList ? this._items.toArray() : this._items;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ListKeyManager, ListKeyManagerOption} from './list-key-manager';  /**  * This is the interface for highlightable items (used by the ActiveDescendantKeyManager).  * Each item must know how to style itself as active or inactive and whether or not it is  * currently disabled.  */ export interface Highlightable extends ListKeyManagerOption {   /** Applies the styles for an active item to this item. */   setActiveStyles(): void;    /** Applies the styles for an inactive item to this item. */   setInactiveStyles(): void; }  export class ActiveDescendantKeyManager<T> extends ListKeyManager<Highlightable & T> {   /**    * Sets the active item to the item at the specified index and adds the    * active styles to the newly active item. Also removes active styles    * from the previously active item.    * @param index Index of the item to be set as active.    */   override setActiveItem(index: number): void;    /**    * Sets the active item to the item to the specified one and adds the    * active styles to the it. Also removes active styles from the    * previously active item.    * @param item Item to be set as active.    */   override setActiveItem(item: T): void;    override setActiveItem(index: any): void {     if (this.activeItem) {       this.activeItem.setInactiveStyles();     }     super.setActiveItem(index);     if (this.activeItem) {       this.activeItem.setActiveStyles();     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ListKeyManager, ListKeyManagerOption} from './list-key-manager'; import {FocusOrigin} from '../focus-monitor/focus-monitor';  /**  * This is the interface for focusable items (used by the FocusKeyManager).  * Each item must know how to focus itself, whether or not it is currently disabled  * and be able to supply its label.  */ export interface FocusableOption extends ListKeyManagerOption {   /** Focuses the `FocusableOption`. */   focus(origin?: FocusOrigin): void; }  export class FocusKeyManager<T> extends ListKeyManager<FocusableOption & T> {   private _origin: FocusOrigin = 'program';    /**    * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.    * @param origin Focus origin to be used when focusing items.    */   setFocusOrigin(origin: FocusOrigin): this {     this._origin = origin;     return this;   }    /**    * Sets the active item to the item at the specified    * index and focuses the newly active item.    * @param index Index of the item to be set as active.    */   override setActiveItem(index: number): void;    /**    * Sets the active item to the item that is specified and focuses it.    * @param item Item to be set as active.    */   override setActiveItem(item: T): void;    override setActiveItem(item: any): void {     super.setActiveItem(item);      if (this.activeItem) {       this.activeItem.focus(this._origin);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Platform} from '@angular/cdk/platform'; import {Injectable} from '@angular/core';  /**  * Configuration for the isFocusable method.  */ export class IsFocusableConfig {   /**    * Whether to count an element as focusable even if it is not currently visible.    */   ignoreVisibility: boolean = false; }  // The InteractivityChecker leans heavily on the ally.js accessibility utilities. // Methods like `isTabbable` are only covering specific edge-cases for the browsers which are // supported.  /**  * Utility for checking the interactivity of an element, such as whether is is focusable or  * tabbable.  */ @Injectable({providedIn: 'root'}) export class InteractivityChecker {   constructor(private _platform: Platform) {}    /**    * Gets whether an element is disabled.    *    * @param element Element to be checked.    * @returns Whether the element is disabled.    */   isDisabled(element: HTMLElement): boolean {     // This does not capture some cases, such as a non-form control with a disabled attribute or     // a form control inside of a disabled form, but should capture the most common cases.     return element.hasAttribute('disabled');   }    /**    * Gets whether an element is visible for the purposes of interactivity.    *    * This will capture states like `display: none` and `visibility: hidden`, but not things like    * being clipped by an `overflow: hidden` parent or being outside the viewport.    *    * @returns Whether the element is visible.    */   isVisible(element: HTMLElement): boolean {     return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';   }    /**    * Gets whether an element can be reached via Tab key.    * Assumes that the element has already been checked with isFocusable.    *    * @param element Element to be checked.    * @returns Whether the element is tabbable.    */   isTabbable(element: HTMLElement): boolean {     // Nothing is tabbable on the server 😎     if (!this._platform.isBrowser) {       return false;     }      const frameElement = getFrameElement(getWindow(element));      if (frameElement) {       // Frame elements inherit their tabindex onto all child elements.       if (getTabIndexValue(frameElement) === -1) {         return false;       }        // Browsers disable tabbing to an element inside of an invisible frame.       if (!this.isVisible(frameElement)) {         return false;       }     }      let nodeName = element.nodeName.toLowerCase();     let tabIndexValue = getTabIndexValue(element);      if (element.hasAttribute('contenteditable')) {       return tabIndexValue !== -1;     }      if (nodeName === 'iframe' || nodeName === 'object') {       // The frame or object's content may be tabbable depending on the content, but it's       // not possibly to reliably detect the content of the frames. We always consider such       // elements as non-tabbable.       return false;     }      // In iOS, the browser only considers some specific elements as tabbable.     if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {       return false;     }      if (nodeName === 'audio') {       // Audio elements without controls enabled are never tabbable, regardless       // of the tabindex attribute explicitly being set.       if (!element.hasAttribute('controls')) {         return false;       }       // Audio elements with controls are by default tabbable unless the       // tabindex attribute is set to `-1` explicitly.       return tabIndexValue !== -1;     }      if (nodeName === 'video') {       // For all video elements, if the tabindex attribute is set to `-1`, the video       // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`       // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The       // tabindex attribute is the source of truth here.       if (tabIndexValue === -1) {         return false;       }       // If the tabindex is explicitly set, and not `-1` (as per check before), the       // video element is always tabbable (regardless of whether it has controls or not).       if (tabIndexValue !== null) {         return true;       }       // Otherwise (when no explicit tabindex is set), a video is only tabbable if it       // has controls enabled. Firefox is special as videos are always tabbable regardless       // of whether there are controls or not.       return this._platform.FIREFOX || element.hasAttribute('controls');     }      return element.tabIndex >= 0;   }    /**    * Gets whether an element can be focused by the user.    *    * @param element Element to be checked.    * @param config The config object with options to customize this method's behavior    * @returns Whether the element is focusable.    */   isFocusable(element: HTMLElement, config?: IsFocusableConfig): boolean {     // Perform checks in order of left to most expensive.     // Again, naive approach that does not capture many edge cases and browser quirks.     return (       isPotentiallyFocusable(element) &&       !this.isDisabled(element) &&       (config?.ignoreVisibility || this.isVisible(element))     );   } }  /**  * Returns the frame element from a window object. Since browsers like MS Edge throw errors if  * the frameElement property is being accessed from a different host address, this property  * should be accessed carefully.  */ function getFrameElement(window: Window) {   try {     return window.frameElement as HTMLElement;   } catch {     return null;   } }  /** Checks whether the specified element has any geometry / rectangles. */ function hasGeometry(element: HTMLElement): boolean {   // Use logic from jQuery to check for an invisible element.   // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12   return !!(     element.offsetWidth ||     element.offsetHeight ||     (typeof element.getClientRects === 'function' && element.getClientRects().length)   ); }  /** Gets whether an element's  */ function isNativeFormElement(element: Node) {   let nodeName = element.nodeName.toLowerCase();   return (     nodeName === 'input' ||     nodeName === 'select' ||     nodeName === 'button' ||     nodeName === 'textarea'   ); }  /** Gets whether an element is an `<input type=\"hidden\">`. */ function isHiddenInput(element: HTMLElement): boolean {   return isInputElement(element) && element.type == 'hidden'; }  /** Gets whether an element is an anchor that has an href attribute. */ function isAnchorWithHref(element: HTMLElement): boolean {   return isAnchorElement(element) && element.hasAttribute('href'); }  /** Gets whether an element is an input element. */ function isInputElement(element: HTMLElement): element is HTMLInputElement {   return element.nodeName.toLowerCase() == 'input'; }  /** Gets whether an element is an anchor element. */ function isAnchorElement(element: HTMLElement): element is HTMLAnchorElement {   return element.nodeName.toLowerCase() == 'a'; }  /** Gets whether an element has a valid tabindex. */ function hasValidTabIndex(element: HTMLElement): boolean {   if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {     return false;   }    let tabIndex = element.getAttribute('tabindex');   return !!(tabIndex && !isNaN(parseInt(tabIndex, 10))); }  /**  * Returns the parsed tabindex from the element attributes instead of returning the  * evaluated tabindex from the browsers defaults.  */ function getTabIndexValue(element: HTMLElement): number | null {   if (!hasValidTabIndex(element)) {     return null;   }    // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054   const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);    return isNaN(tabIndex) ? -1 : tabIndex; }  /** Checks whether the specified element is potentially tabbable on iOS */ function isPotentiallyTabbableIOS(element: HTMLElement): boolean {   let nodeName = element.nodeName.toLowerCase();   let inputType = nodeName === 'input' && (element as HTMLInputElement).type;    return (     inputType === 'text' ||     inputType === 'password' ||     nodeName === 'select' ||     nodeName === 'textarea'   ); }  /**  * Gets whether an element is potentially focusable without taking current visible/disabled state  * into account.  */ function isPotentiallyFocusable(element: HTMLElement): boolean {   // Inputs are potentially focusable *unless* they're type=\"hidden\".   if (isHiddenInput(element)) {     return false;   }    return (     isNativeFormElement(element) ||     isAnchorWithHref(element) ||     element.hasAttribute('contenteditable') ||     hasValidTabIndex(element)   ); }  /** Gets the parent window of a DOM node with regards of being inside of an iframe. */ function getWindow(node: HTMLElement): Window {   // ownerDocument is null if `node` itself *is* a document.   return (node.ownerDocument && node.ownerDocument.defaultView) || window; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {_getFocusedElementPierceShadowDom} from '@angular/cdk/platform'; import {DOCUMENT} from '@angular/common'; import {   AfterContentInit,   Directive,   ElementRef,   Inject,   Injectable,   Input,   NgZone,   OnDestroy,   DoCheck,   SimpleChanges,   OnChanges, } from '@angular/core'; import {take} from 'rxjs/operators'; import {InteractivityChecker} from '../interactivity-checker/interactivity-checker';  /**  * Class that allows for trapping focus within a DOM element.  *  * This class currently uses a relatively simple approach to focus trapping.  * It assumes that the tab order is the same as DOM order, which is not necessarily true.  * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to be misaligned.  *  * @deprecated Use `ConfigurableFocusTrap` instead.  * @breaking-change 11.0.0  */ export class FocusTrap {   private _startAnchor: HTMLElement | null;   private _endAnchor: HTMLElement | null;   private _hasAttached = false;    // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.   protected startAnchorListener = () => this.focusLastTabbableElement();   protected endAnchorListener = () => this.focusFirstTabbableElement();    /** Whether the focus trap is active. */   get enabled(): boolean {     return this._enabled;   }   set enabled(value: boolean) {     this._enabled = value;      if (this._startAnchor && this._endAnchor) {       this._toggleAnchorTabIndex(value, this._startAnchor);       this._toggleAnchorTabIndex(value, this._endAnchor);     }   }   protected _enabled: boolean = true;    constructor(     readonly _element: HTMLElement,     private _checker: InteractivityChecker,     readonly _ngZone: NgZone,     readonly _document: Document,     deferAnchors = false,   ) {     if (!deferAnchors) {       this.attachAnchors();     }   }    /** Destroys the focus trap by cleaning up the anchors. */   destroy() {     const startAnchor = this._startAnchor;     const endAnchor = this._endAnchor;      if (startAnchor) {       startAnchor.removeEventListener('focus', this.startAnchorListener);       startAnchor.remove();     }      if (endAnchor) {       endAnchor.removeEventListener('focus', this.endAnchorListener);       endAnchor.remove();     }      this._startAnchor = this._endAnchor = null;     this._hasAttached = false;   }    /**    * Inserts the anchors into the DOM. This is usually done automatically    * in the constructor, but can be deferred for cases like directives with `*ngIf`.    * @returns Whether the focus trap managed to attach successfully. This may not be the case    * if the target element isn't currently in the DOM.    */   attachAnchors(): boolean {     // If we're not on the browser, there can be no focus to trap.     if (this._hasAttached) {       return true;     }      this._ngZone.runOutsideAngular(() => {       if (!this._startAnchor) {         this._startAnchor = this._createAnchor();         this._startAnchor!.addEventListener('focus', this.startAnchorListener);       }        if (!this._endAnchor) {         this._endAnchor = this._createAnchor();         this._endAnchor!.addEventListener('focus', this.endAnchorListener);       }     });      if (this._element.parentNode) {       this._element.parentNode.insertBefore(this._startAnchor!, this._element);       this._element.parentNode.insertBefore(this._endAnchor!, this._element.nextSibling);       this._hasAttached = true;     }      return this._hasAttached;   }    /**    * Waits for the zone to stabilize, then focuses the first tabbable element.    * @returns Returns a promise that resolves with a boolean, depending    * on whether focus was moved successfully.    */   focusInitialElementWhenReady(options?: FocusOptions): Promise<boolean> {     return new Promise<boolean>(resolve => {       this._executeOnStable(() => resolve(this.focusInitialElement(options)));     });   }    /**    * Waits for the zone to stabilize, then focuses    * the first tabbable element within the focus trap region.    * @returns Returns a promise that resolves with a boolean, depending    * on whether focus was moved successfully.    */   focusFirstTabbableElementWhenReady(options?: FocusOptions): Promise<boolean> {     return new Promise<boolean>(resolve => {       this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));     });   }    /**    * Waits for the zone to stabilize, then focuses    * the last tabbable element within the focus trap region.    * @returns Returns a promise that resolves with a boolean, depending    * on whether focus was moved successfully.    */   focusLastTabbableElementWhenReady(options?: FocusOptions): Promise<boolean> {     return new Promise<boolean>(resolve => {       this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));     });   }    /**    * Get the specified boundary element of the trapped region.    * @param bound The boundary to get (start or end of trapped region).    * @returns The boundary element.    */   private _getRegionBoundary(bound: 'start' | 'end'): HTMLElement | null {     // Contains the deprecated version of selector, for temporary backwards comparability.     const markers = this._element.querySelectorAll(       `[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`,     ) as NodeListOf<HTMLElement>;      if (typeof ngDevMode === 'undefined' || ngDevMode) {       for (let i = 0; i < markers.length; i++) {         // @breaking-change 8.0.0         if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {           console.warn(             `Found use of deprecated attribute 'cdk-focus-${bound}', ` +               `use 'cdkFocusRegion${bound}' instead. The deprecated ` +               `attribute will be removed in 8.0.0.`,             markers[i],           );         } else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {           console.warn(             `Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +               `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +               `will be removed in 8.0.0.`,             markers[i],           );         }       }     }      if (bound == 'start') {       return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);     }     return markers.length       ? markers[markers.length - 1]       : this._getLastTabbableElement(this._element);   }    /**    * Focuses the element that should be focused when the focus trap is initialized.    * @returns Whether focus was moved successfully.    */   focusInitialElement(options?: FocusOptions): boolean {     // Contains the deprecated version of selector, for temporary backwards comparability.     const redirectToElement = this._element.querySelector(       `[cdk-focus-initial], ` + `[cdkFocusInitial]`,     ) as HTMLElement;      if (redirectToElement) {       // @breaking-change 8.0.0       if (         (typeof ngDevMode === 'undefined' || ngDevMode) &&         redirectToElement.hasAttribute(`cdk-focus-initial`)       ) {         console.warn(           `Found use of deprecated attribute 'cdk-focus-initial', ` +             `use 'cdkFocusInitial' instead. The deprecated attribute ` +             `will be removed in 8.0.0`,           redirectToElement,         );       }        // Warn the consumer if the element they've pointed to       // isn't focusable, when not in production mode.       if (         (typeof ngDevMode === 'undefined' || ngDevMode) &&         !this._checker.isFocusable(redirectToElement)       ) {         console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);       }        if (!this._checker.isFocusable(redirectToElement)) {         const focusableChild = this._getFirstTabbableElement(redirectToElement) as HTMLElement;         focusableChild?.focus(options);         return !!focusableChild;       }        redirectToElement.focus(options);       return true;     }      return this.focusFirstTabbableElement(options);   }    /**    * Focuses the first tabbable element within the focus trap region.    * @returns Whether focus was moved successfully.    */   focusFirstTabbableElement(options?: FocusOptions): boolean {     const redirectToElement = this._getRegionBoundary('start');      if (redirectToElement) {       redirectToElement.focus(options);     }      return !!redirectToElement;   }    /**    * Focuses the last tabbable element within the focus trap region.    * @returns Whether focus was moved successfully.    */   focusLastTabbableElement(options?: FocusOptions): boolean {     const redirectToElement = this._getRegionBoundary('end');      if (redirectToElement) {       redirectToElement.focus(options);     }      return !!redirectToElement;   }    /**    * Checks whether the focus trap has successfully been attached.    */   hasAttached(): boolean {     return this._hasAttached;   }    /** Get the first tabbable element from a DOM subtree (inclusive). */   private _getFirstTabbableElement(root: HTMLElement): HTMLElement | null {     if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {       return root;     }      const children = root.children;      for (let i = 0; i < children.length; i++) {       const tabbableChild =         children[i].nodeType === this._document.ELEMENT_NODE           ? this._getFirstTabbableElement(children[i] as HTMLElement)           : null;        if (tabbableChild) {         return tabbableChild;       }     }      return null;   }    /** Get the last tabbable element from a DOM subtree (inclusive). */   private _getLastTabbableElement(root: HTMLElement): HTMLElement | null {     if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {       return root;     }      // Iterate in reverse DOM order.     const children = root.children;      for (let i = children.length - 1; i >= 0; i--) {       const tabbableChild =         children[i].nodeType === this._document.ELEMENT_NODE           ? this._getLastTabbableElement(children[i] as HTMLElement)           : null;        if (tabbableChild) {         return tabbableChild;       }     }      return null;   }    /** Creates an anchor element. */   private _createAnchor(): HTMLElement {     const anchor = this._document.createElement('div');     this._toggleAnchorTabIndex(this._enabled, anchor);     anchor.classList.add('cdk-visually-hidden');     anchor.classList.add('cdk-focus-trap-anchor');     anchor.setAttribute('aria-hidden', 'true');     return anchor;   }    /**    * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.    * @param isEnabled Whether the focus trap is enabled.    * @param anchor Anchor on which to toggle the tabindex.    */   private _toggleAnchorTabIndex(isEnabled: boolean, anchor: HTMLElement) {     // Remove the tabindex completely, rather than setting it to -1, because if the     // element has a tabindex, the user might still hit it when navigating with the arrow keys.     isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');   }    /**    * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.    * @param enabled: Whether the anchors should trap Tab.    */   protected toggleAnchors(enabled: boolean) {     if (this._startAnchor && this._endAnchor) {       this._toggleAnchorTabIndex(enabled, this._startAnchor);       this._toggleAnchorTabIndex(enabled, this._endAnchor);     }   }    /** Executes a function when the zone is stable. */   private _executeOnStable(fn: () => any): void {     if (this._ngZone.isStable) {       fn();     } else {       this._ngZone.onStable.pipe(take(1)).subscribe(fn);     }   } }  /**  * Factory that allows easy instantiation of focus traps.  * @deprecated Use `ConfigurableFocusTrapFactory` instead.  * @breaking-change 11.0.0  */ @Injectable({providedIn: 'root'}) export class FocusTrapFactory {   private _document: Document;    constructor(     private _checker: InteractivityChecker,     private _ngZone: NgZone,     @Inject(DOCUMENT) _document: any,   ) {     this._document = _document;   }    /**    * Creates a focus-trapped region around the given element.    * @param element The element around which focus will be trapped.    * @param deferCaptureElements Defers the creation of focus-capturing elements to be done    *     manually by the user.    * @returns The created focus trap instance.    */   create(element: HTMLElement, deferCaptureElements: boolean = false): FocusTrap {     return new FocusTrap(       element,       this._checker,       this._ngZone,       this._document,       deferCaptureElements,     );   } }  /** Directive for trapping focus within a region. */ @Directive({   selector: '[cdkTrapFocus]',   exportAs: 'cdkTrapFocus', }) export class CdkTrapFocus implements OnDestroy, AfterContentInit, OnChanges, DoCheck {   /** Underlying FocusTrap instance. */   focusTrap: FocusTrap;    /** Previously focused element to restore focus to upon destroy when using autoCapture. */   private _previouslyFocusedElement: HTMLElement | null = null;    /** Whether the focus trap is active. */   @Input('cdkTrapFocus')   get enabled(): boolean {     return this.focusTrap.enabled;   }   set enabled(value: BooleanInput) {     this.focusTrap.enabled = coerceBooleanProperty(value);   }    /**    * Whether the directive should automatically move focus into the trapped region upon    * initialization and return focus to the previous activeElement upon destruction.    */   @Input('cdkTrapFocusAutoCapture')   get autoCapture(): boolean {     return this._autoCapture;   }   set autoCapture(value: BooleanInput) {     this._autoCapture = coerceBooleanProperty(value);   }   private _autoCapture: boolean;    constructor(     private _elementRef: ElementRef<HTMLElement>,     private _focusTrapFactory: FocusTrapFactory,     /**      * @deprecated No longer being used. To be removed.      * @breaking-change 13.0.0      */     @Inject(DOCUMENT) _document: any,   ) {     this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);   }    ngOnDestroy() {     this.focusTrap.destroy();      // If we stored a previously focused element when using autoCapture, return focus to that     // element now that the trapped region is being destroyed.     if (this._previouslyFocusedElement) {       this._previouslyFocusedElement.focus();       this._previouslyFocusedElement = null;     }   }    ngAfterContentInit() {     this.focusTrap.attachAnchors();      if (this.autoCapture) {       this._captureFocus();     }   }    ngDoCheck() {     if (!this.focusTrap.hasAttached()) {       this.focusTrap.attachAnchors();     }   }    ngOnChanges(changes: SimpleChanges) {     const autoCaptureChange = changes['autoCapture'];      if (       autoCaptureChange &&       !autoCaptureChange.firstChange &&       this.autoCapture &&       this.focusTrap.hasAttached()     ) {       this._captureFocus();     }   }    private _captureFocus() {     this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();     this.focusTrap.focusInitialElementWhenReady();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgZone} from '@angular/core'; import {InteractivityChecker} from '../interactivity-checker/interactivity-checker'; import {FocusTrap} from './focus-trap'; import {FocusTrapManager, ManagedFocusTrap} from './focus-trap-manager'; import {FocusTrapInertStrategy} from './focus-trap-inert-strategy'; import {ConfigurableFocusTrapConfig} from './configurable-focus-trap-config';  /**  * Class that allows for trapping focus within a DOM element.  *  * This class uses a strategy pattern that determines how it traps focus.  * See FocusTrapInertStrategy.  */ export class ConfigurableFocusTrap extends FocusTrap implements ManagedFocusTrap {   /** Whether the FocusTrap is enabled. */   override get enabled(): boolean {     return this._enabled;   }   override set enabled(value: boolean) {     this._enabled = value;     if (this._enabled) {       this._focusTrapManager.register(this);     } else {       this._focusTrapManager.deregister(this);     }   }    constructor(     _element: HTMLElement,     _checker: InteractivityChecker,     _ngZone: NgZone,     _document: Document,     private _focusTrapManager: FocusTrapManager,     private _inertStrategy: FocusTrapInertStrategy,     config: ConfigurableFocusTrapConfig,   ) {     super(_element, _checker, _ngZone, _document, config.defer);     this._focusTrapManager.register(this);   }    /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */   override destroy() {     this._focusTrapManager.deregister(this);     super.destroy();   }    /** @docs-private Implemented as part of ManagedFocusTrap. */   _enable() {     this._inertStrategy.preventFocus(this);     this.toggleAnchors(true);   }    /** @docs-private Implemented as part of ManagedFocusTrap. */   _disable() {     this._inertStrategy.allowFocus(this);     this.toggleAnchors(false);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Options for creating a ConfigurableFocusTrap.  */ export interface ConfigurableFocusTrapConfig {   /**    * Whether to defer the creation of FocusTrap elements to be done manually by the user.    */   defer: boolean; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {InjectionToken} from '@angular/core'; import {FocusTrap} from './focus-trap';  /** The injection token used to specify the inert strategy. */ export const FOCUS_TRAP_INERT_STRATEGY = new InjectionToken<FocusTrapInertStrategy>(   'FOCUS_TRAP_INERT_STRATEGY', );  /**  * A strategy that dictates how FocusTrap should prevent elements  * outside of the FocusTrap from being focused.  */ export interface FocusTrapInertStrategy {   /** Makes all elements outside focusTrap unfocusable. */   preventFocus(focusTrap: FocusTrap): void;   /** Reverts elements made unfocusable by preventFocus to their previous state. */   allowFocus(focusTrap: FocusTrap): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {FocusTrapInertStrategy} from './focus-trap-inert-strategy'; import {ConfigurableFocusTrap} from './configurable-focus-trap';  /**  * Lightweight FocusTrapInertStrategy that adds a document focus event  * listener to redirect focus back inside the FocusTrap.  */ export class EventListenerFocusTrapInertStrategy implements FocusTrapInertStrategy {   /** Focus event handler. */   private _listener: ((e: FocusEvent) => void) | null = null;    /** Adds a document event listener that keeps focus inside the FocusTrap. */   preventFocus(focusTrap: ConfigurableFocusTrap): void {     // Ensure there's only one listener per document     if (this._listener) {       focusTrap._document.removeEventListener('focus', this._listener!, true);     }      this._listener = (e: FocusEvent) => this._trapFocus(focusTrap, e);     focusTrap._ngZone.runOutsideAngular(() => {       focusTrap._document.addEventListener('focus', this._listener!, true);     });   }    /** Removes the event listener added in preventFocus. */   allowFocus(focusTrap: ConfigurableFocusTrap): void {     if (!this._listener) {       return;     }     focusTrap._document.removeEventListener('focus', this._listener!, true);     this._listener = null;   }    /**    * Refocuses the first element in the FocusTrap if the focus event target was outside    * the FocusTrap.    *    * This is an event listener callback. The event listener is added in runOutsideAngular,    * so all this code runs outside Angular as well.    */   private _trapFocus(focusTrap: ConfigurableFocusTrap, event: FocusEvent) {     const target = event.target as HTMLElement;     const focusTrapRoot = focusTrap._element;      // Don't refocus if target was in an overlay, because the overlay might be associated     // with an element inside the FocusTrap, ex. mat-select.     if (target && !focusTrapRoot.contains(target) && !target.closest?.('div.cdk-overlay-pane')) {       // Some legacy FocusTrap usages have logic that focuses some element on the page       // just before FocusTrap is destroyed. For backwards compatibility, wait       // to be sure FocusTrap is still enabled before refocusing.       setTimeout(() => {         // Check whether focus wasn't put back into the focus trap while the timeout was pending.         if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {           focusTrap.focusFirstTabbableElement();         }       });     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable} from '@angular/core';  /**  * A FocusTrap managed by FocusTrapManager.  * Implemented by ConfigurableFocusTrap to avoid circular dependency.  */ export interface ManagedFocusTrap {   _enable(): void;   _disable(): void;   focusInitialElementWhenReady(): Promise<boolean>; }  /** Injectable that ensures only the most recently enabled FocusTrap is active. */ @Injectable({providedIn: 'root'}) export class FocusTrapManager {   // A stack of the FocusTraps on the page. Only the FocusTrap at the   // top of the stack is active.   private _focusTrapStack: ManagedFocusTrap[] = [];    /**    * Disables the FocusTrap at the top of the stack, and then pushes    * the new FocusTrap onto the stack.    */   register(focusTrap: ManagedFocusTrap): void {     // Dedupe focusTraps that register multiple times.     this._focusTrapStack = this._focusTrapStack.filter(ft => ft !== focusTrap);      let stack = this._focusTrapStack;      if (stack.length) {       stack[stack.length - 1]._disable();     }      stack.push(focusTrap);     focusTrap._enable();   }    /**    * Removes the FocusTrap from the stack, and activates the    * FocusTrap that is the new top of the stack.    */   deregister(focusTrap: ManagedFocusTrap): void {     focusTrap._disable();      const stack = this._focusTrapStack;      const i = stack.indexOf(focusTrap);     if (i !== -1) {       stack.splice(i, 1);       if (stack.length) {         stack[stack.length - 1]._enable();       }     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, Optional, NgZone} from '@angular/core'; import {InteractivityChecker} from '../interactivity-checker/interactivity-checker'; import {ConfigurableFocusTrap} from './configurable-focus-trap'; import {ConfigurableFocusTrapConfig} from './configurable-focus-trap-config'; import {FOCUS_TRAP_INERT_STRATEGY, FocusTrapInertStrategy} from './focus-trap-inert-strategy'; import {EventListenerFocusTrapInertStrategy} from './event-listener-inert-strategy'; import {FocusTrapManager} from './focus-trap-manager';  /** Factory that allows easy instantiation of configurable focus traps. */ @Injectable({providedIn: 'root'}) export class ConfigurableFocusTrapFactory {   private _document: Document;   private _inertStrategy: FocusTrapInertStrategy;    constructor(     private _checker: InteractivityChecker,     private _ngZone: NgZone,     private _focusTrapManager: FocusTrapManager,     @Inject(DOCUMENT) _document: any,     @Optional() @Inject(FOCUS_TRAP_INERT_STRATEGY) _inertStrategy?: FocusTrapInertStrategy,   ) {     this._document = _document;     // TODO split up the strategies into different modules, similar to DateAdapter.     this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();   }    /**    * Creates a focus-trapped region around the given element.    * @param element The element around which focus will be trapped.    * @param config The focus trap configuration.    * @returns The created focus trap instance.    */   create(element: HTMLElement, config?: ConfigurableFocusTrapConfig): ConfigurableFocusTrap;    /**    * @deprecated Pass a config object instead of the `deferCaptureElements` flag.    * @breaking-change 11.0.0    */   create(element: HTMLElement, deferCaptureElements: boolean): ConfigurableFocusTrap;    create(     element: HTMLElement,     config: ConfigurableFocusTrapConfig | boolean = {defer: false},   ): ConfigurableFocusTrap {     let configObject: ConfigurableFocusTrapConfig;     if (typeof config === 'boolean') {       configObject = {defer: config};     } else {       configObject = config;     }     return new ConfigurableFocusTrap(       element,       this._checker,       this._ngZone,       this._document,       this._focusTrapManager,       this._inertStrategy,       configObject,     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */ export function isFakeMousedownFromScreenReader(event: MouseEvent): boolean {   // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on   // a clickable element. We can distinguish these events when both `offsetX` and `offsetY` are   // zero or `event.buttons` is zero, depending on the browser:   // - `event.buttons` works on Firefox, but fails on Chrome.   // - `offsetX` and `offsetY` work on Chrome, but fail on Firefox.   // Note that there's an edge case where the user could click the 0x0 spot of the   // screen themselves, but that is unlikely to contain interactive elements.   return event.buttons === 0 || (event.offsetX === 0 && event.offsetY === 0); }  /** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */ export function isFakeTouchstartFromScreenReader(event: TouchEvent): boolean {   const touch: Touch | undefined =     (event.touches && event.touches[0]) || (event.changedTouches && event.changedTouches[0]);    // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`   // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,   // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10   // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.   return (     !!touch &&     touch.identifier === -1 &&     (touch.radiusX == null || touch.radiusX === 1) &&     (touch.radiusY == null || touch.radiusY === 1)   ); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ALT, CONTROL, MAC_META, META, SHIFT} from '@angular/cdk/keycodes'; import {Inject, Injectable, InjectionToken, OnDestroy, Optional, NgZone} from '@angular/core'; import {normalizePassiveListenerOptions, Platform, _getEventTarget} from '@angular/cdk/platform'; import {DOCUMENT} from '@angular/common'; import {BehaviorSubject, Observable} from 'rxjs'; import {distinctUntilChanged, skip} from 'rxjs/operators'; import {   isFakeMousedownFromScreenReader,   isFakeTouchstartFromScreenReader, } from '../fake-event-detection';  /**  * The input modalities detected by this service. Null is used if the input modality is unknown.  */ export type InputModality = 'keyboard' | 'mouse' | 'touch' | null;  /** Options to configure the behavior of the InputModalityDetector. */ export interface InputModalityDetectorOptions {   /** Keys to ignore when detecting keyboard input modality. */   ignoreKeys?: number[]; }  /**  * Injectable options for the InputModalityDetector. These are shallowly merged with the default  * options.  */ export const INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken<InputModalityDetectorOptions>(   'cdk-input-modality-detector-options', );  /**  * Default options for the InputModalityDetector.  *  * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect  * keyboard input modality) for two reasons:  *  * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open  *    in new tab', and are thus less representative of actual keyboard interaction.  * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but  *    confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore  *    these keys so as to not update the input modality.  *  * Note that we do not by default ignore the right Meta key on Safari because it has the same key  * code as the ContextMenu key on other browsers. When we switch to using event.key, we can  * distinguish between the two.  */ export const INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS: InputModalityDetectorOptions = {   ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT], };  /**  * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown  * event to be attributed as mouse and not touch.  *  * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found  * that a value of around 650ms seems appropriate.  */ export const TOUCH_BUFFER_MS = 650;  /**  * Event listener options that enable capturing and also mark the listener as passive if the browser  * supports it.  */ const modalityEventListenerOptions = normalizePassiveListenerOptions({   passive: true,   capture: true, });  /**  * Service that detects the user's input modality.  *  * This service does not update the input modality when a user navigates with a screen reader  * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC  * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not  * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a  * screen reader is akin to visually scanning a page, and should not be interpreted as actual user  * input interaction.  *  * When a user is not navigating but *interacting* with a screen reader, this service attempts to  * update the input modality to keyboard, but in general this service's behavior is largely  * undefined.  */ @Injectable({providedIn: 'root'}) export class InputModalityDetector implements OnDestroy {   /** Emits whenever an input modality is detected. */   readonly modalityDetected: Observable<InputModality>;    /** Emits when the input modality changes. */   readonly modalityChanged: Observable<InputModality>;    /** The most recently detected input modality. */   get mostRecentModality(): InputModality {     return this._modality.value;   }    /**    * The most recently detected input modality event target. Is null if no input modality has been    * detected or if the associated event target is null for some unknown reason.    */   _mostRecentTarget: HTMLElement | null = null;    /** The underlying BehaviorSubject that emits whenever an input modality is detected. */   private readonly _modality = new BehaviorSubject<InputModality>(null);    /** Options for this InputModalityDetector. */   private readonly _options: InputModalityDetectorOptions;    /**    * The timestamp of the last touch input modality. Used to determine whether mousedown events    * should be attributed to mouse or touch.    */   private _lastTouchMs = 0;    /**    * Handles keydown events. Must be an arrow function in order to preserve the context when it gets    * bound.    */   private _onKeydown = (event: KeyboardEvent) => {     // If this is one of the keys we should ignore, then ignore it and don't update the input     // modality to keyboard.     if (this._options?.ignoreKeys?.some(keyCode => keyCode === event.keyCode)) {       return;     }      this._modality.next('keyboard');     this._mostRecentTarget = _getEventTarget(event);   };    /**    * Handles mousedown events. Must be an arrow function in order to preserve the context when it    * gets bound.    */   private _onMousedown = (event: MouseEvent) => {     // Touches trigger both touch and mouse events, so we need to distinguish between mouse events     // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely     // after the previous touch event.     if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {       return;     }      // Fake mousedown events are fired by some screen readers when controls are activated by the     // screen reader. Attribute them to keyboard input modality.     this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');     this._mostRecentTarget = _getEventTarget(event);   };    /**    * Handles touchstart events. Must be an arrow function in order to preserve the context when it    * gets bound.    */   private _onTouchstart = (event: TouchEvent) => {     // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart     // events are fired. Again, attribute to keyboard input modality.     if (isFakeTouchstartFromScreenReader(event)) {       this._modality.next('keyboard');       return;     }      // Store the timestamp of this touch event, as it's used to distinguish between mouse events     // triggered via mouse vs touch.     this._lastTouchMs = Date.now();      this._modality.next('touch');     this._mostRecentTarget = _getEventTarget(event);   };    constructor(     private readonly _platform: Platform,     ngZone: NgZone,     @Inject(DOCUMENT) document: Document,     @Optional()     @Inject(INPUT_MODALITY_DETECTOR_OPTIONS)     options?: InputModalityDetectorOptions,   ) {     this._options = {       ...INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,       ...options,     };      // Skip the first emission as it's null.     this.modalityDetected = this._modality.pipe(skip(1));     this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged());      // If we're not in a browser, this service should do nothing, as there's no relevant input     // modality to detect.     if (_platform.isBrowser) {       ngZone.runOutsideAngular(() => {         document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);         document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);         document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);       });     }   }    ngOnDestroy() {     this._modality.complete();      if (this._platform.isBrowser) {       document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);       document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);       document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core';  // The tokens for the live announcer are defined in a separate file from LiveAnnouncer // as a workaround for https://github.com/angular/angular/issues/22559  /** Possible politeness levels. */ export type AriaLivePoliteness = 'off' | 'polite' | 'assertive';  export const LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken<HTMLElement | null>(   'liveAnnouncerElement',   {     providedIn: 'root',     factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY,   }, );  /** @docs-private */ export function LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY(): null {   return null; }  /** Object that can be used to configure the default options for the LiveAnnouncer. */ export interface LiveAnnouncerDefaultOptions {   /** Default politeness for the announcements. */   politeness?: AriaLivePoliteness;    /** Default duration for the announcement messages. */   duration?: number; }  /** Injection token that can be used to configure the default options for the LiveAnnouncer. */ export const LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken<LiveAnnouncerDefaultOptions>(   'LIVE_ANNOUNCER_DEFAULT_OPTIONS', ); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ContentObserver} from '@angular/cdk/observers'; import {DOCUMENT} from '@angular/common'; import {   Directive,   ElementRef,   Inject,   Injectable,   Input,   NgZone,   OnDestroy,   Optional, } from '@angular/core'; import {Subscription} from 'rxjs'; import {   AriaLivePoliteness,   LiveAnnouncerDefaultOptions,   LIVE_ANNOUNCER_ELEMENT_TOKEN,   LIVE_ANNOUNCER_DEFAULT_OPTIONS, } from './live-announcer-tokens';  let uniqueIds = 0;  @Injectable({providedIn: 'root'}) export class LiveAnnouncer implements OnDestroy {   private _liveElement: HTMLElement;   private _document: Document;   private _previousTimeout: number;   private _currentPromise: Promise<void> | undefined;   private _currentResolve: (() => void) | undefined;    constructor(     @Optional() @Inject(LIVE_ANNOUNCER_ELEMENT_TOKEN) elementToken: any,     private _ngZone: NgZone,     @Inject(DOCUMENT) _document: any,     @Optional()     @Inject(LIVE_ANNOUNCER_DEFAULT_OPTIONS)     private _defaultOptions?: LiveAnnouncerDefaultOptions,   ) {     // We inject the live element and document as `any` because the constructor signature cannot     // reference browser globals (HTMLElement, Document) on non-browser environments, since having     // a class decorator causes TypeScript to preserve the constructor signature types.     this._document = _document;     this._liveElement = elementToken || this._createLiveElement();   }    /**    * Announces a message to screen readers.    * @param message Message to be announced to the screen reader.    * @returns Promise that will be resolved when the message is added to the DOM.    */   announce(message: string): Promise<void>;    /**    * Announces a message to screen readers.    * @param message Message to be announced to the screen reader.    * @param politeness The politeness of the announcer element.    * @returns Promise that will be resolved when the message is added to the DOM.    */   announce(message: string, politeness?: AriaLivePoliteness): Promise<void>;    /**    * Announces a message to screen readers.    * @param message Message to be announced to the screen reader.    * @param duration Time in milliseconds after which to clear out the announcer element. Note    *   that this takes effect after the message has been added to the DOM, which can be up to    *   100ms after `announce` has been called.    * @returns Promise that will be resolved when the message is added to the DOM.    */   announce(message: string, duration?: number): Promise<void>;    /**    * Announces a message to screen readers.    * @param message Message to be announced to the screen reader.    * @param politeness The politeness of the announcer element.    * @param duration Time in milliseconds after which to clear out the announcer element. Note    *   that this takes effect after the message has been added to the DOM, which can be up to    *   100ms after `announce` has been called.    * @returns Promise that will be resolved when the message is added to the DOM.    */   announce(message: string, politeness?: AriaLivePoliteness, duration?: number): Promise<void>;    announce(message: string, ...args: any[]): Promise<void> {     const defaultOptions = this._defaultOptions;     let politeness: AriaLivePoliteness | undefined;     let duration: number | undefined;      if (args.length === 1 && typeof args[0] === 'number') {       duration = args[0];     } else {       [politeness, duration] = args;     }      this.clear();     clearTimeout(this._previousTimeout);      if (!politeness) {       politeness =         defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite';     }      if (duration == null && defaultOptions) {       duration = defaultOptions.duration;     }      // TODO: ensure changing the politeness works on all environments we support.     this._liveElement.setAttribute('aria-live', politeness);      if (this._liveElement.id) {       this._exposeAnnouncerToModals(this._liveElement.id);     }      // This 100ms timeout is necessary for some browser + screen-reader combinations:     // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.     // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a     //   second time without clearing and then using a non-zero delay.     // (using JAWS 17 at time of this writing).     return this._ngZone.runOutsideAngular(() => {       if (!this._currentPromise) {         this._currentPromise = new Promise(resolve => (this._currentResolve = resolve));       }        clearTimeout(this._previousTimeout);       this._previousTimeout = setTimeout(() => {         this._liveElement.textContent = message;          if (typeof duration === 'number') {           this._previousTimeout = setTimeout(() => this.clear(), duration);         }          this._currentResolve!();         this._currentPromise = this._currentResolve = undefined;       }, 100);        return this._currentPromise;     });   }    /**    * Clears the current text from the announcer element. Can be used to prevent    * screen readers from reading the text out again while the user is going    * through the page landmarks.    */   clear() {     if (this._liveElement) {       this._liveElement.textContent = '';     }   }    ngOnDestroy() {     clearTimeout(this._previousTimeout);     this._liveElement?.remove();     this._liveElement = null!;     this._currentResolve?.();     this._currentPromise = this._currentResolve = undefined;   }    private _createLiveElement(): HTMLElement {     const elementClass = 'cdk-live-announcer-element';     const previousElements = this._document.getElementsByClassName(elementClass);     const liveEl = this._document.createElement('div');      // Remove any old containers. This can happen when coming in from a server-side-rendered page.     for (let i = 0; i < previousElements.length; i++) {       previousElements[i].remove();     }      liveEl.classList.add(elementClass);     liveEl.classList.add('cdk-visually-hidden');      liveEl.setAttribute('aria-atomic', 'true');     liveEl.setAttribute('aria-live', 'polite');     liveEl.id = `cdk-live-announcer-${uniqueIds++}`;      this._document.body.appendChild(liveEl);      return liveEl;   }    /**    * Some browsers won't expose the accessibility node of the live announcer element if there is an    * `aria-modal` and the live announcer is outside of it. This method works around the issue by    * pointing the `aria-owns` of all modals to the live announcer element.    */   private _exposeAnnouncerToModals(id: string) {     // Note that the selector here is limited to CDK overlays at the moment in order to reduce the     // section of the DOM we need to look through. This should cover all the cases we support, but     // the selector can be expanded if it turns out to be too narrow.     const modals = this._document.querySelectorAll(       'body > .cdk-overlay-container [aria-modal=\"true\"]',     );      for (let i = 0; i < modals.length; i++) {       const modal = modals[i];       const ariaOwns = modal.getAttribute('aria-owns');        if (!ariaOwns) {         modal.setAttribute('aria-owns', id);       } else if (ariaOwns.indexOf(id) === -1) {         modal.setAttribute('aria-owns', ariaOwns + ' ' + id);       }     }   } }  /**  * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility  * with a wider range of browsers and screen readers.  */ @Directive({   selector: '[cdkAriaLive]',   exportAs: 'cdkAriaLive', }) export class CdkAriaLive implements OnDestroy {   /** The aria-live politeness level to use when announcing messages. */   @Input('cdkAriaLive')   get politeness(): AriaLivePoliteness {     return this._politeness;   }   set politeness(value: AriaLivePoliteness) {     this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';     if (this._politeness === 'off') {       if (this._subscription) {         this._subscription.unsubscribe();         this._subscription = null;       }     } else if (!this._subscription) {       this._subscription = this._ngZone.runOutsideAngular(() => {         return this._contentObserver.observe(this._elementRef).subscribe(() => {           // Note that we use textContent here, rather than innerText, in order to avoid a reflow.           const elementText = this._elementRef.nativeElement.textContent;            // The `MutationObserver` fires also for attribute           // changes which we don't want to announce.           if (elementText !== this._previousAnnouncedText) {             this._liveAnnouncer.announce(elementText, this._politeness, this.duration);             this._previousAnnouncedText = elementText;           }         });       });     }   }   private _politeness: AriaLivePoliteness = 'polite';    /** Time in milliseconds after which to clear out the announcer element. */   @Input('cdkAriaLiveDuration') duration: number;    private _previousAnnouncedText?: string;   private _subscription: Subscription | null;    constructor(     private _elementRef: ElementRef,     private _liveAnnouncer: LiveAnnouncer,     private _contentObserver: ContentObserver,     private _ngZone: NgZone,   ) {}    ngOnDestroy() {     if (this._subscription) {       this._subscription.unsubscribe();     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   Platform,   normalizePassiveListenerOptions,   _getShadowRoot,   _getEventTarget, } from '@angular/cdk/platform'; import {   Directive,   ElementRef,   EventEmitter,   Inject,   Injectable,   InjectionToken,   NgZone,   OnDestroy,   Optional,   Output,   AfterViewInit, } from '@angular/core'; import {Observable, of as observableOf, Subject, Subscription} from 'rxjs'; import {takeUntil} from 'rxjs/operators'; import {coerceElement} from '@angular/cdk/coercion'; import {DOCUMENT} from '@angular/common'; import {InputModalityDetector, TOUCH_BUFFER_MS} from '../input-modality/input-modality-detector';  export type FocusOrigin = 'touch' | 'mouse' | 'keyboard' | 'program' | null;  /**  * Corresponds to the options that can be passed to the native `focus` event.  * via https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus  */ export interface FocusOptions {   /** Whether the browser should scroll to the element when it is focused. */   preventScroll?: boolean; }  /** Detection mode used for attributing the origin of a focus event. */ export const enum FocusMonitorDetectionMode {   /**    * Any mousedown, keydown, or touchstart event that happened in the previous    * tick or the current tick will be used to assign a focus event's origin (to    * either mouse, keyboard, or touch). This is the default option.    */   IMMEDIATE,   /**    * A focus event's origin is always attributed to the last corresponding    * mousedown, keydown, or touchstart event, no matter how long ago it occurred.    */   EVENTUAL, }  /** Injectable service-level options for FocusMonitor. */ export interface FocusMonitorOptions {   detectionMode?: FocusMonitorDetectionMode; }  /** InjectionToken for FocusMonitorOptions. */ export const FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken<FocusMonitorOptions>(   'cdk-focus-monitor-default-options', );  type MonitoredElementInfo = {   checkChildren: boolean;   readonly subject: Subject<FocusOrigin>;   rootNode: HTMLElement | ShadowRoot | Document; };  /**  * Event listener options that enable capturing and also  * mark the listener as passive if the browser supports it.  */ const captureEventListenerOptions = normalizePassiveListenerOptions({   passive: true,   capture: true, });  /** Monitors mouse and keyboard events to determine the cause of focus events. */ @Injectable({providedIn: 'root'}) export class FocusMonitor implements OnDestroy {   /** The focus origin that the next focus event is a result of. */   private _origin: FocusOrigin = null;    /** The FocusOrigin of the last focus event tracked by the FocusMonitor. */   private _lastFocusOrigin: FocusOrigin;    /** Whether the window has just been focused. */   private _windowFocused = false;    /** The timeout id of the window focus timeout. */   private _windowFocusTimeoutId: number;    /** The timeout id of the origin clearing timeout. */   private _originTimeoutId: number;    /**    * Whether the origin was determined via a touch interaction. Necessary as properly attributing    * focus events to touch interactions requires special logic.    */   private _originFromTouchInteraction = false;    /** Map of elements being monitored to their info. */   private _elementInfo = new Map<HTMLElement, MonitoredElementInfo>();    /** The number of elements currently being monitored. */   private _monitoredElementCount = 0;    /**    * Keeps track of the root nodes to which we've currently bound a focus/blur handler,    * as well as the number of monitored elements that they contain. We have to treat focus/blur    * handlers differently from the rest of the events, because the browser won't emit events    * to the document when focus moves inside of a shadow root.    */   private _rootNodeFocusListenerCount = new Map<HTMLElement | Document | ShadowRoot, number>();    /**    * The specified detection mode, used for attributing the origin of a focus    * event.    */   private readonly _detectionMode: FocusMonitorDetectionMode;    /**    * Event listener for `focus` events on the window.    * Needs to be an arrow function in order to preserve the context when it gets bound.    */   private _windowFocusListener = () => {     // Make a note of when the window regains focus, so we can     // restore the origin info for the focused element.     this._windowFocused = true;     this._windowFocusTimeoutId = window.setTimeout(() => (this._windowFocused = false));   };    /** Used to reference correct document/window */   protected _document?: Document;    /** Subject for stopping our InputModalityDetector subscription. */   private readonly _stopInputModalityDetector = new Subject<void>();    constructor(     private _ngZone: NgZone,     private _platform: Platform,     private readonly _inputModalityDetector: InputModalityDetector,     /** @breaking-change 11.0.0 make document required */     @Optional() @Inject(DOCUMENT) document: any | null,     @Optional() @Inject(FOCUS_MONITOR_DEFAULT_OPTIONS) options: FocusMonitorOptions | null,   ) {     this._document = document;     this._detectionMode = options?.detectionMode || FocusMonitorDetectionMode.IMMEDIATE;   }   /**    * Event listener for `focus` and 'blur' events on the document.    * Needs to be an arrow function in order to preserve the context when it gets bound.    */   private _rootNodeFocusAndBlurListener = (event: Event) => {     const target = _getEventTarget<HTMLElement>(event);      // We need to walk up the ancestor chain in order to support `checkChildren`.     for (let element = target; element; element = element.parentElement) {       if (event.type === 'focus') {         this._onFocus(event as FocusEvent, element);       } else {         this._onBlur(event as FocusEvent, element);       }     }   };    /**    * Monitors focus on an element and applies appropriate CSS classes.    * @param element The element to monitor    * @param checkChildren Whether to count the element as focused when its children are focused.    * @returns An observable that emits when the focus state of the element changes.    *     When the element is blurred, null will be emitted.    */   monitor(element: HTMLElement, checkChildren?: boolean): Observable<FocusOrigin>;    /**    * Monitors focus on an element and applies appropriate CSS classes.    * @param element The element to monitor    * @param checkChildren Whether to count the element as focused when its children are focused.    * @returns An observable that emits when the focus state of the element changes.    *     When the element is blurred, null will be emitted.    */   monitor(element: ElementRef<HTMLElement>, checkChildren?: boolean): Observable<FocusOrigin>;    monitor(     element: HTMLElement | ElementRef<HTMLElement>,     checkChildren: boolean = false,   ): Observable<FocusOrigin> {     const nativeElement = coerceElement(element);      // Do nothing if we're not on the browser platform or the passed in node isn't an element.     if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {       return observableOf(null);     }      // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to     // the shadow root, rather than the `document`, because the browser won't emit focus events     // to the `document`, if focus is moving within the same shadow root.     const rootNode = _getShadowRoot(nativeElement) || this._getDocument();     const cachedInfo = this._elementInfo.get(nativeElement);      // Check if we're already monitoring this element.     if (cachedInfo) {       if (checkChildren) {         // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren         // observers into ones that behave as if `checkChildren` was turned on. We need a more         // robust solution.         cachedInfo.checkChildren = true;       }        return cachedInfo.subject;     }      // Create monitored element info.     const info: MonitoredElementInfo = {       checkChildren: checkChildren,       subject: new Subject<FocusOrigin>(),       rootNode,     };     this._elementInfo.set(nativeElement, info);     this._registerGlobalListeners(info);      return info.subject;   }    /**    * Stops monitoring an element and removes all focus classes.    * @param element The element to stop monitoring.    */   stopMonitoring(element: HTMLElement): void;    /**    * Stops monitoring an element and removes all focus classes.    * @param element The element to stop monitoring.    */   stopMonitoring(element: ElementRef<HTMLElement>): void;    stopMonitoring(element: HTMLElement | ElementRef<HTMLElement>): void {     const nativeElement = coerceElement(element);     const elementInfo = this._elementInfo.get(nativeElement);      if (elementInfo) {       elementInfo.subject.complete();        this._setClasses(nativeElement);       this._elementInfo.delete(nativeElement);       this._removeGlobalListeners(elementInfo);     }   }    /**    * Focuses the element via the specified focus origin.    * @param element Element to focus.    * @param origin Focus origin.    * @param options Options that can be used to configure the focus behavior.    */   focusVia(element: HTMLElement, origin: FocusOrigin, options?: FocusOptions): void;    /**    * Focuses the element via the specified focus origin.    * @param element Element to focus.    * @param origin Focus origin.    * @param options Options that can be used to configure the focus behavior.    */   focusVia(element: ElementRef<HTMLElement>, origin: FocusOrigin, options?: FocusOptions): void;    focusVia(     element: HTMLElement | ElementRef<HTMLElement>,     origin: FocusOrigin,     options?: FocusOptions,   ): void {     const nativeElement = coerceElement(element);     const focusedElement = this._getDocument().activeElement;      // If the element is focused already, calling `focus` again won't trigger the event listener     // which means that the focus classes won't be updated. If that's the case, update the classes     // directly without waiting for an event.     if (nativeElement === focusedElement) {       this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) =>         this._originChanged(currentElement, origin, info),       );     } else {       this._setOrigin(origin);        // `focus` isn't available on the server       if (typeof nativeElement.focus === 'function') {         nativeElement.focus(options);       }     }   }    ngOnDestroy() {     this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));   }    /** Access injected document if available or fallback to global document reference */   private _getDocument(): Document {     return this._document || document;   }    /** Use defaultView of injected document if available or fallback to global window reference */   private _getWindow(): Window {     const doc = this._getDocument();     return doc.defaultView || window;   }    private _getFocusOrigin(focusEventTarget: HTMLElement | null): FocusOrigin {     if (this._origin) {       // If the origin was realized via a touch interaction, we need to perform additional checks       // to determine whether the focus origin should be attributed to touch or program.       if (this._originFromTouchInteraction) {         return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';       } else {         return this._origin;       }     }      // If the window has just regained focus, we can restore the most recent origin from before the     // window blurred. Otherwise, we've reached the point where we can't identify the source of the     // focus. This typically means one of two things happened:     //     // 1) The element was programmatically focused, or     // 2) The element was focused via screen reader navigation (which generally doesn't fire     //    events).     //     // Because we can't distinguish between these two cases, we default to setting `program`.     if (this._windowFocused && this._lastFocusOrigin) {       return this._lastFocusOrigin;     }      // If the interaction is coming from an input label, we consider it a mouse interactions.     // This is a special case where focus moves on `click`, rather than `mousedown` which breaks     // our detection, because all our assumptions are for `mousedown`. We need to handle this     // special case, because it's very common for checkboxes and radio buttons.     if (focusEventTarget && this._isLastInteractionFromInputLabel(focusEventTarget)) {       return 'mouse';     }      return 'program';   }    /**    * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a    * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we    * handle a focus event following a touch interaction, we need to determine whether (1) the focus    * event was directly caused by the touch interaction or (2) the focus event was caused by a    * subsequent programmatic focus call triggered by the touch interaction.    * @param focusEventTarget The target of the focus event under examination.    */   private _shouldBeAttributedToTouch(focusEventTarget: HTMLElement | null): boolean {     // Please note that this check is not perfect. Consider the following edge case:     //     // <div #parent tabindex=\"0\">     //   <div #child tabindex=\"0\" (click)=\"#parent.focus()\"></div>     // </div>     //     // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches     // #child, #parent is programmatically focused. This code will attribute the focus to touch     // instead of program. This is a relatively minor edge-case that can be worked around by using     // focusVia(parent, 'program') to focus #parent.     return (       this._detectionMode === FocusMonitorDetectionMode.EVENTUAL ||       !!focusEventTarget?.contains(this._inputModalityDetector._mostRecentTarget)     );   }    /**    * Sets the focus classes on the element based on the given focus origin.    * @param element The element to update the classes on.    * @param origin The focus origin.    */   private _setClasses(element: HTMLElement, origin?: FocusOrigin): void {     element.classList.toggle('cdk-focused', !!origin);     element.classList.toggle('cdk-touch-focused', origin === 'touch');     element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');     element.classList.toggle('cdk-mouse-focused', origin === 'mouse');     element.classList.toggle('cdk-program-focused', origin === 'program');   }    /**    * Updates the focus origin. If we're using immediate detection mode, we schedule an async    * function to clear the origin at the end of a timeout. The duration of the timeout depends on    * the origin being set.    * @param origin The origin to set.    * @param isFromInteraction Whether we are setting the origin from an interaction event.    */   private _setOrigin(origin: FocusOrigin, isFromInteraction = false): void {     this._ngZone.runOutsideAngular(() => {       this._origin = origin;       this._originFromTouchInteraction = origin === 'touch' && isFromInteraction;        // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms       // for a touch event). We reset the origin at the next tick because Firefox focuses one tick       // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for       // a touch event because when a touch event is fired, the associated focus event isn't yet in       // the event queue. Before doing so, clear any pending timeouts.       if (this._detectionMode === FocusMonitorDetectionMode.IMMEDIATE) {         clearTimeout(this._originTimeoutId);         const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;         this._originTimeoutId = setTimeout(() => (this._origin = null), ms);       }     });   }    /**    * Handles focus events on a registered element.    * @param event The focus event.    * @param element The monitored element.    */   private _onFocus(event: FocusEvent, element: HTMLElement) {     // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent     // focus event affecting the monitored element. If we want to use the origin of the first event     // instead we should check for the cdk-focused class here and return if the element already has     // it. (This only matters for elements that have includesChildren = true).      // If we are not counting child-element-focus as focused, make sure that the event target is the     // monitored element itself.     const elementInfo = this._elementInfo.get(element);     const focusEventTarget = _getEventTarget<HTMLElement>(event);     if (!elementInfo || (!elementInfo.checkChildren && element !== focusEventTarget)) {       return;     }      this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);   }    /**    * Handles blur events on a registered element.    * @param event The blur event.    * @param element The monitored element.    */   _onBlur(event: FocusEvent, element: HTMLElement) {     // If we are counting child-element-focus as focused, make sure that we aren't just blurring in     // order to focus another child of the monitored element.     const elementInfo = this._elementInfo.get(element);      if (       !elementInfo ||       (elementInfo.checkChildren &&         event.relatedTarget instanceof Node &&         element.contains(event.relatedTarget))     ) {       return;     }      this._setClasses(element);     this._emitOrigin(elementInfo, null);   }    private _emitOrigin(info: MonitoredElementInfo, origin: FocusOrigin) {     if (info.subject.observers.length) {       this._ngZone.run(() => info.subject.next(origin));     }   }    private _registerGlobalListeners(elementInfo: MonitoredElementInfo) {     if (!this._platform.isBrowser) {       return;     }      const rootNode = elementInfo.rootNode;     const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;      if (!rootNodeFocusListeners) {       this._ngZone.runOutsideAngular(() => {         rootNode.addEventListener(           'focus',           this._rootNodeFocusAndBlurListener,           captureEventListenerOptions,         );         rootNode.addEventListener(           'blur',           this._rootNodeFocusAndBlurListener,           captureEventListenerOptions,         );       });     }      this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1);      // Register global listeners when first element is monitored.     if (++this._monitoredElementCount === 1) {       // Note: we listen to events in the capture phase so we       // can detect them even if the user stops propagation.       this._ngZone.runOutsideAngular(() => {         const window = this._getWindow();         window.addEventListener('focus', this._windowFocusListener);       });        // The InputModalityDetector is also just a collection of global listeners.       this._inputModalityDetector.modalityDetected         .pipe(takeUntil(this._stopInputModalityDetector))         .subscribe(modality => {           this._setOrigin(modality, true /* isFromInteraction */);         });     }   }    private _removeGlobalListeners(elementInfo: MonitoredElementInfo) {     const rootNode = elementInfo.rootNode;      if (this._rootNodeFocusListenerCount.has(rootNode)) {       const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode)!;        if (rootNodeFocusListeners > 1) {         this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);       } else {         rootNode.removeEventListener(           'focus',           this._rootNodeFocusAndBlurListener,           captureEventListenerOptions,         );         rootNode.removeEventListener(           'blur',           this._rootNodeFocusAndBlurListener,           captureEventListenerOptions,         );         this._rootNodeFocusListenerCount.delete(rootNode);       }     }      // Unregister global listeners when last element is unmonitored.     if (!--this._monitoredElementCount) {       const window = this._getWindow();       window.removeEventListener('focus', this._windowFocusListener);        // Equivalently, stop our InputModalityDetector subscription.       this._stopInputModalityDetector.next();        // Clear timeouts for all potentially pending timeouts to prevent the leaks.       clearTimeout(this._windowFocusTimeoutId);       clearTimeout(this._originTimeoutId);     }   }    /** Updates all the state on an element once its focus origin has changed. */   private _originChanged(     element: HTMLElement,     origin: FocusOrigin,     elementInfo: MonitoredElementInfo,   ) {     this._setClasses(element, origin);     this._emitOrigin(elementInfo, origin);     this._lastFocusOrigin = origin;   }    /**    * Collects the `MonitoredElementInfo` of a particular element and    * all of its ancestors that have enabled `checkChildren`.    * @param element Element from which to start the search.    */   private _getClosestElementsInfo(element: HTMLElement): [HTMLElement, MonitoredElementInfo][] {     const results: [HTMLElement, MonitoredElementInfo][] = [];      this._elementInfo.forEach((info, currentElement) => {       if (currentElement === element || (info.checkChildren && currentElement.contains(element))) {         results.push([currentElement, info]);       }     });      return results;   }    /**    * Returns whether an interaction is likely to have come from the user clicking the `label` of    * an `input` or `textarea` in order to focus it.    * @param focusEventTarget Target currently receiving focus.    */   private _isLastInteractionFromInputLabel(focusEventTarget: HTMLElement): boolean {     const {_mostRecentTarget: mostRecentTarget, mostRecentModality} = this._inputModalityDetector;      // If the last interaction used the mouse on an element contained by one of the labels     // of an `input`/`textarea` that is currently focused, it is very likely that the     // user redirected focus using the label.     if (       mostRecentModality !== 'mouse' ||       !mostRecentTarget ||       mostRecentTarget === focusEventTarget ||       (focusEventTarget.nodeName !== 'INPUT' && focusEventTarget.nodeName !== 'TEXTAREA') ||       (focusEventTarget as HTMLInputElement | HTMLTextAreaElement).disabled     ) {       return false;     }      const labels = (focusEventTarget as HTMLInputElement | HTMLTextAreaElement).labels;      if (labels) {       for (let i = 0; i < labels.length; i++) {         if (labels[i].contains(mostRecentTarget)) {           return true;         }       }     }      return false;   } }  /**  * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or  * programmatically) and adds corresponding classes to the element.  *  * There are two variants of this directive:  * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is  *    focused.  * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.  */ @Directive({   selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',   exportAs: 'cdkMonitorFocus', }) export class CdkMonitorFocus implements AfterViewInit, OnDestroy {   private _monitorSubscription: Subscription;   private _focusOrigin: FocusOrigin = null;    @Output() readonly cdkFocusChange = new EventEmitter<FocusOrigin>();    constructor(private _elementRef: ElementRef<HTMLElement>, private _focusMonitor: FocusMonitor) {}    get focusOrigin(): FocusOrigin {     return this._focusOrigin;   }    ngAfterViewInit() {     const element = this._elementRef.nativeElement;     this._monitorSubscription = this._focusMonitor       .monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus'))       .subscribe(origin => {         this._focusOrigin = origin;         this.cdkFocusChange.emit(origin);       });   }    ngOnDestroy() {     this._focusMonitor.stopMonitoring(this._elementRef);      if (this._monitorSubscription) {       this._monitorSubscription.unsubscribe();     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {inject, Inject, Injectable, OnDestroy} from '@angular/core'; import {BreakpointObserver} from '@angular/cdk/layout'; import {Platform} from '@angular/cdk/platform'; import {DOCUMENT} from '@angular/common'; import {Subscription} from 'rxjs';  /** Set of possible high-contrast mode backgrounds. */ export const enum HighContrastMode {   NONE,   BLACK_ON_WHITE,   WHITE_ON_BLACK, }  /** CSS class applied to the document body when in black-on-white high-contrast mode. */ export const BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';  /** CSS class applied to the document body when in white-on-black high-contrast mode. */ export const WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';  /** CSS class applied to the document body when in high-contrast mode. */ export const HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';  /**  * Service to determine whether the browser is currently in a high-contrast-mode environment.  *  * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode  * changes the appearance of all applications, including web applications, to dramatically increase  * contrast.  *  * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast  * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"  * browser extension.  */ @Injectable({providedIn: 'root'}) export class HighContrastModeDetector implements OnDestroy {   /**    * Figuring out the high contrast mode and adding the body classes can cause    * some expensive layouts. This flag is used to ensure that we only do it once.    */   private _hasCheckedHighContrastMode: boolean;   private _document: Document;   private _breakpointSubscription: Subscription;    constructor(private _platform: Platform, @Inject(DOCUMENT) document: any) {     this._document = document;      this._breakpointSubscription = inject(BreakpointObserver)       .observe('(forced-colors: active)')       .subscribe(() => {         if (this._hasCheckedHighContrastMode) {           this._hasCheckedHighContrastMode = false;           this._applyBodyHighContrastModeCssClasses();         }       });   }    /** Gets the current high-contrast-mode for the page. */   getHighContrastMode(): HighContrastMode {     if (!this._platform.isBrowser) {       return HighContrastMode.NONE;     }      // Create a test element with an arbitrary background-color that is neither black nor     // white; high-contrast mode will coerce the color to either black or white. Also ensure that     // appending the test element to the DOM does not affect layout by absolutely positioning it     const testElement = this._document.createElement('div');     testElement.style.backgroundColor = 'rgb(1,2,3)';     testElement.style.position = 'absolute';     this._document.body.appendChild(testElement);      // Get the computed style for the background color, collapsing spaces to normalize between     // browsers. Once we get this color, we no longer need the test element. Access the `window`     // via the document so we can fake it in tests. Note that we have extra null checks, because     // this logic will likely run during app bootstrap and throwing can break the entire app.     const documentWindow = this._document.defaultView || window;     const computedStyle =       documentWindow && documentWindow.getComputedStyle         ? documentWindow.getComputedStyle(testElement)         : null;     const computedColor = ((computedStyle && computedStyle.backgroundColor) || '').replace(       / /g,       '',     );     testElement.remove();      switch (computedColor) {       // Pre Windows 11 dark theme.       case 'rgb(0,0,0)':       // Windows 11 dark themes.       case 'rgb(45,50,54)':       case 'rgb(32,32,32)':         return HighContrastMode.WHITE_ON_BLACK;       // Pre Windows 11 light theme.       case 'rgb(255,255,255)':       // Windows 11 light theme.       case 'rgb(255,250,239)':         return HighContrastMode.BLACK_ON_WHITE;     }     return HighContrastMode.NONE;   }    ngOnDestroy(): void {     this._breakpointSubscription.unsubscribe();   }    /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */   _applyBodyHighContrastModeCssClasses(): void {     if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {       const bodyClasses = this._document.body.classList;       bodyClasses.remove(         HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS,         BLACK_ON_WHITE_CSS_CLASS,         WHITE_ON_BLACK_CSS_CLASS,       );       this._hasCheckedHighContrastMode = true;        const mode = this.getHighContrastMode();       if (mode === HighContrastMode.BLACK_ON_WHITE) {         bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS);       } else if (mode === HighContrastMode.WHITE_ON_BLACK) {         bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);       }     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ObserversModule} from '@angular/cdk/observers'; import {NgModule} from '@angular/core'; import {CdkMonitorFocus} from './focus-monitor/focus-monitor'; import {CdkTrapFocus} from './focus-trap/focus-trap'; import {HighContrastModeDetector} from './high-contrast-mode/high-contrast-mode-detector'; import {CdkAriaLive} from './live-announcer/live-announcer';  @NgModule({   imports: [ObserversModule],   declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],   exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], }) export class A11yModule {   constructor(highContrastModeDetector: HighContrastModeDetector) {     highContrastModeDetector._applyBodyHighContrastModeCssClasses();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ export * from './aria-describer/aria-describer'; export * from './key-manager/activedescendant-key-manager'; export * from './key-manager/focus-key-manager'; export * from './key-manager/list-key-manager'; export * from './focus-trap/configurable-focus-trap'; export * from './focus-trap/configurable-focus-trap-config'; export * from './focus-trap/configurable-focus-trap-factory'; export * from './focus-trap/event-listener-inert-strategy'; export * from './focus-trap/focus-trap'; export * from './focus-trap/focus-trap-inert-strategy'; export * from './interactivity-checker/interactivity-checker'; export {   InputModality,   InputModalityDetector,   InputModalityDetectorOptions,   INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,   INPUT_MODALITY_DETECTOR_OPTIONS, } from './input-modality/input-modality-detector'; export * from './live-announcer/live-announcer'; export * from './live-announcer/live-announcer-tokens'; export * from './focus-monitor/focus-monitor'; export * from './fake-event-detection'; export * from './a11y-module'; export {   HighContrastModeDetector,   HighContrastMode, } from './high-contrast-mode/high-contrast-mode-detector'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["i1.InteractivityChecker","i2.FocusTrapManager","i1","observableOf","i2.InputModalityDetector","i1.HighContrastModeDetector"],"mappings":"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"}
-------------------- SECTION 193 --------------------
{"version":3,"file":"testbed.mjs","sources":["../../../../../../../src/cdk/testing/testbed/task-state-zone-interceptor.ts","../../../../../../../src/cdk/testing/testbed/fake-events/event-objects.ts","../../../../../../../src/cdk/testing/testbed/fake-events/dispatch-events.ts","../../../../../../../src/cdk/testing/testbed/fake-events/element-focus.ts","../../../../../../../src/cdk/testing/testbed/fake-events/type-in-element.ts","../../../../../../../src/cdk/testing/testbed/fake-events/index.ts","../../../../../../../src/cdk/testing/testbed/unit-test-element.ts","../../../../../../../src/cdk/testing/testbed/testbed-harness-environment.ts","../../../../../../../src/cdk/testing/testbed/public-api.ts","../../../../../../../src/cdk/testing/testbed/index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BehaviorSubject, Observable} from 'rxjs'; import {ProxyZone, ProxyZoneStatic} from './proxy-zone-types';  /** Current state of the intercepted zone. */ export interface TaskState {   /** Whether the zone is stable (i.e. no microtasks and macrotasks). */   stable: boolean; }  /** Unique symbol that is used to patch a property to a proxy zone. */ const stateObservableSymbol = Symbol('ProxyZone_PATCHED#stateObservable');  /** Type that describes a potentially patched proxy zone instance. */ type PatchedProxyZone = ProxyZone & {   [stateObservableSymbol]: undefined | Observable<TaskState>; };  /**  * Interceptor that can be set up in a `ProxyZone` instance. The interceptor  * will keep track of the task state and emit whenever the state changes.  *  * This serves as a workaround for https://github.com/angular/angular/issues/32896.  */ export class TaskStateZoneInterceptor {   /** Subject that can be used to emit a new state change. */   private readonly _stateSubject = new BehaviorSubject<TaskState>(     this._lastState ? this._getTaskStateFromInternalZoneState(this._lastState) : {stable: true},   );    /** Public observable that emits whenever the task state changes. */   readonly state: Observable<TaskState> = this._stateSubject;    constructor(private _lastState: HasTaskState | null) {}    /** This will be called whenever the task state changes in the intercepted zone. */   onHasTask(delegate: ZoneDelegate, current: Zone, target: Zone, hasTaskState: HasTaskState) {     if (current === target) {       this._stateSubject.next(this._getTaskStateFromInternalZoneState(hasTaskState));     }   }    /** Gets the task state from the internal ZoneJS task state. */   private _getTaskStateFromInternalZoneState(state: HasTaskState): TaskState {     return {stable: !state.macroTask && !state.microTask};   }    /**    * Sets up the custom task state Zone interceptor in the  `ProxyZone`. Throws if    * no `ProxyZone` could be found.    * @returns an observable that emits whenever the task state changes.    */   static setup(): Observable<TaskState> {     if (Zone === undefined) {       throw Error(         'Could not find ZoneJS. For test harnesses running in TestBed, ' +           'ZoneJS needs to be installed.',       );     }      // tslint:disable-next-line:variable-name     const ProxyZoneSpec = (Zone as any)['ProxyZoneSpec'] as ProxyZoneStatic | undefined;      // If there is no \"ProxyZoneSpec\" installed, we throw an error and recommend     // setting up the proxy zone by pulling in the testing bundle.     if (!ProxyZoneSpec) {       throw Error(         'ProxyZoneSpec is needed for the test harnesses but could not be found. ' +           'Please make sure that your environment includes zone.js/dist/zone-testing.js',       );     }      // Ensure that there is a proxy zone instance set up, and get     // a reference to the instance if present.     const zoneSpec = ProxyZoneSpec.assertPresent() as PatchedProxyZone;      // If there already is a delegate registered in the proxy zone, and it     // is type of the custom task state interceptor, we just use that state     // observable. This allows us to only intercept Zone once per test     // (similar to how `fakeAsync` or `async` work).     if (zoneSpec[stateObservableSymbol]) {       return zoneSpec[stateObservableSymbol]!;     }      // Since we intercept on environment creation and the fixture has been     // created before, we might have missed tasks scheduled before. Fortunately     // the proxy zone keeps track of the previous task state, so we can just pass     // this as initial state to the task zone interceptor.     const interceptor = new TaskStateZoneInterceptor(zoneSpec.lastTaskState);     const zoneSpecOnHasTask = zoneSpec.onHasTask.bind(zoneSpec);      // We setup the task state interceptor in the `ProxyZone`. Note that we cannot register     // the interceptor as a new proxy zone delegate because it would mean that other zone     // delegates (e.g. `FakeAsyncTestZone` or `AsyncTestZone`) can accidentally overwrite/disable     // our interceptor. Since we just intend to monitor the task state of the proxy zone, it is     // sufficient to just patch the proxy zone. This also avoids that we interfere with the task     // queue scheduling logic.     zoneSpec.onHasTask = function (...args: [ZoneDelegate, Zone, Zone, HasTaskState]) {       zoneSpecOnHasTask(...args);       interceptor.onHasTask(...args);     };      return (zoneSpec[stateObservableSymbol] = interceptor.state);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ModifierKeys} from '@angular/cdk/testing';  /** Used to generate unique IDs for events. */ let uniqueIds = 0;  /**  * Creates a browser MouseEvent with the specified options.  * @docs-private  */ export function createMouseEvent(   type: string,   clientX = 0,   clientY = 0,   offsetX = 1,   offsetY = 1,   button = 0,   modifiers: ModifierKeys = {}, ) {   // Note: We cannot determine the position of the mouse event based on the screen   // because the dimensions and position of the browser window are not available   // To provide reasonable `screenX` and `screenY` coordinates, we simply use the   // client coordinates as if the browser is opened in fullscreen.   const screenX = clientX;   const screenY = clientY;    const event = new MouseEvent(type, {     bubbles: true,     cancelable: true,     composed: true, // Required for shadow DOM events.     view: window,     detail: 0,     relatedTarget: null,     screenX,     screenY,     clientX,     clientY,     ctrlKey: modifiers.control,     altKey: modifiers.alt,     shiftKey: modifiers.shift,     metaKey: modifiers.meta,     button: button,     buttons: 1,   });    // The `MouseEvent` constructor doesn't allow us to pass these properties into the constructor.   // Override them to `1`, because they're used for fake screen reader event detection.   if (offsetX != null) {     defineReadonlyEventProperty(event, 'offsetX', offsetX);   }    if (offsetY != null) {     defineReadonlyEventProperty(event, 'offsetY', offsetY);   }    return event; }  /**  * Creates a browser `PointerEvent` with the specified options. Pointer events  * by default will appear as if they are the primary pointer of their type.  * https://www.w3.org/TR/pointerevents2/#dom-pointerevent-isprimary.  *  * For example, if pointer events for a multi-touch interaction are created, the non-primary  * pointer touches would need to be represented by non-primary pointer events.  *  * @docs-private  */ export function createPointerEvent(   type: string,   clientX = 0,   clientY = 0,   offsetX?: number,   offsetY?: number,   options: PointerEventInit = {isPrimary: true}, ) {   const event = new PointerEvent(type, {     bubbles: true,     cancelable: true,     composed: true, // Required for shadow DOM events.     view: window,     clientX,     clientY,     ...options,   });    if (offsetX != null) {     defineReadonlyEventProperty(event, 'offsetX', offsetX);   }    if (offsetY != null) {     defineReadonlyEventProperty(event, 'offsetY', offsetY);   }    return event; }  /**  * Creates a browser TouchEvent with the specified pointer coordinates.  * @docs-private  */ export function createTouchEvent(type: string, pageX = 0, pageY = 0, clientX = 0, clientY = 0) {   // We cannot use the `TouchEvent` or `Touch` because Firefox and Safari lack support.   // TODO: Switch to the constructor API when it is available for Firefox and Safari.   const event = document.createEvent('UIEvent');   const touchDetails = {pageX, pageY, clientX, clientY, identifier: uniqueIds++};    // TS3.6 removes the initUIEvent method and suggests porting to \"new UIEvent()\".   (event as any).initUIEvent(type, true, true, window, 0);    // Most of the browsers don't have a \"initTouchEvent\" method that can be used to define   // the touch details.   defineReadonlyEventProperty(event, 'touches', [touchDetails]);   defineReadonlyEventProperty(event, 'targetTouches', [touchDetails]);   defineReadonlyEventProperty(event, 'changedTouches', [touchDetails]);    return event; }  /**  * Creates a keyboard event with the specified key and modifiers.  * @docs-private  */ export function createKeyboardEvent(   type: string,   keyCode: number = 0,   key: string = '',   modifiers: ModifierKeys = {}, ) {   return new KeyboardEvent(type, {     bubbles: true,     cancelable: true,     composed: true, // Required for shadow DOM events.     view: window,     keyCode: keyCode,     key: key,     shiftKey: modifiers.shift,     metaKey: modifiers.meta,     altKey: modifiers.alt,     ctrlKey: modifiers.control,   }); }  /**  * Creates a fake event object with any desired event type.  * @docs-private  */ export function createFakeEvent(type: string, bubbles = false, cancelable = true, composed = true) {   return new Event(type, {bubbles, cancelable, composed}); }  /**  * Defines a readonly property on the given event object. Readonly properties on an event object  * are always set as configurable as that matches default readonly properties for DOM event objects.  */ function defineReadonlyEventProperty(event: Event, propertyName: string, value: any) {   Object.defineProperty(event, propertyName, {get: () => value, configurable: true}); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ModifierKeys} from '@angular/cdk/testing'; import {   createFakeEvent,   createKeyboardEvent,   createMouseEvent,   createPointerEvent,   createTouchEvent, } from './event-objects';  /**  * Utility to dispatch any event on a Node.  * @docs-private  */ export function dispatchEvent<T extends Event>(node: Node | Window, event: T): T {   node.dispatchEvent(event);   return event; }  /**  * Shorthand to dispatch a fake event on a specified node.  * @docs-private  */ export function dispatchFakeEvent(node: Node | Window, type: string, bubbles?: boolean): Event {   return dispatchEvent(node, createFakeEvent(type, bubbles)); }  /**  * Shorthand to dispatch a keyboard event with a specified key code and  * optional modifiers.  * @docs-private  */ export function dispatchKeyboardEvent(   node: Node,   type: string,   keyCode?: number,   key?: string,   modifiers?: ModifierKeys, ): KeyboardEvent {   return dispatchEvent(node, createKeyboardEvent(type, keyCode, key, modifiers)); }  /**  * Shorthand to dispatch a mouse event on the specified coordinates.  * @docs-private  */ export function dispatchMouseEvent(   node: Node,   type: string,   clientX = 0,   clientY = 0,   offsetX?: number,   offsetY?: number,   button?: number,   modifiers?: ModifierKeys, ): MouseEvent {   return dispatchEvent(     node,     createMouseEvent(type, clientX, clientY, offsetX, offsetY, button, modifiers),   ); }  /**  * Shorthand to dispatch a pointer event on the specified coordinates.  * @docs-private  */ export function dispatchPointerEvent(   node: Node,   type: string,   clientX = 0,   clientY = 0,   offsetX?: number,   offsetY?: number,   options?: PointerEventInit, ): PointerEvent {   return dispatchEvent(     node,     createPointerEvent(type, clientX, clientY, offsetX, offsetY, options),   ) as PointerEvent; }  /**  * Shorthand to dispatch a touch event on the specified coordinates.  * @docs-private  */ export function dispatchTouchEvent(   node: Node,   type: string,   pageX = 0,   pageY = 0,   clientX = 0,   clientY = 0, ) {   return dispatchEvent(node, createTouchEvent(type, pageX, pageY, clientX, clientY)); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {dispatchFakeEvent} from './dispatch-events';  function triggerFocusChange(element: HTMLElement, event: 'focus' | 'blur') {   let eventFired = false;   const handler = () => (eventFired = true);   element.addEventListener(event, handler);   element[event]();   element.removeEventListener(event, handler);   if (!eventFired) {     dispatchFakeEvent(element, event);   } }  /**  * Patches an elements focus and blur methods to emit events consistently and predictably.  * This is necessary, because some browsers can call the focus handlers asynchronously,  * while others won't fire them at all if the browser window is not focused.  * @docs-private  */ // TODO: Check if this element focus patching is still needed for local testing, // where browser is not necessarily focused. export function patchElementFocus(element: HTMLElement) {   element.focus = () => dispatchFakeEvent(element, 'focus');   element.blur = () => dispatchFakeEvent(element, 'blur'); }  /** @docs-private */ export function triggerFocus(element: HTMLElement) {   triggerFocusChange(element, 'focus'); }  /** @docs-private */ export function triggerBlur(element: HTMLElement) {   triggerFocusChange(element, 'blur'); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {getNoKeysSpecifiedError, ModifierKeys} from '@angular/cdk/testing'; import {PERIOD} from '@angular/cdk/keycodes'; import {dispatchFakeEvent, dispatchKeyboardEvent} from './dispatch-events'; import {triggerFocus} from './element-focus';  /** Input types for which the value can be entered incrementally. */ const incrementalInputTypes = new Set([   'text',   'email',   'hidden',   'password',   'search',   'tel',   'url', ]);  /**  * Checks whether the given Element is a text input element.  * @docs-private  */ export function isTextInput(element: Element): element is HTMLInputElement | HTMLTextAreaElement {   const nodeName = element.nodeName.toLowerCase();   return nodeName === 'input' || nodeName === 'textarea'; }  /**  * If keys have been specified, focuses an input, sets its value and dispatches  * the `input` event, simulating the user typing.  * @param element Element onto which to set the value.  * @param keys The keys to send to the element.  * @docs-private  */ export function typeInElement(   element: HTMLElement,   ...keys: (string | {keyCode?: number; key?: string})[] ): void;  /**  * If keys have been specified, focuses an input, sets its value and dispatches  * the `input` event, simulating the user typing.  * @param element Element onto which to set the value.  * @param modifiers Modifier keys that are held while typing.  * @param keys The keys to send to the element.  * @docs-private  */ export function typeInElement(   element: HTMLElement,   modifiers: ModifierKeys,   ...keys: (string | {keyCode?: number; key?: string})[] ): void;  export function typeInElement(element: HTMLElement, ...modifiersAndKeys: any[]) {   const first = modifiersAndKeys[0];   let modifiers: ModifierKeys;   let rest: (string | {keyCode?: number; key?: string})[];   if (     first !== undefined &&     typeof first !== 'string' &&     first.keyCode === undefined &&     first.key === undefined   ) {     modifiers = first;     rest = modifiersAndKeys.slice(1);   } else {     modifiers = {};     rest = modifiersAndKeys;   }   const isInput = isTextInput(element);   const inputType = element.getAttribute('type') || 'text';   const keys: {keyCode?: number; key?: string}[] = rest     .map(k =>       typeof k === 'string'         ? k.split('').map(c => ({keyCode: c.toUpperCase().charCodeAt(0), key: c}))         : [k],     )     .reduce((arr, k) => arr.concat(k), []);    // Throw an error if no keys have been specified. Calling this function with no   // keys should not result in a focus event being dispatched unexpectedly.   if (keys.length === 0) {     throw getNoKeysSpecifiedError();   }    // We simulate the user typing in a value by incrementally assigning the value below. The problem   // is that for some input types, the browser won't allow for an invalid value to be set via the   // `value` property which will always be the case when going character-by-character. If we detect   // such an input, we have to set the value all at once or listeners to the `input` event (e.g.   // the `ReactiveFormsModule` uses such an approach) won't receive the correct value.   const enterValueIncrementally =     inputType === 'number'       ? // The value can be set character by character in number inputs if it doesn't have any decimals.         keys.every(key => key.key !== '.' && key.key !== '-' && key.keyCode !== PERIOD)       : incrementalInputTypes.has(inputType);    triggerFocus(element);    // When we aren't entering the value incrementally, assign it all at once ahead   // of time so that any listeners to the key events below will have access to it.   if (!enterValueIncrementally) {     (element as HTMLInputElement).value = keys.reduce((value, key) => value + (key.key || ''), '');   }    for (const key of keys) {     dispatchKeyboardEvent(element, 'keydown', key.keyCode, key.key, modifiers);     dispatchKeyboardEvent(element, 'keypress', key.keyCode, key.key, modifiers);     if (isInput && key.key && key.key.length === 1) {       if (enterValueIncrementally) {         (element as HTMLInputElement | HTMLTextAreaElement).value += key.key;         dispatchFakeEvent(element, 'input');       }     }     dispatchKeyboardEvent(element, 'keyup', key.keyCode, key.key, modifiers);   }    // Since we weren't dispatching `input` events while sending the keys, we have to do it now.   if (!enterValueIncrementally) {     dispatchFakeEvent(element, 'input');   } }  /**  * Clears the text in an input or textarea element.  * @docs-private  */ export function clearElement(element: HTMLInputElement | HTMLTextAreaElement) {   triggerFocus(element as HTMLElement);   element.value = '';   dispatchFakeEvent(element, 'input'); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // These are private APIs that are used both by the public APIs inside of this package, as well // as in unit tests of other entry-points, hence why we need to re-export them through here. export * from './dispatch-events'; export * from './event-objects'; export * from './element-focus'; export * from './type-in-element'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import * as keyCodes from '@angular/cdk/keycodes'; import {   _getTextWithExcludedElements,   ElementDimensions,   ModifierKeys,   TestElement,   TestKey,   TextOptions,   EventData, } from '@angular/cdk/testing'; import {   clearElement,   createFakeEvent,   dispatchFakeEvent,   dispatchMouseEvent,   dispatchPointerEvent,   isTextInput,   triggerBlur,   triggerFocus,   typeInElement,   dispatchEvent, } from './fake-events';  /** Maps `TestKey` constants to the `keyCode` and `key` values used by native browser events. */ const keyMap = {   [TestKey.BACKSPACE]: {keyCode: keyCodes.BACKSPACE, key: 'Backspace'},   [TestKey.TAB]: {keyCode: keyCodes.TAB, key: 'Tab'},   [TestKey.ENTER]: {keyCode: keyCodes.ENTER, key: 'Enter'},   [TestKey.SHIFT]: {keyCode: keyCodes.SHIFT, key: 'Shift'},   [TestKey.CONTROL]: {keyCode: keyCodes.CONTROL, key: 'Control'},   [TestKey.ALT]: {keyCode: keyCodes.ALT, key: 'Alt'},   [TestKey.ESCAPE]: {keyCode: keyCodes.ESCAPE, key: 'Escape'},   [TestKey.PAGE_UP]: {keyCode: keyCodes.PAGE_UP, key: 'PageUp'},   [TestKey.PAGE_DOWN]: {keyCode: keyCodes.PAGE_DOWN, key: 'PageDown'},   [TestKey.END]: {keyCode: keyCodes.END, key: 'End'},   [TestKey.HOME]: {keyCode: keyCodes.HOME, key: 'Home'},   [TestKey.LEFT_ARROW]: {keyCode: keyCodes.LEFT_ARROW, key: 'ArrowLeft'},   [TestKey.UP_ARROW]: {keyCode: keyCodes.UP_ARROW, key: 'ArrowUp'},   [TestKey.RIGHT_ARROW]: {keyCode: keyCodes.RIGHT_ARROW, key: 'ArrowRight'},   [TestKey.DOWN_ARROW]: {keyCode: keyCodes.DOWN_ARROW, key: 'ArrowDown'},   [TestKey.INSERT]: {keyCode: keyCodes.INSERT, key: 'Insert'},   [TestKey.DELETE]: {keyCode: keyCodes.DELETE, key: 'Delete'},   [TestKey.F1]: {keyCode: keyCodes.F1, key: 'F1'},   [TestKey.F2]: {keyCode: keyCodes.F2, key: 'F2'},   [TestKey.F3]: {keyCode: keyCodes.F3, key: 'F3'},   [TestKey.F4]: {keyCode: keyCodes.F4, key: 'F4'},   [TestKey.F5]: {keyCode: keyCodes.F5, key: 'F5'},   [TestKey.F6]: {keyCode: keyCodes.F6, key: 'F6'},   [TestKey.F7]: {keyCode: keyCodes.F7, key: 'F7'},   [TestKey.F8]: {keyCode: keyCodes.F8, key: 'F8'},   [TestKey.F9]: {keyCode: keyCodes.F9, key: 'F9'},   [TestKey.F10]: {keyCode: keyCodes.F10, key: 'F10'},   [TestKey.F11]: {keyCode: keyCodes.F11, key: 'F11'},   [TestKey.F12]: {keyCode: keyCodes.F12, key: 'F12'},   [TestKey.META]: {keyCode: keyCodes.META, key: 'Meta'}, };  /** A `TestElement` implementation for unit tests. */ export class UnitTestElement implements TestElement {   constructor(readonly element: Element, private _stabilize: () => Promise<void>) {}    /** Blur the element. */   async blur(): Promise<void> {     triggerBlur(this.element as HTMLElement);     await this._stabilize();   }    /** Clear the element's input (for input and textarea elements only). */   async clear(): Promise<void> {     if (!isTextInput(this.element)) {       throw Error('Attempting to clear an invalid element');     }     clearElement(this.element);     await this._stabilize();   }    /**    * Click the element at the default location for the current environment. If you need to guarantee    * the element is clicked at a specific location, consider using `click('center')` or    * `click(x, y)` instead.    */   click(modifiers?: ModifierKeys): Promise<void>;   /** Click the element at the element's center. */   click(location: 'center', modifiers?: ModifierKeys): Promise<void>;   /**    * Click the element at the specified coordinates relative to the top-left of the element.    * @param relativeX Coordinate within the element, along the X-axis at which to click.    * @param relativeY Coordinate within the element, along the Y-axis at which to click.    * @param modifiers Modifier keys held while clicking    */   click(relativeX: number, relativeY: number, modifiers?: ModifierKeys): Promise<void>;   async click(     ...args: [ModifierKeys?] | ['center', ModifierKeys?] | [number, number, ModifierKeys?]   ): Promise<void> {     const isDisabled = (this.element as Partial<{disabled?: boolean}>).disabled === true;      // If the element is `disabled` and has a `disabled` property, we emit the mouse event     // sequence but not dispatch the `click` event. This is necessary to keep the behavior     // consistent with an actual user interaction. The click event is not necessarily     // automatically prevented by the browser. There is mismatch between Firefox and Chromium:     // https://bugzilla.mozilla.org/show_bug.cgi?id=329509.     // https://bugs.chromium.org/p/chromium/issues/detail?id=1115661.     await this._dispatchMouseEventSequence(isDisabled ? null : 'click', args, 0);     await this._stabilize();   }    /**    * Right clicks on the element at the specified coordinates relative to the top-left of it.    * @param relativeX Coordinate within the element, along the X-axis at which to click.    * @param relativeY Coordinate within the element, along the Y-axis at which to click.    * @param modifiers Modifier keys held while clicking    */   rightClick(relativeX: number, relativeY: number, modifiers?: ModifierKeys): Promise<void>;   async rightClick(     ...args: [ModifierKeys?] | ['center', ModifierKeys?] | [number, number, ModifierKeys?]   ): Promise<void> {     await this._dispatchMouseEventSequence('contextmenu', args, 2);     await this._stabilize();   }    /** Focus the element. */   async focus(): Promise<void> {     triggerFocus(this.element as HTMLElement);     await this._stabilize();   }    /** Get the computed value of the given CSS property for the element. */   async getCssValue(property: string): Promise<string> {     await this._stabilize();     // TODO(mmalerba): Consider adding value normalization if we run into common cases where its     //  needed.     return getComputedStyle(this.element).getPropertyValue(property);   }    /** Hovers the mouse over the element. */   async hover(): Promise<void> {     this._dispatchPointerEventIfSupported('pointerenter');     dispatchMouseEvent(this.element, 'mouseover');     dispatchMouseEvent(this.element, 'mouseenter');     await this._stabilize();   }    /** Moves the mouse away from the element. */   async mouseAway(): Promise<void> {     this._dispatchPointerEventIfSupported('pointerleave');     dispatchMouseEvent(this.element, 'mouseout');     dispatchMouseEvent(this.element, 'mouseleave');     await this._stabilize();   }    /**    * Sends the given string to the input as a series of key presses. Also fires input events    * and attempts to add the string to the Element's value. Note that this cannot    * reproduce native browser behavior for keyboard shortcuts such as Tab, Ctrl + A, etc.    */   async sendKeys(...keys: (string | TestKey)[]): Promise<void>;   /**    * Sends the given string to the input as a series of key presses. Also fires input events    * and attempts to add the string to the Element's value.    */   async sendKeys(modifiers: ModifierKeys, ...keys: (string | TestKey)[]): Promise<void>;   async sendKeys(...modifiersAndKeys: any[]): Promise<void> {     const args = modifiersAndKeys.map(k => (typeof k === 'number' ? keyMap[k as TestKey] : k));     typeInElement(this.element as HTMLElement, ...args);     await this._stabilize();   }    /**    * Gets the text from the element.    * @param options Options that affect what text is included.    */   async text(options?: TextOptions): Promise<string> {     await this._stabilize();     if (options?.exclude) {       return _getTextWithExcludedElements(this.element, options.exclude);     }     return (this.element.textContent || '').trim();   }    /**    * Sets the value of a `contenteditable` element.    * @param value Value to be set on the element.    */   async setContenteditableValue(value: string): Promise<void> {     const contenteditableAttr = await this.getAttribute('contenteditable');      if (contenteditableAttr !== '' && contenteditableAttr !== 'true') {       throw new Error('setContenteditableValue can only be called on a `contenteditable` element.');     }      await this._stabilize();     this.element.textContent = value;   }    /** Gets the value for the given attribute from the element. */   async getAttribute(name: string): Promise<string | null> {     await this._stabilize();     return this.element.getAttribute(name);   }    /** Checks whether the element has the given class. */   async hasClass(name: string): Promise<boolean> {     await this._stabilize();     return this.element.classList.contains(name);   }    /** Gets the dimensions of the element. */   async getDimensions(): Promise<ElementDimensions> {     await this._stabilize();     return this.element.getBoundingClientRect();   }    /** Gets the value of a property of an element. */   async getProperty<T = any>(name: string): Promise<T> {     await this._stabilize();     return (this.element as any)[name];   }    /** Sets the value of a property of an input. */   async setInputValue(value: string): Promise<void> {     (this.element as any).value = value;     await this._stabilize();   }    /** Selects the options at the specified indexes inside of a native `select` element. */   async selectOptions(...optionIndexes: number[]): Promise<void> {     let hasChanged = false;     const options = this.element.querySelectorAll('option');     const indexes = new Set(optionIndexes); // Convert to a set to remove duplicates.      for (let i = 0; i < options.length; i++) {       const option = options[i];       const wasSelected = option.selected;        // We have to go through `option.selected`, because `HTMLSelectElement.value` doesn't       // allow for multiple options to be selected, even in `multiple` mode.       option.selected = indexes.has(i);        if (option.selected !== wasSelected) {         hasChanged = true;         dispatchFakeEvent(this.element, 'change');       }     }      if (hasChanged) {       await this._stabilize();     }   }    /** Checks whether this element matches the given selector. */   async matchesSelector(selector: string): Promise<boolean> {     await this._stabilize();     const elementPrototype = Element.prototype as any;     return (elementPrototype['matches'] || elementPrototype['msMatchesSelector']).call(       this.element,       selector,     );   }    /** Checks whether the element is focused. */   async isFocused(): Promise<boolean> {     await this._stabilize();     return document.activeElement === this.element;   }    /**    * Dispatches an event with a particular name.    * @param name Name of the event to be dispatched.    */   async dispatchEvent(name: string, data?: Record<string, EventData>): Promise<void> {     const event = createFakeEvent(name);      if (data) {       // tslint:disable-next-line:ban Have to use `Object.assign` to preserve the original object.       Object.assign(event, data);     }      dispatchEvent(this.element, event);     await this._stabilize();   }    /**    * Dispatches a pointer event on the current element if the browser supports it.    * @param name Name of the pointer event to be dispatched.    * @param clientX Coordinate of the user's pointer along the X axis.    * @param clientY Coordinate of the user's pointer along the Y axis.    * @param button Mouse button that should be pressed when dispatching the event.    */   private _dispatchPointerEventIfSupported(     name: string,     clientX?: number,     clientY?: number,     offsetX?: number,     offsetY?: number,     button?: number,   ) {     // The latest versions of all browsers we support have the new `PointerEvent` API.     // Though since we capture the two most recent versions of these browsers, we also     // need to support Safari 12 at time of writing. Safari 12 does not have support for this,     // so we need to conditionally create and dispatch these events based on feature detection.     if (typeof PointerEvent !== 'undefined' && PointerEvent) {       dispatchPointerEvent(this.element, name, clientX, clientY, offsetX, offsetY, {         isPrimary: true,         button,       });     }   }    /**    * Dispatches all the events that are part of a mouse event sequence    * and then emits a given primary event at the end, if speciifed.    */   private async _dispatchMouseEventSequence(     primaryEventName: string | null,     args: [ModifierKeys?] | ['center', ModifierKeys?] | [number, number, ModifierKeys?],     button?: number,   ) {     let clientX: number | undefined = undefined;     let clientY: number | undefined = undefined;     let offsetX: number | undefined = undefined;     let offsetY: number | undefined = undefined;     let modifiers: ModifierKeys = {};      if (args.length && typeof args[args.length - 1] === 'object') {       modifiers = args.pop() as ModifierKeys;     }      if (args.length) {       const {left, top, width, height} = await this.getDimensions();       offsetX = args[0] === 'center' ? width / 2 : (args[0] as number);       offsetY = args[0] === 'center' ? height / 2 : (args[1] as number);        // Round the computed click position as decimal pixels are not       // supported by mouse events and could lead to unexpected results.       clientX = Math.round(left + offsetX);       clientY = Math.round(top + offsetY);     }      this._dispatchPointerEventIfSupported(       'pointerdown',       clientX,       clientY,       offsetX,       offsetY,       button,     );     dispatchMouseEvent(       this.element,       'mousedown',       clientX,       clientY,       offsetX,       offsetY,       button,       modifiers,     );     this._dispatchPointerEventIfSupported('pointerup', clientX, clientY, offsetX, offsetY, button);     dispatchMouseEvent(       this.element,       'mouseup',       clientX,       clientY,       offsetX,       offsetY,       button,       modifiers,     );      // If a primary event name is specified, emit it after the mouse event sequence.     if (primaryEventName !== null) {       dispatchMouseEvent(         this.element,         primaryEventName,         clientX,         clientY,         offsetX,         offsetY,         button,         modifiers,       );     }      // This call to _stabilize should not be needed since the callers will already do that them-     // selves. Nevertheless it breaks some tests in g3 without it. It needs to be investigated     // why removing breaks those tests.     // See: https://github.com/angular/components/pull/20758/files#r520886256.     await this._stabilize();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   ComponentHarness,   ComponentHarnessConstructor,   handleAutoChangeDetectionStatus,   HarnessEnvironment,   HarnessLoader,   stopHandlingAutoChangeDetectionStatus,   TestElement, } from '@angular/cdk/testing'; import {ComponentFixture, flush} from '@angular/core/testing'; import {Observable} from 'rxjs'; import {takeWhile} from 'rxjs/operators'; import {TaskState, TaskStateZoneInterceptor} from './task-state-zone-interceptor'; import {UnitTestElement} from './unit-test-element';  /** Options to configure the environment. */ export interface TestbedHarnessEnvironmentOptions {   /** The query function used to find DOM elements. */   queryFn: (selector: string, root: Element) => Iterable<Element> | ArrayLike<Element>; }  /** The default environment options. */ const defaultEnvironmentOptions: TestbedHarnessEnvironmentOptions = {   queryFn: (selector: string, root: Element) => root.querySelectorAll(selector), };  /** Whether auto change detection is currently disabled. */ let disableAutoChangeDetection = false;  /**  * The set of non-destroyed fixtures currently being used by `TestbedHarnessEnvironment` instances.  */ const activeFixtures = new Set<ComponentFixture<unknown>>();  /**  * Installs a handler for change detection batching status changes for a specific fixture.  * @param fixture The fixture to handle change detection batching for.  */ function installAutoChangeDetectionStatusHandler(fixture: ComponentFixture<unknown>) {   if (!activeFixtures.size) {     handleAutoChangeDetectionStatus(({isDisabled, onDetectChangesNow}) => {       disableAutoChangeDetection = isDisabled;       if (onDetectChangesNow) {         Promise.all(Array.from(activeFixtures).map(detectChanges)).then(onDetectChangesNow);       }     });   }   activeFixtures.add(fixture); }  /**  * Uninstalls a handler for change detection batching status changes for a specific fixture.  * @param fixture The fixture to stop handling change detection batching for.  */ function uninstallAutoChangeDetectionStatusHandler(fixture: ComponentFixture<unknown>) {   activeFixtures.delete(fixture);   if (!activeFixtures.size) {     stopHandlingAutoChangeDetectionStatus();   } }  /** Whether we are currently in the fake async zone. */ function isInFakeAsyncZone() {   return Zone!.current.get('FakeAsyncTestZoneSpec') != null; }  /**  * Triggers change detection for a specific fixture.  * @param fixture The fixture to trigger change detection for.  */ async function detectChanges(fixture: ComponentFixture<unknown>) {   fixture.detectChanges();   if (isInFakeAsyncZone()) {     flush();   } else {     await fixture.whenStable();   } }  /** A `HarnessEnvironment` implementation for Angular's Testbed. */ export class TestbedHarnessEnvironment extends HarnessEnvironment<Element> {   /** Whether the environment has been destroyed. */   private _destroyed = false;    /** Observable that emits whenever the test task state changes. */   private _taskState: Observable<TaskState>;    /** The options for this environment. */   private _options: TestbedHarnessEnvironmentOptions;    /** Environment stabilization callback passed to the created test elements. */   private _stabilizeCallback: () => Promise<void>;    protected constructor(     rawRootElement: Element,     private _fixture: ComponentFixture<unknown>,     options?: TestbedHarnessEnvironmentOptions,   ) {     super(rawRootElement);     this._options = {...defaultEnvironmentOptions, ...options};     this._taskState = TaskStateZoneInterceptor.setup();     this._stabilizeCallback = () => this.forceStabilize();     installAutoChangeDetectionStatusHandler(_fixture);     _fixture.componentRef.onDestroy(() => {       uninstallAutoChangeDetectionStatusHandler(_fixture);       this._destroyed = true;     });   }    /** Creates a `HarnessLoader` rooted at the given fixture's root element. */   static loader(     fixture: ComponentFixture<unknown>,     options?: TestbedHarnessEnvironmentOptions,   ): HarnessLoader {     return new TestbedHarnessEnvironment(fixture.nativeElement, fixture, options);   }    /**    * Creates a `HarnessLoader` at the document root. This can be used if harnesses are    * located outside of a fixture (e.g. overlays appended to the document body).    */   static documentRootLoader(     fixture: ComponentFixture<unknown>,     options?: TestbedHarnessEnvironmentOptions,   ): HarnessLoader {     return new TestbedHarnessEnvironment(document.body, fixture, options);   }    /** Gets the native DOM element corresponding to the given TestElement. */   static getNativeElement(el: TestElement): Element {     if (el instanceof UnitTestElement) {       return el.element;     }     throw Error('This TestElement was not created by the TestbedHarnessEnvironment');   }    /**    * Creates an instance of the given harness type, using the fixture's root element as the    * harness's host element. This method should be used when creating a harness for the root element    * of a fixture, as components do not have the correct selector when they are created as the root    * of the fixture.    */   static async harnessForFixture<T extends ComponentHarness>(     fixture: ComponentFixture<unknown>,     harnessType: ComponentHarnessConstructor<T>,     options?: TestbedHarnessEnvironmentOptions,   ): Promise<T> {     const environment = new TestbedHarnessEnvironment(fixture.nativeElement, fixture, options);     await environment.forceStabilize();     return environment.createComponentHarness(harnessType, fixture.nativeElement);   }    /**    * Flushes change detection and async tasks captured in the Angular zone.    * In most cases it should not be necessary to call this manually. However, there may be some edge    * cases where it is needed to fully flush animation events.    */   async forceStabilize(): Promise<void> {     if (!disableAutoChangeDetection) {       if (this._destroyed) {         throw Error('Harness is attempting to use a fixture that has already been destroyed.');       }        await detectChanges(this._fixture);     }   }    /**    * Waits for all scheduled or running async tasks to complete. This allows harness    * authors to wait for async tasks outside of the Angular zone.    */   async waitForTasksOutsideAngular(): Promise<void> {     // If we run in the fake async zone, we run \"flush\" to run any scheduled tasks. This     // ensures that the harnesses behave inside of the FakeAsyncTestZone similar to the     // \"AsyncTestZone\" and the root zone (i.e. neither fakeAsync or async). Note that we     // cannot just rely on the task state observable to become stable because the state will     // never change. This is because the task queue will be only drained if the fake async     // zone is being flushed.     if (isInFakeAsyncZone()) {       flush();     }      // Wait until the task queue has been drained and the zone is stable. Note that     // we cannot rely on \"fixture.whenStable\" since it does not catch tasks scheduled     // outside of the Angular zone. For test harnesses, we want to ensure that the     // app is fully stabilized and therefore need to use our own zone interceptor.     await this._taskState.pipe(takeWhile(state => !state.stable)).toPromise();   }    /** Gets the root element for the document. */   protected getDocumentRoot(): Element {     return document.body;   }    /** Creates a `TestElement` from a raw element. */   protected createTestElement(element: Element): TestElement {     return new UnitTestElement(element, this._stabilizeCallback);   }    /** Creates a `HarnessLoader` rooted at the given raw element. */   protected createEnvironment(element: Element): HarnessEnvironment<Element> {     return new TestbedHarnessEnvironment(element, this._fixture, this._options);   }    /**    * Gets a list of all elements matching the given selector under this environment's root element.    */   protected async getAllRawElements(selector: string): Promise<Element[]> {     await this.forceStabilize();     return Array.from(this._options.queryFn(selector, this.rawRootElement));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './testbed-harness-environment'; export * from './unit-test-element'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; "],"names":[],"mappings":"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"}
-------------------- SECTION 194 --------------------
{"version":3,"file":"text-field.mjs","sources":["../../../../../../src/cdk/text-field/autofill.ts","../../../../../../src/cdk/text-field/autosize.ts","../../../../../../src/cdk/text-field/text-field-module.ts","../../../../../../src/cdk/text-field/public-api.ts","../../../../../../src/cdk/text-field/index.ts","../../../../../../src/cdk/text-field/text-field_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform'; import {   Directive,   ElementRef,   EventEmitter,   Injectable,   NgZone,   OnDestroy,   OnInit,   Output, } from '@angular/core'; import {coerceElement} from '@angular/cdk/coercion'; import {EMPTY, Observable, Subject} from 'rxjs';  /** An event that is emitted when the autofill state of an input changes. */ export type AutofillEvent = {   /** The element whose autofill state changes. */   target: Element;   /** Whether the element is currently autofilled. */   isAutofilled: boolean; };  /** Used to track info about currently monitored elements. */ type MonitoredElementInfo = {   readonly subject: Subject<AutofillEvent>;   unlisten: () => void; };  /** Options to pass to the animationstart listener. */ const listenerOptions = normalizePassiveListenerOptions({passive: true});  /**  * An injectable service that can be used to monitor the autofill state of an input.  * Based on the following blog post:  * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7  */ @Injectable({providedIn: 'root'}) export class AutofillMonitor implements OnDestroy {   private _monitoredElements = new Map<Element, MonitoredElementInfo>();    constructor(private _platform: Platform, private _ngZone: NgZone) {}    /**    * Monitor for changes in the autofill state of the given input element.    * @param element The element to monitor.    * @return A stream of autofill state changes.    */   monitor(element: Element): Observable<AutofillEvent>;    /**    * Monitor for changes in the autofill state of the given input element.    * @param element The element to monitor.    * @return A stream of autofill state changes.    */   monitor(element: ElementRef<Element>): Observable<AutofillEvent>;    monitor(elementOrRef: Element | ElementRef<Element>): Observable<AutofillEvent> {     if (!this._platform.isBrowser) {       return EMPTY;     }      const element = coerceElement(elementOrRef);     const info = this._monitoredElements.get(element);      if (info) {       return info.subject;     }      const result = new Subject<AutofillEvent>();     const cssClass = 'cdk-text-field-autofilled';     const listener = ((event: AnimationEvent) => {       // Animation events fire on initial element render, we check for the presence of the autofill       // CSS class to make sure this is a real change in state, not just the initial render before       // we fire off events.       if (         event.animationName === 'cdk-text-field-autofill-start' &&         !element.classList.contains(cssClass)       ) {         element.classList.add(cssClass);         this._ngZone.run(() => result.next({target: event.target as Element, isAutofilled: true}));       } else if (         event.animationName === 'cdk-text-field-autofill-end' &&         element.classList.contains(cssClass)       ) {         element.classList.remove(cssClass);         this._ngZone.run(() => result.next({target: event.target as Element, isAutofilled: false}));       }     }) as EventListenerOrEventListenerObject;      this._ngZone.runOutsideAngular(() => {       element.addEventListener('animationstart', listener, listenerOptions);       element.classList.add('cdk-text-field-autofill-monitored');     });      this._monitoredElements.set(element, {       subject: result,       unlisten: () => {         element.removeEventListener('animationstart', listener, listenerOptions);       },     });      return result;   }    /**    * Stop monitoring the autofill state of the given input element.    * @param element The element to stop monitoring.    */   stopMonitoring(element: Element): void;    /**    * Stop monitoring the autofill state of the given input element.    * @param element The element to stop monitoring.    */   stopMonitoring(element: ElementRef<Element>): void;    stopMonitoring(elementOrRef: Element | ElementRef<Element>): void {     const element = coerceElement(elementOrRef);     const info = this._monitoredElements.get(element);      if (info) {       info.unlisten();       info.subject.complete();       element.classList.remove('cdk-text-field-autofill-monitored');       element.classList.remove('cdk-text-field-autofilled');       this._monitoredElements.delete(element);     }   }    ngOnDestroy() {     this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));   } }  /** A directive that can be used to monitor the autofill state of an input. */ @Directive({   selector: '[cdkAutofill]', }) export class CdkAutofill implements OnDestroy, OnInit {   /** Emits when the autofill state of the element changes. */   @Output() readonly cdkAutofill = new EventEmitter<AutofillEvent>();    constructor(     private _elementRef: ElementRef<HTMLElement>,     private _autofillMonitor: AutofillMonitor,   ) {}    ngOnInit() {     this._autofillMonitor       .monitor(this._elementRef)       .subscribe(event => this.cdkAutofill.emit(event));   }    ngOnDestroy() {     this._autofillMonitor.stopMonitoring(this._elementRef);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   BooleanInput,   coerceBooleanProperty,   coerceNumberProperty,   NumberInput, } from '@angular/cdk/coercion'; import {   Directive,   ElementRef,   Input,   AfterViewInit,   DoCheck,   OnDestroy,   NgZone,   Optional,   Inject, } from '@angular/core'; import {Platform} from '@angular/cdk/platform'; import {auditTime, takeUntil} from 'rxjs/operators'; import {fromEvent, Subject} from 'rxjs'; import {DOCUMENT} from '@angular/common';  /** Directive to automatically resize a textarea to fit its content. */ @Directive({   selector: 'textarea[cdkTextareaAutosize]',   exportAs: 'cdkTextareaAutosize',   host: {     'class': 'cdk-textarea-autosize',     // Textarea elements that have the directive applied should have a single row by default.     // Browsers normally show two rows by default and therefore this limits the minRows binding.     'rows': '1',     '(input)': '_noopInputHandler()',   }, }) export class CdkTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy {   /** Keep track of the previous textarea value to avoid resizing when the value hasn't changed. */   private _previousValue?: string;   private _initialHeight: string | undefined;   private readonly _destroyed = new Subject<void>();    private _minRows: number;   private _maxRows: number;   private _enabled: boolean = true;    /**    * Value of minRows as of last resize. If the minRows has decreased, the    * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight    * does not have the same problem because it does not affect the textarea's scrollHeight.    */   private _previousMinRows: number = -1;    private _textareaElement: HTMLTextAreaElement;    /** Minimum amount of rows in the textarea. */   @Input('cdkAutosizeMinRows')   get minRows(): number {     return this._minRows;   }   set minRows(value: NumberInput) {     this._minRows = coerceNumberProperty(value);     this._setMinHeight();   }    /** Maximum amount of rows in the textarea. */   @Input('cdkAutosizeMaxRows')   get maxRows(): number {     return this._maxRows;   }   set maxRows(value: NumberInput) {     this._maxRows = coerceNumberProperty(value);     this._setMaxHeight();   }    /** Whether autosizing is enabled or not */   @Input('cdkTextareaAutosize')   get enabled(): boolean {     return this._enabled;   }   set enabled(value: BooleanInput) {     value = coerceBooleanProperty(value);      // Only act if the actual value changed. This specifically helps to not run     // resizeToFitContent too early (i.e. before ngAfterViewInit)     if (this._enabled !== value) {       (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();     }   }    @Input()   get placeholder(): string {     return this._textareaElement.placeholder;   }   set placeholder(value: string) {     this._cachedPlaceholderHeight = undefined;      if (value) {       this._textareaElement.setAttribute('placeholder', value);     } else {       this._textareaElement.removeAttribute('placeholder');     }      this._cacheTextareaPlaceholderHeight();   }    /** Cached height of a textarea with a single row. */   private _cachedLineHeight: number;   /** Cached height of a textarea with only the placeholder. */   private _cachedPlaceholderHeight?: number;    /** Used to reference correct document/window */   protected _document?: Document;    private _hasFocus: boolean;    private _isViewInited = false;    constructor(     private _elementRef: ElementRef<HTMLElement>,     private _platform: Platform,     private _ngZone: NgZone,     /** @breaking-change 11.0.0 make document required */     @Optional() @Inject(DOCUMENT) document?: any,   ) {     this._document = document;      this._textareaElement = this._elementRef.nativeElement as HTMLTextAreaElement;   }    /** Sets the minimum height of the textarea as determined by minRows. */   _setMinHeight(): void {     const minHeight =       this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;      if (minHeight) {       this._textareaElement.style.minHeight = minHeight;     }   }    /** Sets the maximum height of the textarea as determined by maxRows. */   _setMaxHeight(): void {     const maxHeight =       this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;      if (maxHeight) {       this._textareaElement.style.maxHeight = maxHeight;     }   }    ngAfterViewInit() {     if (this._platform.isBrowser) {       // Remember the height which we started with in case autosizing is disabled       this._initialHeight = this._textareaElement.style.height;       this.resizeToFitContent();        this._ngZone.runOutsideAngular(() => {         const window = this._getWindow();          fromEvent(window, 'resize')           .pipe(auditTime(16), takeUntil(this._destroyed))           .subscribe(() => this.resizeToFitContent(true));          this._textareaElement.addEventListener('focus', this._handleFocusEvent);         this._textareaElement.addEventListener('blur', this._handleFocusEvent);       });        this._isViewInited = true;       this.resizeToFitContent(true);     }   }    ngOnDestroy() {     this._textareaElement.removeEventListener('focus', this._handleFocusEvent);     this._textareaElement.removeEventListener('blur', this._handleFocusEvent);     this._destroyed.next();     this._destroyed.complete();   }    /**    * Cache the height of a single-row textarea if it has not already been cached.    *    * We need to know how large a single \"row\" of a textarea is in order to apply minRows and    * maxRows. For the initial version, we will assume that the height of a single line in the    * textarea does not ever change.    */   private _cacheTextareaLineHeight(): void {     if (this._cachedLineHeight) {       return;     }      // Use a clone element because we have to override some styles.     let textareaClone = this._textareaElement.cloneNode(false) as HTMLTextAreaElement;     textareaClone.rows = 1;      // Use `position: absolute` so that this doesn't cause a browser layout and use     // `visibility: hidden` so that nothing is rendered. Clear any other styles that     // would affect the height.     textareaClone.style.position = 'absolute';     textareaClone.style.visibility = 'hidden';     textareaClone.style.border = 'none';     textareaClone.style.padding = '0';     textareaClone.style.height = '';     textareaClone.style.minHeight = '';     textareaClone.style.maxHeight = '';      // In Firefox it happens that textarea elements are always bigger than the specified amount     // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.     // As a workaround that removes the extra space for the scrollbar, we can just set overflow     // to hidden. This ensures that there is no invalid calculation of the line height.     // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654     textareaClone.style.overflow = 'hidden';      this._textareaElement.parentNode!.appendChild(textareaClone);     this._cachedLineHeight = textareaClone.clientHeight;     textareaClone.remove();      // Min and max heights have to be re-calculated if the cached line height changes     this._setMinHeight();     this._setMaxHeight();   }    private _measureScrollHeight(): number {     const element = this._textareaElement;     const previousMargin = element.style.marginBottom || '';     const isFirefox = this._platform.FIREFOX;     const needsMarginFiller = isFirefox && this._hasFocus;     const measuringClass = isFirefox       ? 'cdk-textarea-autosize-measuring-firefox'       : 'cdk-textarea-autosize-measuring';      // In some cases the page might move around while we're measuring the `textarea` on Firefox. We     // work around it by assigning a temporary margin with the same height as the `textarea` so that     // it occupies the same amount of space. See #23233.     if (needsMarginFiller) {       element.style.marginBottom = `${element.clientHeight}px`;     }      // Reset the textarea height to auto in order to shrink back to its default size.     // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.     element.classList.add(measuringClass);     // The measuring class includes a 2px padding to workaround an issue with Chrome,     // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).     const scrollHeight = element.scrollHeight - 4;     element.classList.remove(measuringClass);      if (needsMarginFiller) {       element.style.marginBottom = previousMargin;     }      return scrollHeight;   }    private _cacheTextareaPlaceholderHeight(): void {     if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {       return;     }     if (!this.placeholder) {       this._cachedPlaceholderHeight = 0;       return;     }      const value = this._textareaElement.value;      this._textareaElement.value = this._textareaElement.placeholder;     this._cachedPlaceholderHeight = this._measureScrollHeight();     this._textareaElement.value = value;   }    /** Handles `focus` and `blur` events. */   private _handleFocusEvent = (event: FocusEvent) => {     this._hasFocus = event.type === 'focus';   };    ngDoCheck() {     if (this._platform.isBrowser) {       this.resizeToFitContent();     }   }    /**    * Resize the textarea to fit its content.    * @param force Whether to force a height recalculation. By default the height will be    *    recalculated only if the value changed since the last call.    */   resizeToFitContent(force: boolean = false) {     // If autosizing is disabled, just skip everything else     if (!this._enabled) {       return;     }      this._cacheTextareaLineHeight();     this._cacheTextareaPlaceholderHeight();      // If we haven't determined the line-height yet, we know we're still hidden and there's no point     // in checking the height of the textarea.     if (!this._cachedLineHeight) {       return;     }      const textarea = this._elementRef.nativeElement as HTMLTextAreaElement;     const value = textarea.value;      // Only resize if the value or minRows have changed since these calculations can be expensive.     if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {       return;     }      const scrollHeight = this._measureScrollHeight();     const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0);      // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.     textarea.style.height = `${height}px`;      this._ngZone.runOutsideAngular(() => {       if (typeof requestAnimationFrame !== 'undefined') {         requestAnimationFrame(() => this._scrollToCaretPosition(textarea));       } else {         setTimeout(() => this._scrollToCaretPosition(textarea));       }     });      this._previousValue = value;     this._previousMinRows = this._minRows;   }    /**    * Resets the textarea to its original size    */   reset() {     // Do not try to change the textarea, if the initialHeight has not been determined yet     // This might potentially remove styles when reset() is called before ngAfterViewInit     if (this._initialHeight !== undefined) {       this._textareaElement.style.height = this._initialHeight;     }   }    _noopInputHandler() {     // no-op handler that ensures we're running change detection on input events.   }    /** Access injected document if available or fallback to global document reference */   private _getDocument(): Document {     return this._document || document;   }    /** Use defaultView of injected document if available or fallback to global window reference */   private _getWindow(): Window {     const doc = this._getDocument();     return doc.defaultView || window;   }    /**    * Scrolls a textarea to the caret position. On Firefox resizing the textarea will    * prevent it from scrolling to the caret position. We need to re-set the selection    * in order for it to scroll to the proper position.    */   private _scrollToCaretPosition(textarea: HTMLTextAreaElement) {     const {selectionStart, selectionEnd} = textarea;      // IE will throw an \"Unspecified error\" if we try to set the selection range after the     // element has been removed from the DOM. Assert that the directive hasn't been destroyed     // between the time we requested the animation frame and when it was executed.     // Also note that we have to assert that the textarea is focused before we set the     // selection range. Setting the selection range on a non-focused textarea will cause     // it to receive focus on IE and Edge.     if (!this._destroyed.isStopped && this._hasFocus) {       textarea.setSelectionRange(selectionStart, selectionEnd);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {CdkAutofill} from './autofill'; import {CdkTextareaAutosize} from './autosize';  @NgModule({   declarations: [CdkAutofill, CdkTextareaAutosize],   exports: [CdkAutofill, CdkTextareaAutosize], }) export class TextFieldModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './autofill'; export * from './autosize'; export * from './text-field-module'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 195 --------------------
{"version":3,"file":"stepper.mjs","sources":["../../../../../../src/cdk/stepper/step-header.ts","../../../../../../src/cdk/stepper/step-label.ts","../../../../../../src/cdk/stepper/stepper.ts","../../../../../../src/cdk/stepper/stepper-button.ts","../../../../../../src/cdk/stepper/stepper-module.ts","../../../../../../src/cdk/stepper/public-api.ts","../../../../../../src/cdk/stepper/index.ts","../../../../../../src/cdk/stepper/stepper_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef} from '@angular/core'; import {FocusableOption} from '@angular/cdk/a11y';  @Directive({   selector: '[cdkStepHeader]',   host: {     'role': 'tab',   }, }) export class CdkStepHeader implements FocusableOption {   constructor(public _elementRef: ElementRef<HTMLElement>) {}    /** Focuses the step header. */   focus() {     this._elementRef.nativeElement.focus();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, TemplateRef} from '@angular/core';  @Directive({   selector: '[cdkStepLabel]', }) export class CdkStepLabel {   constructor(/** @docs-private */ public template: TemplateRef<any>) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {FocusableOption, FocusKeyManager} from '@angular/cdk/a11y'; import {Direction, Directionality} from '@angular/cdk/bidi'; import {   BooleanInput,   coerceBooleanProperty,   coerceNumberProperty,   NumberInput, } from '@angular/cdk/coercion'; import {ENTER, hasModifierKey, SPACE} from '@angular/cdk/keycodes'; import {   AfterViewInit,   ChangeDetectionStrategy,   ChangeDetectorRef,   Component,   ContentChild,   ContentChildren,   Directive,   ElementRef,   EventEmitter,   forwardRef,   Inject,   InjectionToken,   Input,   OnChanges,   OnDestroy,   Optional,   Output,   QueryList,   TemplateRef,   ViewChild,   ViewEncapsulation,   AfterContentInit, } from '@angular/core'; import {_getFocusedElementPierceShadowDom} from '@angular/cdk/platform'; import {Observable, of as observableOf, Subject} from 'rxjs'; import {startWith, takeUntil} from 'rxjs/operators';  import {CdkStepHeader} from './step-header'; import {CdkStepLabel} from './step-label';  /** Used to generate unique ID for each stepper component. */ let nextId = 0;  /**  * Position state of the content of each step in stepper that is used for transitioning  * the content into correct position upon step selection change.  */ export type StepContentPositionState = 'previous' | 'current' | 'next';  /** Possible orientation of a stepper. */ export type StepperOrientation = 'horizontal' | 'vertical';  /** Change event emitted on selection changes. */ export class StepperSelectionEvent {   /** Index of the step now selected. */   selectedIndex: number;    /** Index of the step previously selected. */   previouslySelectedIndex: number;    /** The step instance now selected. */   selectedStep: CdkStep;    /** The step instance previously selected. */   previouslySelectedStep: CdkStep; }  /** The state of each step. */ export type StepState = 'number' | 'edit' | 'done' | 'error' | string;  /** Enum to represent the different states of the steps. */ export const STEP_STATE = {   NUMBER: 'number',   EDIT: 'edit',   DONE: 'done',   ERROR: 'error', };  /** InjectionToken that can be used to specify the global stepper options. */ export const STEPPER_GLOBAL_OPTIONS = new InjectionToken<StepperOptions>('STEPPER_GLOBAL_OPTIONS');  /** Configurable options for stepper. */ export interface StepperOptions {   /**    * Whether the stepper should display an error state or not.    * Default behavior is assumed to be false.    */   showError?: boolean;    /**    * Whether the stepper should display the default indicator type    * or not.    * Default behavior is assumed to be true.    */   displayDefaultIndicatorType?: boolean; }  @Component({   selector: 'cdk-step',   exportAs: 'cdkStep',   template: '<ng-template><ng-content></ng-content></ng-template>',   encapsulation: ViewEncapsulation.None,   changeDetection: ChangeDetectionStrategy.OnPush, }) export class CdkStep implements OnChanges {   private _stepperOptions: StepperOptions;   _displayDefaultIndicatorType: boolean;    /** Template for step label if it exists. */   @ContentChild(CdkStepLabel) stepLabel: CdkStepLabel;    /** Template for step content. */   @ViewChild(TemplateRef, {static: true}) content: TemplateRef<any>;    /** The top level abstract control of the step. */   @Input() stepControl: AbstractControlLike;    /** Whether user has attempted to move away from the step. */   interacted = false;    /** Emits when the user has attempted to move away from the step. */   @Output('interacted')   readonly interactedStream: EventEmitter<CdkStep> = new EventEmitter<CdkStep>();    /** Plain text label of the step. */   @Input() label: string;    /** Error message to display when there's an error. */   @Input() errorMessage: string;    /** Aria label for the tab. */   @Input('aria-label') ariaLabel: string;    /**    * Reference to the element that the tab is labelled by.    * Will be cleared if `aria-label` is set at the same time.    */   @Input('aria-labelledby') ariaLabelledby: string;    /** State of the step. */   @Input() state: StepState;    /** Whether the user can return to this step once it has been marked as completed. */   @Input()   get editable(): boolean {     return this._editable;   }   set editable(value: BooleanInput) {     this._editable = coerceBooleanProperty(value);   }   private _editable = true;    /** Whether the completion of step is optional. */   @Input()   get optional(): boolean {     return this._optional;   }   set optional(value: BooleanInput) {     this._optional = coerceBooleanProperty(value);   }   private _optional = false;    /** Whether step is marked as completed. */   @Input()   get completed(): boolean {     return this._completedOverride == null ? this._getDefaultCompleted() : this._completedOverride;   }   set completed(value: BooleanInput) {     this._completedOverride = coerceBooleanProperty(value);   }   _completedOverride: boolean | null = null;    private _getDefaultCompleted() {     return this.stepControl ? this.stepControl.valid && this.interacted : this.interacted;   }    /** Whether step has an error. */   @Input()   get hasError(): boolean {     return this._customError == null ? this._getDefaultError() : this._customError;   }   set hasError(value: BooleanInput) {     this._customError = coerceBooleanProperty(value);   }   private _customError: boolean | null = null;    private _getDefaultError() {     return this.stepControl && this.stepControl.invalid && this.interacted;   }    constructor(     @Inject(forwardRef(() => CdkStepper)) public _stepper: CdkStepper,     @Optional() @Inject(STEPPER_GLOBAL_OPTIONS) stepperOptions?: StepperOptions,   ) {     this._stepperOptions = stepperOptions ? stepperOptions : {};     this._displayDefaultIndicatorType = this._stepperOptions.displayDefaultIndicatorType !== false;   }    /** Selects this step component. */   select(): void {     this._stepper.selected = this;   }    /** Resets the step to its initial state. Note that this includes resetting form data. */   reset(): void {     this.interacted = false;      if (this._completedOverride != null) {       this._completedOverride = false;     }      if (this._customError != null) {       this._customError = false;     }      if (this.stepControl) {       this.stepControl.reset();     }   }    ngOnChanges() {     // Since basically all inputs of the MatStep get proxied through the view down to the     // underlying MatStepHeader, we have to make sure that change detection runs correctly.     this._stepper._stateChanged();   }    _markAsInteracted() {     if (!this.interacted) {       this.interacted = true;       this.interactedStream.emit(this);     }   }    /** Determines whether the error state can be shown. */   _showError(): boolean {     // We want to show the error state either if the user opted into/out of it using the     // global options, or if they've explicitly set it through the `hasError` input.     return this._stepperOptions.showError ?? this._customError != null;   } }  @Directive({   selector: '[cdkStepper]',   exportAs: 'cdkStepper', }) export class CdkStepper implements AfterContentInit, AfterViewInit, OnDestroy {   /** Emits when the component is destroyed. */   protected readonly _destroyed = new Subject<void>();    /** Used for managing keyboard focus. */   private _keyManager: FocusKeyManager<FocusableOption>;    /** Full list of steps inside the stepper, including inside nested steppers. */   @ContentChildren(CdkStep, {descendants: true}) _steps: QueryList<CdkStep>;    /** Steps that belong to the current stepper, excluding ones from nested steppers. */   readonly steps: QueryList<CdkStep> = new QueryList<CdkStep>();    /** The list of step headers of the steps in the stepper. */   @ContentChildren(CdkStepHeader, {descendants: true}) _stepHeader: QueryList<CdkStepHeader>;    /** List of step headers sorted based on their DOM order. */   private _sortedHeaders = new QueryList<CdkStepHeader>();    /** Whether the validity of previous steps should be checked or not. */   @Input()   get linear(): boolean {     return this._linear;   }   set linear(value: BooleanInput) {     this._linear = coerceBooleanProperty(value);   }   private _linear = false;    /** The index of the selected step. */   @Input()   get selectedIndex(): number {     return this._selectedIndex;   }   set selectedIndex(index: NumberInput) {     const newIndex = coerceNumberProperty(index);      if (this.steps && this._steps) {       // Ensure that the index can't be out of bounds.       if (!this._isValidIndex(newIndex) && (typeof ngDevMode === 'undefined' || ngDevMode)) {         throw Error('cdkStepper: Cannot assign out-of-bounds value to `selectedIndex`.');       }        this.selected?._markAsInteracted();        if (         this._selectedIndex !== newIndex &&         !this._anyControlsInvalidOrPending(newIndex) &&         (newIndex >= this._selectedIndex || this.steps.toArray()[newIndex].editable)       ) {         this._updateSelectedItemIndex(newIndex);       }     } else {       this._selectedIndex = newIndex;     }   }   private _selectedIndex = 0;    /** The step that is selected. */   @Input()   get selected(): CdkStep | undefined {     return this.steps ? this.steps.toArray()[this.selectedIndex] : undefined;   }   set selected(step: CdkStep | undefined) {     this.selectedIndex = step && this.steps ? this.steps.toArray().indexOf(step) : -1;   }    /** Event emitted when the selected step has changed. */   @Output() readonly selectionChange = new EventEmitter<StepperSelectionEvent>();    /** Used to track unique ID for each stepper component. */   _groupId: number;    /** Orientation of the stepper. */   @Input()   get orientation(): StepperOrientation {     return this._orientation;   }   set orientation(value: StepperOrientation) {     // This is a protected method so that `MatStepper` can hook into it.     this._orientation = value;      if (this._keyManager) {       this._keyManager.withVerticalOrientation(value === 'vertical');     }   }   private _orientation: StepperOrientation = 'horizontal';    constructor(     @Optional() private _dir: Directionality,     private _changeDetectorRef: ChangeDetectorRef,     private _elementRef: ElementRef<HTMLElement>,   ) {     this._groupId = nextId++;   }    ngAfterContentInit() {     this._steps.changes       .pipe(startWith(this._steps), takeUntil(this._destroyed))       .subscribe((steps: QueryList<CdkStep>) => {         this.steps.reset(steps.filter(step => step._stepper === this));         this.steps.notifyOnChanges();       });   }    ngAfterViewInit() {     // If the step headers are defined outside of the `ngFor` that renders the steps, like in the     // Material stepper, they won't appear in the `QueryList` in the same order as they're     // rendered in the DOM which will lead to incorrect keyboard navigation. We need to sort     // them manually to ensure that they're correct. Alternatively, we can change the Material     // template to inline the headers in the `ngFor`, but that'll result in a lot of     // code duplication. See #23539.     this._stepHeader.changes       .pipe(startWith(this._stepHeader), takeUntil(this._destroyed))       .subscribe((headers: QueryList<CdkStepHeader>) => {         this._sortedHeaders.reset(           headers.toArray().sort((a, b) => {             const documentPosition = a._elementRef.nativeElement.compareDocumentPosition(               b._elementRef.nativeElement,             );              // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.             // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition             // tslint:disable-next-line:no-bitwise             return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;           }),         );         this._sortedHeaders.notifyOnChanges();       });      // Note that while the step headers are content children by default, any components that     // extend this one might have them as view children. We initialize the keyboard handling in     // AfterViewInit so we're guaranteed for both view and content children to be defined.     this._keyManager = new FocusKeyManager<FocusableOption>(this._sortedHeaders)       .withWrap()       .withHomeAndEnd()       .withVerticalOrientation(this._orientation === 'vertical');      (this._dir ? (this._dir.change as Observable<Direction>) : observableOf<Direction>())       .pipe(startWith(this._layoutDirection()), takeUntil(this._destroyed))       .subscribe(direction => this._keyManager.withHorizontalOrientation(direction));      this._keyManager.updateActiveItem(this._selectedIndex);      // No need to `takeUntil` here, because we're the ones destroying `steps`.     this.steps.changes.subscribe(() => {       if (!this.selected) {         this._selectedIndex = Math.max(this._selectedIndex - 1, 0);       }     });      // The logic which asserts that the selected index is within bounds doesn't run before the     // steps are initialized, because we don't how many steps there are yet so we may have an     // invalid index on init. If that's the case, auto-correct to the default so we don't throw.     if (!this._isValidIndex(this._selectedIndex)) {       this._selectedIndex = 0;     }   }    ngOnDestroy() {     this._keyManager?.destroy();     this.steps.destroy();     this._sortedHeaders.destroy();     this._destroyed.next();     this._destroyed.complete();   }    /** Selects and focuses the next step in list. */   next(): void {     this.selectedIndex = Math.min(this._selectedIndex + 1, this.steps.length - 1);   }    /** Selects and focuses the previous step in list. */   previous(): void {     this.selectedIndex = Math.max(this._selectedIndex - 1, 0);   }    /** Resets the stepper to its initial state. Note that this includes clearing form data. */   reset(): void {     this._updateSelectedItemIndex(0);     this.steps.forEach(step => step.reset());     this._stateChanged();   }    /** Returns a unique id for each step label element. */   _getStepLabelId(i: number): string {     return `cdk-step-label-${this._groupId}-${i}`;   }    /** Returns unique id for each step content element. */   _getStepContentId(i: number): string {     return `cdk-step-content-${this._groupId}-${i}`;   }    /** Marks the component to be change detected. */   _stateChanged() {     this._changeDetectorRef.markForCheck();   }    /** Returns position state of the step with the given index. */   _getAnimationDirection(index: number): StepContentPositionState {     const position = index - this._selectedIndex;     if (position < 0) {       return this._layoutDirection() === 'rtl' ? 'next' : 'previous';     } else if (position > 0) {       return this._layoutDirection() === 'rtl' ? 'previous' : 'next';     }     return 'current';   }    /** Returns the type of icon to be displayed. */   _getIndicatorType(index: number, state: StepState = STEP_STATE.NUMBER): StepState {     const step = this.steps.toArray()[index];     const isCurrentStep = this._isCurrentStep(index);      return step._displayDefaultIndicatorType       ? this._getDefaultIndicatorLogic(step, isCurrentStep)       : this._getGuidelineLogic(step, isCurrentStep, state);   }    private _getDefaultIndicatorLogic(step: CdkStep, isCurrentStep: boolean): StepState {     if (step._showError() && step.hasError && !isCurrentStep) {       return STEP_STATE.ERROR;     } else if (!step.completed || isCurrentStep) {       return STEP_STATE.NUMBER;     } else {       return step.editable ? STEP_STATE.EDIT : STEP_STATE.DONE;     }   }    private _getGuidelineLogic(     step: CdkStep,     isCurrentStep: boolean,     state: StepState = STEP_STATE.NUMBER,   ): StepState {     if (step._showError() && step.hasError && !isCurrentStep) {       return STEP_STATE.ERROR;     } else if (step.completed && !isCurrentStep) {       return STEP_STATE.DONE;     } else if (step.completed && isCurrentStep) {       return state;     } else if (step.editable && isCurrentStep) {       return STEP_STATE.EDIT;     } else {       return state;     }   }    private _isCurrentStep(index: number) {     return this._selectedIndex === index;   }    /** Returns the index of the currently-focused step header. */   _getFocusIndex() {     return this._keyManager ? this._keyManager.activeItemIndex : this._selectedIndex;   }    private _updateSelectedItemIndex(newIndex: number): void {     const stepsArray = this.steps.toArray();     this.selectionChange.emit({       selectedIndex: newIndex,       previouslySelectedIndex: this._selectedIndex,       selectedStep: stepsArray[newIndex],       previouslySelectedStep: stepsArray[this._selectedIndex],     });      // If focus is inside the stepper, move it to the next header, otherwise it may become     // lost when the active step content is hidden. We can't be more granular with the check     // (e.g. checking whether focus is inside the active step), because we don't have a     // reference to the elements that are rendering out the content.     this._containsFocus()       ? this._keyManager.setActiveItem(newIndex)       : this._keyManager.updateActiveItem(newIndex);      this._selectedIndex = newIndex;     this._stateChanged();   }    _onKeydown(event: KeyboardEvent) {     const hasModifier = hasModifierKey(event);     const keyCode = event.keyCode;     const manager = this._keyManager;      if (       manager.activeItemIndex != null &&       !hasModifier &&       (keyCode === SPACE || keyCode === ENTER)     ) {       this.selectedIndex = manager.activeItemIndex;       event.preventDefault();     } else {       manager.setFocusOrigin('keyboard').onKeydown(event);     }   }    private _anyControlsInvalidOrPending(index: number): boolean {     if (this._linear && index >= 0) {       return this.steps         .toArray()         .slice(0, index)         .some(step => {           const control = step.stepControl;           const isIncomplete = control             ? control.invalid || control.pending || !step.interacted             : !step.completed;           return isIncomplete && !step.optional && !step._completedOverride;         });     }      return false;   }    private _layoutDirection(): Direction {     return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';   }    /** Checks whether the stepper contains the focused element. */   private _containsFocus(): boolean {     const stepperElement = this._elementRef.nativeElement;     const focusedElement = _getFocusedElementPierceShadowDom();     return stepperElement === focusedElement || stepperElement.contains(focusedElement);   }    /** Checks whether the passed-in index is a valid step index. */   private _isValidIndex(index: number): boolean {     return index > -1 && (!this.steps || index < this.steps.length);   } }  /**  * Simplified representation of an \"AbstractControl\" from @angular/forms.  * Used to avoid having to bring in @angular/forms for a single optional interface.  * @docs-private  */ interface AbstractControlLike {   asyncValidator: ((control: any) => any) | null;   dirty: boolean;   disabled: boolean;   enabled: boolean;   errors: {[key: string]: any} | null;   invalid: boolean;   parent: any;   pending: boolean;   pristine: boolean;   root: AbstractControlLike;   status: string;   readonly statusChanges: Observable<any>;   touched: boolean;   untouched: boolean;   updateOn: any;   valid: boolean;   validator: ((control: any) => any) | null;   value: any;   readonly valueChanges: Observable<any>;   clearAsyncValidators(): void;   clearValidators(): void;   disable(opts?: any): void;   enable(opts?: any): void;   get(path: (string | number)[] | string): AbstractControlLike | null;   getError(errorCode: string, path?: (string | number)[] | string): any;   hasError(errorCode: string, path?: (string | number)[] | string): boolean;   markAllAsTouched(): void;   markAsDirty(opts?: any): void;   markAsPending(opts?: any): void;   markAsPristine(opts?: any): void;   markAsTouched(opts?: any): void;   markAsUntouched(opts?: any): void;   patchValue(value: any, options?: Object): void;   reset(value?: any, options?: Object): void;   setAsyncValidators(newValidator: (control: any) => any | ((control: any) => any)[] | null): void;   setErrors(errors: {[key: string]: any} | null, opts?: any): void;   setParent(parent: any): void;   setValidators(newValidator: (control: any) => any | ((control: any) => any)[] | null): void;   setValue(value: any, options?: Object): void;   updateValueAndValidity(opts?: any): void;   patchValue(value: any, options?: any): void;   reset(formState?: any, options?: any): void;   setValue(value: any, options?: any): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, Input} from '@angular/core';  import {CdkStepper} from './stepper';  /** Button that moves to the next step in a stepper workflow. */ @Directive({   selector: 'button[cdkStepperNext]',   host: {     '[type]': 'type',     '(click)': '_stepper.next()',   }, }) export class CdkStepperNext {   /** Type of the next button. Defaults to \"submit\" if not specified. */   @Input() type: string = 'submit';    constructor(public _stepper: CdkStepper) {} }  /** Button that moves to the previous step in a stepper workflow. */ @Directive({   selector: 'button[cdkStepperPrevious]',   host: {     '[type]': 'type',     '(click)': '_stepper.previous()',   }, }) export class CdkStepperPrevious {   /** Type of the previous button. Defaults to \"button\" if not specified. */   @Input() type: string = 'button';    constructor(public _stepper: CdkStepper) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {CdkStepper, CdkStep} from './stepper'; import {CdkStepLabel} from './step-label'; import {CdkStepperNext, CdkStepperPrevious} from './stepper-button'; import {CdkStepHeader} from './step-header'; import {BidiModule} from '@angular/cdk/bidi';  @NgModule({   imports: [BidiModule],   exports: [CdkStep, CdkStepper, CdkStepHeader, CdkStepLabel, CdkStepperNext, CdkStepperPrevious],   declarations: [     CdkStep,     CdkStepper,     CdkStepHeader,     CdkStepLabel,     CdkStepperNext,     CdkStepperPrevious,   ], }) export class CdkStepperModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './stepper'; export * from './step-label'; export * from './stepper-button'; export * from './stepper-module'; export * from './step-header'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["observableOf","i1.CdkStepper"],"mappings":"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"}
-------------------- SECTION 196 --------------------
{"version":3,"file":"collections.mjs","sources":["../../../../../../src/cdk/collections/data-source.ts","../../../../../../src/cdk/collections/array-data-source.ts","../../../../../../src/cdk/collections/collection-viewer.ts","../../../../../../src/cdk/collections/dispose-view-repeater-strategy.ts","../../../../../../src/cdk/collections/recycle-view-repeater-strategy.ts","../../../../../../src/cdk/collections/selection-model.ts","../../../../../../src/cdk/collections/unique-selection-dispatcher.ts","../../../../../../src/cdk/collections/tree-adapter.ts","../../../../../../src/cdk/collections/view-repeater.ts","../../../../../../src/cdk/collections/public-api.ts","../../../../../../src/cdk/collections/index.ts","../../../../../../src/cdk/collections/collections_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ConnectableObservable, Observable} from 'rxjs'; import {CollectionViewer} from './collection-viewer';  export abstract class DataSource<T> {   /**    * Connects a collection viewer (such as a data-table) to this data source. Note that    * the stream provided will be accessed during change detection and should not directly change    * values that are bound in template views.    * @param collectionViewer The component that exposes a view over the data provided by this    *     data source.    * @returns Observable that emits a new value when the data changes.    */   abstract connect(collectionViewer: CollectionViewer): Observable<readonly T[]>;    /**    * Disconnects a collection viewer (such as a data-table) from this data source. Can be used    * to perform any clean-up or tear-down operations when a view is being destroyed.    *    * @param collectionViewer The component that exposes a view over the data provided by this    *     data source.    */   abstract disconnect(collectionViewer: CollectionViewer): void; }  /** Checks whether an object is a data source. */ export function isDataSource(value: any): value is DataSource<any> {   // Check if the value is a DataSource by observing if it has a connect function. Cannot   // be checked as an `instanceof DataSource` since people could create their own sources   // that match the interface, but don't extend DataSource. We also can't use `isObservable`   // here, because of some internal apps.   return value && typeof value.connect === 'function' && !(value instanceof ConnectableObservable); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Observable, isObservable, of as observableOf} from 'rxjs'; import {DataSource} from './data-source';  /** DataSource wrapper for a native array. */ export class ArrayDataSource<T> extends DataSource<T> {   constructor(private _data: readonly T[] | Observable<readonly T[]>) {     super();   }    connect(): Observable<readonly T[]> {     return isObservable(this._data) ? this._data : observableOf(this._data);   }    disconnect() {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Observable} from 'rxjs';  /** Represents a range of numbers with a specified start and end. */ export type ListRange = {start: number; end: number};  /**  * Interface for any component that provides a view of some data collection and wants to provide  * information regarding the view and any changes made.  */ export interface CollectionViewer {   /**    * A stream that emits whenever the `CollectionViewer` starts looking at a new portion of the    * data. The `start` index is inclusive, while the `end` is exclusive.    */   viewChange: Observable<ListRange>; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   EmbeddedViewRef,   IterableChangeRecord,   IterableChanges,   ViewContainerRef, } from '@angular/core'; import {   _ViewRepeater,   _ViewRepeaterItemChanged,   _ViewRepeaterItemContext,   _ViewRepeaterItemContextFactory,   _ViewRepeaterItemValueResolver,   _ViewRepeaterOperation, } from './view-repeater';  /**  * A repeater that destroys views when they are removed from a  * {@link ViewContainerRef}. When new items are inserted into the container,  * the repeater will always construct a new embedded view for each item.  *  * @template T The type for the embedded view's $implicit property.  * @template R The type for the item in each IterableDiffer change record.  * @template C The type for the context passed to each embedded view.  */ export class _DisposeViewRepeaterStrategy<T, R, C extends _ViewRepeaterItemContext<T>>   implements _ViewRepeater<T, R, C> {   applyChanges(     changes: IterableChanges<R>,     viewContainerRef: ViewContainerRef,     itemContextFactory: _ViewRepeaterItemContextFactory<T, R, C>,     itemValueResolver: _ViewRepeaterItemValueResolver<T, R>,     itemViewChanged?: _ViewRepeaterItemChanged<R, C>,   ) {     changes.forEachOperation(       (         record: IterableChangeRecord<R>,         adjustedPreviousIndex: number | null,         currentIndex: number | null,       ) => {         let view: EmbeddedViewRef<C> | undefined;         let operation: _ViewRepeaterOperation;         if (record.previousIndex == null) {           const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);           view = viewContainerRef.createEmbeddedView(             insertContext.templateRef,             insertContext.context,             insertContext.index,           );           operation = _ViewRepeaterOperation.INSERTED;         } else if (currentIndex == null) {           viewContainerRef.remove(adjustedPreviousIndex!);           operation = _ViewRepeaterOperation.REMOVED;         } else {           view = viewContainerRef.get(adjustedPreviousIndex!) as EmbeddedViewRef<C>;           viewContainerRef.move(view!, currentIndex);           operation = _ViewRepeaterOperation.MOVED;         }          if (itemViewChanged) {           itemViewChanged({             context: view?.context,             operation,             record,           });         }       },     );   }    detach() {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   EmbeddedViewRef,   IterableChangeRecord,   IterableChanges,   ViewContainerRef, } from '@angular/core'; import {   _ViewRepeater,   _ViewRepeaterItemChanged,   _ViewRepeaterItemContext,   _ViewRepeaterItemContextFactory,   _ViewRepeaterItemInsertArgs,   _ViewRepeaterItemValueResolver,   _ViewRepeaterOperation, } from './view-repeater';  /**  * A repeater that caches views when they are removed from a  * {@link ViewContainerRef}. When new items are inserted into the container,  * the repeater will reuse one of the cached views instead of creating a new  * embedded view. Recycling cached views reduces the quantity of expensive DOM  * inserts.  *  * @template T The type for the embedded view's $implicit property.  * @template R The type for the item in each IterableDiffer change record.  * @template C The type for the context passed to each embedded view.  */ export class _RecycleViewRepeaterStrategy<T, R, C extends _ViewRepeaterItemContext<T>>   implements _ViewRepeater<T, R, C> {   /**    * The size of the cache used to store unused views.    * Setting the cache size to `0` will disable caching. Defaults to 20 views.    */   viewCacheSize: number = 20;    /**    * View cache that stores embedded view instances that have been previously stamped out,    * but don't are not currently rendered. The view repeater will reuse these views rather than    * creating brand new ones.    *    * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.    */   private _viewCache: EmbeddedViewRef<C>[] = [];    /** Apply changes to the DOM. */   applyChanges(     changes: IterableChanges<R>,     viewContainerRef: ViewContainerRef,     itemContextFactory: _ViewRepeaterItemContextFactory<T, R, C>,     itemValueResolver: _ViewRepeaterItemValueResolver<T, R>,     itemViewChanged?: _ViewRepeaterItemChanged<R, C>,   ) {     // Rearrange the views to put them in the right location.     changes.forEachOperation(       (         record: IterableChangeRecord<R>,         adjustedPreviousIndex: number | null,         currentIndex: number | null,       ) => {         let view: EmbeddedViewRef<C> | undefined;         let operation: _ViewRepeaterOperation;         if (record.previousIndex == null) {           // Item added.           const viewArgsFactory = () =>             itemContextFactory(record, adjustedPreviousIndex, currentIndex);           view = this._insertView(             viewArgsFactory,             currentIndex!,             viewContainerRef,             itemValueResolver(record),           );           operation = view ? _ViewRepeaterOperation.INSERTED : _ViewRepeaterOperation.REPLACED;         } else if (currentIndex == null) {           // Item removed.           this._detachAndCacheView(adjustedPreviousIndex!, viewContainerRef);           operation = _ViewRepeaterOperation.REMOVED;         } else {           // Item moved.           view = this._moveView(             adjustedPreviousIndex!,             currentIndex!,             viewContainerRef,             itemValueResolver(record),           );           operation = _ViewRepeaterOperation.MOVED;         }          if (itemViewChanged) {           itemViewChanged({             context: view?.context,             operation,             record,           });         }       },     );   }    detach() {     for (const view of this._viewCache) {       view.destroy();     }     this._viewCache = [];   }    /**    * Inserts a view for a new item, either from the cache or by creating a new    * one. Returns `undefined` if the item was inserted into a cached view.    */   private _insertView(     viewArgsFactory: () => _ViewRepeaterItemInsertArgs<C>,     currentIndex: number,     viewContainerRef: ViewContainerRef,     value: T,   ): EmbeddedViewRef<C> | undefined {     const cachedView = this._insertViewFromCache(currentIndex!, viewContainerRef);     if (cachedView) {       cachedView.context.$implicit = value;       return undefined;     }      const viewArgs = viewArgsFactory();     return viewContainerRef.createEmbeddedView(       viewArgs.templateRef,       viewArgs.context,       viewArgs.index,     );   }    /** Detaches the view at the given index and inserts into the view cache. */   private _detachAndCacheView(index: number, viewContainerRef: ViewContainerRef) {     const detachedView = viewContainerRef.detach(index) as EmbeddedViewRef<C>;     this._maybeCacheView(detachedView, viewContainerRef);   }    /** Moves view at the previous index to the current index. */   private _moveView(     adjustedPreviousIndex: number,     currentIndex: number,     viewContainerRef: ViewContainerRef,     value: T,   ): EmbeddedViewRef<C> {     const view = viewContainerRef.get(adjustedPreviousIndex!) as EmbeddedViewRef<C>;     viewContainerRef.move(view, currentIndex);     view.context.$implicit = value;     return view;   }    /**    * Cache the given detached view. If the cache is full, the view will be    * destroyed.    */   private _maybeCacheView(view: EmbeddedViewRef<C>, viewContainerRef: ViewContainerRef) {     if (this._viewCache.length < this.viewCacheSize) {       this._viewCache.push(view);     } else {       const index = viewContainerRef.indexOf(view);        // The host component could remove views from the container outside of       // the view repeater. It's unlikely this will occur, but just in case,       // destroy the view on its own, otherwise destroy it through the       // container to ensure that all the references are removed.       if (index === -1) {         view.destroy();       } else {         viewContainerRef.remove(index);       }     }   }    /** Inserts a recycled view from the cache at the given index. */   private _insertViewFromCache(     index: number,     viewContainerRef: ViewContainerRef,   ): EmbeddedViewRef<C> | null {     const cachedView = this._viewCache.pop();     if (cachedView) {       viewContainerRef.insert(cachedView, index);     }     return cachedView || null;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Subject} from 'rxjs';  /**  * Class to be used to power selecting one or more options from a list.  */ export class SelectionModel<T> {   /** Currently-selected values. */   private _selection = new Set<T>();    /** Keeps track of the deselected options that haven't been emitted by the change event. */   private _deselectedToEmit: T[] = [];    /** Keeps track of the selected options that haven't been emitted by the change event. */   private _selectedToEmit: T[] = [];    /** Cache for the array value of the selected items. */   private _selected: T[] | null;    /** Selected values. */   get selected(): T[] {     if (!this._selected) {       this._selected = Array.from(this._selection.values());     }      return this._selected;   }    /** Event emitted when the value has changed. */   readonly changed = new Subject<SelectionChange<T>>();    constructor(     private _multiple = false,     initiallySelectedValues?: T[],     private _emitChanges = true,     public compareWith?: (o1: T, o2: T) => boolean,   ) {     if (initiallySelectedValues && initiallySelectedValues.length) {       if (_multiple) {         initiallySelectedValues.forEach(value => this._markSelected(value));       } else {         this._markSelected(initiallySelectedValues[0]);       }        // Clear the array in order to avoid firing the change event for preselected values.       this._selectedToEmit.length = 0;     }   }    /**    * Selects a value or an array of values.    * @param values The values to select    * @return Whether the selection changed as a result of this call    * @breaking-change 16.0.0 make return type boolean    */   select(...values: T[]): boolean | void {     this._verifyValueAssignment(values);     values.forEach(value => this._markSelected(value));     const changed = this._hasQueuedChanges();     this._emitChangeEvent();     return changed;   }    /**    * Deselects a value or an array of values.    * @param values The values to deselect    * @return Whether the selection changed as a result of this call    * @breaking-change 16.0.0 make return type boolean    */   deselect(...values: T[]): boolean | void {     this._verifyValueAssignment(values);     values.forEach(value => this._unmarkSelected(value));     const changed = this._hasQueuedChanges();     this._emitChangeEvent();     return changed;   }    /**    * Sets the selected values    * @param values The new selected values    * @return Whether the selection changed as a result of this call    * @breaking-change 16.0.0 make return type boolean    */   setSelection(...values: T[]): boolean | void {     this._verifyValueAssignment(values);     const oldValues = this.selected;     const newSelectedSet = new Set(values);     values.forEach(value => this._markSelected(value));     oldValues       .filter(value => !newSelectedSet.has(value))       .forEach(value => this._unmarkSelected(value));     const changed = this._hasQueuedChanges();     this._emitChangeEvent();     return changed;   }    /**    * Toggles a value between selected and deselected.    * @param value The value to toggle    * @return Whether the selection changed as a result of this call    * @breaking-change 16.0.0 make return type boolean    */   toggle(value: T): boolean | void {     return this.isSelected(value) ? this.deselect(value) : this.select(value);   }    /**    * Clears all of the selected values.    * @param flushEvent Whether to flush the changes in an event.    *   If false, the changes to the selection will be flushed along with the next event.    * @return Whether the selection changed as a result of this call    * @breaking-change 16.0.0 make return type boolean    */   clear(flushEvent = true): boolean | void {     this._unmarkAll();     const changed = this._hasQueuedChanges();     if (flushEvent) {       this._emitChangeEvent();     }     return changed;   }    /**    * Determines whether a value is selected.    */   isSelected(value: T): boolean {     return this._selection.has(this._getConcreteValue(value));   }    /**    * Determines whether the model does not have a value.    */   isEmpty(): boolean {     return this._selection.size === 0;   }    /**    * Determines whether the model has a value.    */   hasValue(): boolean {     return !this.isEmpty();   }    /**    * Sorts the selected values based on a predicate function.    */   sort(predicate?: (a: T, b: T) => number): void {     if (this._multiple && this.selected) {       this._selected!.sort(predicate);     }   }    /**    * Gets whether multiple values can be selected.    */   isMultipleSelection() {     return this._multiple;   }    /** Emits a change event and clears the records of selected and deselected values. */   private _emitChangeEvent() {     // Clear the selected values so they can be re-cached.     this._selected = null;      if (this._selectedToEmit.length || this._deselectedToEmit.length) {       this.changed.next({         source: this,         added: this._selectedToEmit,         removed: this._deselectedToEmit,       });        this._deselectedToEmit = [];       this._selectedToEmit = [];     }   }    /** Selects a value. */   private _markSelected(value: T) {     value = this._getConcreteValue(value);     if (!this.isSelected(value)) {       if (!this._multiple) {         this._unmarkAll();       }        if (!this.isSelected(value)) {         this._selection.add(value);       }        if (this._emitChanges) {         this._selectedToEmit.push(value);       }     }   }    /** Deselects a value. */   private _unmarkSelected(value: T) {     value = this._getConcreteValue(value);     if (this.isSelected(value)) {       this._selection.delete(value);        if (this._emitChanges) {         this._deselectedToEmit.push(value);       }     }   }    /** Clears out the selected values. */   private _unmarkAll() {     if (!this.isEmpty()) {       this._selection.forEach(value => this._unmarkSelected(value));     }   }    /**    * Verifies the value assignment and throws an error if the specified value array is    * including multiple values while the selection model is not supporting multiple values.    */   private _verifyValueAssignment(values: T[]) {     if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getMultipleValuesInSingleSelectionError();     }   }    /** Whether there are queued up change to be emitted. */   private _hasQueuedChanges() {     return !!(this._deselectedToEmit.length || this._selectedToEmit.length);   }    /** Returns a value that is comparable to inputValue by applying compareWith function, returns the same inputValue otherwise. */   private _getConcreteValue(inputValue: T): T {     if (!this.compareWith) {       return inputValue;     } else {       for (let selectedValue of this._selection) {         if (this.compareWith!(inputValue, selectedValue)) {           return selectedValue;         }       }       return inputValue;     }   } }  /**  * Event emitted when the value of a MatSelectionModel has changed.  * @docs-private  */ export interface SelectionChange<T> {   /** Model that dispatched the event. */   source: SelectionModel<T>;   /** Options that were added to the model. */   added: T[];   /** Options that were removed from the model. */   removed: T[]; }  /**  * Returns an error that reports that multiple values are passed into a selection model  * with a single value.  * @docs-private  */ export function getMultipleValuesInSingleSelectionError() {   return Error('Cannot pass multiple values into SelectionModel with single-value mode.'); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable, OnDestroy} from '@angular/core';  // Users of the Dispatcher never need to see this type, but TypeScript requires it to be exported. export type UniqueSelectionDispatcherListener = (id: string, name: string) => void;  /**  * Class to coordinate unique selection based on name.  * Intended to be consumed as an Angular service.  * This service is needed because native radio change events are only fired on the item currently  * being selected, and we still need to uncheck the previous selection.  *  * This service does not *store* any IDs and names because they may change at any time, so it is  * less error-prone if they are simply passed through when the events occur.  */ @Injectable({providedIn: 'root'}) export class UniqueSelectionDispatcher implements OnDestroy {   private _listeners: UniqueSelectionDispatcherListener[] = [];    /**    * Notify other items that selection for the given name has been set.    * @param id ID of the item.    * @param name Name of the item.    */   notify(id: string, name: string) {     for (let listener of this._listeners) {       listener(id, name);     }   }    /**    * Listen for future changes to item selection.    * @return Function used to deregister listener    */   listen(listener: UniqueSelectionDispatcherListener): () => void {     this._listeners.push(listener);     return () => {       this._listeners = this._listeners.filter((registered: UniqueSelectionDispatcherListener) => {         return listener !== registered;       });     };   }    ngOnDestroy() {     this._listeners = [];   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {SelectionModel} from './selection-model';  /**  * Interface for a class that can flatten hierarchical structured data and re-expand the flattened  * data back into its original structure. Should be used in conjunction with the cdk-tree.  */ export interface TreeDataNodeFlattener<T> {   /** Transforms a set of hierarchical structured data into a flattened data array. */   flattenNodes(structuredData: any[]): T[];    /**    * Expands a flattened array of data into its hierarchical form using the provided expansion    * model.    */   expandFlattenedNodes(nodes: T[], expansionModel: SelectionModel<T>): T[];    /**    * Put node descendants of node in array.    * If `onlyExpandable` is true, then only process expandable descendants.    */   nodeDescendents(node: T, nodes: T[], onlyExpandable: boolean): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   InjectionToken,   IterableChangeRecord,   IterableChanges,   TemplateRef,   ViewContainerRef, } from '@angular/core';  /**  * The context for an embedded view in the repeater's view container.  *  * @template T The type for the embedded view's $implicit property.  */ export interface _ViewRepeaterItemContext<T> {   $implicit?: T; }  /**  * The arguments needed to construct an embedded view for an item in a view  * container.  *  * @template C The type for the context passed to each embedded view.  */ export interface _ViewRepeaterItemInsertArgs<C> {   templateRef: TemplateRef<C>;   context?: C;   index?: number; }  /**  * A factory that derives the embedded view context for an item in a view  * container.  *  * @template T The type for the embedded view's $implicit property.  * @template R The type for the item in each IterableDiffer change record.  * @template C The type for the context passed to each embedded view.  */ export type _ViewRepeaterItemContextFactory<T, R, C extends _ViewRepeaterItemContext<T>> = (   record: IterableChangeRecord<R>,   adjustedPreviousIndex: number | null,   currentIndex: number | null, ) => _ViewRepeaterItemInsertArgs<C>;  /**  * Extracts the value of an item from an {@link IterableChangeRecord}.  *  * @template T The type for the embedded view's $implicit property.  * @template R The type for the item in each IterableDiffer change record.  */ export type _ViewRepeaterItemValueResolver<T, R> = (record: IterableChangeRecord<R>) => T;  /** Indicates how a view was changed by a {@link _ViewRepeater}. */ export const enum _ViewRepeaterOperation {   /** The content of an existing view was replaced with another item. */   REPLACED,   /** A new view was created with `createEmbeddedView`. */   INSERTED,   /** The position of a view changed, but the content remains the same. */   MOVED,   /** A view was detached from the view container. */   REMOVED, }  /**  * Meta data describing the state of a view after it was updated by a  * {@link _ViewRepeater}.  *  * @template R The type for the item in each IterableDiffer change record.  * @template C The type for the context passed to each embedded view.  */ export interface _ViewRepeaterItemChange<R, C> {   /** The view's context after it was changed. */   context?: C;   /** Indicates how the view was changed. */   operation: _ViewRepeaterOperation;   /** The view's corresponding change record. */   record: IterableChangeRecord<R>; }  /**  * Type for a callback to be executed after a view has changed.  *  * @template R The type for the item in each IterableDiffer change record.  * @template C The type for the context passed to each embedded view.  */ export type _ViewRepeaterItemChanged<R, C> = (change: _ViewRepeaterItemChange<R, C>) => void;  /**  * Describes a strategy for rendering items in a {@link ViewContainerRef}.  *  * @template T The type for the embedded view's $implicit property.  * @template R The type for the item in each IterableDiffer change record.  * @template C The type for the context passed to each embedded view.  */ export interface _ViewRepeater<T, R, C extends _ViewRepeaterItemContext<T>> {   applyChanges(     changes: IterableChanges<R>,     viewContainerRef: ViewContainerRef,     itemContextFactory: _ViewRepeaterItemContextFactory<T, R, C>,     itemValueResolver: _ViewRepeaterItemValueResolver<T, R>,     itemViewChanged?: _ViewRepeaterItemChanged<R, C>,   ): void;    detach(): void; }  /**  * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.  * @docs-private  */ export const _VIEW_REPEATER_STRATEGY = new InjectionToken<   _ViewRepeater<unknown, unknown, _ViewRepeaterItemContext<unknown>> >('_ViewRepeater'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './array-data-source'; export * from './collection-viewer'; export * from './data-source'; export * from './dispose-view-repeater-strategy'; export * from './recycle-view-repeater-strategy'; export * from './selection-model'; export {   UniqueSelectionDispatcher,   UniqueSelectionDispatcherListener, } from './unique-selection-dispatcher'; export * from './tree-adapter'; export * from './view-repeater'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["observableOf"],"mappings":"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"}
-------------------- SECTION 197 --------------------
{"version":3,"file":"table.mjs","sources":["../../../../../../src/cdk/table/can-stick.ts","../../../../../../src/cdk/table/tokens.ts","../../../../../../src/cdk/table/cell.ts","../../../../../../src/cdk/table/coalesced-style-scheduler.ts","../../../../../../src/cdk/table/row.ts","../../../../../../src/cdk/table/sticky-styler.ts","../../../../../../src/cdk/table/table-errors.ts","../../../../../../src/cdk/table/sticky-position-listener.ts","../../../../../../src/cdk/table/table.ts","../../../../../../src/cdk/table/text-column.ts","../../../../../../src/cdk/table/table-module.ts","../../../../../../src/cdk/table/public-api.ts","../../../../../../src/cdk/table/index.ts","../../../../../../src/cdk/table/table_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';  /** @docs-private */ export type Constructor<T> = new (...args: any[]) => T;  /**  * Interface for a mixin to provide a directive with a function that checks if the sticky input has  * been changed since the last time the function was called. Essentially adds a dirty-check to the  * sticky value.  * @docs-private  */ export interface CanStick {   /** Whether sticky positioning should be applied. */   sticky: boolean;    /** Whether the sticky input has changed since it was last checked. */   _hasStickyChanged: boolean;    /** Whether the sticky value has changed since this was last called. */   hasStickyChanged(): boolean;    /** Resets the dirty check for cases where the sticky state has been used without checking. */   resetStickyChanged(): void; }  /** @docs-private */ export type CanStickCtor = Constructor<CanStick>;  /**  * Mixin to provide a directive with a function that checks if the sticky input has been  * changed since the last time the function was called. Essentially adds a dirty-check to the  * sticky value.  * @docs-private  */ export function mixinHasStickyInput<T extends Constructor<{}>>(base: T): CanStickCtor & T {   return class extends base {     /** Whether sticky positioning should be applied. */     get sticky(): boolean {       return this._sticky;     }     set sticky(v: BooleanInput) {       const prevValue = this._sticky;       this._sticky = coerceBooleanProperty(v);       this._hasStickyChanged = prevValue !== this._sticky;     }     _sticky: boolean = false;      /** Whether the sticky input has changed since it was last checked. */     _hasStickyChanged: boolean = false;      /** Whether the sticky value has changed since this was last called. */     hasStickyChanged(): boolean {       const hasStickyChanged = this._hasStickyChanged;       this._hasStickyChanged = false;       return hasStickyChanged;     }      /** Resets the dirty check for cases where the sticky state has been used without checking. */     resetStickyChanged() {       this._hasStickyChanged = false;     }      constructor(...args: any[]) {       super(...args);     }   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core';  /**  * Used to provide a table to some of the sub-components without causing a circular dependency.  * @docs-private  */ export const CDK_TABLE = new InjectionToken<any>('CDK_TABLE');  /** Configurable options for `CdkTextColumn`. */ export interface TextColumnOptions<T> {   /**    * Default function that provides the header text based on the column name if a header    * text is not provided.    */   defaultHeaderTextTransform?: (name: string) => string;    /** Default data accessor to use if one is not provided. */   defaultDataAccessor?: (data: T, name: string) => string; }  /** Injection token that can be used to specify the text column options. */ export const TEXT_COLUMN_OPTIONS = new InjectionToken<TextColumnOptions<any>>(   'text-column-options', ); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {   ContentChild,   Directive,   ElementRef,   Inject,   Input,   Optional,   TemplateRef, } from '@angular/core'; import {CanStick, CanStickCtor, mixinHasStickyInput} from './can-stick'; import {CDK_TABLE} from './tokens';  /** Base interface for a cell definition. Captures a column's cell template definition. */ export interface CellDef {   template: TemplateRef<any>; }  /**  * Cell definition for a CDK table.  * Captures the template of a column's data row cell as well as cell-specific properties.  */ @Directive({selector: '[cdkCellDef]'}) export class CdkCellDef implements CellDef {   constructor(/** @docs-private */ public template: TemplateRef<any>) {} }  /**  * Header cell definition for a CDK table.  * Captures the template of a column's header cell and as well as cell-specific properties.  */ @Directive({selector: '[cdkHeaderCellDef]'}) export class CdkHeaderCellDef implements CellDef {   constructor(/** @docs-private */ public template: TemplateRef<any>) {} }  /**  * Footer cell definition for a CDK table.  * Captures the template of a column's footer cell and as well as cell-specific properties.  */ @Directive({selector: '[cdkFooterCellDef]'}) export class CdkFooterCellDef implements CellDef {   constructor(/** @docs-private */ public template: TemplateRef<any>) {} }  // Boilerplate for applying mixins to CdkColumnDef. /** @docs-private */ class CdkColumnDefBase {} const _CdkColumnDefBase: CanStickCtor & typeof CdkColumnDefBase =   mixinHasStickyInput(CdkColumnDefBase);  /**  * Column definition for the CDK table.  * Defines a set of cells available for a table column.  */ @Directive({   selector: '[cdkColumnDef]',   inputs: ['sticky'],   providers: [{provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef}], }) export class CdkColumnDef extends _CdkColumnDefBase implements CanStick {   /** Unique name for this column. */   @Input('cdkColumnDef')   get name(): string {     return this._name;   }   set name(name: string) {     this._setNameInput(name);   }   protected _name: string;    /**    * Whether this column should be sticky positioned on the end of the row. Should make sure    * that it mimics the `CanStick` mixin such that `_hasStickyChanged` is set to true if the value    * has been changed.    */   @Input('stickyEnd')   get stickyEnd(): boolean {     return this._stickyEnd;   }   set stickyEnd(v: BooleanInput) {     const prevValue = this._stickyEnd;     this._stickyEnd = coerceBooleanProperty(v);     this._hasStickyChanged = prevValue !== this._stickyEnd;   }   _stickyEnd: boolean = false;    /** @docs-private */   @ContentChild(CdkCellDef) cell: CdkCellDef;    /** @docs-private */   @ContentChild(CdkHeaderCellDef) headerCell: CdkHeaderCellDef;    /** @docs-private */   @ContentChild(CdkFooterCellDef) footerCell: CdkFooterCellDef;    /**    * Transformed version of the column name that can be used as part of a CSS classname. Excludes    * all non-alphanumeric characters and the special characters '-' and '_'. Any characters that    * do not match are replaced by the '-' character.    */   cssClassFriendlyName: string;    /**    * Class name for cells in this column.    * @docs-private    */   _columnCssClassName: string[];    constructor(@Inject(CDK_TABLE) @Optional() public _table?: any) {     super();   }    /**    * Overridable method that sets the css classes that will be added to every cell in this    * column.    * In the future, columnCssClassName will change from type string[] to string and this    * will set a single string value.    * @docs-private    */   protected _updateColumnCssClassName() {     this._columnCssClassName = [`cdk-column-${this.cssClassFriendlyName}`];   }    /**    * This has been extracted to a util because of TS 4 and VE.    * View Engine doesn't support property rename inheritance.    * TS 4.0 doesn't allow properties to override accessors or vice-versa.    * @docs-private    */   protected _setNameInput(value: string) {     // If the directive is set without a name (updated programmatically), then this setter will     // trigger with an empty string and should not overwrite the programmatically set value.     if (value) {       this._name = value;       this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/gi, '-');       this._updateColumnCssClassName();     }   } }  /** Base class for the cells. Adds a CSS classname that identifies the column it renders in. */ export class BaseCdkCell {   constructor(columnDef: CdkColumnDef, elementRef: ElementRef) {     elementRef.nativeElement.classList.add(...columnDef._columnCssClassName);   } }  /** Header cell template container that adds the right classes and role. */ @Directive({   selector: 'cdk-header-cell, th[cdk-header-cell]',   host: {     'class': 'cdk-header-cell',     'role': 'columnheader',   }, }) export class CdkHeaderCell extends BaseCdkCell {   constructor(columnDef: CdkColumnDef, elementRef: ElementRef) {     super(columnDef, elementRef);   } }  /** Footer cell template container that adds the right classes and role. */ @Directive({   selector: 'cdk-footer-cell, td[cdk-footer-cell]',   host: {     'class': 'cdk-footer-cell',   }, }) export class CdkFooterCell extends BaseCdkCell {   constructor(columnDef: CdkColumnDef, elementRef: ElementRef) {     super(columnDef, elementRef);     if (columnDef._table?._elementRef.nativeElement.nodeType === 1) {       const tableRole = columnDef._table._elementRef.nativeElement.getAttribute('role');       const role = tableRole === 'grid' || tableRole === 'treegrid' ? 'gridcell' : 'cell';       elementRef.nativeElement.setAttribute('role', role);     }   } }  /** Cell template container that adds the right classes and role. */ @Directive({   selector: 'cdk-cell, td[cdk-cell]',   host: {     'class': 'cdk-cell',   }, }) export class CdkCell extends BaseCdkCell {   constructor(columnDef: CdkColumnDef, elementRef: ElementRef) {     super(columnDef, elementRef);     if (columnDef._table?._elementRef.nativeElement.nodeType === 1) {       const tableRole = columnDef._table._elementRef.nativeElement.getAttribute('role');       const role = tableRole === 'grid' || tableRole === 'treegrid' ? 'gridcell' : 'cell';       elementRef.nativeElement.setAttribute('role', role);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable, NgZone, OnDestroy, InjectionToken} from '@angular/core'; import {from, Subject} from 'rxjs'; import {take, takeUntil} from 'rxjs/operators';  /**  * @docs-private  */ export class _Schedule {   tasks: (() => unknown)[] = [];   endTasks: (() => unknown)[] = []; }  /** Injection token used to provide a coalesced style scheduler. */ export const _COALESCED_STYLE_SCHEDULER = new InjectionToken<_CoalescedStyleScheduler>(   '_COALESCED_STYLE_SCHEDULER', );  /**  * Allows grouping up CSSDom mutations after the current execution context.  * This can significantly improve performance when separate consecutive functions are  * reading from the CSSDom and then mutating it.  *  * @docs-private  */ @Injectable() export class _CoalescedStyleScheduler implements OnDestroy {   private _currentSchedule: _Schedule | null = null;   private readonly _destroyed = new Subject<void>();    constructor(private readonly _ngZone: NgZone) {}    /**    * Schedules the specified task to run at the end of the current VM turn.    */   schedule(task: () => unknown): void {     this._createScheduleIfNeeded();      this._currentSchedule!.tasks.push(task);   }    /**    * Schedules the specified task to run after other scheduled tasks at the end of the current    * VM turn.    */   scheduleEnd(task: () => unknown): void {     this._createScheduleIfNeeded();      this._currentSchedule!.endTasks.push(task);   }    /** Prevent any further tasks from running. */   ngOnDestroy() {     this._destroyed.next();     this._destroyed.complete();   }    private _createScheduleIfNeeded() {     if (this._currentSchedule) {       return;     }      this._currentSchedule = new _Schedule();      this._getScheduleObservable()       .pipe(takeUntil(this._destroyed))       .subscribe(() => {         while (this._currentSchedule!.tasks.length || this._currentSchedule!.endTasks.length) {           const schedule = this._currentSchedule!;            // Capture new tasks scheduled by the current set of tasks.           this._currentSchedule = new _Schedule();            for (const task of schedule.tasks) {             task();           }            for (const task of schedule.endTasks) {             task();           }         }          this._currentSchedule = null;       });   }    private _getScheduleObservable() {     // Use onStable when in the context of an ongoing change detection cycle so that we     // do not accidentally trigger additional cycles.     return this._ngZone.isStable       ? from(Promise.resolve(undefined))       : this._ngZone.onStable.pipe(take(1));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   ChangeDetectionStrategy,   Component,   Directive,   IterableChanges,   IterableDiffer,   IterableDiffers,   OnChanges,   OnDestroy,   SimpleChanges,   TemplateRef,   ViewContainerRef,   ViewEncapsulation,   Inject,   Optional, } from '@angular/core'; import {CanStick, CanStickCtor, mixinHasStickyInput} from './can-stick'; import {CdkCellDef, CdkColumnDef} from './cell'; import {CDK_TABLE} from './tokens';  /**  * The row template that can be used by the mat-table. Should not be used outside of the  * material library.  */ export const CDK_ROW_TEMPLATE = `<ng-container cdkCellOutlet></ng-container>`;  /**  * Base class for the CdkHeaderRowDef and CdkRowDef that handles checking their columns inputs  * for changes and notifying the table.  */ @Directive() export abstract class BaseRowDef implements OnChanges {   /** The columns to be displayed on this row. */   columns: Iterable<string>;    /** Differ used to check if any changes were made to the columns. */   protected _columnsDiffer: IterableDiffer<any>;    constructor(     /** @docs-private */ public template: TemplateRef<any>,     protected _differs: IterableDiffers,   ) {}    ngOnChanges(changes: SimpleChanges): void {     // Create a new columns differ if one does not yet exist. Initialize it based on initial value     // of the columns property or an empty array if none is provided.     if (!this._columnsDiffer) {       const columns = (changes['columns'] && changes['columns'].currentValue) || [];       this._columnsDiffer = this._differs.find(columns).create();       this._columnsDiffer.diff(columns);     }   }    /**    * Returns the difference between the current columns and the columns from the last diff, or null    * if there is no difference.    */   getColumnsDiff(): IterableChanges<any> | null {     return this._columnsDiffer.diff(this.columns);   }    /** Gets this row def's relevant cell template from the provided column def. */   extractCellTemplate(column: CdkColumnDef): TemplateRef<any> {     if (this instanceof CdkHeaderRowDef) {       return column.headerCell.template;     }     if (this instanceof CdkFooterRowDef) {       return column.footerCell.template;     } else {       return column.cell.template;     }   } }  // Boilerplate for applying mixins to CdkHeaderRowDef. /** @docs-private */ class CdkHeaderRowDefBase extends BaseRowDef {} const _CdkHeaderRowDefBase: CanStickCtor & typeof CdkHeaderRowDefBase =   mixinHasStickyInput(CdkHeaderRowDefBase);  /**  * Header row definition for the CDK table.  * Captures the header row's template and other header properties such as the columns to display.  */ @Directive({   selector: '[cdkHeaderRowDef]',   inputs: ['columns: cdkHeaderRowDef', 'sticky: cdkHeaderRowDefSticky'], }) export class CdkHeaderRowDef extends _CdkHeaderRowDefBase implements CanStick, OnChanges {   constructor(     template: TemplateRef<any>,     _differs: IterableDiffers,     @Inject(CDK_TABLE) @Optional() public _table?: any,   ) {     super(template, _differs);   }    // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.   // Explicitly define it so that the method is called as part of the Angular lifecycle.   override ngOnChanges(changes: SimpleChanges): void {     super.ngOnChanges(changes);   } }  // Boilerplate for applying mixins to CdkFooterRowDef. /** @docs-private */ class CdkFooterRowDefBase extends BaseRowDef {} const _CdkFooterRowDefBase: CanStickCtor & typeof CdkFooterRowDefBase =   mixinHasStickyInput(CdkFooterRowDefBase);  /**  * Footer row definition for the CDK table.  * Captures the footer row's template and other footer properties such as the columns to display.  */ @Directive({   selector: '[cdkFooterRowDef]',   inputs: ['columns: cdkFooterRowDef', 'sticky: cdkFooterRowDefSticky'], }) export class CdkFooterRowDef extends _CdkFooterRowDefBase implements CanStick, OnChanges {   constructor(     template: TemplateRef<any>,     _differs: IterableDiffers,     @Inject(CDK_TABLE) @Optional() public _table?: any,   ) {     super(template, _differs);   }    // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.   // Explicitly define it so that the method is called as part of the Angular lifecycle.   override ngOnChanges(changes: SimpleChanges): void {     super.ngOnChanges(changes);   } }  /**  * Data row definition for the CDK table.  * Captures the header row's template and other row properties such as the columns to display and  * a when predicate that describes when this row should be used.  */ @Directive({   selector: '[cdkRowDef]',   inputs: ['columns: cdkRowDefColumns', 'when: cdkRowDefWhen'], }) export class CdkRowDef<T> extends BaseRowDef {   /**    * Function that should return true if this row template should be used for the provided index    * and row data. If left undefined, this row will be considered the default row template to use    * when no other when functions return true for the data.    * For every row, there must be at least one when function that passes or an undefined to default.    */   when: (index: number, rowData: T) => boolean;    // TODO(andrewseguin): Add an input for providing a switch function to determine   //   if this template should be used.   constructor(     template: TemplateRef<any>,     _differs: IterableDiffers,     @Inject(CDK_TABLE) @Optional() public _table?: any,   ) {     super(template, _differs);   } }  /** Context provided to the row cells when `multiTemplateDataRows` is false */ export interface CdkCellOutletRowContext<T> {   /** Data for the row that this cell is located within. */   $implicit?: T;    /** Index of the data object in the provided data array. */   index?: number;    /** Length of the number of total rows. */   count?: number;    /** True if this cell is contained in the first row. */   first?: boolean;    /** True if this cell is contained in the last row. */   last?: boolean;    /** True if this cell is contained in a row with an even-numbered index. */   even?: boolean;    /** True if this cell is contained in a row with an odd-numbered index. */   odd?: boolean; }  /**  * Context provided to the row cells when `multiTemplateDataRows` is true. This context is the same  * as CdkCellOutletRowContext except that the single `index` value is replaced by `dataIndex` and  * `renderIndex`.  */ export interface CdkCellOutletMultiRowContext<T> {   /** Data for the row that this cell is located within. */   $implicit?: T;    /** Index of the data object in the provided data array. */   dataIndex?: number;    /** Index location of the rendered row that this cell is located within. */   renderIndex?: number;    /** Length of the number of total rows. */   count?: number;    /** True if this cell is contained in the first row. */   first?: boolean;    /** True if this cell is contained in the last row. */   last?: boolean;    /** True if this cell is contained in a row with an even-numbered index. */   even?: boolean;    /** True if this cell is contained in a row with an odd-numbered index. */   odd?: boolean; }  /**  * Outlet for rendering cells inside of a row or header row.  * @docs-private  */ @Directive({selector: '[cdkCellOutlet]'}) export class CdkCellOutlet implements OnDestroy {   /** The ordered list of cells to render within this outlet's view container */   cells: CdkCellDef[];    /** The data context to be provided to each cell */   context: any;    /**    * Static property containing the latest constructed instance of this class.    * Used by the CDK table when each CdkHeaderRow and CdkRow component is created using    * createEmbeddedView. After one of these components are created, this property will provide    * a handle to provide that component's cells and context. After init, the CdkCellOutlet will    * construct the cells with the provided context.    */   static mostRecentCellOutlet: CdkCellOutlet | null = null;    constructor(public _viewContainer: ViewContainerRef) {     CdkCellOutlet.mostRecentCellOutlet = this;   }    ngOnDestroy() {     // If this was the last outlet being rendered in the view, remove the reference     // from the static property after it has been destroyed to avoid leaking memory.     if (CdkCellOutlet.mostRecentCellOutlet === this) {       CdkCellOutlet.mostRecentCellOutlet = null;     }   } }  /** Header template container that contains the cell outlet. Adds the right class and role. */ @Component({   selector: 'cdk-header-row, tr[cdk-header-row]',   template: CDK_ROW_TEMPLATE,   host: {     'class': 'cdk-header-row',     'role': 'row',   },   // See note on CdkTable for explanation on why this uses the default change detection strategy.   // tslint:disable-next-line:validate-decorators   changeDetection: ChangeDetectionStrategy.Default,   encapsulation: ViewEncapsulation.None, }) export class CdkHeaderRow {}  /** Footer template container that contains the cell outlet. Adds the right class and role. */ @Component({   selector: 'cdk-footer-row, tr[cdk-footer-row]',   template: CDK_ROW_TEMPLATE,   host: {     'class': 'cdk-footer-row',     'role': 'row',   },   // See note on CdkTable for explanation on why this uses the default change detection strategy.   // tslint:disable-next-line:validate-decorators   changeDetection: ChangeDetectionStrategy.Default,   encapsulation: ViewEncapsulation.None, }) export class CdkFooterRow {}  /** Data row template container that contains the cell outlet. Adds the right class and role. */ @Component({   selector: 'cdk-row, tr[cdk-row]',   template: CDK_ROW_TEMPLATE,   host: {     'class': 'cdk-row',     'role': 'row',   },   // See note on CdkTable for explanation on why this uses the default change detection strategy.   // tslint:disable-next-line:validate-decorators   changeDetection: ChangeDetectionStrategy.Default,   encapsulation: ViewEncapsulation.None, }) export class CdkRow {}  /** Row that can be used to display a message when no data is shown in the table. */ @Directive({   selector: 'ng-template[cdkNoDataRow]', }) export class CdkNoDataRow {   _contentClassName = 'cdk-no-data-row';   constructor(public templateRef: TemplateRef<any>) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Directions that can be used when setting sticky positioning.  * @docs-private  */ import {Direction} from '@angular/cdk/bidi'; import {_CoalescedStyleScheduler} from './coalesced-style-scheduler'; import {StickyPositioningListener} from './sticky-position-listener';  export type StickyDirection = 'top' | 'bottom' | 'left' | 'right';  /**  * List of all possible directions that can be used for sticky positioning.  * @docs-private  */ export const STICKY_DIRECTIONS: StickyDirection[] = ['top', 'bottom', 'left', 'right'];  /**  * Applies and removes sticky positioning styles to the `CdkTable` rows and columns cells.  * @docs-private  */ export class StickyStyler {   private _cachedCellWidths: number[] = [];   private readonly _borderCellCss: Readonly<{[d in StickyDirection]: string}>;    /**    * @param _isNativeHtmlTable Whether the sticky logic should be based on a table    *     that uses the native `<table>` element.    * @param _stickCellCss The CSS class that will be applied to every row/cell that has    *     sticky positioning applied.    * @param direction The directionality context of the table (ltr/rtl); affects column positioning    *     by reversing left/right positions.    * @param _isBrowser Whether the table is currently being rendered on the server or the client.    * @param _needsPositionStickyOnElement Whether we need to specify position: sticky on cells    *     using inline styles. If false, it is assumed that position: sticky is included in    *     the component stylesheet for _stickCellCss.    * @param _positionListener A listener that is notified of changes to sticky rows/columns    *     and their dimensions.    */   constructor(     private _isNativeHtmlTable: boolean,     private _stickCellCss: string,     public direction: Direction,     private _coalescedStyleScheduler: _CoalescedStyleScheduler,     private _isBrowser = true,     private readonly _needsPositionStickyOnElement = true,     private readonly _positionListener?: StickyPositioningListener,   ) {     this._borderCellCss = {       'top': `${_stickCellCss}-border-elem-top`,       'bottom': `${_stickCellCss}-border-elem-bottom`,       'left': `${_stickCellCss}-border-elem-left`,       'right': `${_stickCellCss}-border-elem-right`,     };   }    /**    * Clears the sticky positioning styles from the row and its cells by resetting the `position`    * style, setting the zIndex to 0, and unsetting each provided sticky direction.    * @param rows The list of rows that should be cleared from sticking in the provided directions    * @param stickyDirections The directions that should no longer be set as sticky on the rows.    */   clearStickyPositioning(rows: HTMLElement[], stickyDirections: StickyDirection[]) {     const elementsToClear: HTMLElement[] = [];     for (const row of rows) {       // If the row isn't an element (e.g. if it's an `ng-container`),       // it won't have inline styles or `children` so we skip it.       if (row.nodeType !== row.ELEMENT_NODE) {         continue;       }        elementsToClear.push(row);       for (let i = 0; i < row.children.length; i++) {         elementsToClear.push(row.children[i] as HTMLElement);       }     }      // Coalesce with sticky row/column updates (and potentially other changes like column resize).     this._coalescedStyleScheduler.schedule(() => {       for (const element of elementsToClear) {         this._removeStickyStyle(element, stickyDirections);       }     });   }    /**    * Applies sticky left and right positions to the cells of each row according to the sticky    * states of the rendered column definitions.    * @param rows The rows that should have its set of cells stuck according to the sticky states.    * @param stickyStartStates A list of boolean states where each state represents whether the cell    *     in this index position should be stuck to the start of the row.    * @param stickyEndStates A list of boolean states where each state represents whether the cell    *     in this index position should be stuck to the end of the row.    * @param recalculateCellWidths Whether the sticky styler should recalculate the width of each    *     column cell. If `false` cached widths will be used instead.    */   updateStickyColumns(     rows: HTMLElement[],     stickyStartStates: boolean[],     stickyEndStates: boolean[],     recalculateCellWidths = true,   ) {     if (       !rows.length ||       !this._isBrowser ||       !(stickyStartStates.some(state => state) || stickyEndStates.some(state => state))     ) {       if (this._positionListener) {         this._positionListener.stickyColumnsUpdated({sizes: []});         this._positionListener.stickyEndColumnsUpdated({sizes: []});       }        return;     }      const firstRow = rows[0];     const numCells = firstRow.children.length;     const cellWidths: number[] = this._getCellWidths(firstRow, recalculateCellWidths);      const startPositions = this._getStickyStartColumnPositions(cellWidths, stickyStartStates);     const endPositions = this._getStickyEndColumnPositions(cellWidths, stickyEndStates);      const lastStickyStart = stickyStartStates.lastIndexOf(true);     const firstStickyEnd = stickyEndStates.indexOf(true);      // Coalesce with sticky row updates (and potentially other changes like column resize).     this._coalescedStyleScheduler.schedule(() => {       const isRtl = this.direction === 'rtl';       const start = isRtl ? 'right' : 'left';       const end = isRtl ? 'left' : 'right';        for (const row of rows) {         for (let i = 0; i < numCells; i++) {           const cell = row.children[i] as HTMLElement;           if (stickyStartStates[i]) {             this._addStickyStyle(cell, start, startPositions[i], i === lastStickyStart);           }            if (stickyEndStates[i]) {             this._addStickyStyle(cell, end, endPositions[i], i === firstStickyEnd);           }         }       }        if (this._positionListener) {         this._positionListener.stickyColumnsUpdated({           sizes:             lastStickyStart === -1               ? []               : cellWidths                   .slice(0, lastStickyStart + 1)                   .map((width, index) => (stickyStartStates[index] ? width : null)),         });         this._positionListener.stickyEndColumnsUpdated({           sizes:             firstStickyEnd === -1               ? []               : cellWidths                   .slice(firstStickyEnd)                   .map((width, index) => (stickyEndStates[index + firstStickyEnd] ? width : null))                   .reverse(),         });       }     });   }    /**    * Applies sticky positioning to the row's cells if using the native table layout, and to the    * row itself otherwise.    * @param rowsToStick The list of rows that should be stuck according to their corresponding    *     sticky state and to the provided top or bottom position.    * @param stickyStates A list of boolean states where each state represents whether the row    *     should be stuck in the particular top or bottom position.    * @param position The position direction in which the row should be stuck if that row should be    *     sticky.    *    */   stickRows(rowsToStick: HTMLElement[], stickyStates: boolean[], position: 'top' | 'bottom') {     // Since we can't measure the rows on the server, we can't stick the rows properly.     if (!this._isBrowser) {       return;     }      // If positioning the rows to the bottom, reverse their order when evaluating the sticky     // position such that the last row stuck will be \"bottom: 0px\" and so on. Note that the     // sticky states need to be reversed as well.     const rows = position === 'bottom' ? rowsToStick.slice().reverse() : rowsToStick;     const states = position === 'bottom' ? stickyStates.slice().reverse() : stickyStates;      // Measure row heights all at once before adding sticky styles to reduce layout thrashing.     const stickyOffsets: number[] = [];     const stickyCellHeights: (number | undefined)[] = [];     const elementsToStick: HTMLElement[][] = [];     for (let rowIndex = 0, stickyOffset = 0; rowIndex < rows.length; rowIndex++) {       if (!states[rowIndex]) {         continue;       }        stickyOffsets[rowIndex] = stickyOffset;       const row = rows[rowIndex];       elementsToStick[rowIndex] = this._isNativeHtmlTable         ? (Array.from(row.children) as HTMLElement[])         : [row];        const height = row.getBoundingClientRect().height;       stickyOffset += height;       stickyCellHeights[rowIndex] = height;     }      const borderedRowIndex = states.lastIndexOf(true);      // Coalesce with other sticky row updates (top/bottom), sticky columns updates     // (and potentially other changes like column resize).     this._coalescedStyleScheduler.schedule(() => {       for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {         if (!states[rowIndex]) {           continue;         }          const offset = stickyOffsets[rowIndex];         const isBorderedRowIndex = rowIndex === borderedRowIndex;         for (const element of elementsToStick[rowIndex]) {           this._addStickyStyle(element, position, offset, isBorderedRowIndex);         }       }        if (position === 'top') {         this._positionListener?.stickyHeaderRowsUpdated({           sizes: stickyCellHeights,           offsets: stickyOffsets,           elements: elementsToStick,         });       } else {         this._positionListener?.stickyFooterRowsUpdated({           sizes: stickyCellHeights,           offsets: stickyOffsets,           elements: elementsToStick,         });       }     });   }    /**    * When using the native table in Safari, sticky footer cells do not stick. The only way to stick    * footer rows is to apply sticky styling to the tfoot container. This should only be done if    * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from    * the tfoot element.    */   updateStickyFooterContainer(tableElement: Element, stickyStates: boolean[]) {     if (!this._isNativeHtmlTable) {       return;     }      const tfoot = tableElement.querySelector('tfoot')!;      // Coalesce with other sticky updates (and potentially other changes like column resize).     this._coalescedStyleScheduler.schedule(() => {       if (stickyStates.some(state => !state)) {         this._removeStickyStyle(tfoot, ['bottom']);       } else {         this._addStickyStyle(tfoot, 'bottom', 0, false);       }     });   }    /**    * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating    * the zIndex, removing each of the provided sticky directions, and removing the    * sticky position if there are no more directions.    */   _removeStickyStyle(element: HTMLElement, stickyDirections: StickyDirection[]) {     for (const dir of stickyDirections) {       element.style[dir] = '';       element.classList.remove(this._borderCellCss[dir]);     }      // If the element no longer has any more sticky directions, remove sticky positioning and     // the sticky CSS class.     // Short-circuit checking element.style[dir] for stickyDirections as they     // were already removed above.     const hasDirection = STICKY_DIRECTIONS.some(       dir => stickyDirections.indexOf(dir) === -1 && element.style[dir],     );     if (hasDirection) {       element.style.zIndex = this._getCalculatedZIndex(element);     } else {       // When not hasDirection, _getCalculatedZIndex will always return ''.       element.style.zIndex = '';       if (this._needsPositionStickyOnElement) {         element.style.position = '';       }       element.classList.remove(this._stickCellCss);     }   }    /**    * Adds the sticky styling to the element by adding the sticky style class, changing position    * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky    * direction and value.    */   _addStickyStyle(     element: HTMLElement,     dir: StickyDirection,     dirValue: number,     isBorderElement: boolean,   ) {     element.classList.add(this._stickCellCss);     if (isBorderElement) {       element.classList.add(this._borderCellCss[dir]);     }     element.style[dir] = `${dirValue}px`;     element.style.zIndex = this._getCalculatedZIndex(element);     if (this._needsPositionStickyOnElement) {       element.style.cssText += 'position: -webkit-sticky; position: sticky; ';     }   }    /**    * Calculate what the z-index should be for the element, depending on what directions (top,    * bottom, left, right) have been set. It should be true that elements with a top direction    * should have the highest index since these are elements like a table header. If any of those    * elements are also sticky in another direction, then they should appear above other elements    * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements    * (e.g. footer rows) should then be next in the ordering such that they are below the header    * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns)    * should minimally increment so that they are above non-sticky elements but below top and bottom    * elements.    */   _getCalculatedZIndex(element: HTMLElement): string {     const zIndexIncrements = {       top: 100,       bottom: 10,       left: 1,       right: 1,     };      let zIndex = 0;     // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,     // loses the array generic type in the `for of`. But we *also* have to use `Array` because     // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`     for (const dir of STICKY_DIRECTIONS as Iterable<StickyDirection> & StickyDirection[]) {       if (element.style[dir]) {         zIndex += zIndexIncrements[dir];       }     }      return zIndex ? `${zIndex}` : '';   }    /** Gets the widths for each cell in the provided row. */   _getCellWidths(row: HTMLElement, recalculateCellWidths = true): number[] {     if (!recalculateCellWidths && this._cachedCellWidths.length) {       return this._cachedCellWidths;     }      const cellWidths: number[] = [];     const firstRowCells = row.children;     for (let i = 0; i < firstRowCells.length; i++) {       let cell: HTMLElement = firstRowCells[i] as HTMLElement;       cellWidths.push(cell.getBoundingClientRect().width);     }      this._cachedCellWidths = cellWidths;     return cellWidths;   }    /**    * Determines the left and right positions of each sticky column cell, which will be the    * accumulation of all sticky column cell widths to the left and right, respectively.    * Non-sticky cells do not need to have a value set since their positions will not be applied.    */   _getStickyStartColumnPositions(widths: number[], stickyStates: boolean[]): number[] {     const positions: number[] = [];     let nextPosition = 0;      for (let i = 0; i < widths.length; i++) {       if (stickyStates[i]) {         positions[i] = nextPosition;         nextPosition += widths[i];       }     }      return positions;   }    /**    * Determines the left and right positions of each sticky column cell, which will be the    * accumulation of all sticky column cell widths to the left and right, respectively.    * Non-sticky cells do not need to have a value set since their positions will not be applied.    */   _getStickyEndColumnPositions(widths: number[], stickyStates: boolean[]): number[] {     const positions: number[] = [];     let nextPosition = 0;      for (let i = widths.length; i > 0; i--) {       if (stickyStates[i]) {         positions[i] = nextPosition;         nextPosition += widths[i];       }     }      return positions;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Returns an error to be thrown when attempting to find an nonexistent column.  * @param id Id whose lookup failed.  * @docs-private  */ export function getTableUnknownColumnError(id: string) {   return Error(`Could not find column with id \"${id}\".`); }  /**  * Returns an error to be thrown when two column definitions have the same name.  * @docs-private  */ export function getTableDuplicateColumnNameError(name: string) {   return Error(`Duplicate column definition name provided: \"${name}\".`); }  /**  * Returns an error to be thrown when there are multiple rows that are missing a when function.  * @docs-private  */ export function getTableMultipleDefaultRowDefsError() {   return Error(`There can only be one default row without a when predicate function.`); }  /**  * Returns an error to be thrown when there are no matching row defs for a particular set of data.  * @docs-private  */ export function getTableMissingMatchingRowDefError(data: any) {   return Error(     `Could not find a matching row definition for the` +       `provided row data: ${JSON.stringify(data)}`,   ); }  /**  * Returns an error to be thrown when there is no row definitions present in the content.  * @docs-private  */ export function getTableMissingRowDefsError() {   return Error(     'Missing definitions for header, footer, and row; ' +       'cannot determine which columns should be rendered.',   ); }  /**  * Returns an error to be thrown when the data source does not match the compatible types.  * @docs-private  */ export function getTableUnknownDataSourceError() {   return Error(`Provided data source did not match an array, Observable, or DataSource`); }  /**  * Returns an error to be thrown when the text column cannot find a parent table to inject.  * @docs-private  */ export function getTableTextColumnMissingParentTableError() {   return Error(`Text column could not find a parent table for registration.`); }  /**  * Returns an error to be thrown when a table text column doesn't have a name.  * @docs-private  */ export function getTableTextColumnMissingNameError() {   return Error(`Table text column must have a name.`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core';  /** The injection token used to specify the StickyPositioningListener. */ export const STICKY_POSITIONING_LISTENER = new InjectionToken<StickyPositioningListener>('CDK_SPL');  export type StickySize = number | null | undefined; export type StickyOffset = number | null | undefined;  export interface StickyUpdate {   elements?: readonly (HTMLElement[] | undefined)[];   offsets?: StickyOffset[];   sizes: StickySize[]; }  /**  * If provided, CdkTable will call the methods below when it updates the size/  * position/etc of its sticky rows and columns.  */ export interface StickyPositioningListener {   /** Called when CdkTable updates its sticky start columns. */   stickyColumnsUpdated(update: StickyUpdate): void;    /** Called when CdkTable updates its sticky end columns. */   stickyEndColumnsUpdated(update: StickyUpdate): void;    /** Called when CdkTable updates its sticky header rows. */   stickyHeaderRowsUpdated(update: StickyUpdate): void;    /** Called when CdkTable updates its sticky footer rows. */   stickyFooterRowsUpdated(update: StickyUpdate): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Direction, Directionality} from '@angular/cdk/bidi'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {   CollectionViewer,   DataSource,   _DisposeViewRepeaterStrategy,   _RecycleViewRepeaterStrategy,   isDataSource,   _VIEW_REPEATER_STRATEGY,   _ViewRepeater,   _ViewRepeaterItemChange,   _ViewRepeaterItemInsertArgs,   _ViewRepeaterOperation, } from '@angular/cdk/collections'; import {Platform} from '@angular/cdk/platform'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {DOCUMENT} from '@angular/common'; import {   AfterContentChecked,   Attribute,   ChangeDetectionStrategy,   ChangeDetectorRef,   Component,   ContentChild,   ContentChildren,   Directive,   ElementRef,   EmbeddedViewRef,   EventEmitter,   Inject,   Input,   IterableChangeRecord,   IterableDiffer,   IterableDiffers,   NgZone,   OnDestroy,   OnInit,   Optional,   Output,   QueryList,   SkipSelf,   TemplateRef,   TrackByFunction,   ViewChild,   ViewContainerRef,   ViewEncapsulation, } from '@angular/core'; import {   BehaviorSubject,   isObservable,   Observable,   of as observableOf,   Subject,   Subscription, } from 'rxjs'; import {take, takeUntil} from 'rxjs/operators'; import {CdkColumnDef} from './cell'; import {_CoalescedStyleScheduler, _COALESCED_STYLE_SCHEDULER} from './coalesced-style-scheduler'; import {   BaseRowDef,   CdkCellOutlet,   CdkCellOutletMultiRowContext,   CdkCellOutletRowContext,   CdkFooterRowDef,   CdkHeaderRowDef,   CdkNoDataRow,   CdkRowDef, } from './row'; import {StickyStyler} from './sticky-styler'; import {   getTableDuplicateColumnNameError,   getTableMissingMatchingRowDefError,   getTableMissingRowDefsError,   getTableMultipleDefaultRowDefsError,   getTableUnknownColumnError,   getTableUnknownDataSourceError, } from './table-errors'; import {STICKY_POSITIONING_LISTENER, StickyPositioningListener} from './sticky-position-listener'; import {CDK_TABLE} from './tokens';  /**  * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with  * tables that animate rows.  */ @Directive({   selector: 'cdk-table[recycleRows], table[cdk-table][recycleRows]',   providers: [{provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy}], }) export class CdkRecycleRows {}  /** Interface used to provide an outlet for rows to be inserted into. */ export interface RowOutlet {   viewContainer: ViewContainerRef; }  /** Possible types that can be set as the data source for a `CdkTable`. */ export type CdkTableDataSourceInput<T> = readonly T[] | DataSource<T> | Observable<readonly T[]>;  /**  * Provides a handle for the table to grab the view container's ng-container to insert data rows.  * @docs-private  */ @Directive({selector: '[rowOutlet]'}) export class DataRowOutlet implements RowOutlet {   constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {} }  /**  * Provides a handle for the table to grab the view container's ng-container to insert the header.  * @docs-private  */ @Directive({selector: '[headerRowOutlet]'}) export class HeaderRowOutlet implements RowOutlet {   constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {} }  /**  * Provides a handle for the table to grab the view container's ng-container to insert the footer.  * @docs-private  */ @Directive({selector: '[footerRowOutlet]'}) export class FooterRowOutlet implements RowOutlet {   constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {} }  /**  * Provides a handle for the table to grab the view  * container's ng-container to insert the no data row.  * @docs-private  */ @Directive({selector: '[noDataRowOutlet]'}) export class NoDataRowOutlet implements RowOutlet {   constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {} }  /**  * The table template that can be used by the mat-table. Should not be used outside of the  * material library.  * @docs-private  */ export const CDK_TABLE_TEMPLATE =   // Note that according to MDN, the `caption` element has to be projected as the **first**   // element in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption   `   <ng-content select=\"caption\"></ng-content>   <ng-content select=\"colgroup, col\"></ng-content>   <ng-container headerRowOutlet></ng-container>   <ng-container rowOutlet></ng-container>   <ng-container noDataRowOutlet></ng-container>   <ng-container footerRowOutlet></ng-container> `;  /**  * Interface used to conveniently type the possible context interfaces for the render row.  * @docs-private  */ export interface RowContext<T>   extends CdkCellOutletMultiRowContext<T>,     CdkCellOutletRowContext<T> {}  /**  * Class used to conveniently type the embedded view ref for rows with a context.  * @docs-private  */ abstract class RowViewRef<T> extends EmbeddedViewRef<RowContext<T>> {}  /**  * Set of properties that represents the identity of a single rendered row.  *  * When the table needs to determine the list of rows to render, it will do so by iterating through  * each data object and evaluating its list of row templates to display (when multiTemplateDataRows  * is false, there is only one template per data object). For each pair of data object and row  * template, a `RenderRow` is added to the list of rows to render. If the data object and row  * template pair has already been rendered, the previously used `RenderRow` is added; else a new  * `RenderRow` is * created. Once the list is complete and all data objects have been iterated  * through, a diff is performed to determine the changes that need to be made to the rendered rows.  *  * @docs-private  */ export interface RenderRow<T> {   data: T;   dataIndex: number;   rowDef: CdkRowDef<T>; }  /**  * A data table that can render a header row, data rows, and a footer row.  * Uses the dataSource input to determine the data to be rendered. The data can be provided either  * as a data array, an Observable stream that emits the data array to render, or a DataSource with a  * connect function that will return an Observable stream that emits the data array to render.  */ @Component({   selector: 'cdk-table, table[cdk-table]',   exportAs: 'cdkTable',   template: CDK_TABLE_TEMPLATE,   styleUrls: ['table.css'],   host: {     'class': 'cdk-table',     '[class.cdk-table-fixed-layout]': 'fixedLayout',   },   encapsulation: ViewEncapsulation.None,   // The \"OnPush\" status for the `MatTable` component is effectively a noop, so we are removing it.   // The view for `MatTable` consists entirely of templates declared in other views. As they are   // declared elsewhere, they are checked when their declaration points are checked.   // tslint:disable-next-line:validate-decorators   changeDetection: ChangeDetectionStrategy.Default,   providers: [     {provide: CDK_TABLE, useExisting: CdkTable},     {provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy},     {provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler},     // Prevent nested tables from seeing this table's StickyPositioningListener.     {provide: STICKY_POSITIONING_LISTENER, useValue: null},   ], }) export class CdkTable<T> implements AfterContentChecked, CollectionViewer, OnDestroy, OnInit {   private _document: Document;    /** Latest data provided by the data source. */   protected _data: readonly T[];    /** Subject that emits when the component has been destroyed. */   private readonly _onDestroy = new Subject<void>();    /** List of the rendered rows as identified by their `RenderRow` object. */   private _renderRows: RenderRow<T>[];    /** Subscription that listens for the data provided by the data source. */   private _renderChangeSubscription: Subscription | null;    /**    * Map of all the user's defined columns (header, data, and footer cell template) identified by    * name. Collection populated by the column definitions gathered by `ContentChildren` as well as    * any custom column definitions added to `_customColumnDefs`.    */   private _columnDefsByName = new Map<string, CdkColumnDef>();    /**    * Set of all row definitions that can be used by this table. Populated by the rows gathered by    * using `ContentChildren` as well as any custom row definitions added to `_customRowDefs`.    */   private _rowDefs: CdkRowDef<T>[];    /**    * Set of all header row definitions that can be used by this table. Populated by the rows    * gathered by using `ContentChildren` as well as any custom row definitions added to    * `_customHeaderRowDefs`.    */   private _headerRowDefs: CdkHeaderRowDef[];    /**    * Set of all row definitions that can be used by this table. Populated by the rows gathered by    * using `ContentChildren` as well as any custom row definitions added to    * `_customFooterRowDefs`.    */   private _footerRowDefs: CdkFooterRowDef[];    /** Differ used to find the changes in the data provided by the data source. */   private _dataDiffer: IterableDiffer<RenderRow<T>>;    /** Stores the row definition that does not have a when predicate. */   private _defaultRowDef: CdkRowDef<T> | null;    /**    * Column definitions that were defined outside of the direct content children of the table.    * These will be defined when, e.g., creating a wrapper around the cdkTable that has    * column definitions as *its* content child.    */   private _customColumnDefs = new Set<CdkColumnDef>();    /**    * Data row definitions that were defined outside of the direct content children of the table.    * These will be defined when, e.g., creating a wrapper around the cdkTable that has    * built-in data rows as *its* content child.    */   private _customRowDefs = new Set<CdkRowDef<T>>();    /**    * Header row definitions that were defined outside of the direct content children of the table.    * These will be defined when, e.g., creating a wrapper around the cdkTable that has    * built-in header rows as *its* content child.    */   private _customHeaderRowDefs = new Set<CdkHeaderRowDef>();    /**    * Footer row definitions that were defined outside of the direct content children of the table.    * These will be defined when, e.g., creating a wrapper around the cdkTable that has a    * built-in footer row as *its* content child.    */   private _customFooterRowDefs = new Set<CdkFooterRowDef>();    /** No data row that was defined outside of the direct content children of the table. */   private _customNoDataRow: CdkNoDataRow | null;    /**    * Whether the header row definition has been changed. Triggers an update to the header row after    * content is checked. Initialized as true so that the table renders the initial set of rows.    */   private _headerRowDefChanged = true;    /**    * Whether the footer row definition has been changed. Triggers an update to the footer row after    * content is checked. Initialized as true so that the table renders the initial set of rows.    */   private _footerRowDefChanged = true;    /**    * Whether the sticky column styles need to be updated. Set to `true` when the visible columns    * change.    */   private _stickyColumnStylesNeedReset = true;    /**    * Whether the sticky styler should recalculate cell widths when applying sticky styles. If    * `false`, cached values will be used instead. This is only applicable to tables with    * {@link fixedLayout} enabled. For other tables, cell widths will always be recalculated.    */   private _forceRecalculateCellWidths = true;    /**    * Cache of the latest rendered `RenderRow` objects as a map for easy retrieval when constructing    * a new list of `RenderRow` objects for rendering rows. Since the new list is constructed with    * the cached `RenderRow` objects when possible, the row identity is preserved when the data    * and row template matches, which allows the `IterableDiffer` to check rows by reference    * and understand which rows are added/moved/removed.    *    * Implemented as a map of maps where the first key is the `data: T` object and the second is the    * `CdkRowDef<T>` object. With the two keys, the cache points to a `RenderRow<T>` object that    * contains an array of created pairs. The array is necessary to handle cases where the data    * array contains multiple duplicate data objects and each instantiated `RenderRow` must be    * stored.    */   private _cachedRenderRowsMap = new Map<T, WeakMap<CdkRowDef<T>, RenderRow<T>[]>>();    /** Whether the table is applied to a native `<table>`. */   protected _isNativeHtmlTable: boolean;    /**    * Utility class that is responsible for applying the appropriate sticky positioning styles to    * the table's rows and cells.    */   private _stickyStyler: StickyStyler;    /**    * CSS class added to any row or cell that has sticky positioning applied. May be overridden by    * table subclasses.    */   protected stickyCssClass: string = 'cdk-table-sticky';    /**    * Whether to manually add position: sticky to all sticky cell elements. Not needed if    * the position is set in a selector associated with the value of stickyCssClass. May be    * overridden by table subclasses    */   protected needsPositionStickyOnElement = true;    /** Whether the no data row is currently showing anything. */   private _isShowingNoDataRow = false;    /**    * Tracking function that will be used to check the differences in data changes. Used similarly    * to `ngFor` `trackBy` function. Optimize row operations by identifying a row based on its data    * relative to the function to know if a row should be added/removed/moved.    * Accepts a function that takes two parameters, `index` and `item`.    */   @Input()   get trackBy(): TrackByFunction<T> {     return this._trackByFn;   }   set trackBy(fn: TrackByFunction<T>) {     if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {       console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}.`);     }     this._trackByFn = fn;   }   private _trackByFn: TrackByFunction<T>;    /**    * The table's source of data, which can be provided in three ways (in order of complexity):    *   - Simple data array (each object represents one table row)    *   - Stream that emits a data array each time the array changes    *   - `DataSource` object that implements the connect/disconnect interface.    *    * If a data array is provided, the table must be notified when the array's objects are    * added, removed, or moved. This can be done by calling the `renderRows()` function which will    * render the diff since the last table render. If the data array reference is changed, the table    * will automatically trigger an update to the rows.    *    * When providing an Observable stream, the table will trigger an update automatically when the    * stream emits a new array of data.    *    * Finally, when providing a `DataSource` object, the table will use the Observable stream    * provided by the connect function and trigger updates when that stream emits new data array    * values. During the table's ngOnDestroy or when the data source is removed from the table, the    * table will call the DataSource's `disconnect` function (may be useful for cleaning up any    * subscriptions registered during the connect process).    */   @Input()   get dataSource(): CdkTableDataSourceInput<T> {     return this._dataSource;   }   set dataSource(dataSource: CdkTableDataSourceInput<T>) {     if (this._dataSource !== dataSource) {       this._switchDataSource(dataSource);     }   }   private _dataSource: CdkTableDataSourceInput<T>;    /**    * Whether to allow multiple rows per data object by evaluating which rows evaluate their 'when'    * predicate to true. If `multiTemplateDataRows` is false, which is the default value, then each    * dataobject will render the first row that evaluates its when predicate to true, in the order    * defined in the table, or otherwise the default row which does not have a when predicate.    */   @Input()   get multiTemplateDataRows(): boolean {     return this._multiTemplateDataRows;   }   set multiTemplateDataRows(v: BooleanInput) {     this._multiTemplateDataRows = coerceBooleanProperty(v);      // In Ivy if this value is set via a static attribute (e.g. <table multiTemplateDataRows>),     // this setter will be invoked before the row outlet has been defined hence the null check.     if (this._rowOutlet && this._rowOutlet.viewContainer.length) {       this._forceRenderDataRows();       this.updateStickyColumnStyles();     }   }   _multiTemplateDataRows: boolean = false;    /**    * Whether to use a fixed table layout. Enabling this option will enforce consistent column widths    * and optimize rendering sticky styles for native tables. No-op for flex tables.    */   @Input()   get fixedLayout(): boolean {     return this._fixedLayout;   }   set fixedLayout(v: BooleanInput) {     this._fixedLayout = coerceBooleanProperty(v);      // Toggling `fixedLayout` may change column widths. Sticky column styles should be recalculated.     this._forceRecalculateCellWidths = true;     this._stickyColumnStylesNeedReset = true;   }   private _fixedLayout: boolean = false;    /**    * Emits when the table completes rendering a set of data rows based on the latest data from the    * data source, even if the set of rows is empty.    */   @Output()   readonly contentChanged = new EventEmitter<void>();    // TODO(andrewseguin): Remove max value as the end index   //   and instead calculate the view on init and scroll.   /**    * Stream containing the latest information on what rows are being displayed on screen.    * Can be used by the data source to as a heuristic of what data should be provided.    *    * @docs-private    */   readonly viewChange = new BehaviorSubject<{start: number; end: number}>({     start: 0,     end: Number.MAX_VALUE,   });    // Outlets in the table's template where the header, data rows, and footer will be inserted.   @ViewChild(DataRowOutlet, {static: true}) _rowOutlet: DataRowOutlet;   @ViewChild(HeaderRowOutlet, {static: true}) _headerRowOutlet: HeaderRowOutlet;   @ViewChild(FooterRowOutlet, {static: true}) _footerRowOutlet: FooterRowOutlet;   @ViewChild(NoDataRowOutlet, {static: true}) _noDataRowOutlet: NoDataRowOutlet;    /**    * The column definitions provided by the user that contain what the header, data, and footer    * cells should render for each column.    */   @ContentChildren(CdkColumnDef, {descendants: true}) _contentColumnDefs: QueryList<CdkColumnDef>;    /** Set of data row definitions that were provided to the table as content children. */   @ContentChildren(CdkRowDef, {descendants: true}) _contentRowDefs: QueryList<CdkRowDef<T>>;    /** Set of header row definitions that were provided to the table as content children. */   @ContentChildren(CdkHeaderRowDef, {     descendants: true,   })   _contentHeaderRowDefs: QueryList<CdkHeaderRowDef>;    /** Set of footer row definitions that were provided to the table as content children. */   @ContentChildren(CdkFooterRowDef, {     descendants: true,   })   _contentFooterRowDefs: QueryList<CdkFooterRowDef>;    /** Row definition that will only be rendered if there's no data in the table. */   @ContentChild(CdkNoDataRow) _noDataRow: CdkNoDataRow;    constructor(     protected readonly _differs: IterableDiffers,     protected readonly _changeDetectorRef: ChangeDetectorRef,     protected readonly _elementRef: ElementRef,     @Attribute('role') role: string,     @Optional() protected readonly _dir: Directionality,     @Inject(DOCUMENT) _document: any,     private _platform: Platform,     @Inject(_VIEW_REPEATER_STRATEGY)     protected readonly _viewRepeater: _ViewRepeater<T, RenderRow<T>, RowContext<T>>,     @Inject(_COALESCED_STYLE_SCHEDULER)     protected readonly _coalescedStyleScheduler: _CoalescedStyleScheduler,     private readonly _viewportRuler: ViewportRuler,     /**      * @deprecated `_stickyPositioningListener` parameter to become required.      * @breaking-change 13.0.0      */     @Optional()     @SkipSelf()     @Inject(STICKY_POSITIONING_LISTENER)     protected readonly _stickyPositioningListener: StickyPositioningListener,     /**      * @deprecated `_ngZone` parameter to become required.      * @breaking-change 14.0.0      */     @Optional()     protected readonly _ngZone?: NgZone,   ) {     if (!role) {       this._elementRef.nativeElement.setAttribute('role', 'table');     }      this._document = _document;     this._isNativeHtmlTable = this._elementRef.nativeElement.nodeName === 'TABLE';   }    ngOnInit() {     this._setupStickyStyler();      if (this._isNativeHtmlTable) {       this._applyNativeTableSections();     }      // Set up the trackBy function so that it uses the `RenderRow` as its identity by default. If     // the user has provided a custom trackBy, return the result of that function as evaluated     // with the values of the `RenderRow`'s data and index.     this._dataDiffer = this._differs.find([]).create((_i: number, dataRow: RenderRow<T>) => {       return this.trackBy ? this.trackBy(dataRow.dataIndex, dataRow.data) : dataRow;     });      this._viewportRuler       .change()       .pipe(takeUntil(this._onDestroy))       .subscribe(() => {         this._forceRecalculateCellWidths = true;       });   }    ngAfterContentChecked() {     // Cache the row and column definitions gathered by ContentChildren and programmatic injection.     this._cacheRowDefs();     this._cacheColumnDefs();      // Make sure that the user has at least added header, footer, or data row def.     if (       !this._headerRowDefs.length &&       !this._footerRowDefs.length &&       !this._rowDefs.length &&       (typeof ngDevMode === 'undefined' || ngDevMode)     ) {       throw getTableMissingRowDefsError();     }      // Render updates if the list of columns have been changed for the header, row, or footer defs.     const columnsChanged = this._renderUpdatedColumns();     const rowDefsChanged = columnsChanged || this._headerRowDefChanged || this._footerRowDefChanged;     // Ensure sticky column styles are reset if set to `true` elsewhere.     this._stickyColumnStylesNeedReset = this._stickyColumnStylesNeedReset || rowDefsChanged;     this._forceRecalculateCellWidths = rowDefsChanged;      // If the header row definition has been changed, trigger a render to the header row.     if (this._headerRowDefChanged) {       this._forceRenderHeaderRows();       this._headerRowDefChanged = false;     }      // If the footer row definition has been changed, trigger a render to the footer row.     if (this._footerRowDefChanged) {       this._forceRenderFooterRows();       this._footerRowDefChanged = false;     }      // If there is a data source and row definitions, connect to the data source unless a     // connection has already been made.     if (this.dataSource && this._rowDefs.length > 0 && !this._renderChangeSubscription) {       this._observeRenderChanges();     } else if (this._stickyColumnStylesNeedReset) {       // In the above case, _observeRenderChanges will result in updateStickyColumnStyles being       // called when it row data arrives. Otherwise, we need to call it proactively.       this.updateStickyColumnStyles();     }      this._checkStickyStates();   }    ngOnDestroy() {     [       this._rowOutlet.viewContainer,       this._headerRowOutlet.viewContainer,       this._footerRowOutlet.viewContainer,       this._cachedRenderRowsMap,       this._customColumnDefs,       this._customRowDefs,       this._customHeaderRowDefs,       this._customFooterRowDefs,       this._columnDefsByName,     ].forEach(def => {       def.clear();     });      this._headerRowDefs = [];     this._footerRowDefs = [];     this._defaultRowDef = null;     this._onDestroy.next();     this._onDestroy.complete();      if (isDataSource(this.dataSource)) {       this.dataSource.disconnect(this);     }   }    /**    * Renders rows based on the table's latest set of data, which was either provided directly as an    * input or retrieved through an Observable stream (directly or from a DataSource).    * Checks for differences in the data since the last diff to perform only the necessary    * changes (add/remove/move rows).    *    * If the table's data source is a DataSource or Observable, this will be invoked automatically    * each time the provided Observable stream emits a new data array. Otherwise if your data is    * an array, this function will need to be called to render any changes.    */   renderRows() {     this._renderRows = this._getAllRenderRows();     const changes = this._dataDiffer.diff(this._renderRows);     if (!changes) {       this._updateNoDataRow();       this.contentChanged.next();       return;     }     const viewContainer = this._rowOutlet.viewContainer;      this._viewRepeater.applyChanges(       changes,       viewContainer,       (         record: IterableChangeRecord<RenderRow<T>>,         _adjustedPreviousIndex: number | null,         currentIndex: number | null,       ) => this._getEmbeddedViewArgs(record.item, currentIndex!),       record => record.item.data,       (change: _ViewRepeaterItemChange<RenderRow<T>, RowContext<T>>) => {         if (change.operation === _ViewRepeaterOperation.INSERTED && change.context) {           this._renderCellTemplateForItem(change.record.item.rowDef, change.context);         }       },     );      // Update the meta context of a row's context data (index, count, first, last, ...)     this._updateRowIndexContext();      // Update rows that did not get added/removed/moved but may have had their identity changed,     // e.g. if trackBy matched data on some property but the actual data reference changed.     changes.forEachIdentityChange((record: IterableChangeRecord<RenderRow<T>>) => {       const rowView = <RowViewRef<T>>viewContainer.get(record.currentIndex!);       rowView.context.$implicit = record.item.data;     });      this._updateNoDataRow();      // Allow the new row data to render before measuring it.     // @breaking-change 14.0.0 Remove undefined check once _ngZone is required.     if (this._ngZone && NgZone.isInAngularZone()) {       this._ngZone.onStable.pipe(take(1), takeUntil(this._onDestroy)).subscribe(() => {         this.updateStickyColumnStyles();       });     } else {       this.updateStickyColumnStyles();     }      this.contentChanged.next();   }    /** Adds a column definition that was not included as part of the content children. */   addColumnDef(columnDef: CdkColumnDef) {     this._customColumnDefs.add(columnDef);   }    /** Removes a column definition that was not included as part of the content children. */   removeColumnDef(columnDef: CdkColumnDef) {     this._customColumnDefs.delete(columnDef);   }    /** Adds a row definition that was not included as part of the content children. */   addRowDef(rowDef: CdkRowDef<T>) {     this._customRowDefs.add(rowDef);   }    /** Removes a row definition that was not included as part of the content children. */   removeRowDef(rowDef: CdkRowDef<T>) {     this._customRowDefs.delete(rowDef);   }    /** Adds a header row definition that was not included as part of the content children. */   addHeaderRowDef(headerRowDef: CdkHeaderRowDef) {     this._customHeaderRowDefs.add(headerRowDef);     this._headerRowDefChanged = true;   }    /** Removes a header row definition that was not included as part of the content children. */   removeHeaderRowDef(headerRowDef: CdkHeaderRowDef) {     this._customHeaderRowDefs.delete(headerRowDef);     this._headerRowDefChanged = true;   }    /** Adds a footer row definition that was not included as part of the content children. */   addFooterRowDef(footerRowDef: CdkFooterRowDef) {     this._customFooterRowDefs.add(footerRowDef);     this._footerRowDefChanged = true;   }    /** Removes a footer row definition that was not included as part of the content children. */   removeFooterRowDef(footerRowDef: CdkFooterRowDef) {     this._customFooterRowDefs.delete(footerRowDef);     this._footerRowDefChanged = true;   }    /** Sets a no data row definition that was not included as a part of the content children. */   setNoDataRow(noDataRow: CdkNoDataRow | null) {     this._customNoDataRow = noDataRow;   }    /**    * Updates the header sticky styles. First resets all applied styles with respect to the cells    * sticking to the top. Then, evaluating which cells need to be stuck to the top. This is    * automatically called when the header row changes its displayed set of columns, or if its    * sticky input changes. May be called manually for cases where the cell content changes outside    * of these events.    */   updateStickyHeaderRowStyles(): void {     const headerRows = this._getRenderedRows(this._headerRowOutlet);     const tableElement = this._elementRef.nativeElement as HTMLElement;      // Hide the thead element if there are no header rows. This is necessary to satisfy     // overzealous a11y checkers that fail because the `rowgroup` element does not contain     // required child `row`.     const thead = tableElement.querySelector('thead');     if (thead) {       thead.style.display = headerRows.length ? '' : 'none';     }      const stickyStates = this._headerRowDefs.map(def => def.sticky);     this._stickyStyler.clearStickyPositioning(headerRows, ['top']);     this._stickyStyler.stickRows(headerRows, stickyStates, 'top');      // Reset the dirty state of the sticky input change since it has been used.     this._headerRowDefs.forEach(def => def.resetStickyChanged());   }    /**    * Updates the footer sticky styles. First resets all applied styles with respect to the cells    * sticking to the bottom. Then, evaluating which cells need to be stuck to the bottom. This is    * automatically called when the footer row changes its displayed set of columns, or if its    * sticky input changes. May be called manually for cases where the cell content changes outside    * of these events.    */   updateStickyFooterRowStyles(): void {     const footerRows = this._getRenderedRows(this._footerRowOutlet);     const tableElement = this._elementRef.nativeElement as HTMLElement;      // Hide the tfoot element if there are no footer rows. This is necessary to satisfy     // overzealous a11y checkers that fail because the `rowgroup` element does not contain     // required child `row`.     const tfoot = tableElement.querySelector('tfoot');     if (tfoot) {       tfoot.style.display = footerRows.length ? '' : 'none';     }      const stickyStates = this._footerRowDefs.map(def => def.sticky);     this._stickyStyler.clearStickyPositioning(footerRows, ['bottom']);     this._stickyStyler.stickRows(footerRows, stickyStates, 'bottom');     this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement, stickyStates);      // Reset the dirty state of the sticky input change since it has been used.     this._footerRowDefs.forEach(def => def.resetStickyChanged());   }    /**    * Updates the column sticky styles. First resets all applied styles with respect to the cells    * sticking to the left and right. Then sticky styles are added for the left and right according    * to the column definitions for each cell in each row. This is automatically called when    * the data source provides a new set of data or when a column definition changes its sticky    * input. May be called manually for cases where the cell content changes outside of these events.    */   updateStickyColumnStyles() {     const headerRows = this._getRenderedRows(this._headerRowOutlet);     const dataRows = this._getRenderedRows(this._rowOutlet);     const footerRows = this._getRenderedRows(this._footerRowOutlet);      // For tables not using a fixed layout, the column widths may change when new rows are rendered.     // In a table using a fixed layout, row content won't affect column width, so sticky styles     // don't need to be cleared unless either the sticky column config changes or one of the row     // defs change.     if ((this._isNativeHtmlTable && !this._fixedLayout) || this._stickyColumnStylesNeedReset) {       // Clear the left and right positioning from all columns in the table across all rows since       // sticky columns span across all table sections (header, data, footer)       this._stickyStyler.clearStickyPositioning(         [...headerRows, ...dataRows, ...footerRows],         ['left', 'right'],       );       this._stickyColumnStylesNeedReset = false;     }      // Update the sticky styles for each header row depending on the def's sticky state     headerRows.forEach((headerRow, i) => {       this._addStickyColumnStyles([headerRow], this._headerRowDefs[i]);     });      // Update the sticky styles for each data row depending on its def's sticky state     this._rowDefs.forEach(rowDef => {       // Collect all the rows rendered with this row definition.       const rows: HTMLElement[] = [];       for (let i = 0; i < dataRows.length; i++) {         if (this._renderRows[i].rowDef === rowDef) {           rows.push(dataRows[i]);         }       }        this._addStickyColumnStyles(rows, rowDef);     });      // Update the sticky styles for each footer row depending on the def's sticky state     footerRows.forEach((footerRow, i) => {       this._addStickyColumnStyles([footerRow], this._footerRowDefs[i]);     });      // Reset the dirty state of the sticky input change since it has been used.     Array.from(this._columnDefsByName.values()).forEach(def => def.resetStickyChanged());   }    /**    * Get the list of RenderRow objects to render according to the current list of data and defined    * row definitions. If the previous list already contained a particular pair, it should be reused    * so that the differ equates their references.    */   private _getAllRenderRows(): RenderRow<T>[] {     const renderRows: RenderRow<T>[] = [];      // Store the cache and create a new one. Any re-used RenderRow objects will be moved into the     // new cache while unused ones can be picked up by garbage collection.     const prevCachedRenderRows = this._cachedRenderRowsMap;     this._cachedRenderRowsMap = new Map();      // For each data object, get the list of rows that should be rendered, represented by the     // respective `RenderRow` object which is the pair of `data` and `CdkRowDef`.     for (let i = 0; i < this._data.length; i++) {       let data = this._data[i];       const renderRowsForData = this._getRenderRowsForData(data, i, prevCachedRenderRows.get(data));        if (!this._cachedRenderRowsMap.has(data)) {         this._cachedRenderRowsMap.set(data, new WeakMap());       }        for (let j = 0; j < renderRowsForData.length; j++) {         let renderRow = renderRowsForData[j];          const cache = this._cachedRenderRowsMap.get(renderRow.data)!;         if (cache.has(renderRow.rowDef)) {           cache.get(renderRow.rowDef)!.push(renderRow);         } else {           cache.set(renderRow.rowDef, [renderRow]);         }         renderRows.push(renderRow);       }     }      return renderRows;   }    /**    * Gets a list of `RenderRow<T>` for the provided data object and any `CdkRowDef` objects that    * should be rendered for this data. Reuses the cached RenderRow objects if they match the same    * `(T, CdkRowDef)` pair.    */   private _getRenderRowsForData(     data: T,     dataIndex: number,     cache?: WeakMap<CdkRowDef<T>, RenderRow<T>[]>,   ): RenderRow<T>[] {     const rowDefs = this._getRowDefs(data, dataIndex);      return rowDefs.map(rowDef => {       const cachedRenderRows = cache && cache.has(rowDef) ? cache.get(rowDef)! : [];       if (cachedRenderRows.length) {         const dataRow = cachedRenderRows.shift()!;         dataRow.dataIndex = dataIndex;         return dataRow;       } else {         return {data, rowDef, dataIndex};       }     });   }    /** Update the map containing the content's column definitions. */   private _cacheColumnDefs() {     this._columnDefsByName.clear();      const columnDefs = mergeArrayAndSet(       this._getOwnDefs(this._contentColumnDefs),       this._customColumnDefs,     );     columnDefs.forEach(columnDef => {       if (         this._columnDefsByName.has(columnDef.name) &&         (typeof ngDevMode === 'undefined' || ngDevMode)       ) {         throw getTableDuplicateColumnNameError(columnDef.name);       }       this._columnDefsByName.set(columnDef.name, columnDef);     });   }    /** Update the list of all available row definitions that can be used. */   private _cacheRowDefs() {     this._headerRowDefs = mergeArrayAndSet(       this._getOwnDefs(this._contentHeaderRowDefs),       this._customHeaderRowDefs,     );     this._footerRowDefs = mergeArrayAndSet(       this._getOwnDefs(this._contentFooterRowDefs),       this._customFooterRowDefs,     );     this._rowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentRowDefs), this._customRowDefs);      // After all row definitions are determined, find the row definition to be considered default.     const defaultRowDefs = this._rowDefs.filter(def => !def.when);     if (       !this.multiTemplateDataRows &&       defaultRowDefs.length > 1 &&       (typeof ngDevMode === 'undefined' || ngDevMode)     ) {       throw getTableMultipleDefaultRowDefsError();     }     this._defaultRowDef = defaultRowDefs[0];   }    /**    * Check if the header, data, or footer rows have changed what columns they want to display or    * whether the sticky states have changed for the header or footer. If there is a diff, then    * re-render that section.    */   private _renderUpdatedColumns(): boolean {     const columnsDiffReducer = (acc: boolean, def: BaseRowDef) => acc || !!def.getColumnsDiff();      // Force re-render data rows if the list of column definitions have changed.     const dataColumnsChanged = this._rowDefs.reduce(columnsDiffReducer, false);     if (dataColumnsChanged) {       this._forceRenderDataRows();     }      // Force re-render header/footer rows if the list of column definitions have changed.     const headerColumnsChanged = this._headerRowDefs.reduce(columnsDiffReducer, false);     if (headerColumnsChanged) {       this._forceRenderHeaderRows();     }      const footerColumnsChanged = this._footerRowDefs.reduce(columnsDiffReducer, false);     if (footerColumnsChanged) {       this._forceRenderFooterRows();     }      return dataColumnsChanged || headerColumnsChanged || footerColumnsChanged;   }    /**    * Switch to the provided data source by resetting the data and unsubscribing from the current    * render change subscription if one exists. If the data source is null, interpret this by    * clearing the row outlet. Otherwise start listening for new data.    */   private _switchDataSource(dataSource: CdkTableDataSourceInput<T>) {     this._data = [];      if (isDataSource(this.dataSource)) {       this.dataSource.disconnect(this);     }      // Stop listening for data from the previous data source.     if (this._renderChangeSubscription) {       this._renderChangeSubscription.unsubscribe();       this._renderChangeSubscription = null;     }      if (!dataSource) {       if (this._dataDiffer) {         this._dataDiffer.diff([]);       }       this._rowOutlet.viewContainer.clear();     }      this._dataSource = dataSource;   }    /** Set up a subscription for the data provided by the data source. */   private _observeRenderChanges() {     // If no data source has been set, there is nothing to observe for changes.     if (!this.dataSource) {       return;     }      let dataStream: Observable<readonly T[]> | undefined;      if (isDataSource(this.dataSource)) {       dataStream = this.dataSource.connect(this);     } else if (isObservable(this.dataSource)) {       dataStream = this.dataSource;     } else if (Array.isArray(this.dataSource)) {       dataStream = observableOf(this.dataSource);     }      if (dataStream === undefined && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getTableUnknownDataSourceError();     }      this._renderChangeSubscription = dataStream!       .pipe(takeUntil(this._onDestroy))       .subscribe(data => {         this._data = data || [];         this.renderRows();       });   }    /**    * Clears any existing content in the header row outlet and creates a new embedded view    * in the outlet using the header row definition.    */   private _forceRenderHeaderRows() {     // Clear the header row outlet if any content exists.     if (this._headerRowOutlet.viewContainer.length > 0) {       this._headerRowOutlet.viewContainer.clear();     }      this._headerRowDefs.forEach((def, i) => this._renderRow(this._headerRowOutlet, def, i));     this.updateStickyHeaderRowStyles();   }    /**    * Clears any existing content in the footer row outlet and creates a new embedded view    * in the outlet using the footer row definition.    */   private _forceRenderFooterRows() {     // Clear the footer row outlet if any content exists.     if (this._footerRowOutlet.viewContainer.length > 0) {       this._footerRowOutlet.viewContainer.clear();     }      this._footerRowDefs.forEach((def, i) => this._renderRow(this._footerRowOutlet, def, i));     this.updateStickyFooterRowStyles();   }    /** Adds the sticky column styles for the rows according to the columns' stick states. */   private _addStickyColumnStyles(rows: HTMLElement[], rowDef: BaseRowDef) {     const columnDefs = Array.from(rowDef.columns || []).map(columnName => {       const columnDef = this._columnDefsByName.get(columnName);       if (!columnDef && (typeof ngDevMode === 'undefined' || ngDevMode)) {         throw getTableUnknownColumnError(columnName);       }       return columnDef!;     });     const stickyStartStates = columnDefs.map(columnDef => columnDef.sticky);     const stickyEndStates = columnDefs.map(columnDef => columnDef.stickyEnd);     this._stickyStyler.updateStickyColumns(       rows,       stickyStartStates,       stickyEndStates,       !this._fixedLayout || this._forceRecalculateCellWidths,     );   }    /** Gets the list of rows that have been rendered in the row outlet. */   _getRenderedRows(rowOutlet: RowOutlet): HTMLElement[] {     const renderedRows: HTMLElement[] = [];      for (let i = 0; i < rowOutlet.viewContainer.length; i++) {       const viewRef = rowOutlet.viewContainer.get(i)! as EmbeddedViewRef<any>;       renderedRows.push(viewRef.rootNodes[0]);     }      return renderedRows;   }    /**    * Get the matching row definitions that should be used for this row data. If there is only    * one row definition, it is returned. Otherwise, find the row definitions that has a when    * predicate that returns true with the data. If none return true, return the default row    * definition.    */   _getRowDefs(data: T, dataIndex: number): CdkRowDef<T>[] {     if (this._rowDefs.length == 1) {       return [this._rowDefs[0]];     }      let rowDefs: CdkRowDef<T>[] = [];     if (this.multiTemplateDataRows) {       rowDefs = this._rowDefs.filter(def => !def.when || def.when(dataIndex, data));     } else {       let rowDef =         this._rowDefs.find(def => def.when && def.when(dataIndex, data)) || this._defaultRowDef;       if (rowDef) {         rowDefs.push(rowDef);       }     }      if (!rowDefs.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getTableMissingMatchingRowDefError(data);     }      return rowDefs;   }    private _getEmbeddedViewArgs(     renderRow: RenderRow<T>,     index: number,   ): _ViewRepeaterItemInsertArgs<RowContext<T>> {     const rowDef = renderRow.rowDef;     const context: RowContext<T> = {$implicit: renderRow.data};     return {       templateRef: rowDef.template,       context,       index,     };   }    /**    * Creates a new row template in the outlet and fills it with the set of cell templates.    * Optionally takes a context to provide to the row and cells, as well as an optional index    * of where to place the new row template in the outlet.    */   private _renderRow(     outlet: RowOutlet,     rowDef: BaseRowDef,     index: number,     context: RowContext<T> = {},   ): EmbeddedViewRef<RowContext<T>> {     // TODO(andrewseguin): enforce that one outlet was instantiated from createEmbeddedView     const view = outlet.viewContainer.createEmbeddedView(rowDef.template, context, index);     this._renderCellTemplateForItem(rowDef, context);     return view;   }    private _renderCellTemplateForItem(rowDef: BaseRowDef, context: RowContext<T>) {     for (let cellTemplate of this._getCellTemplates(rowDef)) {       if (CdkCellOutlet.mostRecentCellOutlet) {         CdkCellOutlet.mostRecentCellOutlet._viewContainer.createEmbeddedView(cellTemplate, context);       }     }      this._changeDetectorRef.markForCheck();   }    /**    * Updates the index-related context for each row to reflect any changes in the index of the rows,    * e.g. first/last/even/odd.    */   private _updateRowIndexContext() {     const viewContainer = this._rowOutlet.viewContainer;     for (let renderIndex = 0, count = viewContainer.length; renderIndex < count; renderIndex++) {       const viewRef = viewContainer.get(renderIndex) as RowViewRef<T>;       const context = viewRef.context as RowContext<T>;       context.count = count;       context.first = renderIndex === 0;       context.last = renderIndex === count - 1;       context.even = renderIndex % 2 === 0;       context.odd = !context.even;        if (this.multiTemplateDataRows) {         context.dataIndex = this._renderRows[renderIndex].dataIndex;         context.renderIndex = renderIndex;       } else {         context.index = this._renderRows[renderIndex].dataIndex;       }     }   }    /** Gets the column definitions for the provided row def. */   private _getCellTemplates(rowDef: BaseRowDef): TemplateRef<any>[] {     if (!rowDef || !rowDef.columns) {       return [];     }     return Array.from(rowDef.columns, columnId => {       const column = this._columnDefsByName.get(columnId);        if (!column && (typeof ngDevMode === 'undefined' || ngDevMode)) {         throw getTableUnknownColumnError(columnId);       }        return rowDef.extractCellTemplate(column!);     });   }    /** Adds native table sections (e.g. tbody) and moves the row outlets into them. */   private _applyNativeTableSections() {     const documentFragment = this._document.createDocumentFragment();     const sections = [       {tag: 'thead', outlets: [this._headerRowOutlet]},       {tag: 'tbody', outlets: [this._rowOutlet, this._noDataRowOutlet]},       {tag: 'tfoot', outlets: [this._footerRowOutlet]},     ];      for (const section of sections) {       const element = this._document.createElement(section.tag);       element.setAttribute('role', 'rowgroup');        for (const outlet of section.outlets) {         element.appendChild(outlet.elementRef.nativeElement);       }        documentFragment.appendChild(element);     }      // Use a DocumentFragment so we don't hit the DOM on each iteration.     this._elementRef.nativeElement.appendChild(documentFragment);   }    /**    * Forces a re-render of the data rows. Should be called in cases where there has been an input    * change that affects the evaluation of which rows should be rendered, e.g. toggling    * `multiTemplateDataRows` or adding/removing row definitions.    */   private _forceRenderDataRows() {     this._dataDiffer.diff([]);     this._rowOutlet.viewContainer.clear();     this.renderRows();   }    /**    * Checks if there has been a change in sticky states since last check and applies the correct    * sticky styles. Since checking resets the \"dirty\" state, this should only be performed once    * during a change detection and after the inputs are settled (after content check).    */   private _checkStickyStates() {     const stickyCheckReducer = (       acc: boolean,       d: CdkHeaderRowDef | CdkFooterRowDef | CdkColumnDef,     ) => {       return acc || d.hasStickyChanged();     };      // Note that the check needs to occur for every definition since it notifies the definition     // that it can reset its dirty state. Using another operator like `some` may short-circuit     // remaining definitions and leave them in an unchecked state.      if (this._headerRowDefs.reduce(stickyCheckReducer, false)) {       this.updateStickyHeaderRowStyles();     }      if (this._footerRowDefs.reduce(stickyCheckReducer, false)) {       this.updateStickyFooterRowStyles();     }      if (Array.from(this._columnDefsByName.values()).reduce(stickyCheckReducer, false)) {       this._stickyColumnStylesNeedReset = true;       this.updateStickyColumnStyles();     }   }    /**    * Creates the sticky styler that will be used for sticky rows and columns. Listens    * for directionality changes and provides the latest direction to the styler. Re-applies column    * stickiness when directionality changes.    */   private _setupStickyStyler() {     const direction: Direction = this._dir ? this._dir.value : 'ltr';     this._stickyStyler = new StickyStyler(       this._isNativeHtmlTable,       this.stickyCssClass,       direction,       this._coalescedStyleScheduler,       this._platform.isBrowser,       this.needsPositionStickyOnElement,       this._stickyPositioningListener,     );     (this._dir ? this._dir.change : observableOf<Direction>())       .pipe(takeUntil(this._onDestroy))       .subscribe(value => {         this._stickyStyler.direction = value;         this.updateStickyColumnStyles();       });   }    /** Filters definitions that belong to this table from a QueryList. */   private _getOwnDefs<I extends {_table?: any}>(items: QueryList<I>): I[] {     return items.filter(item => !item._table || item._table === this);   }    /** Creates or removes the no data row, depending on whether any data is being shown. */   private _updateNoDataRow() {     const noDataRow = this._customNoDataRow || this._noDataRow;      if (!noDataRow) {       return;     }      const shouldShow = this._rowOutlet.viewContainer.length === 0;      if (shouldShow === this._isShowingNoDataRow) {       return;     }      const container = this._noDataRowOutlet.viewContainer;      if (shouldShow) {       const view = container.createEmbeddedView(noDataRow.templateRef);       const rootNode: HTMLElement | undefined = view.rootNodes[0];        // Only add the attributes if we have a single root node since it's hard       // to figure out which one to add it to when there are multiple.       if (view.rootNodes.length === 1 && rootNode?.nodeType === this._document.ELEMENT_NODE) {         rootNode.setAttribute('role', 'row');         rootNode.classList.add(noDataRow._contentClassName);       }     } else {       container.clear();     }      this._isShowingNoDataRow = shouldShow;   } }  /** Utility function that gets a merged list of the entries in an array and values of a Set. */ function mergeArrayAndSet<T>(array: T[], set: Set<T>): T[] {   return array.concat(Array.from(set)); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   ChangeDetectionStrategy,   Component,   Inject,   Input,   OnDestroy,   OnInit,   Optional,   ViewChild,   ViewEncapsulation, } from '@angular/core'; import {CdkCellDef, CdkColumnDef, CdkHeaderCellDef} from './cell'; import {CdkTable} from './table'; import {   getTableTextColumnMissingParentTableError,   getTableTextColumnMissingNameError, } from './table-errors'; import {TEXT_COLUMN_OPTIONS, TextColumnOptions} from './tokens';  /**  * Column that simply shows text content for the header and row cells. Assumes that the table  * is using the native table implementation (`<table>`).  *  * By default, the name of this column will be the header text and data property accessor.  * The header text can be overridden with the `headerText` input. Cell values can be overridden with  * the `dataAccessor` input. Change the text justification to the start or end using the `justify`  * input.  */ @Component({   selector: 'cdk-text-column',   template: `     <ng-container cdkColumnDef>       <th cdk-header-cell *cdkHeaderCellDef [style.text-align]=\"justify\">         {{headerText}}       </th>       <td cdk-cell *cdkCellDef=\"let data\" [style.text-align]=\"justify\">         {{dataAccessor(data, name)}}       </td>     </ng-container>   `,   encapsulation: ViewEncapsulation.None,   // Change detection is intentionally not set to OnPush. This component's template will be provided   // to the table to be inserted into its view. This is problematic when change detection runs since   // the bindings in this template will be evaluated _after_ the table's view is evaluated, which   // mean's the template in the table's view will not have the updated value (and in fact will cause   // an ExpressionChangedAfterItHasBeenCheckedError).   // tslint:disable-next-line:validate-decorators   changeDetection: ChangeDetectionStrategy.Default, }) export class CdkTextColumn<T> implements OnDestroy, OnInit {   /** Column name that should be used to reference this column. */   @Input()   get name(): string {     return this._name;   }   set name(name: string) {     this._name = name;      // With Ivy, inputs can be initialized before static query results are     // available. In that case, we defer the synchronization until \"ngOnInit\" fires.     this._syncColumnDefName();   }   _name: string;    /**    * Text label that should be used for the column header. If this property is not    * set, the header text will default to the column name with its first letter capitalized.    */   @Input() headerText: string;    /**    * Accessor function to retrieve the data rendered for each cell. If this    * property is not set, the data cells will render the value found in the data's property matching    * the column's name. For example, if the column is named `id`, then the rendered value will be    * value defined by the data's `id` property.    */   @Input() dataAccessor: (data: T, name: string) => string;    /** Alignment of the cell values. */   @Input() justify: 'start' | 'end' | 'center' = 'start';    /** @docs-private */   @ViewChild(CdkColumnDef, {static: true}) columnDef: CdkColumnDef;    /**    * The column cell is provided to the column during `ngOnInit` with a static query.    * Normally, this will be retrieved by the column using `ContentChild`, but that assumes the    * column definition was provided in the same view as the table, which is not the case with this    * component.    * @docs-private    */   @ViewChild(CdkCellDef, {static: true}) cell: CdkCellDef;    /**    * The column headerCell is provided to the column during `ngOnInit` with a static query.    * Normally, this will be retrieved by the column using `ContentChild`, but that assumes the    * column definition was provided in the same view as the table, which is not the case with this    * component.    * @docs-private    */   @ViewChild(CdkHeaderCellDef, {static: true}) headerCell: CdkHeaderCellDef;    constructor(     // `CdkTextColumn` is always requiring a table, but we just assert it manually     // for better error reporting.     // tslint:disable-next-line: lightweight-tokens     @Optional() private _table: CdkTable<T>,     @Optional() @Inject(TEXT_COLUMN_OPTIONS) private _options: TextColumnOptions<T>,   ) {     this._options = _options || {};   }    ngOnInit() {     this._syncColumnDefName();      if (this.headerText === undefined) {       this.headerText = this._createDefaultHeaderText();     }      if (!this.dataAccessor) {       this.dataAccessor =         this._options.defaultDataAccessor || ((data: T, name: string) => (data as any)[name]);     }      if (this._table) {       // Provide the cell and headerCell directly to the table with the static `ViewChild` query,       // since the columnDef will not pick up its content by the time the table finishes checking       // its content and initializing the rows.       this.columnDef.cell = this.cell;       this.columnDef.headerCell = this.headerCell;       this._table.addColumnDef(this.columnDef);     } else if (typeof ngDevMode === 'undefined' || ngDevMode) {       throw getTableTextColumnMissingParentTableError();     }   }    ngOnDestroy() {     if (this._table) {       this._table.removeColumnDef(this.columnDef);     }   }    /**    * Creates a default header text. Use the options' header text transformation function if one    * has been provided. Otherwise simply capitalize the column name.    */   _createDefaultHeaderText() {     const name = this.name;      if (!name && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getTableTextColumnMissingNameError();     }      if (this._options && this._options.defaultHeaderTextTransform) {       return this._options.defaultHeaderTextTransform(name);     }      return name[0].toUpperCase() + name.slice(1);   }    /** Synchronizes the column definition name with the text column name. */   private _syncColumnDefName() {     if (this.columnDef) {       this.columnDef.name = this.name;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {   HeaderRowOutlet,   DataRowOutlet,   CdkTable,   CdkRecycleRows,   FooterRowOutlet,   NoDataRowOutlet, } from './table'; import {   CdkCellOutlet,   CdkFooterRow,   CdkFooterRowDef,   CdkHeaderRow,   CdkHeaderRowDef,   CdkRow,   CdkRowDef,   CdkNoDataRow, } from './row'; import {   CdkColumnDef,   CdkHeaderCellDef,   CdkHeaderCell,   CdkCell,   CdkCellDef,   CdkFooterCellDef,   CdkFooterCell, } from './cell'; import {CdkTextColumn} from './text-column'; import {ScrollingModule} from '@angular/cdk/scrolling';  const EXPORTED_DECLARATIONS = [   CdkTable,   CdkRowDef,   CdkCellDef,   CdkCellOutlet,   CdkHeaderCellDef,   CdkFooterCellDef,   CdkColumnDef,   CdkCell,   CdkRow,   CdkHeaderCell,   CdkFooterCell,   CdkHeaderRow,   CdkHeaderRowDef,   CdkFooterRow,   CdkFooterRowDef,   DataRowOutlet,   HeaderRowOutlet,   FooterRowOutlet,   CdkTextColumn,   CdkNoDataRow,   CdkRecycleRows,   NoDataRowOutlet, ];  @NgModule({   exports: EXPORTED_DECLARATIONS,   declarations: EXPORTED_DECLARATIONS,   imports: [ScrollingModule], }) export class CdkTableModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './table'; export * from './cell'; export * from './coalesced-style-scheduler'; export * from './row'; export * from './table-module'; export * from './sticky-styler'; export * from './sticky-position-listener'; export * from './can-stick'; export * from './text-column'; export * from './tokens';  /** Re-export DataSource for a more intuitive experience for users of just the table. */ export {DataSource} from '@angular/cdk/collections'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["observableOf","i2.CdkCellDef","i2.CdkHeaderCellDef","i2.CdkColumnDef","i2.CdkCell","i2.CdkHeaderCell"],"mappings":";;;;;;;;;;;;;AAAA;;;;;;AAMG;AA8BH;;;;;AAKG;AACG,SAAU,mBAAmB,CAA4B,IAAO,EAAA;IACpE,OAAO,cAAc,IAAI,CAAA;;AAEvB,QAAA,IAAI,MAAM,GAAA;YACR,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;QACD,IAAI,MAAM,CAAC,CAAe,EAAA;AACxB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;AAC/B,YAAA,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,iBAAiB,GAAG,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC;SACrD;;QAOD,gBAAgB,GAAA;AACd,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAChD,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC/B,YAAA,OAAO,gBAAgB,CAAC;SACzB;;QAGD,kBAAkB,GAAA;AAChB,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;SAChC;AAED,QAAA,WAAA,CAAY,GAAG,IAAW,EAAA;AACxB,YAAA,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AAlBjB,YAAA,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;;AAGzB,YAAA,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;SAgBlC;KACF,CAAC;AACJ;;AC1EA;;;;;;AAMG;AAIH;;;AAGG;MACU,SAAS,GAAG,IAAI,cAAc,CAAM,WAAW,EAAE;AAc9D;MACa,mBAAmB,GAAG,IAAI,cAAc,CACnD,qBAAqB;;AC9BvB;;;;;;AAMG;AAoBH;;;AAGG;MAEU,UAAU,CAAA;IACrB,WAAY,sBAA4B,QAA0B,EAAA;AAA1B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;KAAI;;4GAD3D,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGAAV,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,SAAS;mBAAC,EAAC,QAAQ,EAAE,cAAc,EAAC,CAAA;;AAKrC;;;AAGG;MAEU,gBAAgB,CAAA;IAC3B,WAAY,sBAA4B,QAA0B,EAAA;AAA1B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;KAAI;;kHAD3D,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAAhB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,SAAS;mBAAC,EAAC,QAAQ,EAAE,oBAAoB,EAAC,CAAA;;AAK3C;;;AAGG;MAEU,gBAAgB,CAAA;IAC3B,WAAY,sBAA4B,QAA0B,EAAA;AAA1B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;KAAI;;kHAD3D,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAAhB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,SAAS;mBAAC,EAAC,QAAQ,EAAE,oBAAoB,EAAC,CAAA;;AAK3C;AACA;AACA,MAAM,gBAAgB,CAAA;AAAG,CAAA;AACzB,MAAM,iBAAiB,GACrB,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;AAExC;;;AAGG;AAMG,MAAO,YAAa,SAAQ,iBAAiB,CAAA;;AAEjD,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,IAAI,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KAC1B;AAGD;;;;AAIG;AACH,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IACD,IAAI,SAAS,CAAC,CAAe,EAAA;AAC3B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,iBAAiB,GAAG,SAAS,KAAK,IAAI,CAAC,UAAU,CAAC;KACxD;AAyBD,IAAA,WAAA,CAAkD,MAAY,EAAA;AAC5D,QAAA,KAAK,EAAE,CAAC;AADwC,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAM;AAxB9D,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;KA0B3B;AAED;;;;;;AAMG;IACO,yBAAyB,GAAA;QACjC,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAA,WAAA,EAAc,IAAI,CAAC,oBAAoB,CAAE,CAAA,CAAC,CAAC;KACxE;AAED;;;;;AAKG;AACO,IAAA,aAAa,CAAC,KAAa,EAAA;;;AAGnC,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;YAChE,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAClC,SAAA;KACF;;AA9EU,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,kBAiDH,SAAS,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjDlB,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,IAAA,EAAA,YAAY,+HAFZ,CAAC,EAAC,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAE,YAAY,EAAC,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA8BjE,UAAU,EAGV,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,gBAAgB,6EAGhB,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAlCnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,MAAM,EAAE,CAAC,QAAQ,CAAC;oBAClB,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAc,YAAA,EAAC,CAAC;iBAChF,CAAA;;;8BAkDc,MAAM;+BAAC,SAAS,CAAA;;8BAAG,QAAQ;;yBA9CpC,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,cAAc,CAAA;gBAejB,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,WAAW,CAAA;gBAYQ,IAAI,EAAA,CAAA;sBAA7B,YAAY;uBAAC,UAAU,CAAA;gBAGQ,UAAU,EAAA,CAAA;sBAAzC,YAAY;uBAAC,gBAAgB,CAAA;gBAGE,UAAU,EAAA,CAAA;sBAAzC,YAAY;uBAAC,gBAAgB,CAAA;;AA+ChC;MACa,WAAW,CAAA;IACtB,WAAY,CAAA,SAAuB,EAAE,UAAsB,EAAA;AACzD,QAAA,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,mBAAmB,CAAC,CAAC;KAC1E;AACF,CAAA;AAED;AAQM,MAAO,aAAc,SAAQ,WAAW,CAAA;IAC5C,WAAY,CAAA,SAAuB,EAAE,UAAsB,EAAA;AACzD,QAAA,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;KAC9B;;+GAHU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAb,aAAa,EAAA,QAAA,EAAA,sCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,iBAAiB;AAC1B,wBAAA,MAAM,EAAE,cAAc;AACvB,qBAAA;iBACF,CAAA;;AAOD;AAOM,MAAO,aAAc,SAAQ,WAAW,CAAA;IAC5C,WAAY,CAAA,SAAuB,EAAE,UAAsB,EAAA;;AACzD,QAAA,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAA,CAAA,EAAA,GAAA,SAAS,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CAAC,aAAa,CAAC,QAAQ,MAAK,CAAC,EAAE;AAC9D,YAAA,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAClF,YAAA,MAAM,IAAI,GAAG,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;YACpF,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrD,SAAA;KACF;;+GARU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAb,aAAa,EAAA,QAAA,EAAA,sCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,iBAAiB;AAC3B,qBAAA;iBACF,CAAA;;AAYD;AAOM,MAAO,OAAQ,SAAQ,WAAW,CAAA;IACtC,WAAY,CAAA,SAAuB,EAAE,UAAsB,EAAA;;AACzD,QAAA,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAA,CAAA,EAAA,GAAA,SAAS,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CAAC,aAAa,CAAC,QAAQ,MAAK,CAAC,EAAE;AAC9D,YAAA,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAClF,YAAA,MAAM,IAAI,GAAG,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;YACpF,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrD,SAAA;KACF;;yGARU,OAAO,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;6FAAP,OAAO,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBANnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,UAAU;AACpB,qBAAA;iBACF,CAAA;;;AClMD;;;;;;AAMG;AAMH;;AAEG;MACU,SAAS,CAAA;AAAtB,IAAA,WAAA,GAAA;AACE,QAAA,IAAK,CAAA,KAAA,GAAsB,EAAE,CAAC;AAC9B,QAAA,IAAQ,CAAA,QAAA,GAAsB,EAAE,CAAC;KAClC;AAAA,CAAA;AAED;MACa,0BAA0B,GAAG,IAAI,cAAc,CAC1D,4BAA4B,EAC5B;AAEF;;;;;;AAMG;MAEU,wBAAwB,CAAA;AAInC,IAAA,WAAA,CAA6B,OAAe,EAAA;AAAf,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;AAHpC,QAAA,IAAgB,CAAA,gBAAA,GAAqB,IAAI,CAAC;AACjC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;KAEF;AAEhD;;AAEG;AACH,IAAA,QAAQ,CAAC,IAAmB,EAAA;QAC1B,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,IAAI,CAAC,gBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACzC;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,IAAmB,EAAA;QAC7B,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5C;;IAGD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;IAEO,uBAAuB,GAAA;QAC7B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,SAAS,EAAE,CAAC;QAExC,IAAI,CAAC,sBAAsB,EAAE;AAC1B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,MAAK;AACd,YAAA,OAAO,IAAI,CAAC,gBAAiB,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpF,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAiB,CAAC;;AAGxC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,SAAS,EAAE,CAAC;AAExC,gBAAA,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;AACjC,oBAAA,IAAI,EAAE,CAAC;AACR,iBAAA;AAED,gBAAA,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACpC,oBAAA,IAAI,EAAE,CAAC;AACR,iBAAA;AACF,aAAA;AAED,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC/B,SAAC,CAAC,CAAC;KACN;IAEO,sBAAsB,GAAA;;;AAG5B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ;cACxB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,cAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KACzC;;0HAlEU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8HAAxB,wBAAwB,EAAA,CAAA,CAAA;gGAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;;AChCX;;;;;;AAMG;AAsBH;;;AAGG;AACI,MAAM,gBAAgB,GAAG,8CAA8C;AAE9E;;;AAGG;MAEmB,UAAU,CAAA;AAO9B,IAAA,WAAA;yBAC8B,QAA0B,EAC5C,QAAyB,EAAA;AADP,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;AAC5C,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;KACjC;AAEJ,IAAA,WAAW,CAAC,OAAsB,EAAA;;;AAGhC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,KAAK,EAAE,CAAC;AAC9E,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;AAC3D,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,SAAA;KACF;AAED;;;AAGG;IACH,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC/C;;AAGD,IAAA,mBAAmB,CAAC,MAAoB,EAAA;QACtC,IAAI,IAAI,YAAY,eAAe,EAAE;AACnC,YAAA,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;AACnC,SAAA;QACD,IAAI,IAAI,YAAY,eAAe,EAAE;AACnC,YAAA,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;AACnC,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,SAAA;KACF;;4GAxCmB,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGAAV,UAAU,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;;AA4CV;AACA;AACA,MAAM,4BAA4B,UAAU,CAAA;AAAG,CAAA;AAC/C,MAAM,oBAAoB,GACxB,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;AAE3C;;;AAGG;AAKG,MAAO,eAAgB,SAAQ,oBAAoB,CAAA;AACvD,IAAA,WAAA,CACE,QAA0B,EAC1B,QAAyB,EACa,MAAY,EAAA;AAElD,QAAA,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAFY,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAM;KAGnD;;;AAIQ,IAAA,WAAW,CAAC,OAAsB,EAAA;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KAC5B;;AAbU,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,4EAIhB,SAAS,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAJR,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,MAAM,EAAE,CAAC,0BAA0B,EAAE,+BAA+B,CAAC;iBACtE,CAAA;;;8BAKI,MAAM;+BAAC,SAAS,CAAA;;8BAAG,QAAQ;;;AAYhC;AACA;AACA,MAAM,4BAA4B,UAAU,CAAA;AAAG,CAAA;AAC/C,MAAM,oBAAoB,GACxB,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;AAE3C;;;AAGG;AAKG,MAAO,eAAgB,SAAQ,oBAAoB,CAAA;AACvD,IAAA,WAAA,CACE,QAA0B,EAC1B,QAAyB,EACa,MAAY,EAAA;AAElD,QAAA,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAFY,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAM;KAGnD;;;AAIQ,IAAA,WAAW,CAAC,OAAsB,EAAA;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KAC5B;;AAbU,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,4EAIhB,SAAS,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAJR,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,MAAM,EAAE,CAAC,0BAA0B,EAAE,+BAA+B,CAAC;iBACtE,CAAA;;;8BAKI,MAAM;+BAAC,SAAS,CAAA;;8BAAG,QAAQ;;;AAYhC;;;;AAIG;AAKG,MAAO,SAAa,SAAQ,UAAU,CAAA;;;AAW1C,IAAA,WAAA,CACE,QAA0B,EAC1B,QAAyB,EACa,MAAY,EAAA;AAElD,QAAA,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAFY,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAM;KAGnD;;AAjBU,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,4EAcV,SAAS,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+FAdR,SAAS,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,IAAA,EAAA,CAAA,eAAA,EAAA,MAAA,CAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAJrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,MAAM,EAAE,CAAC,2BAA2B,EAAE,qBAAqB,CAAC;iBAC7D,CAAA;;;8BAeI,MAAM;+BAAC,SAAS,CAAA;;8BAAG,QAAQ;;;AA6DhC;;;AAGG;MAEU,aAAa,CAAA;AAgBxB,IAAA,WAAA,CAAmB,cAAgC,EAAA;AAAhC,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAkB;AACjD,QAAA,aAAa,CAAC,oBAAoB,GAAG,IAAI,CAAC;KAC3C;IAED,WAAW,GAAA;;;AAGT,QAAA,IAAI,aAAa,CAAC,oBAAoB,KAAK,IAAI,EAAE;AAC/C,YAAA,aAAa,CAAC,oBAAoB,GAAG,IAAI,CAAC;AAC3C,SAAA;KACF;;AAnBD;;;;;;AAMG;AACI,aAAoB,CAAA,oBAAA,GAAyB,IAAI,CAAC;+GAd9C,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAb,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,SAAS;mBAAC,EAAC,QAAQ,EAAE,iBAAiB,EAAC,CAAA;;AA8BxC;MAaa,YAAY,CAAA;;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,IAAA,EAAA,YAAY,8PA1CZ,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;gGA0Cb,YAAY,EAAA,UAAA,EAAA,CAAA;kBAZxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,gBAAgB;AACzB,wBAAA,MAAM,EAAE,KAAK;AACd,qBAAA;;;oBAGD,eAAe,EAAE,uBAAuB,CAAC,OAAO;oBAChD,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACtC,CAAA;;AAGD;MAaa,YAAY,CAAA;;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,IAAA,EAAA,YAAY,8PAzDZ,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;gGAyDb,YAAY,EAAA,UAAA,EAAA,CAAA;kBAZxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,gBAAgB;AACzB,wBAAA,MAAM,EAAE,KAAK;AACd,qBAAA;;;oBAGD,eAAe,EAAE,uBAAuB,CAAC,OAAO;oBAChD,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACtC,CAAA;;AAGD;MAaa,MAAM,CAAA;;wGAAN,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAN,MAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAM,yOAxEN,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;gGAwEb,MAAM,EAAA,UAAA,EAAA,CAAA;kBAZlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,SAAS;AAClB,wBAAA,MAAM,EAAE,KAAK;AACd,qBAAA;;;oBAGD,eAAe,EAAE,uBAAuB,CAAC,OAAO;oBAChD,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACtC,CAAA;;AAGD;MAIa,YAAY,CAAA;AAEvB,IAAA,WAAA,CAAmB,WAA6B,EAAA;AAA7B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;AADhD,QAAA,IAAiB,CAAA,iBAAA,GAAG,iBAAiB,CAAC;KACc;;8GAFzC,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAZ,YAAY,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;iBACtC,CAAA;;;ACpTD;;;;;;AAMG;AAYH;;;AAGG;AACI,MAAM,iBAAiB,GAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AAEvF;;;AAGG;MACU,YAAY,CAAA;AAIvB;;;;;;;;;;;;;AAaG;AACH,IAAA,WAAA,CACU,kBAA2B,EAC3B,aAAqB,EACtB,SAAoB,EACnB,wBAAkD,EAClD,UAAA,GAAa,IAAI,EACR,6BAAgC,GAAA,IAAI,EACpC,iBAA6C,EAAA;AANtD,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAS;AAC3B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAQ;AACtB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;AACnB,QAAA,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;AAClD,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAO;AACR,QAAA,IAA6B,CAAA,6BAAA,GAA7B,6BAA6B,CAAO;AACpC,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAA4B;AAxBxD,QAAA,IAAiB,CAAA,iBAAA,GAAa,EAAE,CAAC;QA0BvC,IAAI,CAAC,cAAc,GAAG;YACpB,KAAK,EAAE,CAAG,EAAA,aAAa,CAAkB,gBAAA,CAAA;YACzC,QAAQ,EAAE,CAAG,EAAA,aAAa,CAAqB,mBAAA,CAAA;YAC/C,MAAM,EAAE,CAAG,EAAA,aAAa,CAAmB,iBAAA,CAAA;YAC3C,OAAO,EAAE,CAAG,EAAA,aAAa,CAAoB,kBAAA,CAAA;SAC9C,CAAC;KACH;AAED;;;;;AAKG;IACH,sBAAsB,CAAC,IAAmB,EAAE,gBAAmC,EAAA;QAC7E,MAAM,eAAe,GAAkB,EAAE,CAAC;AAC1C,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;;;AAGtB,YAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,YAAY,EAAE;gBACrC,SAAS;AACV,aAAA;AAED,YAAA,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5C,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAgB,CAAC,CAAC;AACtD,aAAA;AACF,SAAA;;AAGD,QAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAK;AAC1C,YAAA,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE;AACrC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACpD,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;;;;;;;;;AAUG;IACH,mBAAmB,CACjB,IAAmB,EACnB,iBAA4B,EAC5B,eAA0B,EAC1B,qBAAqB,GAAG,IAAI,EAAA;QAE5B,IACE,CAAC,IAAI,CAAC,MAAM;YACZ,CAAC,IAAI,CAAC,UAAU;YAChB,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,EACjF;YACA,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,EAAC,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;gBACzD,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,EAAC,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;AAC7D,aAAA;YAED,OAAO;AACR,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC1C,MAAM,UAAU,GAAa,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QAElF,MAAM,cAAc,GAAG,IAAI,CAAC,8BAA8B,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAC1F,MAAM,YAAY,GAAG,IAAI,CAAC,4BAA4B,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAEpF,MAAM,eAAe,GAAG,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;AAGrD,QAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAK;AAC1C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;YACvC,MAAM,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;YACvC,MAAM,GAAG,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAErC,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;oBACjC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAgB,CAAC;AAC5C,oBAAA,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE;AACxB,wBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,eAAe,CAAC,CAAC;AAC7E,qBAAA;AAED,oBAAA,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE;AACtB,wBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,cAAc,CAAC,CAAC;AACxE,qBAAA;AACF,iBAAA;AACF,aAAA;YAED,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC;AAC1C,oBAAA,KAAK,EACH,eAAe,KAAK,CAAC,CAAC;AACpB,0BAAE,EAAE;AACJ,0BAAE,UAAU;AACP,6BAAA,KAAK,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC;6BAC7B,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,MAAM,iBAAiB,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;AAC1E,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC;AAC7C,oBAAA,KAAK,EACH,cAAc,KAAK,CAAC,CAAC;AACnB,0BAAE,EAAE;AACJ,0BAAE,UAAU;6BACP,KAAK,CAAC,cAAc,CAAC;6BACrB,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,MAAM,eAAe,CAAC,KAAK,GAAG,cAAc,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;AAC/E,6BAAA,OAAO,EAAE;AACnB,iBAAA,CAAC,CAAC;AACJ,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;;;;;;;;;AAUG;AACH,IAAA,SAAS,CAAC,WAA0B,EAAE,YAAuB,EAAE,QAA0B,EAAA;;AAEvF,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;AACR,SAAA;;;;AAKD,QAAA,MAAM,IAAI,GAAG,QAAQ,KAAK,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC;AACjF,QAAA,MAAM,MAAM,GAAG,QAAQ,KAAK,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC;;QAGrF,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,MAAM,iBAAiB,GAA2B,EAAE,CAAC;QACrD,MAAM,eAAe,GAAoB,EAAE,CAAC;AAC5C,QAAA,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;AAC3E,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBACrB,SAAS;AACV,aAAA;AAED,YAAA,aAAa,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;AACvC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,YAAA,eAAe,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,kBAAkB;kBAC9C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAmB;AAC7C,kBAAE,CAAC,GAAG,CAAC,CAAC;YAEV,MAAM,MAAM,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YAClD,YAAY,IAAI,MAAM,CAAC;AACvB,YAAA,iBAAiB,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AACtC,SAAA;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;;AAIlD,QAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAK;;AAC1C,YAAA,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;AACzD,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;oBACrB,SAAS;AACV,iBAAA;AAED,gBAAA,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AACvC,gBAAA,MAAM,kBAAkB,GAAG,QAAQ,KAAK,gBAAgB,CAAC;AACzD,gBAAA,KAAK,MAAM,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE;oBAC/C,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;AACrE,iBAAA;AACF,aAAA;YAED,IAAI,QAAQ,KAAK,KAAK,EAAE;AACtB,gBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,uBAAuB,CAAC;AAC9C,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,OAAO,EAAE,aAAa;AACtB,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;AACL,gBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,uBAAuB,CAAC;AAC9C,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,OAAO,EAAE,aAAa;AACtB,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA,CAAC,CAAC;AACJ,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;;;;AAKG;IACH,2BAA2B,CAAC,YAAqB,EAAE,YAAuB,EAAA;AACxE,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,OAAO;AACR,SAAA;QAED,MAAM,KAAK,GAAG,YAAY,CAAC,aAAa,CAAC,OAAO,CAAE,CAAC;;AAGnD,QAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAK;YAC1C,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE;gBACtC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5C,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACjD,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;;;AAIG;IACH,kBAAkB,CAAC,OAAoB,EAAE,gBAAmC,EAAA;AAC1E,QAAA,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE;AAClC,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACxB,YAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,SAAA;;;;;QAMD,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CACzC,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAClE,CAAC;AACF,QAAA,IAAI,YAAY,EAAE;YAChB,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC3D,SAAA;AAAM,aAAA;;AAEL,YAAA,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,6BAA6B,EAAE;AACtC,gBAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC7B,aAAA;YACD,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC9C,SAAA;KACF;AAED;;;;AAIG;AACH,IAAA,eAAe,CACb,OAAoB,EACpB,GAAoB,EACpB,QAAgB,EAChB,eAAwB,EAAA;QAExB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC1C,QAAA,IAAI,eAAe,EAAE;AACnB,YAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,SAAA;QACD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAI,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,6BAA6B,EAAE;AACtC,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,8CAA8C,CAAC;AACzE,SAAA;KACF;AAED;;;;;;;;;;AAUG;AACH,IAAA,oBAAoB,CAAC,OAAoB,EAAA;AACvC,QAAA,MAAM,gBAAgB,GAAG;AACvB,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,KAAK,EAAE,CAAC;SACT,CAAC;QAEF,IAAI,MAAM,GAAG,CAAC,CAAC;;;;AAIf,QAAA,KAAK,MAAM,GAAG,IAAI,iBAAkE,EAAE;AACpF,YAAA,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACtB,gBAAA,MAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACjC,aAAA;AACF,SAAA;QAED,OAAO,MAAM,GAAG,CAAA,EAAG,MAAM,CAAA,CAAE,GAAG,EAAE,CAAC;KAClC;;AAGD,IAAA,cAAc,CAAC,GAAgB,EAAE,qBAAqB,GAAG,IAAI,EAAA;QAC3D,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YAC3D,OAAO,IAAI,CAAC,iBAAiB,CAAC;AAC/B,SAAA;QAED,MAAM,UAAU,GAAa,EAAE,CAAC;AAChC,QAAA,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC;AACnC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,YAAA,IAAI,IAAI,GAAgB,aAAa,CAAC,CAAC,CAAgB,CAAC;YACxD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAC;AACrD,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;AACpC,QAAA,OAAO,UAAU,CAAC;KACnB;AAED;;;;AAIG;IACH,8BAA8B,CAAC,MAAgB,EAAE,YAAuB,EAAA;QACtE,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;AACnB,gBAAA,SAAS,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;AAC5B,gBAAA,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3B,aAAA;AACF,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KAClB;AAED;;;;AAIG;IACH,4BAA4B,CAAC,MAAgB,EAAE,YAAuB,EAAA;QACpE,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB,QAAA,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;AACnB,gBAAA,SAAS,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;AAC5B,gBAAA,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3B,aAAA;AACF,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KAClB;AACF;;AC1ZD;;;;;;AAMG;AAEH;;;;AAIG;AACG,SAAU,0BAA0B,CAAC,EAAU,EAAA;AACnD,IAAA,OAAO,KAAK,CAAC,CAAA,+BAAA,EAAkC,EAAE,CAAA,EAAA,CAAI,CAAC,CAAC;AACzD,CAAC;AAED;;;AAGG;AACG,SAAU,gCAAgC,CAAC,IAAY,EAAA;AAC3D,IAAA,OAAO,KAAK,CAAC,CAAA,4CAAA,EAA+C,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;AACxE,CAAC;AAED;;;AAGG;SACa,mCAAmC,GAAA;AACjD,IAAA,OAAO,KAAK,CAAC,CAAsE,oEAAA,CAAA,CAAC,CAAC;AACvF,CAAC;AAED;;;AAGG;AACG,SAAU,kCAAkC,CAAC,IAAS,EAAA;IAC1D,OAAO,KAAK,CACV,CAAkD,gDAAA,CAAA;QAChD,CAAsB,mBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAE,CAC/C,CAAC;AACJ,CAAC;AAED;;;AAGG;SACa,2BAA2B,GAAA;IACzC,OAAO,KAAK,CACV,mDAAmD;AACjD,QAAA,oDAAoD,CACvD,CAAC;AACJ,CAAC;AAED;;;AAGG;SACa,8BAA8B,GAAA;AAC5C,IAAA,OAAO,KAAK,CAAC,CAAwE,sEAAA,CAAA,CAAC,CAAC;AACzF,CAAC;AAED;;;AAGG;SACa,yCAAyC,GAAA;AACvD,IAAA,OAAO,KAAK,CAAC,CAA6D,2DAAA,CAAA,CAAC,CAAC;AAC9E,CAAC;AAED;;;AAGG;SACa,kCAAkC,GAAA;AAChD,IAAA,OAAO,KAAK,CAAC,CAAqC,mCAAA,CAAA,CAAC,CAAC;AACtD;;AC7EA;;;;;;AAMG;AAIH;MACa,2BAA2B,GAAG,IAAI,cAAc,CAA4B,SAAS;;AC6ElG;;;AAGG;MAKU,cAAc,CAAA;;gHAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAd,cAAc,EAAA,QAAA,EAAA,uDAAA,EAAA,SAAA,EAFd,CAAC,EAAC,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,4BAA4B,EAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAE5E,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uDAAuD;oBACjE,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,4BAA4B,EAAC,CAAC;iBACxF,CAAA;;AAWD;;;AAGG;MAEU,aAAa,CAAA;IACxB,WAAmB,CAAA,aAA+B,EAAS,UAAsB,EAAA;AAA9D,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAAS,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAAI;;+GAD1E,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAb,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,SAAS;mBAAC,EAAC,QAAQ,EAAE,aAAa,EAAC,CAAA;;AAKpC;;;AAGG;MAEU,eAAe,CAAA;IAC1B,WAAmB,CAAA,aAA+B,EAAS,UAAsB,EAAA;AAA9D,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAAS,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAAI;;iHAD1E,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAAf,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,SAAS;mBAAC,EAAC,QAAQ,EAAE,mBAAmB,EAAC,CAAA;;AAK1C;;;AAGG;MAEU,eAAe,CAAA;IAC1B,WAAmB,CAAA,aAA+B,EAAS,UAAsB,EAAA;AAA9D,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAAS,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAAI;;iHAD1E,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAAf,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,SAAS;mBAAC,EAAC,QAAQ,EAAE,mBAAmB,EAAC,CAAA;;AAK1C;;;;AAIG;MAEU,eAAe,CAAA;IAC1B,WAAmB,CAAA,aAA+B,EAAS,UAAsB,EAAA;AAA9D,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAAS,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAAI;;iHAD1E,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAAf,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,SAAS;mBAAC,EAAC,QAAQ,EAAE,mBAAmB,EAAC,CAAA;;AAK1C;;;;AAIG;MACU,kBAAkB;AAC7B;AACA;AACA,CAAA;;;;;;;EAOA;AAUF;;;AAGG;AACH,MAAe,mBAAsB,eAA8B,CAAA;AAAG,CAAA;AAqBtE;;;;;AAKG;MAwBU,QAAQ,CAAA;AAgJnB;;;;;AAKG;AACH,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IACD,IAAI,OAAO,CAAC,EAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,EAAE,IAAI,IAAI,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAC7F,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,yCAAA,EAA4C,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAG,CAAA,CAAA,CAAC,CAAC;AACjF,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACtB;AAGD;;;;;;;;;;;;;;;;;;;AAmBG;AACH,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IACD,IAAI,UAAU,CAAC,UAAsC,EAAA;AACnD,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;AACnC,YAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACpC,SAAA;KACF;AAGD;;;;;AAKG;AACH,IAAA,IACI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACpC;IACD,IAAI,qBAAqB,CAAC,CAAe,EAAA;AACvC,QAAA,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;;;QAIvD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE;YAC3D,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACjC,SAAA;KACF;AAGD;;;AAGG;AACH,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IACD,IAAI,WAAW,CAAC,CAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;;AAG7C,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;AACxC,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;KAC1C;AAqDD,IAAA,WAAA,CACqB,QAAyB,EACzB,kBAAqC,EACrC,WAAuB,EACvB,IAAY,EACA,IAAoB,EACjC,SAAc,EACxB,SAAmB,EAER,aAA4D,EAE5D,wBAAkD,EACpD,cAA6B;AAC9C;;;AAGG;IAIgB,0BAAqD;AACxE;;;AAGG;IAEgB,OAAgB,EAAA;AAzBhB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;AACzB,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;AACrC,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;AAEX,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAgB;AAE3C,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;AAER,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAA+C;AAE5D,QAAA,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;AACpD,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAe;AAQ3B,QAAA,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B,CAA2B;AAMrD,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;;AA7SpB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;AAQlD;;;;AAIG;AACK,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAAwB,CAAC;AA4B5D;;;;AAIG;AACK,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAAgB,CAAC;AAEpD;;;;AAIG;AACK,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,GAAG,EAAgB,CAAC;AAEjD;;;;AAIG;AACK,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,GAAG,EAAmB,CAAC;AAE1D;;;;AAIG;AACK,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,GAAG,EAAmB,CAAC;AAK1D;;;AAGG;AACK,QAAA,IAAoB,CAAA,oBAAA,GAAG,IAAI,CAAC;AAEpC;;;AAGG;AACK,QAAA,IAAoB,CAAA,oBAAA,GAAG,IAAI,CAAC;AAEpC;;;AAGG;AACK,QAAA,IAA4B,CAAA,4BAAA,GAAG,IAAI,CAAC;AAE5C;;;;AAIG;AACK,QAAA,IAA2B,CAAA,2BAAA,GAAG,IAAI,CAAC;AAE3C;;;;;;;;;;;;AAYG;AACK,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,GAAG,EAA4C,CAAC;AAWnF;;;AAGG;AACO,QAAA,IAAc,CAAA,cAAA,GAAW,kBAAkB,CAAC;AAEtD;;;;AAIG;AACO,QAAA,IAA4B,CAAA,4BAAA,GAAG,IAAI,CAAC;;AAGtC,QAAA,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAuEpC,QAAA,IAAsB,CAAA,sBAAA,GAAY,KAAK,CAAC;AAiBhC,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAEtC;;;AAGG;AAEM,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;;;AAInD;;;;;AAKG;AACM,QAAA,IAAU,CAAA,UAAA,GAAG,IAAI,eAAe,CAA+B;AACtE,YAAA,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,MAAM,CAAC,SAAS;AACtB,SAAA,CAAC,CAAC;QA4DD,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9D,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,KAAK,OAAO,CAAC;KAC/E;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAClC,SAAA;;;;AAKD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAU,EAAE,OAAqB,KAAI;YACrF,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;AAChF,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,cAAc;AAChB,aAAA,MAAM,EAAE;AACR,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;AAC1C,SAAC,CAAC,CAAC;KACN;IAED,qBAAqB,GAAA;;QAEnB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;;AAGxB,QAAA,IACE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM;AAC3B,YAAA,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM;AAC3B,YAAA,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;AACrB,aAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAC/C;YACA,MAAM,2BAA2B,EAAE,CAAC;AACrC,SAAA;;AAGD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACpD,MAAM,cAAc,GAAG,cAAc,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC;;QAEhG,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,IAAI,cAAc,CAAC;AACxF,QAAA,IAAI,CAAC,2BAA2B,GAAG,cAAc,CAAC;;QAGlD,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AACnC,SAAA;;QAGD,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AACnC,SAAA;;;AAID,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;YAClF,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC9B,SAAA;aAAM,IAAI,IAAI,CAAC,4BAA4B,EAAE;;;YAG5C,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACjC,SAAA;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IAED,WAAW,GAAA;AACT,QAAA;YACE,IAAI,CAAC,UAAU,CAAC,aAAa;YAC7B,IAAI,CAAC,gBAAgB,CAAC,aAAa;YACnC,IAAI,CAAC,gBAAgB,CAAC,aAAa;AACnC,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,IAAI,CAAC,iBAAiB;AACtB,YAAA,IAAI,CAAC,cAAc;AACnB,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,IAAI,CAAC,iBAAiB;AACvB,SAAA,CAAC,OAAO,CAAC,GAAG,IAAG;YACd,GAAG,CAAC,KAAK,EAAE,CAAC;AACd,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;AAE3B,QAAA,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAClC,SAAA;KACF;AAED;;;;;;;;;AASG;IACH,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YAC3B,OAAO;AACR,SAAA;AACD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAEpD,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAC7B,OAAO,EACP,aAAa,EACb,CACE,MAA0C,EAC1C,sBAAqC,EACrC,YAA2B,KACxB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,YAAa,CAAC,EAC1D,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAC1B,CAAC,MAA4D,KAAI;YAC/D,IAAI,MAAM,CAAC,SAAS,KAAA,CAAA,0CAAwC,MAAM,CAAC,OAAO,EAAE;AAC1E,gBAAA,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5E,aAAA;AACH,SAAC,CACF,CAAC;;QAGF,IAAI,CAAC,sBAAsB,EAAE,CAAC;;;AAI9B,QAAA,OAAO,CAAC,qBAAqB,CAAC,CAAC,MAA0C,KAAI;YAC3E,MAAM,OAAO,GAAkB,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,YAAa,CAAC,CAAC;YACvE,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/C,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,EAAE,CAAC;;;QAIxB,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,eAAe,EAAE,EAAE;YAC5C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;gBAC7E,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAClC,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACjC,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC5B;;AAGD,IAAA,YAAY,CAAC,SAAuB,EAAA;AAClC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KACvC;;AAGD,IAAA,eAAe,CAAC,SAAuB,EAAA;AACrC,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;KAC1C;;AAGD,IAAA,SAAS,CAAC,MAAoB,EAAA;AAC5B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KACjC;;AAGD,IAAA,YAAY,CAAC,MAAoB,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACpC;;AAGD,IAAA,eAAe,CAAC,YAA6B,EAAA;AAC3C,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;KAClC;;AAGD,IAAA,kBAAkB,CAAC,YAA6B,EAAA;AAC9C,QAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;KAClC;;AAGD,IAAA,eAAe,CAAC,YAA6B,EAAA;AAC3C,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;KAClC;;AAGD,IAAA,kBAAkB,CAAC,YAA6B,EAAA;AAC9C,QAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;KAClC;;AAGD,IAAA,YAAY,CAAC,SAA8B,EAAA;AACzC,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;KACnC;AAED;;;;;;AAMG;IACH,2BAA2B,GAAA;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAChE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,aAA4B,CAAC;;;;QAKnE,MAAM,KAAK,GAAG,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAClD,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;AACvD,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;;AAG9D,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC;KAC9D;AAED;;;;;;AAMG;IACH,2BAA2B,GAAA;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAChE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,aAA4B,CAAC;;;;QAKnE,MAAM,KAAK,GAAG,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAClD,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;AACvD,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;;AAG7F,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC;KAC9D;AAED;;;;;;AAMG;IACH,wBAAwB,GAAA;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;;;;;AAMhE,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,4BAA4B,EAAE;;;YAGxF,IAAI,CAAC,aAAa,CAAC,sBAAsB,CACvC,CAAC,GAAG,UAAU,EAAE,GAAG,QAAQ,EAAE,GAAG,UAAU,CAAC,EAC3C,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAC;AACF,YAAA,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;AAC3C,SAAA;;QAGD,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,KAAI;AAClC,YAAA,IAAI,CAAC,sBAAsB,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,SAAC,CAAC,CAAC;;AAGH,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAG;;YAE7B,MAAM,IAAI,GAAkB,EAAE,CAAC;AAC/B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE;oBACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,iBAAA;AACF,aAAA;AAED,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;;QAGH,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,KAAI;AAClC,YAAA,IAAI,CAAC,sBAAsB,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,SAAC,CAAC,CAAC;;QAGH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC;KACtF;AAED;;;;AAIG;IACK,iBAAiB,GAAA;QACvB,MAAM,UAAU,GAAmB,EAAE,CAAC;;;AAItC,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACvD,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;;;AAItC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,EAAE,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAE9F,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACxC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;AACpD,aAAA;AAED,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,gBAAA,IAAI,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAErC,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAE,CAAC;gBAC7D,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AAC/B,oBAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9C,iBAAA;AAAM,qBAAA;oBACL,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1C,iBAAA;AACD,gBAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5B,aAAA;AACF,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;AAED;;;;AAIG;AACK,IAAA,qBAAqB,CAC3B,IAAO,EACP,SAAiB,EACjB,KAA6C,EAAA;QAE7C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAElD,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG;YAC1B,MAAM,gBAAgB,GAAG,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,GAAG,EAAE,CAAC;YAC9E,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAC3B,gBAAA,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,EAAG,CAAC;AAC1C,gBAAA,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AAC9B,gBAAA,OAAO,OAAO,CAAC;AAChB,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,EAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAC,CAAC;AAClC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;IAGO,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAE/B,QAAA,MAAM,UAAU,GAAG,gBAAgB,CACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,EACzC,IAAI,CAAC,iBAAiB,CACvB,CAAC;AACF,QAAA,UAAU,CAAC,OAAO,CAAC,SAAS,IAAG;YAC7B,IACE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1C,iBAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAC/C;AACA,gBAAA,MAAM,gCAAgC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,aAAA;YACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACxD,SAAC,CAAC,CAAC;KACJ;;IAGO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,cAAc,GAAG,gBAAgB,CACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAC5C,IAAI,CAAC,oBAAoB,CAC1B,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,GAAG,gBAAgB,CACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAC5C,IAAI,CAAC,oBAAoB,CAC1B,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;;AAG9F,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9D,IACE,CAAC,IAAI,CAAC,qBAAqB;YAC3B,cAAc,CAAC,MAAM,GAAG,CAAC;AACzB,aAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAC/C;YACA,MAAM,mCAAmC,EAAE,CAAC;AAC7C,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;KACzC;AAED;;;;AAIG;IACK,qBAAqB,GAAA;AAC3B,QAAA,MAAM,kBAAkB,GAAG,CAAC,GAAY,EAAE,GAAe,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;;AAG5F,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAC3E,QAAA,IAAI,kBAAkB,EAAE;YACtB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC7B,SAAA;;AAGD,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACnF,QAAA,IAAI,oBAAoB,EAAE;YACxB,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC/B,SAAA;AAED,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACnF,QAAA,IAAI,oBAAoB,EAAE;YACxB,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC/B,SAAA;AAED,QAAA,OAAO,kBAAkB,IAAI,oBAAoB,IAAI,oBAAoB,CAAC;KAC3E;AAED;;;;AAIG;AACK,IAAA,iBAAiB,CAAC,UAAsC,EAAA;AAC9D,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAEhB,QAAA,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAClC,SAAA;;QAGD,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAClC,YAAA,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;AAC7C,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;AACvC,SAAA;QAED,IAAI,CAAC,UAAU,EAAE;YACf,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3B,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACvC,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KAC/B;;IAGO,qBAAqB,GAAA;;AAE3B,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,UAAgD,CAAC;AAErD,QAAA,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACjC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5C,SAAA;AAAM,aAAA,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACxC,YAAA,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9B,SAAA;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACzC,YAAA,UAAU,GAAGA,EAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5C,SAAA;AAED,QAAA,IAAI,UAAU,KAAK,SAAS,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;YAC/E,MAAM,8BAA8B,EAAE,CAAC;AACxC,SAAA;QAED,IAAI,CAAC,yBAAyB,GAAG,UAAW;AACzC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,IAAI,IAAG;AAChB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;IACK,sBAAsB,GAAA;;QAE5B,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC7C,SAAA;QAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACpC;AAED;;;AAGG;IACK,sBAAsB,GAAA;;QAE5B,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC7C,SAAA;QAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACpC;;IAGO,sBAAsB,CAAC,IAAmB,EAAE,MAAkB,EAAA;AACpE,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,IAAG;YACnE,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AACjE,gBAAA,MAAM,0BAA0B,CAAC,UAAU,CAAC,CAAC;AAC9C,aAAA;AACD,YAAA,OAAO,SAAU,CAAC;AACpB,SAAC,CAAC,CAAC;AACH,QAAA,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;AACxE,QAAA,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;QACzE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CACpC,IAAI,EACJ,iBAAiB,EACjB,eAAe,EACf,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,2BAA2B,CACvD,CAAC;KACH;;AAGD,IAAA,gBAAgB,CAAC,SAAoB,EAAA;QACnC,MAAM,YAAY,GAAkB,EAAE,CAAC;AAEvC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvD,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAA0B,CAAC;YACxE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,SAAA;AAED,QAAA,OAAO,YAAY,CAAC;KACrB;AAED;;;;;AAKG;IACH,WAAW,CAAC,IAAO,EAAE,SAAiB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;YAC7B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAA;QAED,IAAI,OAAO,GAAmB,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/E,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,MAAM,GACR,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC;AAC1F,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,aAAA;AACF,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AACtE,YAAA,MAAM,kCAAkC,CAAC,IAAI,CAAC,CAAC;AAChD,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KAChB;IAEO,oBAAoB,CAC1B,SAAuB,EACvB,KAAa,EAAA;AAEb,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAChC,MAAM,OAAO,GAAkB,EAAC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAC,CAAC;QAC3D,OAAO;YACL,WAAW,EAAE,MAAM,CAAC,QAAQ;YAC5B,OAAO;YACP,KAAK;SACN,CAAC;KACH;AAED;;;;AAIG;IACK,UAAU,CAChB,MAAiB,EACjB,MAAkB,EAClB,KAAa,EACb,UAAyB,EAAE,EAAA;;AAG3B,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACtF,QAAA,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjD,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,0BAA0B,CAAC,MAAkB,EAAE,OAAsB,EAAA;QAC3E,KAAK,IAAI,YAAY,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;YACvD,IAAI,aAAa,CAAC,oBAAoB,EAAE;gBACtC,aAAa,CAAC,oBAAoB,CAAC,cAAc,CAAC,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAC7F,aAAA;AACF,SAAA;AAED,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;AAED;;;AAGG;IACK,sBAAsB,GAAA;AAC5B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACpD,QAAA,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,EAAE,WAAW,EAAE,EAAE;YAC1F,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,WAAW,CAAkB,CAAC;AAChE,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAwB,CAAC;AACjD,YAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;AACtB,YAAA,OAAO,CAAC,KAAK,GAAG,WAAW,KAAK,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,GAAG,WAAW,KAAK,KAAK,GAAG,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,GAAG,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC;AACrC,YAAA,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAE5B,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC9B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC;AAC5D,gBAAA,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;AACnC,aAAA;AAAM,iBAAA;gBACL,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC;AACzD,aAAA;AACF,SAAA;KACF;;AAGO,IAAA,iBAAiB,CAAC,MAAkB,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC9B,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAG;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEpD,IAAI,CAAC,MAAM,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AAC9D,gBAAA,MAAM,0BAA0B,CAAC,QAAQ,CAAC,CAAC;AAC5C,aAAA;AAED,YAAA,OAAO,MAAM,CAAC,mBAAmB,CAAC,MAAO,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;KACJ;;IAGO,yBAAyB,GAAA;QAC/B,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC;AACjE,QAAA,MAAM,QAAQ,GAAG;YACf,EAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAC;AAChD,YAAA,EAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAC;YACjE,EAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAC;SACjD,CAAC;AAEF,QAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC1D,YAAA,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEzC,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE;gBACpC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACtD,aAAA;AAED,YAAA,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACvC,SAAA;;QAGD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;KAC9D;AAED;;;;AAIG;IACK,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;AAED;;;;AAIG;IACK,kBAAkB,GAAA;AACxB,QAAA,MAAM,kBAAkB,GAAG,CACzB,GAAY,EACZ,CAAmD,KACjD;AACF,YAAA,OAAO,GAAG,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;AACrC,SAAC,CAAC;;;;QAMF,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE;YACzD,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACpC,SAAA;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE;YACzD,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACpC,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE;AACjF,YAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;YACzC,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACjC,SAAA;KACF;AAED;;;;AAIG;IACK,kBAAkB,GAAA;AACxB,QAAA,MAAM,SAAS,GAAc,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACjE,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,CACnC,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,cAAc,EACnB,SAAS,EACT,IAAI,CAAC,wBAAwB,EAC7B,IAAI,CAAC,SAAS,CAAC,SAAS,EACxB,IAAI,CAAC,4BAA4B,EACjC,IAAI,CAAC,0BAA0B,CAChC,CAAC;AACF,QAAA,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAGA,EAAY,EAAa;AACtD,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,KAAK,IAAG;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,KAAK,CAAC;YACrC,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAClC,SAAC,CAAC,CAAC;KACN;;AAGO,IAAA,WAAW,CAA2B,KAAmB,EAAA;AAC/D,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;KACnE;;IAGO,gBAAgB,GAAA;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,UAAU,CAAC;QAE3D,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;AACR,SAAA;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC;AAE9D,QAAA,IAAI,UAAU,KAAK,IAAI,CAAC,mBAAmB,EAAE;YAC3C,OAAO;AACR,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;AAEtD,QAAA,IAAI,UAAU,EAAE;YACd,MAAM,IAAI,GAAG,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACjE,MAAM,QAAQ,GAA4B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;;YAI5D,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,QAAQ,MAAK,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;AACrF,gBAAA,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACrC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;AACrD,aAAA;AACF,SAAA;AAAM,aAAA;YACL,SAAS,CAAC,KAAK,EAAE,CAAC;AACnB,SAAA;AAED,QAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC;KACvC;;0GA5lCU,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EA8RN,MAAM,EAET,SAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,QAAQ,qCAER,uBAAuB,EAAA,EAAA,EAAA,KAAA,EAEvB,0BAA0B,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAS1B,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA7S1B,QAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAQ,EARR,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA,EAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAC;AAC3C,QAAA,EAAC,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,4BAA4B,EAAC;AAC1E,QAAA,EAAC,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,wBAAwB,EAAC;;AAEzE,QAAA,EAAC,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,IAAI,EAAC;AACvD,KAAA,EA0Ra,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,YAAY,EAlBT,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,YAAY,EAGZ,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,SAAS,2EAGT,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,SAAA,EAMf,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EArBrB,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACb,eAAe,EACf,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,eAAe,EACf,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,eAAe,EA/Wf,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,wDASb,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EASf,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAUf,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;gGAmFf,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAvBpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAC7B,QAAA,EAAA,UAAU,EACV,QAAA,EAAA,kBAAkB,EAEtB,IAAA,EAAA;AACJ,wBAAA,OAAO,EAAE,WAAW;AACpB,wBAAA,gCAAgC,EAAE,aAAa;AAChD,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,mBAKpB,uBAAuB,CAAC,OAAO,EACrC,SAAA,EAAA;AACT,wBAAA,EAAC,OAAO,EAAE,SAAS,EAAE,WAAW,UAAU,EAAC;AAC3C,wBAAA,EAAC,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,4BAA4B,EAAC;AAC1E,wBAAA,EAAC,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,wBAAwB,EAAC;;AAEzE,wBAAA,EAAC,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,IAAI,EAAC;AACvD,qBAAA,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA,CAAA;;;8BAgSE,SAAS;+BAAC,MAAM,CAAA;;8BAChB,QAAQ;;8BACR,MAAM;+BAAC,QAAQ,CAAA;;8BAEf,MAAM;+BAAC,uBAAuB,CAAA;;8BAE9B,MAAM;+BAAC,0BAA0B,CAAA;;8BAOjC,QAAQ;;8BACR,QAAQ;;8BACR,MAAM;+BAAC,2BAA2B,CAAA;;8BAMlC,QAAQ;;yBA5JP,OAAO,EAAA,CAAA;sBADV,KAAK;gBAiCF,UAAU,EAAA,CAAA;sBADb,KAAK;gBAkBF,qBAAqB,EAAA,CAAA;sBADxB,KAAK;gBAqBF,WAAW,EAAA,CAAA;sBADd,KAAK;gBAkBG,cAAc,EAAA,CAAA;sBADtB,MAAM;gBAiBmC,UAAU,EAAA,CAAA;sBAAnD,SAAS;gBAAC,IAAA,EAAA,CAAA,aAAa,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAA;gBACI,gBAAgB,EAAA,CAAA;sBAA3D,SAAS;gBAAC,IAAA,EAAA,CAAA,eAAe,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAA;gBACE,gBAAgB,EAAA,CAAA;sBAA3D,SAAS;gBAAC,IAAA,EAAA,CAAA,eAAe,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAA;gBACE,gBAAgB,EAAA,CAAA;sBAA3D,SAAS;gBAAC,IAAA,EAAA,CAAA,eAAe,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAA;gBAMU,kBAAkB,EAAA,CAAA;sBAArE,eAAe;gBAAC,IAAA,EAAA,CAAA,YAAY,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,CAAA;gBAGD,eAAe,EAAA,CAAA;sBAA/D,eAAe;gBAAC,IAAA,EAAA,CAAA,SAAS,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,CAAA;gBAM/C,qBAAqB,EAAA,CAAA;sBAHpB,eAAe;gBAAC,IAAA,EAAA,CAAA,eAAe,EAAE;AAChC,wBAAA,WAAW,EAAE,IAAI;qBAClB,CAAA;gBAOD,qBAAqB,EAAA,CAAA;sBAHpB,eAAe;gBAAC,IAAA,EAAA,CAAA,eAAe,EAAE;AAChC,wBAAA,WAAW,EAAE,IAAI;qBAClB,CAAA;gBAI2B,UAAU,EAAA,CAAA;sBAArC,YAAY;uBAAC,YAAY,CAAA;;AAu0B5B;AACA,SAAS,gBAAgB,CAAI,KAAU,EAAE,GAAW,EAAA;IAClD,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC;;ACh0CA;;;;;;AAMG;AAqBH;;;;;;;;AAQG;MAsBU,aAAa,CAAA;;AAExB,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,IAAI,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;;;QAIlB,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;AAyCD,IAAA,WAAA;;;;AAIsB,IAAA,MAAmB,EACU,QAA8B,EAAA;AAD3D,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAa;AACU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAsB;;AA5BxE,QAAA,IAAO,CAAA,OAAA,GAA+B,OAAO,CAAC;AA8BrD,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;KAChC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAE1B,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACnD,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY;AACf,gBAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,KAAK,CAAC,IAAO,EAAE,IAAY,KAAM,IAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AACzF,SAAA;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;;;;YAIf,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1C,SAAA;AAAM,aAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;YACxD,MAAM,yCAAyC,EAAE,CAAC;AACnD,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7C,SAAA;KACF;AAED;;;AAGG;IACH,wBAAwB,GAAA;AACtB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEvB,IAAI,CAAC,IAAI,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;YAC5D,MAAM,kCAAkC,EAAE,CAAC;AAC5C,SAAA;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,0BAA0B,EAAE;YAC7D,OAAO,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;AACvD,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC9C;;IAGO,kBAAkB,GAAA;QACxB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACjC,SAAA;KACF;;AApHU,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,uDA0DF,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA1D9B,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,IAAA,EAAA,aAAa,wMAiCb,YAAY,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EASZ,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EASV,gBAAgB,EAtEjB,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;GAST,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;gGAUU,aAAa,EAAA,UAAA,EAAA,CAAA;kBArBzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;AAST,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;;;;;;;oBAOrC,eAAe,EAAE,uBAAuB,CAAC,OAAO;iBACjD,CAAA;;;8BA0DI,QAAQ;;8BACR,QAAQ;;8BAAI,MAAM;+BAAC,mBAAmB,CAAA;;yBAvDrC,IAAI,EAAA,CAAA;sBADP,KAAK;gBAiBG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAQG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAGG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAGmC,SAAS,EAAA,CAAA;sBAAjD,SAAS;gBAAC,IAAA,EAAA,CAAA,YAAY,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAA;gBASA,IAAI,EAAA,CAAA;sBAA1C,SAAS;gBAAC,IAAA,EAAA,CAAA,UAAU,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAA;gBASQ,UAAU,EAAA,CAAA;sBAAtD,SAAS;gBAAC,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAA;;;AC5G7C;;;;;;AAMG;AAiCH,MAAM,qBAAqB,GAAG;IAC5B,QAAQ;IACR,SAAS;IACT,UAAU;IACV,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,OAAO;IACP,MAAM;IACN,aAAa;IACb,aAAa;IACb,YAAY;IACZ,eAAe;IACf,YAAY;IACZ,eAAe;IACf,aAAa;IACb,eAAe;IACf,eAAe;IACf,aAAa;IACb,YAAY;IACZ,cAAc;IACd,eAAe;CAChB,CAAC;MAOW,cAAc,CAAA;;gHAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBA7BzB,QAAQ;QACR,SAAS;QACT,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,gBAAgB;QAChB,YAAY;QACZ,OAAO;QACP,MAAM;QACN,aAAa;QACb,aAAa;QACb,YAAY;QACZ,eAAe;QACf,YAAY;QACZ,eAAe;QACf,aAAa;QACb,eAAe;QACf,eAAe;QACf,aAAa;QACb,YAAY;QACZ,cAAc;QACd,eAAe,CAAA,EAAA,OAAA,EAAA,CAML,eAAe,CAAA,EAAA,OAAA,EAAA,CA3BzB,QAAQ;QACR,SAAS;QACT,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,gBAAgB;QAChB,YAAY;QACZ,OAAO;QACP,MAAM;QACN,aAAa;QACb,aAAa;QACb,YAAY;QACZ,eAAe;QACf,YAAY;QACZ,eAAe;QACf,aAAa;QACb,eAAe;QACf,eAAe;QACf,aAAa;QACb,YAAY;QACZ,cAAc;QACd,eAAe,CAAA,EAAA,CAAA,CAAA;AAQJ,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAFf,eAAe,CAAA,EAAA,CAAA,CAAA;gGAEd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,qBAAqB;AAC9B,oBAAA,YAAY,EAAE,qBAAqB;oBACnC,OAAO,EAAE,CAAC,eAAe,CAAC;iBAC3B,CAAA;;;ACpED;;;;;;AAMG;;ACNH;;;;;;AAMG;;ACNH;;AAEG;;;;"}
-------------------- SECTION 198 --------------------
{"version":3,"file":"accordion.mjs","sources":["../../../../../../src/cdk/accordion/accordion.ts","../../../../../../src/cdk/accordion/accordion-item.ts","../../../../../../src/cdk/accordion/accordion-module.ts","../../../../../../src/cdk/accordion/public-api.ts","../../../../../../src/cdk/accordion/index.ts","../../../../../../src/cdk/accordion/accordion_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {Directive, InjectionToken, Input, OnChanges, OnDestroy, SimpleChanges} from '@angular/core'; import {Subject} from 'rxjs';  /** Used to generate unique ID for each accordion. */ let nextId = 0;  /**  * Injection token that can be used to reference instances of `CdkAccordion`. It serves  * as alternative token to the actual `CdkAccordion` class which could cause unnecessary  * retention of the class and its directive metadata.  */ export const CDK_ACCORDION = new InjectionToken<CdkAccordion>('CdkAccordion');  /**  * Directive whose purpose is to manage the expanded state of CdkAccordionItem children.  */ @Directive({   selector: 'cdk-accordion, [cdkAccordion]',   exportAs: 'cdkAccordion',   providers: [{provide: CDK_ACCORDION, useExisting: CdkAccordion}], }) export class CdkAccordion implements OnDestroy, OnChanges {   /** Emits when the state of the accordion changes */   readonly _stateChanges = new Subject<SimpleChanges>();    /** Stream that emits true/false when openAll/closeAll is triggered. */   readonly _openCloseAllActions: Subject<boolean> = new Subject<boolean>();    /** A readonly id value to use for unique selection coordination. */   readonly id: string = `cdk-accordion-${nextId++}`;    /** Whether the accordion should allow multiple expanded accordion items simultaneously. */   @Input()   get multi(): boolean {     return this._multi;   }   set multi(multi: BooleanInput) {     this._multi = coerceBooleanProperty(multi);   }   private _multi: boolean = false;    /** Opens all enabled accordion items in an accordion where multi is enabled. */   openAll(): void {     if (this._multi) {       this._openCloseAllActions.next(true);     }   }    /** Closes all enabled accordion items. */   closeAll(): void {     this._openCloseAllActions.next(false);   }    ngOnChanges(changes: SimpleChanges) {     this._stateChanges.next(changes);   }    ngOnDestroy() {     this._stateChanges.complete();     this._openCloseAllActions.complete();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   Output,   Directive,   EventEmitter,   Input,   OnDestroy,   Optional,   ChangeDetectorRef,   SkipSelf,   Inject, } from '@angular/core'; import {UniqueSelectionDispatcher} from '@angular/cdk/collections'; import {CDK_ACCORDION, CdkAccordion} from './accordion'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {Subscription} from 'rxjs';  /** Used to generate unique ID for each accordion item. */ let nextId = 0;  /**  * An basic directive expected to be extended and decorated as a component.  Sets up all  * events and attributes needed to be managed by a CdkAccordion parent.  */ @Directive({   selector: 'cdk-accordion-item, [cdkAccordionItem]',   exportAs: 'cdkAccordionItem',   providers: [     // Provide `CDK_ACCORDION` as undefined to prevent nested accordion items from     // registering to the same accordion.     {provide: CDK_ACCORDION, useValue: undefined},   ], }) export class CdkAccordionItem implements OnDestroy {   /** Subscription to openAll/closeAll events. */   private _openCloseAllSubscription = Subscription.EMPTY;   /** Event emitted every time the AccordionItem is closed. */   @Output() readonly closed: EventEmitter<void> = new EventEmitter<void>();   /** Event emitted every time the AccordionItem is opened. */   @Output() readonly opened: EventEmitter<void> = new EventEmitter<void>();   /** Event emitted when the AccordionItem is destroyed. */   @Output() readonly destroyed: EventEmitter<void> = new EventEmitter<void>();    /**    * Emits whenever the expanded state of the accordion changes.    * Primarily used to facilitate two-way binding.    * @docs-private    */   @Output() readonly expandedChange: EventEmitter<boolean> = new EventEmitter<boolean>();    /** The unique AccordionItem id. */   readonly id: string = `cdk-accordion-child-${nextId++}`;    /** Whether the AccordionItem is expanded. */   @Input()   get expanded(): boolean {     return this._expanded;   }   set expanded(expanded: BooleanInput) {     expanded = coerceBooleanProperty(expanded);      // Only emit events and update the internal value if the value changes.     if (this._expanded !== expanded) {       this._expanded = expanded;       this.expandedChange.emit(expanded);        if (expanded) {         this.opened.emit();         /**          * In the unique selection dispatcher, the id parameter is the id of the CdkAccordionItem,          * the name value is the id of the accordion.          */         const accordionId = this.accordion ? this.accordion.id : this.id;         this._expansionDispatcher.notify(this.id, accordionId);       } else {         this.closed.emit();       }        // Ensures that the animation will run when the value is set outside of an `@Input`.       // This includes cases like the open, close and toggle methods.       this._changeDetectorRef.markForCheck();     }   }   private _expanded = false;    /** Whether the AccordionItem is disabled. */   @Input()   get disabled(): boolean {     return this._disabled;   }   set disabled(disabled: BooleanInput) {     this._disabled = coerceBooleanProperty(disabled);   }   private _disabled = false;    /** Unregister function for _expansionDispatcher. */   private _removeUniqueSelectionListener: () => void = () => {};    constructor(     @Optional() @Inject(CDK_ACCORDION) @SkipSelf() public accordion: CdkAccordion,     private _changeDetectorRef: ChangeDetectorRef,     protected _expansionDispatcher: UniqueSelectionDispatcher,   ) {     this._removeUniqueSelectionListener = _expansionDispatcher.listen(       (id: string, accordionId: string) => {         if (           this.accordion &&           !this.accordion.multi &&           this.accordion.id === accordionId &&           this.id !== id         ) {           this.expanded = false;         }       },     );      // When an accordion item is hosted in an accordion, subscribe to open/close events.     if (this.accordion) {       this._openCloseAllSubscription = this._subscribeToOpenCloseAllActions();     }   }    /** Emits an event for the accordion item being destroyed. */   ngOnDestroy() {     this.opened.complete();     this.closed.complete();     this.destroyed.emit();     this.destroyed.complete();     this._removeUniqueSelectionListener();     this._openCloseAllSubscription.unsubscribe();   }    /** Toggles the expanded state of the accordion item. */   toggle(): void {     if (!this.disabled) {       this.expanded = !this.expanded;     }   }    /** Sets the expanded state of the accordion item to false. */   close(): void {     if (!this.disabled) {       this.expanded = false;     }   }    /** Sets the expanded state of the accordion item to true. */   open(): void {     if (!this.disabled) {       this.expanded = true;     }   }    private _subscribeToOpenCloseAllActions(): Subscription {     return this.accordion._openCloseAllActions.subscribe(expanded => {       // Only change expanded state if item is enabled       if (!this.disabled) {         this.expanded = expanded;       }     });   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {CdkAccordion} from './accordion'; import {CdkAccordionItem} from './accordion-item';  @NgModule({   exports: [CdkAccordion, CdkAccordionItem],   declarations: [CdkAccordion, CdkAccordionItem], }) export class CdkAccordionModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export {CdkAccordionItem} from './accordion-item'; export {CdkAccordion} from './accordion'; export * from './accordion-module'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["nextId"],"mappings":"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"}
-------------------- SECTION 199 --------------------
{"version":3,"file":"scrolling.mjs","sources":["../../../../../../src/cdk/scrolling/virtual-scroll-strategy.ts","../../../../../../src/cdk/scrolling/fixed-size-virtual-scroll.ts","../../../../../../src/cdk/scrolling/scroll-dispatcher.ts","../../../../../../src/cdk/scrolling/scrollable.ts","../../../../../../src/cdk/scrolling/viewport-ruler.ts","../../../../../../src/cdk/scrolling/virtual-scrollable.ts","../../../../../../src/cdk/scrolling/virtual-scroll-viewport.ts","../../../../../../src/cdk/scrolling/virtual-scroll-viewport.html","../../../../../../src/cdk/scrolling/virtual-for-of.ts","../../../../../../src/cdk/scrolling/virtual-scrollable-element.ts","../../../../../../src/cdk/scrolling/virtual-scrollable-window.ts","../../../../../../src/cdk/scrolling/scrolling-module.ts","../../../../../../src/cdk/scrolling/virtual-scroll-repeater.ts","../../../../../../src/cdk/scrolling/public-api.ts","../../../../../../src/cdk/scrolling/index.ts","../../../../../../src/cdk/scrolling/scrolling_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core'; import {Observable} from 'rxjs'; import {CdkVirtualScrollViewport} from './virtual-scroll-viewport';  /** The injection token used to specify the virtual scrolling strategy. */ export const VIRTUAL_SCROLL_STRATEGY = new InjectionToken<VirtualScrollStrategy>(   'VIRTUAL_SCROLL_STRATEGY', );  /** A strategy that dictates which items should be rendered in the viewport. */ export interface VirtualScrollStrategy {   /** Emits when the index of the first element visible in the viewport changes. */   scrolledIndexChange: Observable<number>;    /**    * Attaches this scroll strategy to a viewport.    * @param viewport The viewport to attach this strategy to.    */   attach(viewport: CdkVirtualScrollViewport): void;    /** Detaches this scroll strategy from the currently attached viewport. */   detach(): void;    /** Called when the viewport is scrolled (debounced using requestAnimationFrame). */   onContentScrolled(): void;    /** Called when the length of the data changes. */   onDataLengthChanged(): void;    /** Called when the range of items rendered in the DOM has changed. */   onContentRendered(): void;    /** Called when the offset of the rendered items changed. */   onRenderedOffsetChanged(): void;    /**    * Scroll to the offset for the given index.    * @param index The index of the element to scroll to.    * @param behavior The ScrollBehavior to use when scrolling.    */   scrollToIndex(index: number, behavior: ScrollBehavior): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion'; import {Directive, forwardRef, Input, OnChanges} from '@angular/core'; import {Observable, Subject} from 'rxjs'; import {distinctUntilChanged} from 'rxjs/operators'; import {VIRTUAL_SCROLL_STRATEGY, VirtualScrollStrategy} from './virtual-scroll-strategy'; import {CdkVirtualScrollViewport} from './virtual-scroll-viewport';  /** Virtual scrolling strategy for lists with items of known fixed size. */ export class FixedSizeVirtualScrollStrategy implements VirtualScrollStrategy {   private readonly _scrolledIndexChange = new Subject<number>();    /** @docs-private Implemented as part of VirtualScrollStrategy. */   scrolledIndexChange: Observable<number> = this._scrolledIndexChange.pipe(distinctUntilChanged());    /** The attached viewport. */   private _viewport: CdkVirtualScrollViewport | null = null;    /** The size of the items in the virtually scrolling list. */   private _itemSize: number;    /** The minimum amount of buffer rendered beyond the viewport (in pixels). */   private _minBufferPx: number;    /** The number of buffer items to render beyond the edge of the viewport (in pixels). */   private _maxBufferPx: number;    /**    * @param itemSize The size of the items in the virtually scrolling list.    * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more    * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.    */   constructor(itemSize: number, minBufferPx: number, maxBufferPx: number) {     this._itemSize = itemSize;     this._minBufferPx = minBufferPx;     this._maxBufferPx = maxBufferPx;   }    /**    * Attaches this scroll strategy to a viewport.    * @param viewport The viewport to attach this strategy to.    */   attach(viewport: CdkVirtualScrollViewport) {     this._viewport = viewport;     this._updateTotalContentSize();     this._updateRenderedRange();   }    /** Detaches this scroll strategy from the currently attached viewport. */   detach() {     this._scrolledIndexChange.complete();     this._viewport = null;   }    /**    * Update the item size and buffer size.    * @param itemSize The size of the items in the virtually scrolling list.    * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more    * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.    */   updateItemAndBufferSize(itemSize: number, minBufferPx: number, maxBufferPx: number) {     if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');     }     this._itemSize = itemSize;     this._minBufferPx = minBufferPx;     this._maxBufferPx = maxBufferPx;     this._updateTotalContentSize();     this._updateRenderedRange();   }    /** @docs-private Implemented as part of VirtualScrollStrategy. */   onContentScrolled() {     this._updateRenderedRange();   }    /** @docs-private Implemented as part of VirtualScrollStrategy. */   onDataLengthChanged() {     this._updateTotalContentSize();     this._updateRenderedRange();   }    /** @docs-private Implemented as part of VirtualScrollStrategy. */   onContentRendered() {     /* no-op */   }    /** @docs-private Implemented as part of VirtualScrollStrategy. */   onRenderedOffsetChanged() {     /* no-op */   }    /**    * Scroll to the offset for the given index.    * @param index The index of the element to scroll to.    * @param behavior The ScrollBehavior to use when scrolling.    */   scrollToIndex(index: number, behavior: ScrollBehavior): void {     if (this._viewport) {       this._viewport.scrollToOffset(index * this._itemSize, behavior);     }   }    /** Update the viewport's total content size. */   private _updateTotalContentSize() {     if (!this._viewport) {       return;     }      this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);   }    /** Update the viewport's rendered range. */   private _updateRenderedRange() {     if (!this._viewport) {       return;     }      const renderedRange = this._viewport.getRenderedRange();     const newRange = {start: renderedRange.start, end: renderedRange.end};     const viewportSize = this._viewport.getViewportSize();     const dataLength = this._viewport.getDataLength();     let scrollOffset = this._viewport.measureScrollOffset();     // Prevent NaN as result when dividing by zero.     let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0;      // If user scrolls to the bottom of the list and data changes to a smaller list     if (newRange.end > dataLength) {       // We have to recalculate the first visible index based on new data length and viewport size.       const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);       const newVisibleIndex = Math.max(         0,         Math.min(firstVisibleIndex, dataLength - maxVisibleItems),       );        // If first visible index changed we must update scroll offset to handle start/end buffers       // Current range must also be adjusted to cover the new position (bottom of new list).       if (firstVisibleIndex != newVisibleIndex) {         firstVisibleIndex = newVisibleIndex;         scrollOffset = newVisibleIndex * this._itemSize;         newRange.start = Math.floor(firstVisibleIndex);       }        newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));     }      const startBuffer = scrollOffset - newRange.start * this._itemSize;     if (startBuffer < this._minBufferPx && newRange.start != 0) {       const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);       newRange.start = Math.max(0, newRange.start - expandStart);       newRange.end = Math.min(         dataLength,         Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize),       );     } else {       const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);       if (endBuffer < this._minBufferPx && newRange.end != dataLength) {         const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);         if (expandEnd > 0) {           newRange.end = Math.min(dataLength, newRange.end + expandEnd);           newRange.start = Math.max(             0,             Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize),           );         }       }     }      this._viewport.setRenderedRange(newRange);     this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);     this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));   } }  /**  * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created  * `FixedSizeVirtualScrollStrategy` from the given directive.  * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the  *     `FixedSizeVirtualScrollStrategy` from.  */ export function _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir: CdkFixedSizeVirtualScroll) {   return fixedSizeDir._scrollStrategy; }  /** A virtual scroll strategy that supports fixed-size items. */ @Directive({   selector: 'cdk-virtual-scroll-viewport[itemSize]',   standalone: true,   providers: [     {       provide: VIRTUAL_SCROLL_STRATEGY,       useFactory: _fixedSizeVirtualScrollStrategyFactory,       deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],     },   ], }) export class CdkFixedSizeVirtualScroll implements OnChanges {   /** The size of the items in the list (in pixels). */   @Input()   get itemSize(): number {     return this._itemSize;   }   set itemSize(value: NumberInput) {     this._itemSize = coerceNumberProperty(value);   }   _itemSize = 20;    /**    * The minimum amount of buffer rendered beyond the viewport (in pixels).    * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.    */   @Input()   get minBufferPx(): number {     return this._minBufferPx;   }   set minBufferPx(value: NumberInput) {     this._minBufferPx = coerceNumberProperty(value);   }   _minBufferPx = 100;    /**    * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.    */   @Input()   get maxBufferPx(): number {     return this._maxBufferPx;   }   set maxBufferPx(value: NumberInput) {     this._maxBufferPx = coerceNumberProperty(value);   }   _maxBufferPx = 200;    /** The scroll strategy used by this directive. */   _scrollStrategy = new FixedSizeVirtualScrollStrategy(     this.itemSize,     this.minBufferPx,     this.maxBufferPx,   );    ngOnChanges() {     this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {coerceElement} from '@angular/cdk/coercion'; import {Platform} from '@angular/cdk/platform'; import {ElementRef, Injectable, NgZone, OnDestroy, Optional, Inject} from '@angular/core'; import {fromEvent, of as observableOf, Subject, Subscription, Observable, Observer} from 'rxjs'; import {auditTime, filter} from 'rxjs/operators'; import {CdkScrollable} from './scrollable'; import {DOCUMENT} from '@angular/common';  /** Time in ms to throttle the scrolling events by default. */ export const DEFAULT_SCROLL_TIME = 20;  /**  * Service contained all registered Scrollable references and emits an event when any one of the  * Scrollable references emit a scrolled event.  */ @Injectable({providedIn: 'root'}) export class ScrollDispatcher implements OnDestroy {   /** Used to reference correct document/window */   protected _document: Document;    constructor(     private _ngZone: NgZone,     private _platform: Platform,     @Optional() @Inject(DOCUMENT) document: any,   ) {     this._document = document;   }    /** Subject for notifying that a registered scrollable reference element has been scrolled. */   private readonly _scrolled = new Subject<CdkScrollable | void>();    /** Keeps track of the global `scroll` and `resize` subscriptions. */   _globalSubscription: Subscription | null = null;    /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */   private _scrolledCount = 0;    /**    * Map of all the scrollable references that are registered with the service and their    * scroll event subscriptions.    */   scrollContainers: Map<CdkScrollable, Subscription> = new Map();    /**    * Registers a scrollable instance with the service and listens for its scrolled events. When the    * scrollable is scrolled, the service emits the event to its scrolled observable.    * @param scrollable Scrollable instance to be registered.    */   register(scrollable: CdkScrollable): void {     if (!this.scrollContainers.has(scrollable)) {       this.scrollContainers.set(         scrollable,         scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)),       );     }   }    /**    * De-registers a Scrollable reference and unsubscribes from its scroll event observable.    * @param scrollable Scrollable instance to be deregistered.    */   deregister(scrollable: CdkScrollable): void {     const scrollableReference = this.scrollContainers.get(scrollable);      if (scrollableReference) {       scrollableReference.unsubscribe();       this.scrollContainers.delete(scrollable);     }   }    /**    * Returns an observable that emits an event whenever any of the registered Scrollable    * references (or window, document, or body) fire a scrolled event. Can provide a time in ms    * to override the default \"throttle\" time.    *    * **Note:** in order to avoid hitting change detection for every scroll event,    * all of the events emitted from this stream will be run outside the Angular zone.    * If you need to update any data bindings as a result of a scroll event, you have    * to run the callback using `NgZone.run`.    */   scrolled(auditTimeInMs: number = DEFAULT_SCROLL_TIME): Observable<CdkScrollable | void> {     if (!this._platform.isBrowser) {       return observableOf<void>();     }      return new Observable((observer: Observer<CdkScrollable | void>) => {       if (!this._globalSubscription) {         this._addGlobalListener();       }        // In the case of a 0ms delay, use an observable without auditTime       // since it does add a perceptible delay in processing overhead.       const subscription =         auditTimeInMs > 0           ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer)           : this._scrolled.subscribe(observer);        this._scrolledCount++;        return () => {         subscription.unsubscribe();         this._scrolledCount--;          if (!this._scrolledCount) {           this._removeGlobalListener();         }       };     });   }    ngOnDestroy() {     this._removeGlobalListener();     this.scrollContainers.forEach((_, container) => this.deregister(container));     this._scrolled.complete();   }    /**    * Returns an observable that emits whenever any of the    * scrollable ancestors of an element are scrolled.    * @param elementOrElementRef Element whose ancestors to listen for.    * @param auditTimeInMs Time to throttle the scroll events.    */   ancestorScrolled(     elementOrElementRef: ElementRef | HTMLElement,     auditTimeInMs?: number,   ): Observable<CdkScrollable | void> {     const ancestors = this.getAncestorScrollContainers(elementOrElementRef);      return this.scrolled(auditTimeInMs).pipe(       filter(target => {         return !target || ancestors.indexOf(target) > -1;       }),     );   }    /** Returns all registered Scrollables that contain the provided element. */   getAncestorScrollContainers(elementOrElementRef: ElementRef | HTMLElement): CdkScrollable[] {     const scrollingContainers: CdkScrollable[] = [];      this.scrollContainers.forEach((_subscription: Subscription, scrollable: CdkScrollable) => {       if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {         scrollingContainers.push(scrollable);       }     });      return scrollingContainers;   }    /** Use defaultView of injected document if available or fallback to global window reference */   private _getWindow(): Window {     return this._document.defaultView || window;   }    /** Returns true if the element is contained within the provided Scrollable. */   private _scrollableContainsElement(     scrollable: CdkScrollable,     elementOrElementRef: ElementRef | HTMLElement,   ): boolean {     let element: HTMLElement | null = coerceElement(elementOrElementRef);     let scrollableElement = scrollable.getElementRef().nativeElement;      // Traverse through the element parents until we reach null, checking if any of the elements     // are the scrollable's element.     do {       if (element == scrollableElement) {         return true;       }     } while ((element = element!.parentElement));      return false;   }    /** Sets up the global scroll listeners. */   private _addGlobalListener() {     this._globalSubscription = this._ngZone.runOutsideAngular(() => {       const window = this._getWindow();       return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());     });   }    /** Cleans up the global scroll listener. */   private _removeGlobalListener() {     if (this._globalSubscription) {       this._globalSubscription.unsubscribe();       this._globalSubscription = null;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {   getRtlScrollAxisType,   RtlScrollAxisType,   supportsScrollBehavior, } from '@angular/cdk/platform'; import {Directive, ElementRef, NgZone, OnDestroy, OnInit, Optional} from '@angular/core'; import {fromEvent, Observable, Subject, Observer} from 'rxjs'; import {takeUntil} from 'rxjs/operators'; import {ScrollDispatcher} from './scroll-dispatcher';  export type _Without<T> = {[P in keyof T]?: never}; export type _XOR<T, U> = (_Without<T> & U) | (_Without<U> & T); export type _Top = {top?: number}; export type _Bottom = {bottom?: number}; export type _Left = {left?: number}; export type _Right = {right?: number}; export type _Start = {start?: number}; export type _End = {end?: number}; export type _XAxis = _XOR<_XOR<_Left, _Right>, _XOR<_Start, _End>>; export type _YAxis = _XOR<_Top, _Bottom>;  /**  * An extended version of ScrollToOptions that allows expressing scroll offsets relative to the  * top, bottom, left, right, start, or end of the viewport rather than just the top and left.  * Please note: the top and bottom properties are mutually exclusive, as are the left, right,  * start, and end properties.  */ export type ExtendedScrollToOptions = _XAxis & _YAxis & ScrollOptions;  /**  * Sends an event when the directive's element is scrolled. Registers itself with the  * ScrollDispatcher service to include itself as part of its collection of scrolling events that it  * can be listened to through the service.  */ @Directive({   selector: '[cdk-scrollable], [cdkScrollable]',   standalone: true, }) export class CdkScrollable implements OnInit, OnDestroy {   protected readonly _destroyed = new Subject<void>();    protected _elementScrolled: Observable<Event> = new Observable((observer: Observer<Event>) =>     this.ngZone.runOutsideAngular(() =>       fromEvent(this.elementRef.nativeElement, 'scroll')         .pipe(takeUntil(this._destroyed))         .subscribe(observer),     ),   );    constructor(     protected elementRef: ElementRef<HTMLElement>,     protected scrollDispatcher: ScrollDispatcher,     protected ngZone: NgZone,     @Optional() protected dir?: Directionality,   ) {}    ngOnInit() {     this.scrollDispatcher.register(this);   }    ngOnDestroy() {     this.scrollDispatcher.deregister(this);     this._destroyed.next();     this._destroyed.complete();   }    /** Returns observable that emits when a scroll event is fired on the host element. */   elementScrolled(): Observable<Event> {     return this._elementScrolled;   }    /** Gets the ElementRef for the viewport. */   getElementRef(): ElementRef<HTMLElement> {     return this.elementRef;   }    /**    * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo    * method, since browsers are not consistent about what scrollLeft means in RTL. For this method    * left and right always refer to the left and right side of the scrolling container irrespective    * of the layout direction. start and end refer to left and right in an LTR context and vice-versa    * in an RTL context.    * @param options specified the offsets to scroll to.    */   scrollTo(options: ExtendedScrollToOptions): void {     const el = this.elementRef.nativeElement;     const isRtl = this.dir && this.dir.value == 'rtl';      // Rewrite start & end offsets as right or left offsets.     if (options.left == null) {       options.left = isRtl ? options.end : options.start;     }      if (options.right == null) {       options.right = isRtl ? options.start : options.end;     }      // Rewrite the bottom offset as a top offset.     if (options.bottom != null) {       (options as _Without<_Bottom> & _Top).top =         el.scrollHeight - el.clientHeight - options.bottom;     }      // Rewrite the right offset as a left offset.     if (isRtl && getRtlScrollAxisType() != RtlScrollAxisType.NORMAL) {       if (options.left != null) {         (options as _Without<_Left> & _Right).right =           el.scrollWidth - el.clientWidth - options.left;       }        if (getRtlScrollAxisType() == RtlScrollAxisType.INVERTED) {         options.left = options.right;       } else if (getRtlScrollAxisType() == RtlScrollAxisType.NEGATED) {         options.left = options.right ? -options.right : options.right;       }     } else {       if (options.right != null) {         (options as _Without<_Right> & _Left).left =           el.scrollWidth - el.clientWidth - options.right;       }     }      this._applyScrollToOptions(options);   }    private _applyScrollToOptions(options: ScrollToOptions): void {     const el = this.elementRef.nativeElement;      if (supportsScrollBehavior()) {       el.scrollTo(options);     } else {       if (options.top != null) {         el.scrollTop = options.top;       }       if (options.left != null) {         el.scrollLeft = options.left;       }     }   }    /**    * Measures the scroll offset relative to the specified edge of the viewport. This method can be    * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent    * about what scrollLeft means in RTL. The values returned by this method are normalized such that    * left and right always refer to the left and right side of the scrolling container irrespective    * of the layout direction. start and end refer to left and right in an LTR context and vice-versa    * in an RTL context.    * @param from The edge to measure from.    */   measureScrollOffset(from: 'top' | 'left' | 'right' | 'bottom' | 'start' | 'end'): number {     const LEFT = 'left';     const RIGHT = 'right';     const el = this.elementRef.nativeElement;     if (from == 'top') {       return el.scrollTop;     }     if (from == 'bottom') {       return el.scrollHeight - el.clientHeight - el.scrollTop;     }      // Rewrite start & end as left or right offsets.     const isRtl = this.dir && this.dir.value == 'rtl';     if (from == 'start') {       from = isRtl ? RIGHT : LEFT;     } else if (from == 'end') {       from = isRtl ? LEFT : RIGHT;     }      if (isRtl && getRtlScrollAxisType() == RtlScrollAxisType.INVERTED) {       // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and       // 0 when scrolled all the way right.       if (from == LEFT) {         return el.scrollWidth - el.clientWidth - el.scrollLeft;       } else {         return el.scrollLeft;       }     } else if (isRtl && getRtlScrollAxisType() == RtlScrollAxisType.NEGATED) {       // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and       // 0 when scrolled all the way right.       if (from == LEFT) {         return el.scrollLeft + el.scrollWidth - el.clientWidth;       } else {         return -el.scrollLeft;       }     } else {       // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and       // (scrollWidth - clientWidth) when scrolled all the way right.       if (from == LEFT) {         return el.scrollLeft;       } else {         return el.scrollWidth - el.clientWidth - el.scrollLeft;       }     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Platform} from '@angular/cdk/platform'; import {Injectable, NgZone, OnDestroy, Optional, Inject} from '@angular/core'; import {Observable, Subject} from 'rxjs'; import {auditTime} from 'rxjs/operators'; import {DOCUMENT} from '@angular/common';  /** Time in ms to throttle the resize events by default. */ export const DEFAULT_RESIZE_TIME = 20;  /** Object that holds the scroll position of the viewport in each direction. */ export interface ViewportScrollPosition {   top: number;   left: number; }  /**  * Simple utility for getting the bounds of the browser viewport.  * @docs-private  */ @Injectable({providedIn: 'root'}) export class ViewportRuler implements OnDestroy {   /** Cached viewport dimensions. */   private _viewportSize: {width: number; height: number} | null;    /** Stream of viewport change events. */   private readonly _change = new Subject<Event>();    /** Event listener that will be used to handle the viewport change events. */   private _changeListener = (event: Event) => {     this._change.next(event);   };    /** Used to reference correct document/window */   protected _document: Document;    constructor(     private _platform: Platform,     ngZone: NgZone,     @Optional() @Inject(DOCUMENT) document: any,   ) {     this._document = document;      ngZone.runOutsideAngular(() => {       if (_platform.isBrowser) {         const window = this._getWindow();          // Note that bind the events ourselves, rather than going through something like RxJS's         // `fromEvent` so that we can ensure that they're bound outside of the NgZone.         window.addEventListener('resize', this._changeListener);         window.addEventListener('orientationchange', this._changeListener);       }        // Clear the cached position so that the viewport is re-measured next time it is required.       // We don't need to keep track of the subscription, because it is completed on destroy.       this.change().subscribe(() => (this._viewportSize = null));     });   }    ngOnDestroy() {     if (this._platform.isBrowser) {       const window = this._getWindow();       window.removeEventListener('resize', this._changeListener);       window.removeEventListener('orientationchange', this._changeListener);     }      this._change.complete();   }    /** Returns the viewport's width and height. */   getViewportSize(): Readonly<{width: number; height: number}> {     if (!this._viewportSize) {       this._updateViewportSize();     }      const output = {width: this._viewportSize!.width, height: this._viewportSize!.height};      // If we're not on a browser, don't cache the size since it'll be mocked out anyway.     if (!this._platform.isBrowser) {       this._viewportSize = null!;     }      return output;   }    /** Gets a ClientRect for the viewport's bounds. */   getViewportRect() {     // Use the document element's bounding rect rather than the window scroll properties     // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll     // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different     // conceptual viewports. Under most circumstances these viewports are equivalent, but they     // can disagree when the page is pinch-zoomed (on devices that support touch).     // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4     // We use the documentElement instead of the body because, by default (without a css reset)     // browsers typically give the document body an 8px margin, which is not included in     // getBoundingClientRect().     const scrollPosition = this.getViewportScrollPosition();     const {width, height} = this.getViewportSize();      return {       top: scrollPosition.top,       left: scrollPosition.left,       bottom: scrollPosition.top + height,       right: scrollPosition.left + width,       height,       width,     };   }    /** Gets the (top, left) scroll position of the viewport. */   getViewportScrollPosition(): ViewportScrollPosition {     // While we can get a reference to the fake document     // during SSR, it doesn't have getBoundingClientRect.     if (!this._platform.isBrowser) {       return {top: 0, left: 0};     }      // The top-left-corner of the viewport is determined by the scroll position of the document     // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about     // whether `document.body` or `document.documentElement` is the scrolled element, so reading     // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of     // `document.documentElement` works consistently, where the `top` and `left` values will     // equal negative the scroll position.     const document = this._document;     const window = this._getWindow();     const documentElement = document.documentElement!;     const documentRect = documentElement.getBoundingClientRect();      const top =       -documentRect.top ||       document.body.scrollTop ||       window.scrollY ||       documentElement.scrollTop ||       0;      const left =       -documentRect.left ||       document.body.scrollLeft ||       window.scrollX ||       documentElement.scrollLeft ||       0;      return {top, left};   }    /**    * Returns a stream that emits whenever the size of the viewport changes.    * This stream emits outside of the Angular zone.    * @param throttleTime Time in milliseconds to throttle the stream.    */   change(throttleTime: number = DEFAULT_RESIZE_TIME): Observable<Event> {     return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;   }    /** Use defaultView of injected document if available or fallback to global window reference */   private _getWindow(): Window {     return this._document.defaultView || window;   }    /** Updates the cached viewport size. */   private _updateViewportSize() {     const window = this._getWindow();     this._viewportSize = this._platform.isBrowser       ? {width: window.innerWidth, height: window.innerHeight}       : {width: 0, height: 0};   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {Directive, ElementRef, InjectionToken, NgZone, Optional} from '@angular/core'; import {ScrollDispatcher} from './scroll-dispatcher'; import {CdkScrollable} from './scrollable';  export const VIRTUAL_SCROLLABLE = new InjectionToken<CdkVirtualScrollable>('VIRTUAL_SCROLLABLE');  /**  * Extending the {@link CdkScrollable} to be used as scrolling container for virtual scrolling.  */ @Directive() export abstract class CdkVirtualScrollable extends CdkScrollable {   constructor(     elementRef: ElementRef<HTMLElement>,     scrollDispatcher: ScrollDispatcher,     ngZone: NgZone,     @Optional() dir?: Directionality,   ) {     super(elementRef, scrollDispatcher, ngZone, dir);   }    /**    * Measure the viewport size for the provided orientation.    *    * @param orientation The orientation to measure the size from.    */   measureViewportSize(orientation: 'horizontal' | 'vertical') {     const viewportEl = this.elementRef.nativeElement;     return orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;   }    /**    * Measure the bounding ClientRect size including the scroll offset.    *    * @param from The edge to measure from.    */   abstract measureBoundingClientRectWithScrollOffset(     from: 'left' | 'top' | 'right' | 'bottom',   ): number; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {ListRange} from '@angular/cdk/collections'; import {   ChangeDetectionStrategy,   ChangeDetectorRef,   Component,   ElementRef,   inject,   Inject,   Input,   NgZone,   OnDestroy,   OnInit,   Optional,   Output,   ViewChild,   ViewEncapsulation, } from '@angular/core'; import {Platform} from '@angular/cdk/platform'; import {   animationFrameScheduler,   asapScheduler,   Observable,   Subject,   Observer,   Subscription, } from 'rxjs'; import {auditTime, startWith, takeUntil} from 'rxjs/operators'; import {ScrollDispatcher} from './scroll-dispatcher'; import {CdkScrollable, ExtendedScrollToOptions} from './scrollable'; import {VIRTUAL_SCROLL_STRATEGY, VirtualScrollStrategy} from './virtual-scroll-strategy'; import {ViewportRuler} from './viewport-ruler'; import {CdkVirtualScrollRepeater} from './virtual-scroll-repeater'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {CdkVirtualScrollable, VIRTUAL_SCROLLABLE} from './virtual-scrollable';  /** Checks if the given ranges are equal. */ function rangesEqual(r1: ListRange, r2: ListRange): boolean {   return r1.start == r2.start && r1.end == r2.end; }  /**  * Scheduler to be used for scroll events. Needs to fall back to  * something that doesn't rely on requestAnimationFrame on environments  * that don't support it (e.g. server-side rendering).  */ const SCROLL_SCHEDULER =   typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;  /** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */ @Component({   selector: 'cdk-virtual-scroll-viewport',   templateUrl: 'virtual-scroll-viewport.html',   styleUrls: ['virtual-scroll-viewport.css'],   host: {     'class': 'cdk-virtual-scroll-viewport',     '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',     '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"',   },   encapsulation: ViewEncapsulation.None,   changeDetection: ChangeDetectionStrategy.OnPush,   standalone: true,   providers: [     {       provide: CdkScrollable,       useFactory: (         virtualScrollable: CdkVirtualScrollable | null,         viewport: CdkVirtualScrollViewport,       ) => virtualScrollable || viewport,       deps: [[new Optional(), new Inject(VIRTUAL_SCROLLABLE)], CdkVirtualScrollViewport],     },   ], }) export class CdkVirtualScrollViewport extends CdkVirtualScrollable implements OnInit, OnDestroy {   private _platform = inject(Platform);    /** Emits when the viewport is detached from a CdkVirtualForOf. */   private readonly _detachedSubject = new Subject<void>();    /** Emits when the rendered range changes. */   private readonly _renderedRangeSubject = new Subject<ListRange>();    /** The direction the viewport scrolls. */   @Input()   get orientation() {     return this._orientation;   }    set orientation(orientation: 'horizontal' | 'vertical') {     if (this._orientation !== orientation) {       this._orientation = orientation;       this._calculateSpacerSize();     }   }   private _orientation: 'horizontal' | 'vertical' = 'vertical';    /**    * Whether rendered items should persist in the DOM after scrolling out of view. By default, items    * will be removed.    */   @Input()   get appendOnly(): boolean {     return this._appendOnly;   }   set appendOnly(value: BooleanInput) {     this._appendOnly = coerceBooleanProperty(value);   }   private _appendOnly = false;    // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll   // strategy lazily (i.e. only if the user is actually listening to the events). We do this because   // depending on how the strategy calculates the scrolled index, it may come at a cost to   // performance.   /** Emits when the index of the first element visible in the viewport changes. */   @Output()   readonly scrolledIndexChange: Observable<number> = new Observable((observer: Observer<number>) =>     this._scrollStrategy.scrolledIndexChange.subscribe(index =>       Promise.resolve().then(() => this.ngZone.run(() => observer.next(index))),     ),   );    /** The element that wraps the rendered content. */   @ViewChild('contentWrapper', {static: true}) _contentWrapper: ElementRef<HTMLElement>;    /** A stream that emits whenever the rendered range changes. */   readonly renderedRangeStream: Observable<ListRange> = this._renderedRangeSubject;    /**    * The total size of all content (in pixels), including content that is not currently rendered.    */   private _totalContentSize = 0;    /** A string representing the `style.width` property value to be used for the spacer element. */   _totalContentWidth = '';    /** A string representing the `style.height` property value to be used for the spacer element. */   _totalContentHeight = '';    /**    * The CSS transform applied to the rendered subset of items so that they appear within the bounds    * of the visible viewport.    */   private _renderedContentTransform: string;    /** The currently rendered range of indices. */   private _renderedRange: ListRange = {start: 0, end: 0};    /** The length of the data bound to this viewport (in number of items). */   private _dataLength = 0;    /** The size of the viewport (in pixels). */   private _viewportSize = 0;    /** the currently attached CdkVirtualScrollRepeater. */   private _forOf: CdkVirtualScrollRepeater<any> | null;    /** The last rendered content offset that was set. */   private _renderedContentOffset = 0;    /**    * Whether the last rendered content offset was to the end of the content (and therefore needs to    * be rewritten as an offset to the start of the content).    */   private _renderedContentOffsetNeedsRewrite = false;    /** Whether there is a pending change detection cycle. */   private _isChangeDetectionPending = false;    /** A list of functions to run after the next change detection cycle. */   private _runAfterChangeDetection: Function[] = [];    /** Subscription to changes in the viewport size. */   private _viewportChanges = Subscription.EMPTY;    constructor(     public override elementRef: ElementRef<HTMLElement>,     private _changeDetectorRef: ChangeDetectorRef,     ngZone: NgZone,     @Optional()     @Inject(VIRTUAL_SCROLL_STRATEGY)     private _scrollStrategy: VirtualScrollStrategy,     @Optional() dir: Directionality,     scrollDispatcher: ScrollDispatcher,     viewportRuler: ViewportRuler,     @Optional() @Inject(VIRTUAL_SCROLLABLE) public scrollable: CdkVirtualScrollable,   ) {     super(elementRef, scrollDispatcher, ngZone, dir);      if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');     }      this._viewportChanges = viewportRuler.change().subscribe(() => {       this.checkViewportSize();     });      if (!this.scrollable) {       // No scrollable is provided, so the virtual-scroll-viewport needs to become a scrollable       this.elementRef.nativeElement.classList.add('cdk-virtual-scrollable');       this.scrollable = this;     }   }    override ngOnInit() {     // Scrolling depends on the element dimensions which we can't get during SSR.     if (!this._platform.isBrowser) {       return;     }      if (this.scrollable === this) {       super.ngOnInit();     }     // It's still too early to measure the viewport at this point. Deferring with a promise allows     // the Viewport to be rendered with the correct size before we measure. We run this outside the     // zone to avoid causing more change detection cycles. We handle the change detection loop     // ourselves instead.     this.ngZone.runOutsideAngular(() =>       Promise.resolve().then(() => {         this._measureViewportSize();         this._scrollStrategy.attach(this);          this.scrollable           .elementScrolled()           .pipe(             // Start off with a fake scroll event so we properly detect our initial position.             startWith(null),             // Collect multiple events into one until the next animation frame. This way if             // there are multiple scroll events in the same frame we only need to recheck             // our layout once.             auditTime(0, SCROLL_SCHEDULER),           )           .subscribe(() => this._scrollStrategy.onContentScrolled());          this._markChangeDetectionNeeded();       }),     );   }    override ngOnDestroy() {     this.detach();     this._scrollStrategy.detach();      // Complete all subjects     this._renderedRangeSubject.complete();     this._detachedSubject.complete();     this._viewportChanges.unsubscribe();      super.ngOnDestroy();   }    /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */   attach(forOf: CdkVirtualScrollRepeater<any>) {     if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw Error('CdkVirtualScrollViewport is already attached.');     }      // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length     // changes. Run outside the zone to avoid triggering change detection, since we're managing the     // change detection loop ourselves.     this.ngZone.runOutsideAngular(() => {       this._forOf = forOf;       this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {         const newLength = data.length;         if (newLength !== this._dataLength) {           this._dataLength = newLength;           this._scrollStrategy.onDataLengthChanged();         }         this._doChangeDetection();       });     });   }    /** Detaches the current `CdkVirtualForOf`. */   detach() {     this._forOf = null;     this._detachedSubject.next();   }    /** Gets the length of the data bound to this viewport (in number of items). */   getDataLength(): number {     return this._dataLength;   }    /** Gets the size of the viewport (in pixels). */   getViewportSize(): number {     return this._viewportSize;   }    // TODO(mmalerba): This is technically out of sync with what's really rendered until a render   // cycle happens. I'm being careful to only call it after the render cycle is complete and before   // setting it to something else, but its error prone and should probably be split into   // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.    /** Get the current rendered range of items. */   getRenderedRange(): ListRange {     return this._renderedRange;   }    measureBoundingClientRectWithScrollOffset(from: 'left' | 'top' | 'right' | 'bottom'): number {     return this.getElementRef().nativeElement.getBoundingClientRect()[from];   }    /**    * Sets the total size of all content (in pixels), including content that is not currently    * rendered.    */   setTotalContentSize(size: number) {     if (this._totalContentSize !== size) {       this._totalContentSize = size;       this._calculateSpacerSize();       this._markChangeDetectionNeeded();     }   }    /** Sets the currently rendered range of indices. */   setRenderedRange(range: ListRange) {     if (!rangesEqual(this._renderedRange, range)) {       if (this.appendOnly) {         range = {start: 0, end: Math.max(this._renderedRange.end, range.end)};       }       this._renderedRangeSubject.next((this._renderedRange = range));       this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());     }   }    /**    * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).    */   getOffsetToRenderedContentStart(): number | null {     return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;   }    /**    * Sets the offset from the start of the viewport to either the start or end of the rendered data    * (in pixels).    */   setRenderedContentOffset(offset: number, to: 'to-start' | 'to-end' = 'to-start') {     // In appendOnly, we always start from the top     offset = this.appendOnly && to === 'to-start' ? 0 : offset;      // For a horizontal viewport in a right-to-left language we need to translate along the x-axis     // in the negative direction.     const isRtl = this.dir && this.dir.value == 'rtl';     const isHorizontal = this.orientation == 'horizontal';     const axis = isHorizontal ? 'X' : 'Y';     const axisDirection = isHorizontal && isRtl ? -1 : 1;     let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;     this._renderedContentOffset = offset;     if (to === 'to-end') {       transform += ` translate${axis}(-100%)`;       // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise       // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would       // expand upward).       this._renderedContentOffsetNeedsRewrite = true;     }     if (this._renderedContentTransform != transform) {       // We know this value is safe because we parse `offset` with `Number()` before passing it       // into the string.       this._renderedContentTransform = transform;       this._markChangeDetectionNeeded(() => {         if (this._renderedContentOffsetNeedsRewrite) {           this._renderedContentOffset -= this.measureRenderedContentSize();           this._renderedContentOffsetNeedsRewrite = false;           this.setRenderedContentOffset(this._renderedContentOffset);         } else {           this._scrollStrategy.onRenderedOffsetChanged();         }       });     }   }    /**    * Scrolls to the given offset from the start of the viewport. Please note that this is not always    * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left    * direction, this would be the equivalent of setting a fictional `scrollRight` property.    * @param offset The offset to scroll to.    * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.    */   scrollToOffset(offset: number, behavior: ScrollBehavior = 'auto') {     const options: ExtendedScrollToOptions = {behavior};     if (this.orientation === 'horizontal') {       options.start = offset;     } else {       options.top = offset;     }     this.scrollable.scrollTo(options);   }    /**    * Scrolls to the offset for the given index.    * @param index The index of the element to scroll to.    * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.    */   scrollToIndex(index: number, behavior: ScrollBehavior = 'auto') {     this._scrollStrategy.scrollToIndex(index, behavior);   }    /**    * Gets the current scroll offset from the start of the scrollable (in pixels).    * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'    *     in horizontal mode.    */   override measureScrollOffset(     from?: 'top' | 'left' | 'right' | 'bottom' | 'start' | 'end',   ): number {     // This is to break the call cycle     let measureScrollOffset: InstanceType<typeof CdkVirtualScrollable>['measureScrollOffset'];     if (this.scrollable == this) {       measureScrollOffset = (_from: NonNullable<typeof from>) => super.measureScrollOffset(_from);     } else {       measureScrollOffset = (_from: NonNullable<typeof from>) =>         this.scrollable.measureScrollOffset(_from);     }      return Math.max(       0,       measureScrollOffset(from ?? (this.orientation === 'horizontal' ? 'start' : 'top')) -         this.measureViewportOffset(),     );   }    /**    * Measures the offset of the viewport from the scrolling container    * @param from The edge to measure from.    */   measureViewportOffset(from?: 'top' | 'left' | 'right' | 'bottom' | 'start' | 'end') {     let fromRect: 'left' | 'top' | 'right' | 'bottom';     const LEFT = 'left';     const RIGHT = 'right';     const isRtl = this.dir?.value == 'rtl';     if (from == 'start') {       fromRect = isRtl ? RIGHT : LEFT;     } else if (from == 'end') {       fromRect = isRtl ? LEFT : RIGHT;     } else if (from) {       fromRect = from;     } else {       fromRect = this.orientation === 'horizontal' ? 'left' : 'top';     }      const scrollerClientRect = this.scrollable.measureBoundingClientRectWithScrollOffset(fromRect);     const viewportClientRect = this.elementRef.nativeElement.getBoundingClientRect()[fromRect];      return viewportClientRect - scrollerClientRect;   }    /** Measure the combined size of all of the rendered items. */   measureRenderedContentSize(): number {     const contentEl = this._contentWrapper.nativeElement;     return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;   }    /**    * Measure the total combined size of the given range. Throws if the range includes items that are    * not rendered.    */   measureRangeSize(range: ListRange): number {     if (!this._forOf) {       return 0;     }     return this._forOf.measureRangeSize(range, this.orientation);   }    /** Update the viewport dimensions and re-render. */   checkViewportSize() {     // TODO: Cleanup later when add logic for handling content resize     this._measureViewportSize();     this._scrollStrategy.onDataLengthChanged();   }    /** Measure the viewport size. */   private _measureViewportSize() {     this._viewportSize = this.scrollable.measureViewportSize(this.orientation);   }    /** Queue up change detection to run. */   private _markChangeDetectionNeeded(runAfter?: Function) {     if (runAfter) {       this._runAfterChangeDetection.push(runAfter);     }      // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of     // properties sequentially we only have to run `_doChangeDetection` once at the end.     if (!this._isChangeDetectionPending) {       this._isChangeDetectionPending = true;       this.ngZone.runOutsideAngular(() =>         Promise.resolve().then(() => {           this._doChangeDetection();         }),       );     }   }    /** Run change detection. */   private _doChangeDetection() {     this._isChangeDetectionPending = false;      // Apply the content transform. The transform can't be set via an Angular binding because     // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of     // string literals, a variable that can only be 'X' or 'Y', and user input that is run through     // the `Number` function first to coerce it to a numeric value.     this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform;     // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection     // from the root, since the repeated items are content projected in. Calling `detectChanges`     // instead does not properly check the projected content.     this.ngZone.run(() => this._changeDetectorRef.markForCheck());      const runAfterChangeDetection = this._runAfterChangeDetection;     this._runAfterChangeDetection = [];     for (const fn of runAfterChangeDetection) {       fn();     }   }    /** Calculates the `style.width` and `style.height` for the spacer element. */   private _calculateSpacerSize() {     this._totalContentHeight =       this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;     this._totalContentWidth =       this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';   } } ","<!--   Wrap the rendered content in an element that will be used to offset it based on the scroll   position. --> <div #contentWrapper class=\"cdk-virtual-scroll-content-wrapper\">   <ng-content></ng-content> </div> <!--   Spacer used to force the scrolling container to the correct size for the *total* number of items   so that the scrollbar captures the size of the entire data set. --> <div class=\"cdk-virtual-scroll-spacer\"      [style.width]=\"_totalContentWidth\" [style.height]=\"_totalContentHeight\"></div> ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   ArrayDataSource,   CollectionViewer,   DataSource,   ListRange,   isDataSource,   _RecycleViewRepeaterStrategy,   _VIEW_REPEATER_STRATEGY,   _ViewRepeaterItemInsertArgs, } from '@angular/cdk/collections'; import {   Directive,   DoCheck,   EmbeddedViewRef,   Inject,   Input,   IterableChangeRecord,   IterableChanges,   IterableDiffer,   IterableDiffers,   NgIterable,   NgZone,   OnDestroy,   SkipSelf,   TemplateRef,   TrackByFunction,   ViewContainerRef, } from '@angular/core'; import {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion'; import {Observable, Subject, of as observableOf, isObservable} from 'rxjs'; import {pairwise, shareReplay, startWith, switchMap, takeUntil} from 'rxjs/operators'; import {CdkVirtualScrollRepeater} from './virtual-scroll-repeater'; import {CdkVirtualScrollViewport} from './virtual-scroll-viewport';  /** The context for an item rendered by `CdkVirtualForOf` */ export type CdkVirtualForOfContext<T> = {   /** The item value. */   $implicit: T;   /** The DataSource, Observable, or NgIterable that was passed to *cdkVirtualFor. */   cdkVirtualForOf: DataSource<T> | Observable<T[]> | NgIterable<T>;   /** The index of the item in the DataSource. */   index: number;   /** The number of items in the DataSource. */   count: number;   /** Whether this is the first item in the DataSource. */   first: boolean;   /** Whether this is the last item in the DataSource. */   last: boolean;   /** Whether the index is even. */   even: boolean;   /** Whether the index is odd. */   odd: boolean; };  /** Helper to extract the offset of a DOM Node in a certain direction. */ function getOffset(orientation: 'horizontal' | 'vertical', direction: 'start' | 'end', node: Node) {   const el = node as Element;   if (!el.getBoundingClientRect) {     return 0;   }   const rect = el.getBoundingClientRect();    if (orientation === 'horizontal') {     return direction === 'start' ? rect.left : rect.right;   }    return direction === 'start' ? rect.top : rect.bottom; }  /**  * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling  * container.  */ @Directive({   selector: '[cdkVirtualFor][cdkVirtualForOf]',   providers: [{provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy}],   standalone: true, }) export class CdkVirtualForOf<T>   implements CdkVirtualScrollRepeater<T>, CollectionViewer, DoCheck, OnDestroy {   /** Emits when the rendered view of the data changes. */   readonly viewChange = new Subject<ListRange>();    /** Subject that emits when a new DataSource instance is given. */   private readonly _dataSourceChanges = new Subject<DataSource<T>>();    /** The DataSource to display. */   @Input()   get cdkVirtualForOf(): DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined {     return this._cdkVirtualForOf;   }   set cdkVirtualForOf(value: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined) {     this._cdkVirtualForOf = value;     if (isDataSource(value)) {       this._dataSourceChanges.next(value);     } else {       // If value is an an NgIterable, convert it to an array.       this._dataSourceChanges.next(         new ArrayDataSource<T>(isObservable(value) ? value : Array.from(value || [])),       );     }   }    _cdkVirtualForOf: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined;    /**    * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and    * the item and produces a value to be used as the item's identity when tracking changes.    */   @Input()   get cdkVirtualForTrackBy(): TrackByFunction<T> | undefined {     return this._cdkVirtualForTrackBy;   }   set cdkVirtualForTrackBy(fn: TrackByFunction<T> | undefined) {     this._needsUpdate = true;     this._cdkVirtualForTrackBy = fn       ? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item)       : undefined;   }   private _cdkVirtualForTrackBy: TrackByFunction<T> | undefined;    /** The template used to stamp out new elements. */   @Input()   set cdkVirtualForTemplate(value: TemplateRef<CdkVirtualForOfContext<T>>) {     if (value) {       this._needsUpdate = true;       this._template = value;     }   }    /**    * The size of the cache used to store templates that are not being used for re-use later.    * Setting the cache size to `0` will disable caching. Defaults to 20 templates.    */   @Input()   get cdkVirtualForTemplateCacheSize(): number {     return this._viewRepeater.viewCacheSize;   }   set cdkVirtualForTemplateCacheSize(size: NumberInput) {     this._viewRepeater.viewCacheSize = coerceNumberProperty(size);   }    /** Emits whenever the data in the current DataSource changes. */   readonly dataStream: Observable<readonly T[]> = this._dataSourceChanges.pipe(     // Start off with null `DataSource`.     startWith(null),     // Bundle up the previous and current data sources so we can work with both.     pairwise(),     // Use `_changeDataSource` to disconnect from the previous data source and connect to the     // new one, passing back a stream of data changes which we run through `switchMap` to give     // us a data stream that emits the latest data from whatever the current `DataSource` is.     switchMap(([prev, cur]) => this._changeDataSource(prev, cur)),     // Replay the last emitted data when someone subscribes.     shareReplay(1),   );    /** The differ used to calculate changes to the data. */   private _differ: IterableDiffer<T> | null = null;    /** The most recent data emitted from the DataSource. */   private _data: readonly T[];    /** The currently rendered items. */   private _renderedItems: T[];    /** The currently rendered range of indices. */   private _renderedRange: ListRange;    /** Whether the rendered data should be updated during the next ngDoCheck cycle. */   private _needsUpdate = false;    private readonly _destroyed = new Subject<void>();    constructor(     /** The view container to add items to. */     private _viewContainerRef: ViewContainerRef,     /** The template to use when stamping out new items. */     private _template: TemplateRef<CdkVirtualForOfContext<T>>,     /** The set of available differs. */     private _differs: IterableDiffers,     /** The strategy used to render items in the virtual scroll viewport. */     @Inject(_VIEW_REPEATER_STRATEGY)     private _viewRepeater: _RecycleViewRepeaterStrategy<T, T, CdkVirtualForOfContext<T>>,     /** The virtual scrolling viewport that these items are being rendered in. */     @SkipSelf() private _viewport: CdkVirtualScrollViewport,     ngZone: NgZone,   ) {     this.dataStream.subscribe(data => {       this._data = data;       this._onRenderedDataChange();     });     this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {       this._renderedRange = range;       if (this.viewChange.observers.length) {         ngZone.run(() => this.viewChange.next(this._renderedRange));       }       this._onRenderedDataChange();     });     this._viewport.attach(this);   }    /**    * Measures the combined size (width for horizontal orientation, height for vertical) of all items    * in the specified range. Throws an error if the range includes items that are not currently    * rendered.    */   measureRangeSize(range: ListRange, orientation: 'horizontal' | 'vertical'): number {     if (range.start >= range.end) {       return 0;     }     if (       (range.start < this._renderedRange.start || range.end > this._renderedRange.end) &&       (typeof ngDevMode === 'undefined' || ngDevMode)     ) {       throw Error(`Error: attempted to measure an item that isn't rendered.`);     }      // The index into the list of rendered views for the first item in the range.     const renderedStartIndex = range.start - this._renderedRange.start;     // The length of the range we're measuring.     const rangeLen = range.end - range.start;      // Loop over all the views, find the first and land node and compute the size by subtracting     // the top of the first node from the bottom of the last one.     let firstNode: HTMLElement | undefined;     let lastNode: HTMLElement | undefined;      // Find the first node by starting from the beginning and going forwards.     for (let i = 0; i < rangeLen; i++) {       const view = this._viewContainerRef.get(i + renderedStartIndex) as EmbeddedViewRef<         CdkVirtualForOfContext<T>       > | null;       if (view && view.rootNodes.length) {         firstNode = lastNode = view.rootNodes[0];         break;       }     }      // Find the last node by starting from the end and going backwards.     for (let i = rangeLen - 1; i > -1; i--) {       const view = this._viewContainerRef.get(i + renderedStartIndex) as EmbeddedViewRef<         CdkVirtualForOfContext<T>       > | null;       if (view && view.rootNodes.length) {         lastNode = view.rootNodes[view.rootNodes.length - 1];         break;       }     }      return firstNode && lastNode       ? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode)       : 0;   }    ngDoCheck() {     if (this._differ && this._needsUpdate) {       // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of       // this list being rendered (can use simpler algorithm) vs needs update due to data actually       // changing (need to do this diff).       const changes = this._differ.diff(this._renderedItems);       if (!changes) {         this._updateContext();       } else {         this._applyChanges(changes);       }       this._needsUpdate = false;     }   }    ngOnDestroy() {     this._viewport.detach();      this._dataSourceChanges.next(undefined!);     this._dataSourceChanges.complete();     this.viewChange.complete();      this._destroyed.next();     this._destroyed.complete();     this._viewRepeater.detach();   }    /** React to scroll state changes in the viewport. */   private _onRenderedDataChange() {     if (!this._renderedRange) {       return;     }     this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);     if (!this._differ) {       // Use a wrapper function for the `trackBy` so any new values are       // picked up automatically without having to recreate the differ.       this._differ = this._differs.find(this._renderedItems).create((index, item) => {         return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;       });     }     this._needsUpdate = true;   }    /** Swap out one `DataSource` for another. */   private _changeDataSource(     oldDs: DataSource<T> | null,     newDs: DataSource<T> | null,   ): Observable<readonly T[]> {     if (oldDs) {       oldDs.disconnect(this);     }      this._needsUpdate = true;     return newDs ? newDs.connect(this) : observableOf();   }    /** Update the `CdkVirtualForOfContext` for all views. */   private _updateContext() {     const count = this._data.length;     let i = this._viewContainerRef.length;     while (i--) {       const view = this._viewContainerRef.get(i) as EmbeddedViewRef<CdkVirtualForOfContext<T>>;       view.context.index = this._renderedRange.start + i;       view.context.count = count;       this._updateComputedContextProperties(view.context);       view.detectChanges();     }   }    /** Apply changes to the DOM. */   private _applyChanges(changes: IterableChanges<T>) {     this._viewRepeater.applyChanges(       changes,       this._viewContainerRef,       (         record: IterableChangeRecord<T>,         _adjustedPreviousIndex: number | null,         currentIndex: number | null,       ) => this._getEmbeddedViewArgs(record, currentIndex!),       record => record.item,     );      // Update $implicit for any items that had an identity change.     changes.forEachIdentityChange((record: IterableChangeRecord<T>) => {       const view = this._viewContainerRef.get(record.currentIndex!) as EmbeddedViewRef<         CdkVirtualForOfContext<T>       >;       view.context.$implicit = record.item;     });      // Update the context variables on all items.     const count = this._data.length;     let i = this._viewContainerRef.length;     while (i--) {       const view = this._viewContainerRef.get(i) as EmbeddedViewRef<CdkVirtualForOfContext<T>>;       view.context.index = this._renderedRange.start + i;       view.context.count = count;       this._updateComputedContextProperties(view.context);     }   }    /** Update the computed properties on the `CdkVirtualForOfContext`. */   private _updateComputedContextProperties(context: CdkVirtualForOfContext<any>) {     context.first = context.index === 0;     context.last = context.index === context.count - 1;     context.even = context.index % 2 === 0;     context.odd = !context.even;   }    private _getEmbeddedViewArgs(     record: IterableChangeRecord<T>,     index: number,   ): _ViewRepeaterItemInsertArgs<CdkVirtualForOfContext<T>> {     // Note that it's important that we insert the item directly at the proper index,     // rather than inserting it and the moving it in place, because if there's a directive     // on the same node that injects the `ViewContainerRef`, Angular will insert another     // comment node which can throw off the move when it's being repeated for all items.     return {       templateRef: this._template,       context: {         $implicit: record.item,         // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only         // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.         cdkVirtualForOf: this._cdkVirtualForOf!,         index: -1,         count: -1,         first: false,         last: false,         odd: false,         even: false,       },       index,     };   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {Directive, ElementRef, NgZone, Optional} from '@angular/core'; import {ScrollDispatcher} from './scroll-dispatcher'; import {CdkVirtualScrollable, VIRTUAL_SCROLLABLE} from './virtual-scrollable';  /**  * Provides a virtual scrollable for the element it is attached to.  */ @Directive({   selector: '[cdkVirtualScrollingElement]',   providers: [{provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableElement}],   standalone: true,   host: {     'class': 'cdk-virtual-scrollable',   }, }) export class CdkVirtualScrollableElement extends CdkVirtualScrollable {   constructor(     elementRef: ElementRef,     scrollDispatcher: ScrollDispatcher,     ngZone: NgZone,     @Optional() dir: Directionality,   ) {     super(elementRef, scrollDispatcher, ngZone, dir);   }    override measureBoundingClientRectWithScrollOffset(     from: 'left' | 'top' | 'right' | 'bottom',   ): number {     return (       this.getElementRef().nativeElement.getBoundingClientRect()[from] -       this.measureScrollOffset(from)     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {Directive, ElementRef, NgZone, Optional} from '@angular/core'; import {fromEvent, Observable, Observer} from 'rxjs'; import {takeUntil} from 'rxjs/operators'; import {ScrollDispatcher} from './scroll-dispatcher'; import {CdkVirtualScrollable, VIRTUAL_SCROLLABLE} from './virtual-scrollable';  /**  * Provides as virtual scrollable for the global / window scrollbar.  */ @Directive({   selector: 'cdk-virtual-scroll-viewport[scrollWindow]',   providers: [{provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableWindow}],   standalone: true, }) export class CdkVirtualScrollableWindow extends CdkVirtualScrollable {   protected override _elementScrolled: Observable<Event> = new Observable(     (observer: Observer<Event>) =>       this.ngZone.runOutsideAngular(() =>         fromEvent(document, 'scroll').pipe(takeUntil(this._destroyed)).subscribe(observer),       ),   );    constructor(scrollDispatcher: ScrollDispatcher, ngZone: NgZone, @Optional() dir: Directionality) {     super(new ElementRef(document.documentElement), scrollDispatcher, ngZone, dir);   }    override measureBoundingClientRectWithScrollOffset(     from: 'left' | 'top' | 'right' | 'bottom',   ): number {     return this.getElementRef().nativeElement.getBoundingClientRect()[from];   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BidiModule} from '@angular/cdk/bidi'; import {NgModule} from '@angular/core'; import {CdkFixedSizeVirtualScroll} from './fixed-size-virtual-scroll'; import {CdkScrollable} from './scrollable'; import {CdkVirtualForOf} from './virtual-for-of'; import {CdkVirtualScrollViewport} from './virtual-scroll-viewport'; import {CdkVirtualScrollableElement} from './virtual-scrollable-element'; import {CdkVirtualScrollableWindow} from './virtual-scrollable-window';  @NgModule({   exports: [CdkScrollable],   imports: [CdkScrollable], }) export class CdkScrollableModule {}  /**  * @docs-primary-export  */ @NgModule({   imports: [     BidiModule,     CdkScrollableModule,     CdkVirtualScrollViewport,     CdkFixedSizeVirtualScroll,     CdkVirtualForOf,     CdkVirtualScrollableWindow,     CdkVirtualScrollableElement,   ],   exports: [     BidiModule,     CdkScrollableModule,     CdkFixedSizeVirtualScroll,     CdkVirtualForOf,     CdkVirtualScrollViewport,     CdkVirtualScrollableWindow,     CdkVirtualScrollableElement,   ], }) export class ScrollingModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Observable} from 'rxjs'; import {ListRange} from '@angular/cdk/collections';  /**  * An item to be repeated by the VirtualScrollViewport  */ export interface CdkVirtualScrollRepeater<T> {   readonly dataStream: Observable<readonly T[]>;   measureRangeSize(range: ListRange, orientation: 'horizontal' | 'vertical'): number; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './fixed-size-virtual-scroll'; export * from './scroll-dispatcher'; export * from './scrollable'; export * from './scrolling-module'; export * from './viewport-ruler'; export * from './virtual-for-of'; export * from './virtual-scroll-strategy'; export * from './virtual-scroll-viewport'; export * from './virtual-scroll-repeater'; export * from './virtual-scrollable'; export * from './virtual-scrollable-element'; export * from './virtual-scrollable-window'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["observableOf","i1.ScrollDispatcher","i1","i2.ScrollDispatcher","i3.ViewportRuler","i1.CdkVirtualScrollViewport"],"mappings":"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"}
-------------------- SECTION 200 --------------------
{"version":3,"file":"drag-drop.mjs","sources":["../../../../../../src/cdk/drag-drop/dom/styling.ts","../../../../../../src/cdk/drag-drop/dom/transition-duration.ts","../../../../../../src/cdk/drag-drop/dom/client-rect.ts","../../../../../../src/cdk/drag-drop/dom/parent-position-tracker.ts","../../../../../../src/cdk/drag-drop/dom/clone-node.ts","../../../../../../src/cdk/drag-drop/drag-ref.ts","../../../../../../src/cdk/drag-drop/drag-utils.ts","../../../../../../src/cdk/drag-drop/sorting/single-axis-sort-strategy.ts","../../../../../../src/cdk/drag-drop/drop-list-ref.ts","../../../../../../src/cdk/drag-drop/drag-drop-registry.ts","../../../../../../src/cdk/drag-drop/drag-drop.ts","../../../../../../src/cdk/drag-drop/drag-parent.ts","../../../../../../src/cdk/drag-drop/drag-events.ts","../../../../../../src/cdk/drag-drop/directives/drop-list-group.ts","../../../../../../src/cdk/drag-drop/directives/config.ts","../../../../../../src/cdk/drag-drop/directives/assertions.ts","../../../../../../src/cdk/drag-drop/directives/drop-list.ts","../../../../../../src/cdk/drag-drop/directives/drag-handle.ts","../../../../../../src/cdk/drag-drop/directives/drag-placeholder.ts","../../../../../../src/cdk/drag-drop/directives/drag-preview.ts","../../../../../../src/cdk/drag-drop/directives/drag.ts","../../../../../../src/cdk/drag-drop/drag-drop-module.ts","../../../../../../src/cdk/drag-drop/public-api.ts","../../../../../../src/cdk/drag-drop/index.ts","../../../../../../src/cdk/drag-drop/drag-drop_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Extended CSSStyleDeclaration that includes a couple of drag-related  * properties that aren't in the built-in TS typings.  */ export interface DragCSSStyleDeclaration extends CSSStyleDeclaration {   msScrollSnapType: string;   scrollSnapType: string;   webkitTapHighlightColor: string; }  /**  * Shallow-extends a stylesheet object with another stylesheet-like object.  * Note that the keys in `source` have to be dash-cased.  * @docs-private  */ export function extendStyles(   dest: CSSStyleDeclaration,   source: Record<string, string>,   importantProperties?: Set<string>, ) {   for (let key in source) {     if (source.hasOwnProperty(key)) {       const value = source[key];        if (value) {         dest.setProperty(key, value, importantProperties?.has(key) ? 'important' : '');       } else {         dest.removeProperty(key);       }     }   }    return dest; }  /**  * Toggles whether the native drag interactions should be enabled for an element.  * @param element Element on which to toggle the drag interactions.  * @param enable Whether the drag interactions should be enabled.  * @docs-private  */ export function toggleNativeDragInteractions(element: HTMLElement, enable: boolean) {   const userSelect = enable ? '' : 'none';    extendStyles(element.style, {     'touch-action': enable ? '' : 'none',     '-webkit-user-drag': enable ? '' : 'none',     '-webkit-tap-highlight-color': enable ? '' : 'transparent',     'user-select': userSelect,     '-ms-user-select': userSelect,     '-webkit-user-select': userSelect,     '-moz-user-select': userSelect,   }); }  /**  * Toggles whether an element is visible while preserving its dimensions.  * @param element Element whose visibility to toggle  * @param enable Whether the element should be visible.  * @param importantProperties Properties to be set as `!important`.  * @docs-private  */ export function toggleVisibility(   element: HTMLElement,   enable: boolean,   importantProperties?: Set<string>, ) {   extendStyles(     element.style,     {       position: enable ? '' : 'fixed',       top: enable ? '' : '0',       opacity: enable ? '' : '0',       left: enable ? '' : '-999em',     },     importantProperties,   ); }  /**  * Combines a transform string with an optional other transform  * that exited before the base transform was applied.  */ export function combineTransforms(transform: string, initialTransform?: string): string {   return initialTransform && initialTransform != 'none'     ? transform + ' ' + initialTransform     : transform; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Parses a CSS time value to milliseconds. */ function parseCssTimeUnitsToMs(value: string): number {   // Some browsers will return it in seconds, whereas others will return milliseconds.   const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;   return parseFloat(value) * multiplier; }  /** Gets the transform transition duration, including the delay, of an element in milliseconds. */ export function getTransformTransitionDurationInMs(element: HTMLElement): number {   const computedStyle = getComputedStyle(element);   const transitionedProperties = parseCssPropertyValue(computedStyle, 'transition-property');   const property = transitionedProperties.find(prop => prop === 'transform' || prop === 'all');    // If there's no transition for `all` or `transform`, we shouldn't do anything.   if (!property) {     return 0;   }    // Get the index of the property that we're interested in and match   // it up to the same index in `transition-delay` and `transition-duration`.   const propertyIndex = transitionedProperties.indexOf(property);   const rawDurations = parseCssPropertyValue(computedStyle, 'transition-duration');   const rawDelays = parseCssPropertyValue(computedStyle, 'transition-delay');    return (     parseCssTimeUnitsToMs(rawDurations[propertyIndex]) +     parseCssTimeUnitsToMs(rawDelays[propertyIndex])   ); }  /** Parses out multiple values from a computed style into an array. */ function parseCssPropertyValue(computedStyle: CSSStyleDeclaration, name: string): string[] {   const value = computedStyle.getPropertyValue(name);   return value.split(',').map(part => part.trim()); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Gets a mutable version of an element's bounding `ClientRect`. */ export function getMutableClientRect(element: Element): ClientRect {   const clientRect = element.getBoundingClientRect();    // We need to clone the `clientRect` here, because all the values on it are readonly   // and we need to be able to update them. Also we can't use a spread here, because   // the values on a `ClientRect` aren't own properties. See:   // https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect#Notes   return {     top: clientRect.top,     right: clientRect.right,     bottom: clientRect.bottom,     left: clientRect.left,     width: clientRect.width,     height: clientRect.height,     x: clientRect.x,     y: clientRect.y,   } as ClientRect; }  /**  * Checks whether some coordinates are within a `ClientRect`.  * @param clientRect ClientRect that is being checked.  * @param x Coordinates along the X axis.  * @param y Coordinates along the Y axis.  */ export function isInsideClientRect(clientRect: ClientRect, x: number, y: number) {   const {top, bottom, left, right} = clientRect;   return y >= top && y <= bottom && x >= left && x <= right; }  /**  * Updates the top/left positions of a `ClientRect`, as well as their bottom/right counterparts.  * @param clientRect `ClientRect` that should be updated.  * @param top Amount to add to the `top` position.  * @param left Amount to add to the `left` position.  */ export function adjustClientRect(   clientRect: {     top: number;     bottom: number;     left: number;     right: number;     width: number;     height: number;   },   top: number,   left: number, ) {   clientRect.top += top;   clientRect.bottom = clientRect.top + clientRect.height;    clientRect.left += left;   clientRect.right = clientRect.left + clientRect.width; }  /**  * Checks whether the pointer coordinates are close to a ClientRect.  * @param rect ClientRect to check against.  * @param threshold Threshold around the ClientRect.  * @param pointerX Coordinates along the X axis.  * @param pointerY Coordinates along the Y axis.  */ export function isPointerNearClientRect(   rect: ClientRect,   threshold: number,   pointerX: number,   pointerY: number, ): boolean {   const {top, right, bottom, left, width, height} = rect;   const xThreshold = width * threshold;   const yThreshold = height * threshold;    return (     pointerY > top - yThreshold &&     pointerY < bottom + yThreshold &&     pointerX > left - xThreshold &&     pointerX < right + xThreshold   ); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {_getEventTarget} from '@angular/cdk/platform'; import {getMutableClientRect, adjustClientRect} from './client-rect';  /** Object holding the scroll position of something. */ interface ScrollPosition {   top: number;   left: number; }  /** Keeps track of the scroll position and dimensions of the parents of an element. */ export class ParentPositionTracker {   /** Cached positions of the scrollable parent elements. */   readonly positions = new Map<     Document | HTMLElement,     {       scrollPosition: ScrollPosition;       clientRect?: ClientRect;     }   >();    constructor(private _document: Document) {}    /** Clears the cached positions. */   clear() {     this.positions.clear();   }    /** Caches the positions. Should be called at the beginning of a drag sequence. */   cache(elements: readonly HTMLElement[]) {     this.clear();     this.positions.set(this._document, {       scrollPosition: this.getViewportScrollPosition(),     });      elements.forEach(element => {       this.positions.set(element, {         scrollPosition: {top: element.scrollTop, left: element.scrollLeft},         clientRect: getMutableClientRect(element),       });     });   }    /** Handles scrolling while a drag is taking place. */   handleScroll(event: Event): ScrollPosition | null {     const target = _getEventTarget<HTMLElement | Document>(event)!;     const cachedPosition = this.positions.get(target);      if (!cachedPosition) {       return null;     }      const scrollPosition = cachedPosition.scrollPosition;     let newTop: number;     let newLeft: number;      if (target === this._document) {       const viewportScrollPosition = this.getViewportScrollPosition();       newTop = viewportScrollPosition.top;       newLeft = viewportScrollPosition.left;     } else {       newTop = (target as HTMLElement).scrollTop;       newLeft = (target as HTMLElement).scrollLeft;     }      const topDifference = scrollPosition.top - newTop;     const leftDifference = scrollPosition.left - newLeft;      // Go through and update the cached positions of the scroll     // parents that are inside the element that was scrolled.     this.positions.forEach((position, node) => {       if (position.clientRect && target !== node && target.contains(node)) {         adjustClientRect(position.clientRect, topDifference, leftDifference);       }     });      scrollPosition.top = newTop;     scrollPosition.left = newLeft;      return {top: topDifference, left: leftDifference};   }    /**    * Gets the scroll position of the viewport. Note that we use the scrollX and scrollY directly,    * instead of going through the `ViewportRuler`, because the first value the ruler looks at is    * the top/left offset of the `document.documentElement` which works for most cases, but breaks    * if the element is offset by something like the `BlockScrollStrategy`.    */   getViewportScrollPosition() {     return {top: window.scrollY, left: window.scrollX};   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Creates a deep clone of an element. */ export function deepCloneNode(node: HTMLElement): HTMLElement {   const clone = node.cloneNode(true) as HTMLElement;   const descendantsWithId = clone.querySelectorAll('[id]');   const nodeName = node.nodeName.toLowerCase();    // Remove the `id` to avoid having multiple elements with the same id on the page.   clone.removeAttribute('id');    for (let i = 0; i < descendantsWithId.length; i++) {     descendantsWithId[i].removeAttribute('id');   }    if (nodeName === 'canvas') {     transferCanvasData(node as HTMLCanvasElement, clone as HTMLCanvasElement);   } else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {     transferInputData(node as HTMLInputElement, clone as HTMLInputElement);   }    transferData('canvas', node, clone, transferCanvasData);   transferData('input, textarea, select', node, clone, transferInputData);   return clone; }  /** Matches elements between an element and its clone and allows for their data to be cloned. */ function transferData<T extends Element>(   selector: string,   node: HTMLElement,   clone: HTMLElement,   callback: (source: T, clone: T) => void, ) {   const descendantElements = node.querySelectorAll<T>(selector);    if (descendantElements.length) {     const cloneElements = clone.querySelectorAll<T>(selector);      for (let i = 0; i < descendantElements.length; i++) {       callback(descendantElements[i], cloneElements[i]);     }   } }  // Counter for unique cloned radio button names. let cloneUniqueId = 0;  /** Transfers the data of one input element to another. */ function transferInputData(   source: Element & {value: string},   clone: Element & {value: string; name: string; type: string}, ) {   // Browsers throw an error when assigning the value of a file input programmatically.   if (clone.type !== 'file') {     clone.value = source.value;   }    // Radio button `name` attributes must be unique for radio button groups   // otherwise original radio buttons can lose their checked state   // once the clone is inserted in the DOM.   if (clone.type === 'radio' && clone.name) {     clone.name = `mat-clone-${clone.name}-${cloneUniqueId++}`;   } }  /** Transfers the data of one canvas element to another. */ function transferCanvasData(source: HTMLCanvasElement, clone: HTMLCanvasElement) {   const context = clone.getContext('2d');    if (context) {     // In some cases `drawImage` can throw (e.g. if the canvas size is 0x0).     // We can't do much about it so just ignore the error.     try {       context.drawImage(source, 0, 0);     } catch {}   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EmbeddedViewRef, ElementRef, NgZone, ViewContainerRef, TemplateRef} from '@angular/core'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {Direction} from '@angular/cdk/bidi'; import {   normalizePassiveListenerOptions,   _getEventTarget,   _getShadowRoot, } from '@angular/cdk/platform'; import {coerceBooleanProperty, coerceElement} from '@angular/cdk/coercion'; import {isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader} from '@angular/cdk/a11y'; import {Subscription, Subject, Observable} from 'rxjs'; import {DropListRefInternal as DropListRef} from './drop-list-ref'; import {DragDropRegistry} from './drag-drop-registry'; import {   combineTransforms,   DragCSSStyleDeclaration,   extendStyles,   toggleNativeDragInteractions,   toggleVisibility, } from './dom/styling'; import {getTransformTransitionDurationInMs} from './dom/transition-duration'; import {getMutableClientRect, adjustClientRect} from './dom/client-rect'; import {ParentPositionTracker} from './dom/parent-position-tracker'; import {deepCloneNode} from './dom/clone-node';  /** Object that can be used to configure the behavior of DragRef. */ export interface DragRefConfig {   /**    * Minimum amount of pixels that the user should    * drag, before the CDK initiates a drag sequence.    */   dragStartThreshold: number;    /**    * Amount the pixels the user should drag before the CDK    * considers them to have changed the drag direction.    */   pointerDirectionChangeThreshold: number;    /** `z-index` for the absolutely-positioned elements that are created by the drag item. */   zIndex?: number;    /** Ref that the current drag item is nested in. */   parentDragRef?: DragRef; }  /** Options that can be used to bind a passive event listener. */ const passiveEventListenerOptions = normalizePassiveListenerOptions({passive: true});  /** Options that can be used to bind an active event listener. */ const activeEventListenerOptions = normalizePassiveListenerOptions({passive: false});  /**  * Time in milliseconds for which to ignore mouse events, after  * receiving a touch event. Used to avoid doing double work for  * touch devices where the browser fires fake mouse events, in  * addition to touch events.  */ const MOUSE_EVENT_IGNORE_TIME = 800;  // TODO(crisbeto): add an API for moving a draggable up/down the // list programmatically. Useful for keyboard controls.  /**  * Internal compile-time-only representation of a `DragRef`.  * Used to avoid circular import issues between the `DragRef` and the `DropListRef`.  * @docs-private  */ export interface DragRefInternal extends DragRef {}  /** Template that can be used to create a drag helper element (e.g. a preview or a placeholder). */ interface DragHelperTemplate<T = any> {   template: TemplateRef<T> | null;   viewContainer: ViewContainerRef;   context: T; }  /** Template that can be used to create a drag preview element. */ interface DragPreviewTemplate<T = any> extends DragHelperTemplate<T> {   matchSize?: boolean; }  /** Point on the page or within an element. */ export interface Point {   x: number;   y: number; }  /** Inline styles to be set as `!important` while dragging. */ const dragImportantProperties = new Set([   // Needs to be important, because some `mat-table` sets `position: sticky !important`. See #22781.   'position', ]);  /**  * Possible places into which the preview of a drag item can be inserted.  * - `global` - Preview will be inserted at the bottom of the `<body>`. The advantage is that  * you don't have to worry about `overflow: hidden` or `z-index`, but the item won't retain  * its inherited styles.  * - `parent` - Preview will be inserted into the parent of the drag item. The advantage is that  * inherited styles will be preserved, but it may be clipped by `overflow: hidden` or not be  * visible due to `z-index`. Furthermore, the preview is going to have an effect over selectors  * like `:nth-child` and some flexbox configurations.  * - `ElementRef<HTMLElement> | HTMLElement` - Preview will be inserted into a specific element.  * Same advantages and disadvantages as `parent`.  */ export type PreviewContainer = 'global' | 'parent' | ElementRef<HTMLElement> | HTMLElement;  /**  * Reference to a draggable item. Used to manipulate or dispose of the item.  */ export class DragRef<T = any> {   /** Element displayed next to the user's pointer while the element is dragged. */   private _preview: HTMLElement;    /** Reference to the view of the preview element. */   private _previewRef: EmbeddedViewRef<any> | null;    /** Container into which to insert the preview. */   private _previewContainer: PreviewContainer | undefined;    /** Reference to the view of the placeholder element. */   private _placeholderRef: EmbeddedViewRef<any> | null;    /** Element that is rendered instead of the draggable item while it is being sorted. */   private _placeholder: HTMLElement;    /** Coordinates within the element at which the user picked up the element. */   private _pickupPositionInElement: Point;    /** Coordinates on the page at which the user picked up the element. */   private _pickupPositionOnPage: Point;    /**    * Anchor node used to save the place in the DOM where the element was    * picked up so that it can be restored at the end of the drag sequence.    */   private _anchor: Comment;    /**    * CSS `transform` applied to the element when it isn't being dragged. We need a    * passive transform in order for the dragged element to retain its new position    * after the user has stopped dragging and because we need to know the relative    * position in case they start dragging again. This corresponds to `element.style.transform`.    */   private _passiveTransform: Point = {x: 0, y: 0};    /** CSS `transform` that is applied to the element while it's being dragged. */   private _activeTransform: Point = {x: 0, y: 0};    /** Inline `transform` value that the element had before the first dragging sequence. */   private _initialTransform?: string;    /**    * Whether the dragging sequence has been started. Doesn't    * necessarily mean that the element has been moved.    */   private _hasStartedDragging = false;    /** Whether the element has moved since the user started dragging it. */   private _hasMoved: boolean;    /** Drop container in which the DragRef resided when dragging began. */   private _initialContainer: DropListRef;    /** Index at which the item started in its initial container. */   private _initialIndex: number;    /** Cached positions of scrollable parent elements. */   private _parentPositions: ParentPositionTracker;    /** Emits when the item is being moved. */   private readonly _moveEvents = new Subject<{     source: DragRef;     pointerPosition: {x: number; y: number};     event: MouseEvent | TouchEvent;     distance: Point;     delta: {x: -1 | 0 | 1; y: -1 | 0 | 1};   }>();    /** Keeps track of the direction in which the user is dragging along each axis. */   private _pointerDirectionDelta: {x: -1 | 0 | 1; y: -1 | 0 | 1};    /** Pointer position at which the last change in the delta occurred. */   private _pointerPositionAtLastDirectionChange: Point;    /** Position of the pointer at the last pointer event. */   private _lastKnownPointerPosition: Point;    /**    * Root DOM node of the drag instance. This is the element that will    * be moved around as the user is dragging.    */   private _rootElement: HTMLElement;    /**    * Nearest ancestor SVG, relative to which coordinates are calculated if dragging SVGElement    */   private _ownerSVGElement: SVGSVGElement | null;    /**    * Inline style value of `-webkit-tap-highlight-color` at the time the    * dragging was started. Used to restore the value once we're done dragging.    */   private _rootElementTapHighlight: string;    /** Subscription to pointer movement events. */   private _pointerMoveSubscription = Subscription.EMPTY;    /** Subscription to the event that is dispatched when the user lifts their pointer. */   private _pointerUpSubscription = Subscription.EMPTY;    /** Subscription to the viewport being scrolled. */   private _scrollSubscription = Subscription.EMPTY;    /** Subscription to the viewport being resized. */   private _resizeSubscription = Subscription.EMPTY;    /**    * Time at which the last touch event occurred. Used to avoid firing the same    * events multiple times on touch devices where the browser will fire a fake    * mouse event for each touch event, after a certain time.    */   private _lastTouchEventTime: number;    /** Time at which the last dragging sequence was started. */   private _dragStartTime: number;    /** Cached reference to the boundary element. */   private _boundaryElement: HTMLElement | null = null;    /** Whether the native dragging interactions have been enabled on the root element. */   private _nativeInteractionsEnabled = true;    /** Client rect of the root element when the dragging sequence has started. */   private _initialClientRect?: ClientRect;    /** Cached dimensions of the preview element. Should be read via `_getPreviewRect`. */   private _previewRect?: ClientRect;    /** Cached dimensions of the boundary element. */   private _boundaryRect?: ClientRect;    /** Element that will be used as a template to create the draggable item's preview. */   private _previewTemplate?: DragPreviewTemplate | null;    /** Template for placeholder element rendered to show where a draggable would be dropped. */   private _placeholderTemplate?: DragHelperTemplate | null;    /** Elements that can be used to drag the draggable item. */   private _handles: HTMLElement[] = [];    /** Registered handles that are currently disabled. */   private _disabledHandles = new Set<HTMLElement>();    /** Droppable container that the draggable is a part of. */   private _dropContainer?: DropListRef;    /** Layout direction of the item. */   private _direction: Direction = 'ltr';    /** Ref that the current drag item is nested in. */   private _parentDragRef: DragRef<unknown> | null;    /**    * Cached shadow root that the element is placed in. `null` means that the element isn't in    * the shadow DOM and `undefined` means that it hasn't been resolved yet. Should be read via    * `_getShadowRoot`, not directly.    */   private _cachedShadowRoot: ShadowRoot | null | undefined;    /** Axis along which dragging is locked. */   lockAxis: 'x' | 'y';    /**    * Amount of milliseconds to wait after the user has put their    * pointer down before starting to drag the element.    */   dragStartDelay: number | {touch: number; mouse: number} = 0;    /** Class to be added to the preview element. */   previewClass: string | string[] | undefined;    /** Whether starting to drag this element is disabled. */   get disabled(): boolean {     return this._disabled || !!(this._dropContainer && this._dropContainer.disabled);   }   set disabled(value: boolean) {     const newValue = coerceBooleanProperty(value);      if (newValue !== this._disabled) {       this._disabled = newValue;       this._toggleNativeDragInteractions();       this._handles.forEach(handle => toggleNativeDragInteractions(handle, newValue));     }   }   private _disabled = false;    /** Emits as the drag sequence is being prepared. */   readonly beforeStarted = new Subject<void>();    /** Emits when the user starts dragging the item. */   readonly started = new Subject<{source: DragRef; event: MouseEvent | TouchEvent}>();    /** Emits when the user has released a drag item, before any animations have started. */   readonly released = new Subject<{source: DragRef; event: MouseEvent | TouchEvent}>();    /** Emits when the user stops dragging an item in the container. */   readonly ended = new Subject<{     source: DragRef;     distance: Point;     dropPoint: Point;     event: MouseEvent | TouchEvent;   }>();    /** Emits when the user has moved the item into a new container. */   readonly entered = new Subject<{container: DropListRef; item: DragRef; currentIndex: number}>();    /** Emits when the user removes the item its container by dragging it into another container. */   readonly exited = new Subject<{container: DropListRef; item: DragRef}>();    /** Emits when the user drops the item inside a container. */   readonly dropped = new Subject<{     previousIndex: number;     currentIndex: number;     item: DragRef;     container: DropListRef;     previousContainer: DropListRef;     distance: Point;     dropPoint: Point;     isPointerOverContainer: boolean;     event: MouseEvent | TouchEvent;   }>();    /**    * Emits as the user is dragging the item. Use with caution,    * because this event will fire for every pixel that the user has dragged.    */   readonly moved: Observable<{     source: DragRef;     pointerPosition: {x: number; y: number};     event: MouseEvent | TouchEvent;     distance: Point;     delta: {x: -1 | 0 | 1; y: -1 | 0 | 1};   }> = this._moveEvents;    /** Arbitrary data that can be attached to the drag item. */   data: T;    /**    * Function that can be used to customize the logic of how the position of the drag item    * is limited while it's being dragged. Gets called with a point containing the current position    * of the user's pointer on the page, a reference to the item being dragged and its dimensions.    * Should return a point describing where the item should be rendered.    */   constrainPosition?: (     userPointerPosition: Point,     dragRef: DragRef,     dimensions: ClientRect,     pickupPositionInElement: Point,   ) => Point;    constructor(     element: ElementRef<HTMLElement> | HTMLElement,     private _config: DragRefConfig,     private _document: Document,     private _ngZone: NgZone,     private _viewportRuler: ViewportRuler,     private _dragDropRegistry: DragDropRegistry<DragRef, DropListRef>,   ) {     this.withRootElement(element).withParent(_config.parentDragRef || null);     this._parentPositions = new ParentPositionTracker(_document);     _dragDropRegistry.registerDragItem(this);   }    /**    * Returns the element that is being used as a placeholder    * while the current element is being dragged.    */   getPlaceholderElement(): HTMLElement {     return this._placeholder;   }    /** Returns the root draggable element. */   getRootElement(): HTMLElement {     return this._rootElement;   }    /**    * Gets the currently-visible element that represents the drag item.    * While dragging this is the placeholder, otherwise it's the root element.    */   getVisibleElement(): HTMLElement {     return this.isDragging() ? this.getPlaceholderElement() : this.getRootElement();   }    /** Registers the handles that can be used to drag the element. */   withHandles(handles: (HTMLElement | ElementRef<HTMLElement>)[]): this {     this._handles = handles.map(handle => coerceElement(handle));     this._handles.forEach(handle => toggleNativeDragInteractions(handle, this.disabled));     this._toggleNativeDragInteractions();      // Delete any lingering disabled handles that may have been destroyed. Note that we re-create     // the set, rather than iterate over it and filter out the destroyed handles, because while     // the ES spec allows for sets to be modified while they're being iterated over, some polyfills     // use an array internally which may throw an error.     const disabledHandles = new Set<HTMLElement>();     this._disabledHandles.forEach(handle => {       if (this._handles.indexOf(handle) > -1) {         disabledHandles.add(handle);       }     });     this._disabledHandles = disabledHandles;     return this;   }    /**    * Registers the template that should be used for the drag preview.    * @param template Template that from which to stamp out the preview.    */   withPreviewTemplate(template: DragPreviewTemplate | null): this {     this._previewTemplate = template;     return this;   }    /**    * Registers the template that should be used for the drag placeholder.    * @param template Template that from which to stamp out the placeholder.    */   withPlaceholderTemplate(template: DragHelperTemplate | null): this {     this._placeholderTemplate = template;     return this;   }    /**    * Sets an alternate drag root element. The root element is the element that will be moved as    * the user is dragging. Passing an alternate root element is useful when trying to enable    * dragging on an element that you might not have access to.    */   withRootElement(rootElement: ElementRef<HTMLElement> | HTMLElement): this {     const element = coerceElement(rootElement);      if (element !== this._rootElement) {       if (this._rootElement) {         this._removeRootElementListeners(this._rootElement);       }        this._ngZone.runOutsideAngular(() => {         element.addEventListener('mousedown', this._pointerDown, activeEventListenerOptions);         element.addEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);         element.addEventListener('dragstart', this._nativeDragStart, activeEventListenerOptions);       });       this._initialTransform = undefined;       this._rootElement = element;     }      if (typeof SVGElement !== 'undefined' && this._rootElement instanceof SVGElement) {       this._ownerSVGElement = this._rootElement.ownerSVGElement;     }      return this;   }    /**    * Element to which the draggable's position will be constrained.    */   withBoundaryElement(boundaryElement: ElementRef<HTMLElement> | HTMLElement | null): this {     this._boundaryElement = boundaryElement ? coerceElement(boundaryElement) : null;     this._resizeSubscription.unsubscribe();     if (boundaryElement) {       this._resizeSubscription = this._viewportRuler         .change(10)         .subscribe(() => this._containInsideBoundaryOnResize());     }     return this;   }    /** Sets the parent ref that the ref is nested in.  */   withParent(parent: DragRef<unknown> | null): this {     this._parentDragRef = parent;     return this;   }    /** Removes the dragging functionality from the DOM element. */   dispose() {     this._removeRootElementListeners(this._rootElement);      // Do this check before removing from the registry since it'll     // stop being considered as dragged once it is removed.     if (this.isDragging()) {       // Since we move out the element to the end of the body while it's being       // dragged, we have to make sure that it's removed if it gets destroyed.       this._rootElement?.remove();     }      this._anchor?.remove();     this._destroyPreview();     this._destroyPlaceholder();     this._dragDropRegistry.removeDragItem(this);     this._removeSubscriptions();     this.beforeStarted.complete();     this.started.complete();     this.released.complete();     this.ended.complete();     this.entered.complete();     this.exited.complete();     this.dropped.complete();     this._moveEvents.complete();     this._handles = [];     this._disabledHandles.clear();     this._dropContainer = undefined;     this._resizeSubscription.unsubscribe();     this._parentPositions.clear();     this._boundaryElement =       this._rootElement =       this._ownerSVGElement =       this._placeholderTemplate =       this._previewTemplate =       this._anchor =       this._parentDragRef =         null!;   }    /** Checks whether the element is currently being dragged. */   isDragging(): boolean {     return this._hasStartedDragging && this._dragDropRegistry.isDragging(this);   }    /** Resets a standalone drag item to its initial position. */   reset(): void {     this._rootElement.style.transform = this._initialTransform || '';     this._activeTransform = {x: 0, y: 0};     this._passiveTransform = {x: 0, y: 0};   }    /**    * Sets a handle as disabled. While a handle is disabled, it'll capture and interrupt dragging.    * @param handle Handle element that should be disabled.    */   disableHandle(handle: HTMLElement) {     if (!this._disabledHandles.has(handle) && this._handles.indexOf(handle) > -1) {       this._disabledHandles.add(handle);       toggleNativeDragInteractions(handle, true);     }   }    /**    * Enables a handle, if it has been disabled.    * @param handle Handle element to be enabled.    */   enableHandle(handle: HTMLElement) {     if (this._disabledHandles.has(handle)) {       this._disabledHandles.delete(handle);       toggleNativeDragInteractions(handle, this.disabled);     }   }    /** Sets the layout direction of the draggable item. */   withDirection(direction: Direction): this {     this._direction = direction;     return this;   }    /** Sets the container that the item is part of. */   _withDropContainer(container: DropListRef) {     this._dropContainer = container;   }    /**    * Gets the current position in pixels the draggable outside of a drop container.    */   getFreeDragPosition(): Readonly<Point> {     const position = this.isDragging() ? this._activeTransform : this._passiveTransform;     return {x: position.x, y: position.y};   }    /**    * Sets the current position in pixels the draggable outside of a drop container.    * @param value New position to be set.    */   setFreeDragPosition(value: Point): this {     this._activeTransform = {x: 0, y: 0};     this._passiveTransform.x = value.x;     this._passiveTransform.y = value.y;      if (!this._dropContainer) {       this._applyRootElementTransform(value.x, value.y);     }      return this;   }    /**    * Sets the container into which to insert the preview element.    * @param value Container into which to insert the preview.    */   withPreviewContainer(value: PreviewContainer): this {     this._previewContainer = value;     return this;   }    /** Updates the item's sort order based on the last-known pointer position. */   _sortFromLastPointerPosition() {     const position = this._lastKnownPointerPosition;      if (position && this._dropContainer) {       this._updateActiveDropContainer(this._getConstrainedPointerPosition(position), position);     }   }    /** Unsubscribes from the global subscriptions. */   private _removeSubscriptions() {     this._pointerMoveSubscription.unsubscribe();     this._pointerUpSubscription.unsubscribe();     this._scrollSubscription.unsubscribe();   }    /** Destroys the preview element and its ViewRef. */   private _destroyPreview() {     this._preview?.remove();     this._previewRef?.destroy();     this._preview = this._previewRef = null!;   }    /** Destroys the placeholder element and its ViewRef. */   private _destroyPlaceholder() {     this._placeholder?.remove();     this._placeholderRef?.destroy();     this._placeholder = this._placeholderRef = null!;   }    /** Handler for the `mousedown`/`touchstart` events. */   private _pointerDown = (event: MouseEvent | TouchEvent) => {     this.beforeStarted.next();      // Delegate the event based on whether it started from a handle or the element itself.     if (this._handles.length) {       const targetHandle = this._getTargetHandle(event);        if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {         this._initializeDragSequence(targetHandle, event);       }     } else if (!this.disabled) {       this._initializeDragSequence(this._rootElement, event);     }   };    /** Handler that is invoked when the user moves their pointer after they've initiated a drag. */   private _pointerMove = (event: MouseEvent | TouchEvent) => {     const pointerPosition = this._getPointerPositionOnPage(event);      if (!this._hasStartedDragging) {       const distanceX = Math.abs(pointerPosition.x - this._pickupPositionOnPage.x);       const distanceY = Math.abs(pointerPosition.y - this._pickupPositionOnPage.y);       const isOverThreshold = distanceX + distanceY >= this._config.dragStartThreshold;        // Only start dragging after the user has moved more than the minimum distance in either       // direction. Note that this is preferable over doing something like `skip(minimumDistance)`       // in the `pointerMove` subscription, because we're not guaranteed to have one move event       // per pixel of movement (e.g. if the user moves their pointer quickly).       if (isOverThreshold) {         const isDelayElapsed = Date.now() >= this._dragStartTime + this._getDragStartDelay(event);         const container = this._dropContainer;          if (!isDelayElapsed) {           this._endDragSequence(event);           return;         }          // Prevent other drag sequences from starting while something in the container is still         // being dragged. This can happen while we're waiting for the drop animation to finish         // and can cause errors, because some elements might still be moving around.         if (!container || (!container.isDragging() && !container.isReceiving())) {           // Prevent the default action as soon as the dragging sequence is considered as           // \"started\" since waiting for the next event can allow the device to begin scrolling.           event.preventDefault();           this._hasStartedDragging = true;           this._ngZone.run(() => this._startDragSequence(event));         }       }        return;     }      // We prevent the default action down here so that we know that dragging has started. This is     // important for touch devices where doing this too early can unnecessarily block scrolling,     // if there's a dragging delay.     event.preventDefault();      const constrainedPointerPosition = this._getConstrainedPointerPosition(pointerPosition);     this._hasMoved = true;     this._lastKnownPointerPosition = pointerPosition;     this._updatePointerDirectionDelta(constrainedPointerPosition);      if (this._dropContainer) {       this._updateActiveDropContainer(constrainedPointerPosition, pointerPosition);     } else {       // If there's a position constraint function, we want the element's top/left to be at the       // specific position on the page. Use the initial position as a reference if that's the case.       const offset = this.constrainPosition ? this._initialClientRect! : this._pickupPositionOnPage;       const activeTransform = this._activeTransform;       activeTransform.x = constrainedPointerPosition.x - offset.x + this._passiveTransform.x;       activeTransform.y = constrainedPointerPosition.y - offset.y + this._passiveTransform.y;       this._applyRootElementTransform(activeTransform.x, activeTransform.y);     }      // Since this event gets fired for every pixel while dragging, we only     // want to fire it if the consumer opted into it. Also we have to     // re-enter the zone because we run all of the events on the outside.     if (this._moveEvents.observers.length) {       this._ngZone.run(() => {         this._moveEvents.next({           source: this,           pointerPosition: constrainedPointerPosition,           event,           distance: this._getDragDistance(constrainedPointerPosition),           delta: this._pointerDirectionDelta,         });       });     }   };    /** Handler that is invoked when the user lifts their pointer up, after initiating a drag. */   private _pointerUp = (event: MouseEvent | TouchEvent) => {     this._endDragSequence(event);   };    /**    * Clears subscriptions and stops the dragging sequence.    * @param event Browser event object that ended the sequence.    */   private _endDragSequence(event: MouseEvent | TouchEvent) {     // Note that here we use `isDragging` from the service, rather than from `this`.     // The difference is that the one from the service reflects whether a dragging sequence     // has been initiated, whereas the one on `this` includes whether the user has passed     // the minimum dragging threshold.     if (!this._dragDropRegistry.isDragging(this)) {       return;     }      this._removeSubscriptions();     this._dragDropRegistry.stopDragging(this);     this._toggleNativeDragInteractions();      if (this._handles) {       (this._rootElement.style as DragCSSStyleDeclaration).webkitTapHighlightColor =         this._rootElementTapHighlight;     }      if (!this._hasStartedDragging) {       return;     }      this.released.next({source: this, event});      if (this._dropContainer) {       // Stop scrolling immediately, instead of waiting for the animation to finish.       this._dropContainer._stopScrolling();       this._animatePreviewToPlaceholder().then(() => {         this._cleanupDragArtifacts(event);         this._cleanupCachedDimensions();         this._dragDropRegistry.stopDragging(this);       });     } else {       // Convert the active transform into a passive one. This means that next time       // the user starts dragging the item, its position will be calculated relatively       // to the new passive transform.       this._passiveTransform.x = this._activeTransform.x;       const pointerPosition = this._getPointerPositionOnPage(event);       this._passiveTransform.y = this._activeTransform.y;       this._ngZone.run(() => {         this.ended.next({           source: this,           distance: this._getDragDistance(pointerPosition),           dropPoint: pointerPosition,           event,         });       });       this._cleanupCachedDimensions();       this._dragDropRegistry.stopDragging(this);     }   }    /** Starts the dragging sequence. */   private _startDragSequence(event: MouseEvent | TouchEvent) {     if (isTouchEvent(event)) {       this._lastTouchEventTime = Date.now();     }      this._toggleNativeDragInteractions();      const dropContainer = this._dropContainer;      if (dropContainer) {       const element = this._rootElement;       const parent = element.parentNode as HTMLElement;       const placeholder = (this._placeholder = this._createPlaceholderElement());       const anchor = (this._anchor = this._anchor || this._document.createComment(''));        // Needs to happen before the root element is moved.       const shadowRoot = this._getShadowRoot();        // Insert an anchor node so that we can restore the element's position in the DOM.       parent.insertBefore(anchor, element);        // There's no risk of transforms stacking when inside a drop container so       // we can keep the initial transform up to date any time dragging starts.       this._initialTransform = element.style.transform || '';        // Create the preview after the initial transform has       // been cached, because it can be affected by the transform.       this._preview = this._createPreviewElement();        // We move the element out at the end of the body and we make it hidden, because keeping it in       // place will throw off the consumer's `:last-child` selectors. We can't remove the element       // from the DOM completely, because iOS will stop firing all subsequent events in the chain.       toggleVisibility(element, false, dragImportantProperties);       this._document.body.appendChild(parent.replaceChild(placeholder, element));       this._getPreviewInsertionPoint(parent, shadowRoot).appendChild(this._preview);       this.started.next({source: this, event}); // Emit before notifying the container.       dropContainer.start();       this._initialContainer = dropContainer;       this._initialIndex = dropContainer.getItemIndex(this);     } else {       this.started.next({source: this, event});       this._initialContainer = this._initialIndex = undefined!;     }      // Important to run after we've called `start` on the parent container     // so that it has had time to resolve its scrollable parents.     this._parentPositions.cache(dropContainer ? dropContainer.getScrollableParents() : []);   }    /**    * Sets up the different variables and subscriptions    * that will be necessary for the dragging sequence.    * @param referenceElement Element that started the drag sequence.    * @param event Browser event object that started the sequence.    */   private _initializeDragSequence(referenceElement: HTMLElement, event: MouseEvent | TouchEvent) {     // Stop propagation if the item is inside another     // draggable so we don't start multiple drag sequences.     if (this._parentDragRef) {       event.stopPropagation();     }      const isDragging = this.isDragging();     const isTouchSequence = isTouchEvent(event);     const isAuxiliaryMouseButton = !isTouchSequence && (event as MouseEvent).button !== 0;     const rootElement = this._rootElement;     const target = _getEventTarget(event);     const isSyntheticEvent =       !isTouchSequence &&       this._lastTouchEventTime &&       this._lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now();     const isFakeEvent = isTouchSequence       ? isFakeTouchstartFromScreenReader(event as TouchEvent)       : isFakeMousedownFromScreenReader(event as MouseEvent);      // If the event started from an element with the native HTML drag&drop, it'll interfere     // with our own dragging (e.g. `img` tags do it by default). Prevent the default action     // to stop it from happening. Note that preventing on `dragstart` also seems to work, but     // it's flaky and it fails if the user drags it away quickly. Also note that we only want     // to do this for `mousedown` since doing the same for `touchstart` will stop any `click`     // events from firing on touch devices.     if (target && (target as HTMLElement).draggable && event.type === 'mousedown') {       event.preventDefault();     }      // Abort if the user is already dragging or is using a mouse button other than the primary one.     if (isDragging || isAuxiliaryMouseButton || isSyntheticEvent || isFakeEvent) {       return;     }      // If we've got handles, we need to disable the tap highlight on the entire root element,     // otherwise iOS will still add it, even though all the drag interactions on the handle     // are disabled.     if (this._handles.length) {       const rootStyles = rootElement.style as DragCSSStyleDeclaration;       this._rootElementTapHighlight = rootStyles.webkitTapHighlightColor || '';       rootStyles.webkitTapHighlightColor = 'transparent';     }      this._hasStartedDragging = this._hasMoved = false;      // Avoid multiple subscriptions and memory leaks when multi touch     // (isDragging check above isn't enough because of possible temporal and/or dimensional delays)     this._removeSubscriptions();     this._initialClientRect = this._rootElement.getBoundingClientRect();     this._pointerMoveSubscription = this._dragDropRegistry.pointerMove.subscribe(this._pointerMove);     this._pointerUpSubscription = this._dragDropRegistry.pointerUp.subscribe(this._pointerUp);     this._scrollSubscription = this._dragDropRegistry       .scrolled(this._getShadowRoot())       .subscribe(scrollEvent => this._updateOnScroll(scrollEvent));      if (this._boundaryElement) {       this._boundaryRect = getMutableClientRect(this._boundaryElement);     }      // If we have a custom preview we can't know ahead of time how large it'll be so we position     // it next to the cursor. The exception is when the consumer has opted into making the preview     // the same size as the root element, in which case we do know the size.     const previewTemplate = this._previewTemplate;     this._pickupPositionInElement =       previewTemplate && previewTemplate.template && !previewTemplate.matchSize         ? {x: 0, y: 0}         : this._getPointerPositionInElement(this._initialClientRect, referenceElement, event);     const pointerPosition =       (this._pickupPositionOnPage =       this._lastKnownPointerPosition =         this._getPointerPositionOnPage(event));     this._pointerDirectionDelta = {x: 0, y: 0};     this._pointerPositionAtLastDirectionChange = {x: pointerPosition.x, y: pointerPosition.y};     this._dragStartTime = Date.now();     this._dragDropRegistry.startDragging(this, event);   }    /** Cleans up the DOM artifacts that were added to facilitate the element being dragged. */   private _cleanupDragArtifacts(event: MouseEvent | TouchEvent) {     // Restore the element's visibility and insert it at its old position in the DOM.     // It's important that we maintain the position, because moving the element around in the DOM     // can throw off `NgFor` which does smart diffing and re-creates elements only when necessary,     // while moving the existing elements in all other cases.     toggleVisibility(this._rootElement, true, dragImportantProperties);     this._anchor.parentNode!.replaceChild(this._rootElement, this._anchor);      this._destroyPreview();     this._destroyPlaceholder();     this._initialClientRect =       this._boundaryRect =       this._previewRect =       this._initialTransform =         undefined;      // Re-enter the NgZone since we bound `document` events on the outside.     this._ngZone.run(() => {       const container = this._dropContainer!;       const currentIndex = container.getItemIndex(this);       const pointerPosition = this._getPointerPositionOnPage(event);       const distance = this._getDragDistance(pointerPosition);       const isPointerOverContainer = container._isOverContainer(         pointerPosition.x,         pointerPosition.y,       );        this.ended.next({source: this, distance, dropPoint: pointerPosition, event});       this.dropped.next({         item: this,         currentIndex,         previousIndex: this._initialIndex,         container: container,         previousContainer: this._initialContainer,         isPointerOverContainer,         distance,         dropPoint: pointerPosition,         event,       });       container.drop(         this,         currentIndex,         this._initialIndex,         this._initialContainer,         isPointerOverContainer,         distance,         pointerPosition,         event,       );       this._dropContainer = this._initialContainer;     });   }    /**    * Updates the item's position in its drop container, or moves it    * into a new one, depending on its current drag position.    */   private _updateActiveDropContainer({x, y}: Point, {x: rawX, y: rawY}: Point) {     // Drop container that draggable has been moved into.     let newContainer = this._initialContainer._getSiblingContainerFromPosition(this, x, y);      // If we couldn't find a new container to move the item into, and the item has left its     // initial container, check whether the it's over the initial container. This handles the     // case where two containers are connected one way and the user tries to undo dragging an     // item into a new container.     if (       !newContainer &&       this._dropContainer !== this._initialContainer &&       this._initialContainer._isOverContainer(x, y)     ) {       newContainer = this._initialContainer;     }      if (newContainer && newContainer !== this._dropContainer) {       this._ngZone.run(() => {         // Notify the old container that the item has left.         this.exited.next({item: this, container: this._dropContainer!});         this._dropContainer!.exit(this);         // Notify the new container that the item has entered.         this._dropContainer = newContainer!;         this._dropContainer.enter(           this,           x,           y,           newContainer === this._initialContainer &&             // If we're re-entering the initial container and sorting is disabled,             // put item the into its starting index to begin with.             newContainer.sortingDisabled             ? this._initialIndex             : undefined,         );         this.entered.next({           item: this,           container: newContainer!,           currentIndex: newContainer!.getItemIndex(this),         });       });     }      // Dragging may have been interrupted as a result of the events above.     if (this.isDragging()) {       this._dropContainer!._startScrollingIfNecessary(rawX, rawY);       this._dropContainer!._sortItem(this, x, y, this._pointerDirectionDelta);        if (this.constrainPosition) {         this._applyPreviewTransform(x, y);       } else {         this._applyPreviewTransform(           x - this._pickupPositionInElement.x,           y - this._pickupPositionInElement.y,         );       }     }   }    /**    * Creates the element that will be rendered next to the user's pointer    * and will be used as a preview of the element that is being dragged.    */   private _createPreviewElement(): HTMLElement {     const previewConfig = this._previewTemplate;     const previewClass = this.previewClass;     const previewTemplate = previewConfig ? previewConfig.template : null;     let preview: HTMLElement;      if (previewTemplate && previewConfig) {       // Measure the element before we've inserted the preview       // since the insertion could throw off the measurement.       const rootRect = previewConfig.matchSize ? this._initialClientRect : null;       const viewRef = previewConfig.viewContainer.createEmbeddedView(         previewTemplate,         previewConfig.context,       );       viewRef.detectChanges();       preview = getRootNode(viewRef, this._document);       this._previewRef = viewRef;       if (previewConfig.matchSize) {         matchElementSize(preview, rootRect!);       } else {         preview.style.transform = getTransform(           this._pickupPositionOnPage.x,           this._pickupPositionOnPage.y,         );       }     } else {       preview = deepCloneNode(this._rootElement);       matchElementSize(preview, this._initialClientRect!);        if (this._initialTransform) {         preview.style.transform = this._initialTransform;       }     }      extendStyles(       preview.style,       {         // It's important that we disable the pointer events on the preview, because         // it can throw off the `document.elementFromPoint` calls in the `CdkDropList`.         'pointer-events': 'none',         // We have to reset the margin, because it can throw off positioning relative to the viewport.         'margin': '0',         'position': 'fixed',         'top': '0',         'left': '0',         'z-index': `${this._config.zIndex || 1000}`,       },       dragImportantProperties,     );      toggleNativeDragInteractions(preview, false);     preview.classList.add('cdk-drag-preview');     preview.setAttribute('dir', this._direction);      if (previewClass) {       if (Array.isArray(previewClass)) {         previewClass.forEach(className => preview.classList.add(className));       } else {         preview.classList.add(previewClass);       }     }      return preview;   }    /**    * Animates the preview element from its current position to the location of the drop placeholder.    * @returns Promise that resolves when the animation completes.    */   private _animatePreviewToPlaceholder(): Promise<void> {     // If the user hasn't moved yet, the transitionend event won't fire.     if (!this._hasMoved) {       return Promise.resolve();     }      const placeholderRect = this._placeholder.getBoundingClientRect();      // Apply the class that adds a transition to the preview.     this._preview.classList.add('cdk-drag-animating');      // Move the preview to the placeholder position.     this._applyPreviewTransform(placeholderRect.left, placeholderRect.top);      // If the element doesn't have a `transition`, the `transitionend` event won't fire. Since     // we need to trigger a style recalculation in order for the `cdk-drag-animating` class to     // apply its style, we take advantage of the available info to figure out whether we need to     // bind the event in the first place.     const duration = getTransformTransitionDurationInMs(this._preview);      if (duration === 0) {       return Promise.resolve();     }      return this._ngZone.runOutsideAngular(() => {       return new Promise(resolve => {         const handler = ((event: TransitionEvent) => {           if (             !event ||             (_getEventTarget(event) === this._preview && event.propertyName === 'transform')           ) {             this._preview?.removeEventListener('transitionend', handler);             resolve();             clearTimeout(timeout);           }         }) as EventListenerOrEventListenerObject;          // If a transition is short enough, the browser might not fire the `transitionend` event.         // Since we know how long it's supposed to take, add a timeout with a 50% buffer that'll         // fire if the transition hasn't completed when it was supposed to.         const timeout = setTimeout(handler as Function, duration * 1.5);         this._preview.addEventListener('transitionend', handler);       });     });   }    /** Creates an element that will be shown instead of the current element while dragging. */   private _createPlaceholderElement(): HTMLElement {     const placeholderConfig = this._placeholderTemplate;     const placeholderTemplate = placeholderConfig ? placeholderConfig.template : null;     let placeholder: HTMLElement;      if (placeholderTemplate) {       this._placeholderRef = placeholderConfig!.viewContainer.createEmbeddedView(         placeholderTemplate,         placeholderConfig!.context,       );       this._placeholderRef.detectChanges();       placeholder = getRootNode(this._placeholderRef, this._document);     } else {       placeholder = deepCloneNode(this._rootElement);     }      // Stop pointer events on the preview so the user can't     // interact with it while the preview is animating.     placeholder.style.pointerEvents = 'none';     placeholder.classList.add('cdk-drag-placeholder');     return placeholder;   }    /**    * Figures out the coordinates at which an element was picked up.    * @param referenceElement Element that initiated the dragging.    * @param event Event that initiated the dragging.    */   private _getPointerPositionInElement(     elementRect: ClientRect,     referenceElement: HTMLElement,     event: MouseEvent | TouchEvent,   ): Point {     const handleElement = referenceElement === this._rootElement ? null : referenceElement;     const referenceRect = handleElement ? handleElement.getBoundingClientRect() : elementRect;     const point = isTouchEvent(event) ? event.targetTouches[0] : event;     const scrollPosition = this._getViewportScrollPosition();     const x = point.pageX - referenceRect.left - scrollPosition.left;     const y = point.pageY - referenceRect.top - scrollPosition.top;      return {       x: referenceRect.left - elementRect.left + x,       y: referenceRect.top - elementRect.top + y,     };   }    /** Determines the point of the page that was touched by the user. */   private _getPointerPositionOnPage(event: MouseEvent | TouchEvent): Point {     const scrollPosition = this._getViewportScrollPosition();     const point = isTouchEvent(event)       ? // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.         // Also note that on real devices we're guaranteed for either `touches` or `changedTouches`         // to have a value, but Firefox in device emulation mode has a bug where both can be empty         // for `touchstart` and `touchend` so we fall back to a dummy object in order to avoid         // throwing an error. The value returned here will be incorrect, but since this only         // breaks inside a developer tool and the value is only used for secondary information,         // we can get away with it. See https://bugzilla.mozilla.org/show_bug.cgi?id=1615824.         event.touches[0] || event.changedTouches[0] || {pageX: 0, pageY: 0}       : event;      const x = point.pageX - scrollPosition.left;     const y = point.pageY - scrollPosition.top;      // if dragging SVG element, try to convert from the screen coordinate system to the SVG     // coordinate system     if (this._ownerSVGElement) {       const svgMatrix = this._ownerSVGElement.getScreenCTM();       if (svgMatrix) {         const svgPoint = this._ownerSVGElement.createSVGPoint();         svgPoint.x = x;         svgPoint.y = y;         return svgPoint.matrixTransform(svgMatrix.inverse());       }     }      return {x, y};   }    /** Gets the pointer position on the page, accounting for any position constraints. */   private _getConstrainedPointerPosition(point: Point): Point {     const dropContainerLock = this._dropContainer ? this._dropContainer.lockAxis : null;     let {x, y} = this.constrainPosition       ? this.constrainPosition(point, this, this._initialClientRect!, this._pickupPositionInElement)       : point;      if (this.lockAxis === 'x' || dropContainerLock === 'x') {       y = this._pickupPositionOnPage.y;     } else if (this.lockAxis === 'y' || dropContainerLock === 'y') {       x = this._pickupPositionOnPage.x;     }      if (this._boundaryRect) {       const {x: pickupX, y: pickupY} = this._pickupPositionInElement;       const boundaryRect = this._boundaryRect;       const {width: previewWidth, height: previewHeight} = this._getPreviewRect();       const minY = boundaryRect.top + pickupY;       const maxY = boundaryRect.bottom - (previewHeight - pickupY);       const minX = boundaryRect.left + pickupX;       const maxX = boundaryRect.right - (previewWidth - pickupX);        x = clamp(x, minX, maxX);       y = clamp(y, minY, maxY);     }      return {x, y};   }    /** Updates the current drag delta, based on the user's current pointer position on the page. */   private _updatePointerDirectionDelta(pointerPositionOnPage: Point) {     const {x, y} = pointerPositionOnPage;     const delta = this._pointerDirectionDelta;     const positionSinceLastChange = this._pointerPositionAtLastDirectionChange;      // Amount of pixels the user has dragged since the last time the direction changed.     const changeX = Math.abs(x - positionSinceLastChange.x);     const changeY = Math.abs(y - positionSinceLastChange.y);      // Because we handle pointer events on a per-pixel basis, we don't want the delta     // to change for every pixel, otherwise anything that depends on it can look erratic.     // To make the delta more consistent, we track how much the user has moved since the last     // delta change and we only update it after it has reached a certain threshold.     if (changeX > this._config.pointerDirectionChangeThreshold) {       delta.x = x > positionSinceLastChange.x ? 1 : -1;       positionSinceLastChange.x = x;     }      if (changeY > this._config.pointerDirectionChangeThreshold) {       delta.y = y > positionSinceLastChange.y ? 1 : -1;       positionSinceLastChange.y = y;     }      return delta;   }    /** Toggles the native drag interactions, based on how many handles are registered. */   private _toggleNativeDragInteractions() {     if (!this._rootElement || !this._handles) {       return;     }      const shouldEnable = this._handles.length > 0 || !this.isDragging();      if (shouldEnable !== this._nativeInteractionsEnabled) {       this._nativeInteractionsEnabled = shouldEnable;       toggleNativeDragInteractions(this._rootElement, shouldEnable);     }   }    /** Removes the manually-added event listeners from the root element. */   private _removeRootElementListeners(element: HTMLElement) {     element.removeEventListener('mousedown', this._pointerDown, activeEventListenerOptions);     element.removeEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);     element.removeEventListener('dragstart', this._nativeDragStart, activeEventListenerOptions);   }    /**    * Applies a `transform` to the root element, taking into account any existing transforms on it.    * @param x New transform value along the X axis.    * @param y New transform value along the Y axis.    */   private _applyRootElementTransform(x: number, y: number) {     const transform = getTransform(x, y);     const styles = this._rootElement.style;      // Cache the previous transform amount only after the first drag sequence, because     // we don't want our own transforms to stack on top of each other.     // Should be excluded none because none + translate3d(x, y, x) is invalid css     if (this._initialTransform == null) {       this._initialTransform =         styles.transform && styles.transform != 'none' ? styles.transform : '';     }      // Preserve the previous `transform` value, if there was one. Note that we apply our own     // transform before the user's, because things like rotation can affect which direction     // the element will be translated towards.     styles.transform = combineTransforms(transform, this._initialTransform);   }    /**    * Applies a `transform` to the preview, taking into account any existing transforms on it.    * @param x New transform value along the X axis.    * @param y New transform value along the Y axis.    */   private _applyPreviewTransform(x: number, y: number) {     // Only apply the initial transform if the preview is a clone of the original element, otherwise     // it could be completely different and the transform might not make sense anymore.     const initialTransform = this._previewTemplate?.template ? undefined : this._initialTransform;     const transform = getTransform(x, y);     this._preview.style.transform = combineTransforms(transform, initialTransform);   }    /**    * Gets the distance that the user has dragged during the current drag sequence.    * @param currentPosition Current position of the user's pointer.    */   private _getDragDistance(currentPosition: Point): Point {     const pickupPosition = this._pickupPositionOnPage;      if (pickupPosition) {       return {x: currentPosition.x - pickupPosition.x, y: currentPosition.y - pickupPosition.y};     }      return {x: 0, y: 0};   }    /** Cleans up any cached element dimensions that we don't need after dragging has stopped. */   private _cleanupCachedDimensions() {     this._boundaryRect = this._previewRect = undefined;     this._parentPositions.clear();   }    /**    * Checks whether the element is still inside its boundary after the viewport has been resized.    * If not, the position is adjusted so that the element fits again.    */   private _containInsideBoundaryOnResize() {     let {x, y} = this._passiveTransform;      if ((x === 0 && y === 0) || this.isDragging() || !this._boundaryElement) {       return;     }      // Note: don't use `_clientRectAtStart` here, because we want the latest position.     const elementRect = this._rootElement.getBoundingClientRect();     const boundaryRect = this._boundaryElement.getBoundingClientRect();      // It's possible that the element got hidden away after dragging (e.g. by switching to a     // different tab). Don't do anything in this case so we don't clear the user's position.     if (       (boundaryRect.width === 0 && boundaryRect.height === 0) ||       (elementRect.width === 0 && elementRect.height === 0)     ) {       return;     }      const leftOverflow = boundaryRect.left - elementRect.left;     const rightOverflow = elementRect.right - boundaryRect.right;     const topOverflow = boundaryRect.top - elementRect.top;     const bottomOverflow = elementRect.bottom - boundaryRect.bottom;      // If the element has become wider than the boundary, we can't     // do much to make it fit so we just anchor it to the left.     if (boundaryRect.width > elementRect.width) {       if (leftOverflow > 0) {         x += leftOverflow;       }        if (rightOverflow > 0) {         x -= rightOverflow;       }     } else {       x = 0;     }      // If the element has become taller than the boundary, we can't     // do much to make it fit so we just anchor it to the top.     if (boundaryRect.height > elementRect.height) {       if (topOverflow > 0) {         y += topOverflow;       }        if (bottomOverflow > 0) {         y -= bottomOverflow;       }     } else {       y = 0;     }      if (x !== this._passiveTransform.x || y !== this._passiveTransform.y) {       this.setFreeDragPosition({y, x});     }   }    /** Gets the drag start delay, based on the event type. */   private _getDragStartDelay(event: MouseEvent | TouchEvent): number {     const value = this.dragStartDelay;      if (typeof value === 'number') {       return value;     } else if (isTouchEvent(event)) {       return value.touch;     }      return value ? value.mouse : 0;   }    /** Updates the internal state of the draggable element when scrolling has occurred. */   private _updateOnScroll(event: Event) {     const scrollDifference = this._parentPositions.handleScroll(event);      if (scrollDifference) {       const target = _getEventTarget<HTMLElement | Document>(event)!;        // ClientRect dimensions are based on the scroll position of the page and its parent       // node so we have to update the cached boundary ClientRect if the user has scrolled.       if (         this._boundaryRect &&         target !== this._boundaryElement &&         target.contains(this._boundaryElement)       ) {         adjustClientRect(this._boundaryRect, scrollDifference.top, scrollDifference.left);       }        this._pickupPositionOnPage.x += scrollDifference.left;       this._pickupPositionOnPage.y += scrollDifference.top;        // If we're in free drag mode, we have to update the active transform, because       // it isn't relative to the viewport like the preview inside a drop list.       if (!this._dropContainer) {         this._activeTransform.x -= scrollDifference.left;         this._activeTransform.y -= scrollDifference.top;         this._applyRootElementTransform(this._activeTransform.x, this._activeTransform.y);       }     }   }    /** Gets the scroll position of the viewport. */   private _getViewportScrollPosition() {     return (       this._parentPositions.positions.get(this._document)?.scrollPosition ||       this._parentPositions.getViewportScrollPosition()     );   }    /**    * Lazily resolves and returns the shadow root of the element. We do this in a function, rather    * than saving it in property directly on init, because we want to resolve it as late as possible    * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the    * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.    */   private _getShadowRoot(): ShadowRoot | null {     if (this._cachedShadowRoot === undefined) {       this._cachedShadowRoot = _getShadowRoot(this._rootElement);     }      return this._cachedShadowRoot;   }    /** Gets the element into which the drag preview should be inserted. */   private _getPreviewInsertionPoint(     initialParent: HTMLElement,     shadowRoot: ShadowRoot | null,   ): HTMLElement {     const previewContainer = this._previewContainer || 'global';      if (previewContainer === 'parent') {       return initialParent;     }      if (previewContainer === 'global') {       const documentRef = this._document;        // We can't use the body if the user is in fullscreen mode,       // because the preview will render under the fullscreen element.       // TODO(crisbeto): dedupe this with the `FullscreenOverlayContainer` eventually.       return (         shadowRoot ||         documentRef.fullscreenElement ||         (documentRef as any).webkitFullscreenElement ||         (documentRef as any).mozFullScreenElement ||         (documentRef as any).msFullscreenElement ||         documentRef.body       );     }      return coerceElement(previewContainer);   }    /** Lazily resolves and returns the dimensions of the preview. */   private _getPreviewRect(): ClientRect {     // Cache the preview element rect if we haven't cached it already or if     // we cached it too early before the element dimensions were computed.     if (!this._previewRect || (!this._previewRect.width && !this._previewRect.height)) {       this._previewRect = this._preview         ? this._preview.getBoundingClientRect()         : this._initialClientRect!;     }      return this._previewRect;   }    /** Handles a native `dragstart` event. */   private _nativeDragStart = (event: DragEvent) => {     if (this._handles.length) {       const targetHandle = this._getTargetHandle(event);        if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {         event.preventDefault();       }     } else if (!this.disabled) {       // Usually this isn't necessary since the we prevent the default action in `pointerDown`,       // but some cases like dragging of links can slip through (see #24403).       event.preventDefault();     }   };    /** Gets a handle that is the target of an event. */   private _getTargetHandle(event: Event): HTMLElement | undefined {     return this._handles.find(handle => {       return event.target && (event.target === handle || handle.contains(event.target as Node));     });   } }  /**  * Gets a 3d `transform` that can be applied to an element.  * @param x Desired position of the element along the X axis.  * @param y Desired position of the element along the Y axis.  */ function getTransform(x: number, y: number): string {   // Round the transforms since some browsers will   // blur the elements for sub-pixel transforms.   return `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`; }  /** Clamps a value between a minimum and a maximum. */ function clamp(value: number, min: number, max: number) {   return Math.max(min, Math.min(max, value)); }  /** Determines whether an event is a touch event. */ function isTouchEvent(event: MouseEvent | TouchEvent): event is TouchEvent {   // This function is called for every pixel that the user has dragged so we need it to be   // as fast as possible. Since we only bind mouse events and touch events, we can assume   // that if the event's name starts with `t`, it's a touch event.   return event.type[0] === 't'; }  /**  * Gets the root HTML element of an embedded view.  * If the root is not an HTML element it gets wrapped in one.  */ function getRootNode(viewRef: EmbeddedViewRef<any>, _document: Document): HTMLElement {   const rootNodes: Node[] = viewRef.rootNodes;    if (rootNodes.length === 1 && rootNodes[0].nodeType === _document.ELEMENT_NODE) {     return rootNodes[0] as HTMLElement;   }    const wrapper = _document.createElement('div');   rootNodes.forEach(node => wrapper.appendChild(node));   return wrapper; }  /**  * Matches the target element's size to the source's size.  * @param target Element that needs to be resized.  * @param sourceRect Dimensions of the source element.  */ function matchElementSize(target: HTMLElement, sourceRect: ClientRect): void {   target.style.width = `${sourceRect.width}px`;   target.style.height = `${sourceRect.height}px`;   target.style.transform = getTransform(sourceRect.left, sourceRect.top); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Moves an item one index in an array to another.  * @param array Array in which to move the item.  * @param fromIndex Starting index of the item.  * @param toIndex Index to which the item should be moved.  */ export function moveItemInArray<T = any>(array: T[], fromIndex: number, toIndex: number): void {   const from = clamp(fromIndex, array.length - 1);   const to = clamp(toIndex, array.length - 1);    if (from === to) {     return;   }    const target = array[from];   const delta = to < from ? -1 : 1;    for (let i = from; i !== to; i += delta) {     array[i] = array[i + delta];   }    array[to] = target; }  /**  * Moves an item from one array to another.  * @param currentArray Array from which to transfer the item.  * @param targetArray Array into which to put the item.  * @param currentIndex Index of the item in its current array.  * @param targetIndex Index at which to insert the item.  */ export function transferArrayItem<T = any>(   currentArray: T[],   targetArray: T[],   currentIndex: number,   targetIndex: number, ): void {   const from = clamp(currentIndex, currentArray.length - 1);   const to = clamp(targetIndex, targetArray.length);    if (currentArray.length) {     targetArray.splice(to, 0, currentArray.splice(from, 1)[0]);   } }  /**  * Copies an item from one array to another, leaving it in its  * original position in current array.  * @param currentArray Array from which to copy the item.  * @param targetArray Array into which is copy the item.  * @param currentIndex Index of the item in its current array.  * @param targetIndex Index at which to insert the item.  *  */ export function copyArrayItem<T = any>(   currentArray: T[],   targetArray: T[],   currentIndex: number,   targetIndex: number, ): void {   const to = clamp(targetIndex, targetArray.length);    if (currentArray.length) {     targetArray.splice(to, 0, currentArray[currentIndex]);   } }  /** Clamps a number between zero and a maximum. */ function clamp(value: number, max: number): number {   return Math.max(0, Math.min(max, value)); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Direction} from '@angular/cdk/bidi'; import {ElementRef} from '@angular/core'; import {coerceElement} from '@angular/cdk/coercion'; import {DragDropRegistry} from '../drag-drop-registry'; import {moveItemInArray} from '../drag-utils'; import {combineTransforms} from '../dom/styling'; import {adjustClientRect, getMutableClientRect, isInsideClientRect} from '../dom/client-rect'; import {   DropListSortStrategy,   DropListSortStrategyItem,   SortPredicate, } from './drop-list-sort-strategy';  /**  * Entry in the position cache for draggable items.  * @docs-private  */ interface CachedItemPosition<T> {   /** Instance of the drag item. */   drag: T;   /** Dimensions of the item. */   clientRect: ClientRect;   /** Amount by which the item has been moved since dragging started. */   offset: number;   /** Inline transform that the drag item had when dragging started. */   initialTransform: string; }  /**  * Strategy that only supports sorting along a single axis.  * Items are reordered using CSS transforms which allows for sorting to be animated.  * @docs-private  */ export class SingleAxisSortStrategy<T extends DropListSortStrategyItem>   implements DropListSortStrategy<T> {   /** Function used to determine if an item can be sorted into a specific index. */   private _sortPredicate: SortPredicate<T>;    /** Cache of the dimensions of all the items inside the container. */   private _itemPositions: CachedItemPosition<T>[] = [];    /**    * Draggable items that are currently active inside the container. Includes the items    * that were there at the start of the sequence, as well as any items that have been dragged    * in, but haven't been dropped yet.    */   private _activeDraggables: T[];    /** Direction in which the list is oriented. */   orientation: 'vertical' | 'horizontal' = 'vertical';    /** Layout direction of the drop list. */   direction: Direction;    constructor(     private _element: HTMLElement | ElementRef<HTMLElement>,     private _dragDropRegistry: DragDropRegistry<T, unknown>,   ) {}    /**    * Keeps track of the item that was last swapped with the dragged item, as well as what direction    * the pointer was moving in when the swap occurred and whether the user's pointer continued to    * overlap with the swapped item after the swapping occurred.    */   private _previousSwap = {     drag: null as T | null,     delta: 0,     overlaps: false,   };    /**    * To be called when the drag sequence starts.    * @param items Items that are currently in the list.    */   start(items: readonly T[]) {     this.withItems(items);   }    /**    * To be called when an item is being sorted.    * @param item Item to be sorted.    * @param pointerX Position of the item along the X axis.    * @param pointerY Position of the item along the Y axis.    * @param pointerDelta Direction in which the pointer is moving along each axis.    */   sort(item: T, pointerX: number, pointerY: number, pointerDelta: {x: number; y: number}) {     const siblings = this._itemPositions;     const newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY, pointerDelta);      if (newIndex === -1 && siblings.length > 0) {       return null;     }      const isHorizontal = this.orientation === 'horizontal';     const currentIndex = siblings.findIndex(currentItem => currentItem.drag === item);     const siblingAtNewPosition = siblings[newIndex];     const currentPosition = siblings[currentIndex].clientRect;     const newPosition = siblingAtNewPosition.clientRect;     const delta = currentIndex > newIndex ? 1 : -1;      // How many pixels the item's placeholder should be offset.     const itemOffset = this._getItemOffsetPx(currentPosition, newPosition, delta);      // How many pixels all the other items should be offset.     const siblingOffset = this._getSiblingOffsetPx(currentIndex, siblings, delta);      // Save the previous order of the items before moving the item to its new index.     // We use this to check whether an item has been moved as a result of the sorting.     const oldOrder = siblings.slice();      // Shuffle the array in place.     moveItemInArray(siblings, currentIndex, newIndex);      siblings.forEach((sibling, index) => {       // Don't do anything if the position hasn't changed.       if (oldOrder[index] === sibling) {         return;       }        const isDraggedItem = sibling.drag === item;       const offset = isDraggedItem ? itemOffset : siblingOffset;       const elementToOffset = isDraggedItem         ? item.getPlaceholderElement()         : sibling.drag.getRootElement();        // Update the offset to reflect the new position.       sibling.offset += offset;        // Since we're moving the items with a `transform`, we need to adjust their cached       // client rects to reflect their new position, as well as swap their positions in the cache.       // Note that we shouldn't use `getBoundingClientRect` here to update the cache, because the       // elements may be mid-animation which will give us a wrong result.       if (isHorizontal) {         // Round the transforms since some browsers will         // blur the elements, for sub-pixel transforms.         elementToOffset.style.transform = combineTransforms(           `translate3d(${Math.round(sibling.offset)}px, 0, 0)`,           sibling.initialTransform,         );         adjustClientRect(sibling.clientRect, 0, offset);       } else {         elementToOffset.style.transform = combineTransforms(           `translate3d(0, ${Math.round(sibling.offset)}px, 0)`,           sibling.initialTransform,         );         adjustClientRect(sibling.clientRect, offset, 0);       }     });      // Note that it's important that we do this after the client rects have been adjusted.     this._previousSwap.overlaps = isInsideClientRect(newPosition, pointerX, pointerY);     this._previousSwap.drag = siblingAtNewPosition.drag;     this._previousSwap.delta = isHorizontal ? pointerDelta.x : pointerDelta.y;      return {previousIndex: currentIndex, currentIndex: newIndex};   }    /**    * Called when an item is being moved into the container.    * @param item Item that was moved into the container.    * @param pointerX Position of the item along the X axis.    * @param pointerY Position of the item along the Y axis.    * @param index Index at which the item entered. If omitted, the container will try to figure it    *   out automatically.    */   enter(item: T, pointerX: number, pointerY: number, index?: number): void {     const newIndex =       index == null || index < 0         ? // We use the coordinates of where the item entered the drop           // zone to figure out at which index it should be inserted.           this._getItemIndexFromPointerPosition(item, pointerX, pointerY)         : index;      const activeDraggables = this._activeDraggables;     const currentIndex = activeDraggables.indexOf(item);     const placeholder = item.getPlaceholderElement();     let newPositionReference: T | undefined = activeDraggables[newIndex];      // If the item at the new position is the same as the item that is being dragged,     // it means that we're trying to restore the item to its initial position. In this     // case we should use the next item from the list as the reference.     if (newPositionReference === item) {       newPositionReference = activeDraggables[newIndex + 1];     }      // If we didn't find a new position reference, it means that either the item didn't start off     // in this container, or that the item requested to be inserted at the end of the list.     if (       !newPositionReference &&       (newIndex == null || newIndex === -1 || newIndex < activeDraggables.length - 1) &&       this._shouldEnterAsFirstChild(pointerX, pointerY)     ) {       newPositionReference = activeDraggables[0];     }      // Since the item may be in the `activeDraggables` already (e.g. if the user dragged it     // into another container and back again), we have to ensure that it isn't duplicated.     if (currentIndex > -1) {       activeDraggables.splice(currentIndex, 1);     }      // Don't use items that are being dragged as a reference, because     // their element has been moved down to the bottom of the body.     if (newPositionReference && !this._dragDropRegistry.isDragging(newPositionReference)) {       const element = newPositionReference.getRootElement();       element.parentElement!.insertBefore(placeholder, element);       activeDraggables.splice(newIndex, 0, item);     } else {       coerceElement(this._element).appendChild(placeholder);       activeDraggables.push(item);     }      // The transform needs to be cleared so it doesn't throw off the measurements.     placeholder.style.transform = '';      // Note that usually `start` is called together with `enter` when an item goes into a new     // container. This will cache item positions, but we need to refresh them since the amount     // of items has changed.     this._cacheItemPositions();   }    /** Sets the items that are currently part of the list. */   withItems(items: readonly T[]): void {     this._activeDraggables = items.slice();     this._cacheItemPositions();   }    /** Assigns a sort predicate to the strategy. */   withSortPredicate(predicate: SortPredicate<T>): void {     this._sortPredicate = predicate;   }    /** Resets the strategy to its initial state before dragging was started. */   reset() {     // TODO(crisbeto): may have to wait for the animations to finish.     this._activeDraggables.forEach(item => {       const rootElement = item.getRootElement();        if (rootElement) {         const initialTransform = this._itemPositions.find(p => p.drag === item)?.initialTransform;         rootElement.style.transform = initialTransform || '';       }     });      this._itemPositions = [];     this._activeDraggables = [];     this._previousSwap.drag = null;     this._previousSwap.delta = 0;     this._previousSwap.overlaps = false;   }    /**    * Gets a snapshot of items currently in the list.    * Can include items that we dragged in from another list.    */   getActiveItemsSnapshot(): readonly T[] {     return this._activeDraggables;   }    /** Gets the index of a specific item. */   getItemIndex(item: T): number {     // Items are sorted always by top/left in the cache, however they flow differently in RTL.     // The rest of the logic still stands no matter what orientation we're in, however     // we need to invert the array when determining the index.     const items =       this.orientation === 'horizontal' && this.direction === 'rtl'         ? this._itemPositions.slice().reverse()         : this._itemPositions;      return items.findIndex(currentItem => currentItem.drag === item);   }    /** Used to notify the strategy that the scroll position has changed. */   updateOnScroll(topDifference: number, leftDifference: number) {     // Since we know the amount that the user has scrolled we can shift all of the     // client rectangles ourselves. This is cheaper than re-measuring everything and     // we can avoid inconsistent behavior where we might be measuring the element before     // its position has changed.     this._itemPositions.forEach(({clientRect}) => {       adjustClientRect(clientRect, topDifference, leftDifference);     });      // We need two loops for this, because we want all of the cached     // positions to be up-to-date before we re-sort the item.     this._itemPositions.forEach(({drag}) => {       if (this._dragDropRegistry.isDragging(drag)) {         // We need to re-sort the item manually, because the pointer move         // events won't be dispatched while the user is scrolling.         drag._sortFromLastPointerPosition();       }     });   }    /** Refreshes the position cache of the items and sibling containers. */   private _cacheItemPositions() {     const isHorizontal = this.orientation === 'horizontal';      this._itemPositions = this._activeDraggables       .map(drag => {         const elementToMeasure = drag.getVisibleElement();         return {           drag,           offset: 0,           initialTransform: elementToMeasure.style.transform || '',           clientRect: getMutableClientRect(elementToMeasure),         };       })       .sort((a, b) => {         return isHorizontal           ? a.clientRect.left - b.clientRect.left           : a.clientRect.top - b.clientRect.top;       });   }    /**    * Gets the offset in pixels by which the item that is being dragged should be moved.    * @param currentPosition Current position of the item.    * @param newPosition Position of the item where the current item should be moved.    * @param delta Direction in which the user is moving.    */   private _getItemOffsetPx(currentPosition: ClientRect, newPosition: ClientRect, delta: 1 | -1) {     const isHorizontal = this.orientation === 'horizontal';     let itemOffset = isHorizontal       ? newPosition.left - currentPosition.left       : newPosition.top - currentPosition.top;      // Account for differences in the item width/height.     if (delta === -1) {       itemOffset += isHorizontal         ? newPosition.width - currentPosition.width         : newPosition.height - currentPosition.height;     }      return itemOffset;   }    /**    * Gets the offset in pixels by which the items that aren't being dragged should be moved.    * @param currentIndex Index of the item currently being dragged.    * @param siblings All of the items in the list.    * @param delta Direction in which the user is moving.    */   private _getSiblingOffsetPx(     currentIndex: number,     siblings: CachedItemPosition<T>[],     delta: 1 | -1,   ) {     const isHorizontal = this.orientation === 'horizontal';     const currentPosition = siblings[currentIndex].clientRect;     const immediateSibling = siblings[currentIndex + delta * -1];     let siblingOffset = currentPosition[isHorizontal ? 'width' : 'height'] * delta;      if (immediateSibling) {       const start = isHorizontal ? 'left' : 'top';       const end = isHorizontal ? 'right' : 'bottom';        // Get the spacing between the start of the current item and the end of the one immediately       // after it in the direction in which the user is dragging, or vice versa. We add it to the       // offset in order to push the element to where it will be when it's inline and is influenced       // by the `margin` of its siblings.       if (delta === -1) {         siblingOffset -= immediateSibling.clientRect[start] - currentPosition[end];       } else {         siblingOffset += currentPosition[start] - immediateSibling.clientRect[end];       }     }      return siblingOffset;   }    /**    * Checks if pointer is entering in the first position    * @param pointerX Position of the user's pointer along the X axis.    * @param pointerY Position of the user's pointer along the Y axis.    */   private _shouldEnterAsFirstChild(pointerX: number, pointerY: number) {     if (!this._activeDraggables.length) {       return false;     }      const itemPositions = this._itemPositions;     const isHorizontal = this.orientation === 'horizontal';      // `itemPositions` are sorted by position while `activeDraggables` are sorted by child index     // check if container is using some sort of \"reverse\" ordering (eg: flex-direction: row-reverse)     const reversed = itemPositions[0].drag !== this._activeDraggables[0];     if (reversed) {       const lastItemRect = itemPositions[itemPositions.length - 1].clientRect;       return isHorizontal ? pointerX >= lastItemRect.right : pointerY >= lastItemRect.bottom;     } else {       const firstItemRect = itemPositions[0].clientRect;       return isHorizontal ? pointerX <= firstItemRect.left : pointerY <= firstItemRect.top;     }   }    /**    * Gets the index of an item in the drop container, based on the position of the user's pointer.    * @param item Item that is being sorted.    * @param pointerX Position of the user's pointer along the X axis.    * @param pointerY Position of the user's pointer along the Y axis.    * @param delta Direction in which the user is moving their pointer.    */   private _getItemIndexFromPointerPosition(     item: T,     pointerX: number,     pointerY: number,     delta?: {x: number; y: number},   ): number {     const isHorizontal = this.orientation === 'horizontal';     const index = this._itemPositions.findIndex(({drag, clientRect}) => {       // Skip the item itself.       if (drag === item) {         return false;       }        if (delta) {         const direction = isHorizontal ? delta.x : delta.y;          // If the user is still hovering over the same item as last time, their cursor hasn't left         // the item after we made the swap, and they didn't change the direction in which they're         // dragging, we don't consider it a direction swap.         if (           drag === this._previousSwap.drag &&           this._previousSwap.overlaps &&           direction === this._previousSwap.delta         ) {           return false;         }       }        return isHorizontal         ? // Round these down since most browsers report client rects with           // sub-pixel precision, whereas the pointer coordinates are rounded to pixels.           pointerX >= Math.floor(clientRect.left) && pointerX < Math.floor(clientRect.right)         : pointerY >= Math.floor(clientRect.top) && pointerY < Math.floor(clientRect.bottom);     });      return index === -1 || !this._sortPredicate(index, item) ? -1 : index;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ElementRef, NgZone} from '@angular/core'; import {Direction} from '@angular/cdk/bidi'; import {coerceElement} from '@angular/cdk/coercion'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {_getShadowRoot} from '@angular/cdk/platform'; import {Subject, Subscription, interval, animationFrameScheduler} from 'rxjs'; import {takeUntil} from 'rxjs/operators'; import {DragDropRegistry} from './drag-drop-registry'; import {DragRefInternal as DragRef, Point} from './drag-ref'; import {isPointerNearClientRect, isInsideClientRect} from './dom/client-rect'; import {ParentPositionTracker} from './dom/parent-position-tracker'; import {DragCSSStyleDeclaration} from './dom/styling'; import {DropListSortStrategy} from './sorting/drop-list-sort-strategy'; import {SingleAxisSortStrategy} from './sorting/single-axis-sort-strategy';  /**  * Proximity, as a ratio to width/height, at which a  * dragged item will affect the drop container.  */ const DROP_PROXIMITY_THRESHOLD = 0.05;  /**  * Proximity, as a ratio to width/height at which to start auto-scrolling the drop list or the  * viewport. The value comes from trying it out manually until it feels right.  */ const SCROLL_PROXIMITY_THRESHOLD = 0.05;  /** Vertical direction in which we can auto-scroll. */ const enum AutoScrollVerticalDirection {   NONE,   UP,   DOWN, }  /** Horizontal direction in which we can auto-scroll. */ const enum AutoScrollHorizontalDirection {   NONE,   LEFT,   RIGHT, }  /**  * Internal compile-time-only representation of a `DropListRef`.  * Used to avoid circular import issues between the `DropListRef` and the `DragRef`.  * @docs-private  */ export interface DropListRefInternal extends DropListRef {}  type RootNode = DocumentOrShadowRoot & {   // As of TS 4.4 the built in DOM typings don't include `elementFromPoint` on `ShadowRoot`,   // even though it exists (see https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot).   // This type is a utility to avoid having to add casts everywhere.   elementFromPoint(x: number, y: number): Element | null; };  /**  * Reference to a drop list. Used to manipulate or dispose of the container.  */ export class DropListRef<T = any> {   /** Element that the drop list is attached to. */   element: HTMLElement | ElementRef<HTMLElement>;    /** Whether starting a dragging sequence from this container is disabled. */   disabled: boolean = false;    /** Whether sorting items within the list is disabled. */   sortingDisabled: boolean = false;    /** Locks the position of the draggable elements inside the container along the specified axis. */   lockAxis: 'x' | 'y';    /**    * Whether auto-scrolling the view when the user    * moves their pointer close to the edges is disabled.    */   autoScrollDisabled: boolean = false;    /** Number of pixels to scroll for each frame when auto-scrolling an element. */   autoScrollStep: number = 2;    /**    * Function that is used to determine whether an item    * is allowed to be moved into a drop container.    */   enterPredicate: (drag: DragRef, drop: DropListRef) => boolean = () => true;    /** Function that is used to determine whether an item can be sorted into a particular index. */   sortPredicate: (index: number, drag: DragRef, drop: DropListRef) => boolean = () => true;    /** Emits right before dragging has started. */   readonly beforeStarted = new Subject<void>();    /**    * Emits when the user has moved a new drag item into this container.    */   readonly entered = new Subject<{item: DragRef; container: DropListRef; currentIndex: number}>();    /**    * Emits when the user removes an item from the container    * by dragging it into another container.    */   readonly exited = new Subject<{item: DragRef; container: DropListRef}>();    /** Emits when the user drops an item inside the container. */   readonly dropped = new Subject<{     item: DragRef;     currentIndex: number;     previousIndex: number;     container: DropListRef;     previousContainer: DropListRef;     isPointerOverContainer: boolean;     distance: Point;     dropPoint: Point;     event: MouseEvent | TouchEvent;   }>();    /** Emits as the user is swapping items while actively dragging. */   readonly sorted = new Subject<{     previousIndex: number;     currentIndex: number;     container: DropListRef;     item: DragRef;   }>();    /** Emits when a dragging sequence is started in a list connected to the current one. */   readonly receivingStarted = new Subject<{     receiver: DropListRef;     initiator: DropListRef;     items: DragRef[];   }>();    /** Emits when a dragging sequence is stopped from a list connected to the current one. */   readonly receivingStopped = new Subject<{     receiver: DropListRef;     initiator: DropListRef;   }>();    /** Arbitrary data that can be attached to the drop list. */   data: T;    /** Whether an item in the list is being dragged. */   private _isDragging = false;    /** Keeps track of the positions of any parent scrollable elements. */   private _parentPositions: ParentPositionTracker;    /** Strategy being used to sort items within the list. */   private _sortStrategy: DropListSortStrategy<DragRef>;    /** Cached `ClientRect` of the drop list. */   private _clientRect: ClientRect | undefined;    /** Draggable items in the container. */   private _draggables: readonly DragRef[] = [];    /** Drop lists that are connected to the current one. */   private _siblings: readonly DropListRef[] = [];    /** Connected siblings that currently have a dragged item. */   private _activeSiblings = new Set<DropListRef>();    /** Subscription to the window being scrolled. */   private _viewportScrollSubscription = Subscription.EMPTY;    /** Vertical direction in which the list is currently scrolling. */   private _verticalScrollDirection = AutoScrollVerticalDirection.NONE;    /** Horizontal direction in which the list is currently scrolling. */   private _horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;    /** Node that is being auto-scrolled. */   private _scrollNode: HTMLElement | Window;    /** Used to signal to the current auto-scroll sequence when to stop. */   private readonly _stopScrollTimers = new Subject<void>();    /** Shadow root of the current element. Necessary for `elementFromPoint` to resolve correctly. */   private _cachedShadowRoot: RootNode | null = null;    /** Reference to the document. */   private _document: Document;    /** Elements that can be scrolled while the user is dragging. */   private _scrollableElements: HTMLElement[];    /** Initial value for the element's `scroll-snap-type` style. */   private _initialScrollSnap: string;    constructor(     element: ElementRef<HTMLElement> | HTMLElement,     private _dragDropRegistry: DragDropRegistry<DragRef, DropListRef>,     _document: any,     private _ngZone: NgZone,     private _viewportRuler: ViewportRuler,   ) {     this.element = coerceElement(element);     this._document = _document;     this.withScrollableParents([this.element]);     _dragDropRegistry.registerDropContainer(this);     this._parentPositions = new ParentPositionTracker(_document);     this._sortStrategy = new SingleAxisSortStrategy(this.element, _dragDropRegistry);     this._sortStrategy.withSortPredicate((index, item) => this.sortPredicate(index, item, this));   }    /** Removes the drop list functionality from the DOM element. */   dispose() {     this._stopScrolling();     this._stopScrollTimers.complete();     this._viewportScrollSubscription.unsubscribe();     this.beforeStarted.complete();     this.entered.complete();     this.exited.complete();     this.dropped.complete();     this.sorted.complete();     this.receivingStarted.complete();     this.receivingStopped.complete();     this._activeSiblings.clear();     this._scrollNode = null!;     this._parentPositions.clear();     this._dragDropRegistry.removeDropContainer(this);   }    /** Whether an item from this list is currently being dragged. */   isDragging() {     return this._isDragging;   }    /** Starts dragging an item. */   start(): void {     this._draggingStarted();     this._notifyReceivingSiblings();   }    /**    * Attempts to move an item into the container.    * @param item Item that was moved into the container.    * @param pointerX Position of the item along the X axis.    * @param pointerY Position of the item along the Y axis.    * @param index Index at which the item entered. If omitted, the container will try to figure it    *   out automatically.    */   enter(item: DragRef, pointerX: number, pointerY: number, index?: number): void {     this._draggingStarted();      // If sorting is disabled, we want the item to return to its starting     // position if the user is returning it to its initial container.     if (index == null && this.sortingDisabled) {       index = this._draggables.indexOf(item);     }      this._sortStrategy.enter(item, pointerX, pointerY, index);      // Note that this usually happens inside `_draggingStarted` as well, but the dimensions     // can change when the sort strategy moves the item around inside `enter`.     this._cacheParentPositions();      // Notify siblings at the end so that the item has been inserted into the `activeDraggables`.     this._notifyReceivingSiblings();     this.entered.next({item, container: this, currentIndex: this.getItemIndex(item)});   }    /**    * Removes an item from the container after it was dragged into another container by the user.    * @param item Item that was dragged out.    */   exit(item: DragRef): void {     this._reset();     this.exited.next({item, container: this});   }    /**    * Drops an item into this container.    * @param item Item being dropped into the container.    * @param currentIndex Index at which the item should be inserted.    * @param previousIndex Index of the item when dragging started.    * @param previousContainer Container from which the item got dragged in.    * @param isPointerOverContainer Whether the user's pointer was over the    *    container when the item was dropped.    * @param distance Distance the user has dragged since the start of the dragging sequence.    * @param event Event that triggered the dropping sequence.    *    * @breaking-change 15.0.0 `previousIndex` and `event` parameters to become required.    */   drop(     item: DragRef,     currentIndex: number,     previousIndex: number,     previousContainer: DropListRef,     isPointerOverContainer: boolean,     distance: Point,     dropPoint: Point,     event: MouseEvent | TouchEvent = {} as any,   ): void {     this._reset();     this.dropped.next({       item,       currentIndex,       previousIndex,       container: this,       previousContainer,       isPointerOverContainer,       distance,       dropPoint,       event,     });   }    /**    * Sets the draggable items that are a part of this list.    * @param items Items that are a part of this list.    */   withItems(items: DragRef[]): this {     const previousItems = this._draggables;     this._draggables = items;     items.forEach(item => item._withDropContainer(this));      if (this.isDragging()) {       const draggedItems = previousItems.filter(item => item.isDragging());        // If all of the items being dragged were removed       // from the list, abort the current drag sequence.       if (draggedItems.every(item => items.indexOf(item) === -1)) {         this._reset();       } else {         this._sortStrategy.withItems(this._draggables);       }     }      return this;   }    /** Sets the layout direction of the drop list. */   withDirection(direction: Direction): this {     this._sortStrategy.direction = direction;     return this;   }    /**    * Sets the containers that are connected to this one. When two or more containers are    * connected, the user will be allowed to transfer items between them.    * @param connectedTo Other containers that the current containers should be connected to.    */   connectedTo(connectedTo: DropListRef[]): this {     this._siblings = connectedTo.slice();     return this;   }    /**    * Sets the orientation of the container.    * @param orientation New orientation for the container.    */   withOrientation(orientation: 'vertical' | 'horizontal'): this {     // TODO(crisbeto): eventually we should be constructing the new sort strategy here based on     // the new orientation. For now we can assume that it'll always be `SingleAxisSortStrategy`.     (this._sortStrategy as SingleAxisSortStrategy<DragRef>).orientation = orientation;     return this;   }    /**    * Sets which parent elements are can be scrolled while the user is dragging.    * @param elements Elements that can be scrolled.    */   withScrollableParents(elements: HTMLElement[]): this {     const element = coerceElement(this.element);      // We always allow the current element to be scrollable     // so we need to ensure that it's in the array.     this._scrollableElements =       elements.indexOf(element) === -1 ? [element, ...elements] : elements.slice();     return this;   }    /** Gets the scrollable parents that are registered with this drop container. */   getScrollableParents(): readonly HTMLElement[] {     return this._scrollableElements;   }    /**    * Figures out the index of an item in the container.    * @param item Item whose index should be determined.    */   getItemIndex(item: DragRef): number {     return this._isDragging       ? this._sortStrategy.getItemIndex(item)       : this._draggables.indexOf(item);   }    /**    * Whether the list is able to receive the item that    * is currently being dragged inside a connected drop list.    */   isReceiving(): boolean {     return this._activeSiblings.size > 0;   }    /**    * Sorts an item inside the container based on its position.    * @param item Item to be sorted.    * @param pointerX Position of the item along the X axis.    * @param pointerY Position of the item along the Y axis.    * @param pointerDelta Direction in which the pointer is moving along each axis.    */   _sortItem(     item: DragRef,     pointerX: number,     pointerY: number,     pointerDelta: {x: number; y: number},   ): void {     // Don't sort the item if sorting is disabled or it's out of range.     if (       this.sortingDisabled ||       !this._clientRect ||       !isPointerNearClientRect(this._clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)     ) {       return;     }      const result = this._sortStrategy.sort(item, pointerX, pointerY, pointerDelta);      if (result) {       this.sorted.next({         previousIndex: result.previousIndex,         currentIndex: result.currentIndex,         container: this,         item,       });     }   }    /**    * Checks whether the user's pointer is close to the edges of either the    * viewport or the drop list and starts the auto-scroll sequence.    * @param pointerX User's pointer position along the x axis.    * @param pointerY User's pointer position along the y axis.    */   _startScrollingIfNecessary(pointerX: number, pointerY: number) {     if (this.autoScrollDisabled) {       return;     }      let scrollNode: HTMLElement | Window | undefined;     let verticalScrollDirection = AutoScrollVerticalDirection.NONE;     let horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;      // Check whether we should start scrolling any of the parent containers.     this._parentPositions.positions.forEach((position, element) => {       // We have special handling for the `document` below. Also this would be       // nicer with a  for...of loop, but it requires changing a compiler flag.       if (element === this._document || !position.clientRect || scrollNode) {         return;       }        if (         isPointerNearClientRect(position.clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)       ) {         [verticalScrollDirection, horizontalScrollDirection] = getElementScrollDirections(           element as HTMLElement,           position.clientRect,           pointerX,           pointerY,         );          if (verticalScrollDirection || horizontalScrollDirection) {           scrollNode = element as HTMLElement;         }       }     });      // Otherwise check if we can start scrolling the viewport.     if (!verticalScrollDirection && !horizontalScrollDirection) {       const {width, height} = this._viewportRuler.getViewportSize();       const clientRect = {         width,         height,         top: 0,         right: width,         bottom: height,         left: 0,       } as ClientRect;       verticalScrollDirection = getVerticalScrollDirection(clientRect, pointerY);       horizontalScrollDirection = getHorizontalScrollDirection(clientRect, pointerX);       scrollNode = window;     }      if (       scrollNode &&       (verticalScrollDirection !== this._verticalScrollDirection ||         horizontalScrollDirection !== this._horizontalScrollDirection ||         scrollNode !== this._scrollNode)     ) {       this._verticalScrollDirection = verticalScrollDirection;       this._horizontalScrollDirection = horizontalScrollDirection;       this._scrollNode = scrollNode;        if ((verticalScrollDirection || horizontalScrollDirection) && scrollNode) {         this._ngZone.runOutsideAngular(this._startScrollInterval);       } else {         this._stopScrolling();       }     }   }    /** Stops any currently-running auto-scroll sequences. */   _stopScrolling() {     this._stopScrollTimers.next();   }    /** Starts the dragging sequence within the list. */   private _draggingStarted() {     const styles = coerceElement(this.element).style as DragCSSStyleDeclaration;     this.beforeStarted.next();     this._isDragging = true;      // We need to disable scroll snapping while the user is dragging, because it breaks automatic     // scrolling. The browser seems to round the value based on the snapping points which means     // that we can't increment/decrement the scroll position.     this._initialScrollSnap = styles.msScrollSnapType || styles.scrollSnapType || '';     styles.scrollSnapType = styles.msScrollSnapType = 'none';     this._sortStrategy.start(this._draggables);     this._cacheParentPositions();     this._viewportScrollSubscription.unsubscribe();     this._listenToScrollEvents();   }    /** Caches the positions of the configured scrollable parents. */   private _cacheParentPositions() {     const element = coerceElement(this.element);     this._parentPositions.cache(this._scrollableElements);      // The list element is always in the `scrollableElements`     // so we can take advantage of the cached `ClientRect`.     this._clientRect = this._parentPositions.positions.get(element)!.clientRect!;   }    /** Resets the container to its initial state. */   private _reset() {     this._isDragging = false;      const styles = coerceElement(this.element).style as DragCSSStyleDeclaration;     styles.scrollSnapType = styles.msScrollSnapType = this._initialScrollSnap;      this._siblings.forEach(sibling => sibling._stopReceiving(this));     this._sortStrategy.reset();     this._stopScrolling();     this._viewportScrollSubscription.unsubscribe();     this._parentPositions.clear();   }    /** Starts the interval that'll auto-scroll the element. */   private _startScrollInterval = () => {     this._stopScrolling();      interval(0, animationFrameScheduler)       .pipe(takeUntil(this._stopScrollTimers))       .subscribe(() => {         const node = this._scrollNode;         const scrollStep = this.autoScrollStep;          if (this._verticalScrollDirection === AutoScrollVerticalDirection.UP) {           node.scrollBy(0, -scrollStep);         } else if (this._verticalScrollDirection === AutoScrollVerticalDirection.DOWN) {           node.scrollBy(0, scrollStep);         }          if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.LEFT) {           node.scrollBy(-scrollStep, 0);         } else if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.RIGHT) {           node.scrollBy(scrollStep, 0);         }       });   };    /**    * Checks whether the user's pointer is positioned over the container.    * @param x Pointer position along the X axis.    * @param y Pointer position along the Y axis.    */   _isOverContainer(x: number, y: number): boolean {     return this._clientRect != null && isInsideClientRect(this._clientRect, x, y);   }    /**    * Figures out whether an item should be moved into a sibling    * drop container, based on its current position.    * @param item Drag item that is being moved.    * @param x Position of the item along the X axis.    * @param y Position of the item along the Y axis.    */   _getSiblingContainerFromPosition(item: DragRef, x: number, y: number): DropListRef | undefined {     return this._siblings.find(sibling => sibling._canReceive(item, x, y));   }    /**    * Checks whether the drop list can receive the passed-in item.    * @param item Item that is being dragged into the list.    * @param x Position of the item along the X axis.    * @param y Position of the item along the Y axis.    */   _canReceive(item: DragRef, x: number, y: number): boolean {     if (       !this._clientRect ||       !isInsideClientRect(this._clientRect, x, y) ||       !this.enterPredicate(item, this)     ) {       return false;     }      const elementFromPoint = this._getShadowRoot().elementFromPoint(x, y) as HTMLElement | null;      // If there's no element at the pointer position, then     // the client rect is probably scrolled out of the view.     if (!elementFromPoint) {       return false;     }      const nativeElement = coerceElement(this.element);      // The `ClientRect`, that we're using to find the container over which the user is     // hovering, doesn't give us any information on whether the element has been scrolled     // out of the view or whether it's overlapping with other containers. This means that     // we could end up transferring the item into a container that's invisible or is positioned     // below another one. We use the result from `elementFromPoint` to get the top-most element     // at the pointer position and to find whether it's one of the intersecting drop containers.     return elementFromPoint === nativeElement || nativeElement.contains(elementFromPoint);   }    /**    * Called by one of the connected drop lists when a dragging sequence has started.    * @param sibling Sibling in which dragging has started.    */   _startReceiving(sibling: DropListRef, items: DragRef[]) {     const activeSiblings = this._activeSiblings;      if (       !activeSiblings.has(sibling) &&       items.every(item => {         // Note that we have to add an exception to the `enterPredicate` for items that started off         // in this drop list. The drag ref has logic that allows an item to return to its initial         // container, if it has left the initial container and none of the connected containers         // allow it to enter. See `DragRef._updateActiveDropContainer` for more context.         return this.enterPredicate(item, this) || this._draggables.indexOf(item) > -1;       })     ) {       activeSiblings.add(sibling);       this._cacheParentPositions();       this._listenToScrollEvents();       this.receivingStarted.next({         initiator: sibling,         receiver: this,         items,       });     }   }    /**    * Called by a connected drop list when dragging has stopped.    * @param sibling Sibling whose dragging has stopped.    */   _stopReceiving(sibling: DropListRef) {     this._activeSiblings.delete(sibling);     this._viewportScrollSubscription.unsubscribe();     this.receivingStopped.next({initiator: sibling, receiver: this});   }    /**    * Starts listening to scroll events on the viewport.    * Used for updating the internal state of the list.    */   private _listenToScrollEvents() {     this._viewportScrollSubscription = this._dragDropRegistry       .scrolled(this._getShadowRoot())       .subscribe(event => {         if (this.isDragging()) {           const scrollDifference = this._parentPositions.handleScroll(event);            if (scrollDifference) {             this._sortStrategy.updateOnScroll(scrollDifference.top, scrollDifference.left);           }         } else if (this.isReceiving()) {           this._cacheParentPositions();         }       });   }    /**    * Lazily resolves and returns the shadow root of the element. We do this in a function, rather    * than saving it in property directly on init, because we want to resolve it as late as possible    * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the    * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.    */   private _getShadowRoot(): RootNode {     if (!this._cachedShadowRoot) {       const shadowRoot = _getShadowRoot(coerceElement(this.element));       this._cachedShadowRoot = (shadowRoot || this._document) as RootNode;     }      return this._cachedShadowRoot;   }    /** Notifies any siblings that may potentially receive the item. */   private _notifyReceivingSiblings() {     const draggedItems = this._sortStrategy       .getActiveItemsSnapshot()       .filter(item => item.isDragging());     this._siblings.forEach(sibling => sibling._startReceiving(this, draggedItems));   } }  /**  * Gets whether the vertical auto-scroll direction of a node.  * @param clientRect Dimensions of the node.  * @param pointerY Position of the user's pointer along the y axis.  */ function getVerticalScrollDirection(clientRect: ClientRect, pointerY: number) {   const {top, bottom, height} = clientRect;   const yThreshold = height * SCROLL_PROXIMITY_THRESHOLD;    if (pointerY >= top - yThreshold && pointerY <= top + yThreshold) {     return AutoScrollVerticalDirection.UP;   } else if (pointerY >= bottom - yThreshold && pointerY <= bottom + yThreshold) {     return AutoScrollVerticalDirection.DOWN;   }    return AutoScrollVerticalDirection.NONE; }  /**  * Gets whether the horizontal auto-scroll direction of a node.  * @param clientRect Dimensions of the node.  * @param pointerX Position of the user's pointer along the x axis.  */ function getHorizontalScrollDirection(clientRect: ClientRect, pointerX: number) {   const {left, right, width} = clientRect;   const xThreshold = width * SCROLL_PROXIMITY_THRESHOLD;    if (pointerX >= left - xThreshold && pointerX <= left + xThreshold) {     return AutoScrollHorizontalDirection.LEFT;   } else if (pointerX >= right - xThreshold && pointerX <= right + xThreshold) {     return AutoScrollHorizontalDirection.RIGHT;   }    return AutoScrollHorizontalDirection.NONE; }  /**  * Gets the directions in which an element node should be scrolled,  * assuming that the user's pointer is already within it scrollable region.  * @param element Element for which we should calculate the scroll direction.  * @param clientRect Bounding client rectangle of the element.  * @param pointerX Position of the user's pointer along the x axis.  * @param pointerY Position of the user's pointer along the y axis.  */ function getElementScrollDirections(   element: HTMLElement,   clientRect: ClientRect,   pointerX: number,   pointerY: number, ): [AutoScrollVerticalDirection, AutoScrollHorizontalDirection] {   const computedVertical = getVerticalScrollDirection(clientRect, pointerY);   const computedHorizontal = getHorizontalScrollDirection(clientRect, pointerX);   let verticalScrollDirection = AutoScrollVerticalDirection.NONE;   let horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;    // Note that we here we do some extra checks for whether the element is actually scrollable in   // a certain direction and we only assign the scroll direction if it is. We do this so that we   // can allow other elements to be scrolled, if the current element can't be scrolled anymore.   // This allows us to handle cases where the scroll regions of two scrollable elements overlap.   if (computedVertical) {     const scrollTop = element.scrollTop;      if (computedVertical === AutoScrollVerticalDirection.UP) {       if (scrollTop > 0) {         verticalScrollDirection = AutoScrollVerticalDirection.UP;       }     } else if (element.scrollHeight - scrollTop > element.clientHeight) {       verticalScrollDirection = AutoScrollVerticalDirection.DOWN;     }   }    if (computedHorizontal) {     const scrollLeft = element.scrollLeft;      if (computedHorizontal === AutoScrollHorizontalDirection.LEFT) {       if (scrollLeft > 0) {         horizontalScrollDirection = AutoScrollHorizontalDirection.LEFT;       }     } else if (element.scrollWidth - scrollLeft > element.clientWidth) {       horizontalScrollDirection = AutoScrollHorizontalDirection.RIGHT;     }   }    return [verticalScrollDirection, horizontalScrollDirection]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable, NgZone, OnDestroy, Inject} from '@angular/core'; import {DOCUMENT} from '@angular/common'; import {normalizePassiveListenerOptions} from '@angular/cdk/platform'; import {merge, Observable, Observer, Subject} from 'rxjs';  /** Event options that can be used to bind an active, capturing event. */ const activeCapturingEventOptions = normalizePassiveListenerOptions({   passive: false,   capture: true, });  /**  * Service that keeps track of all the drag item and drop container  * instances, and manages global event listeners on the `document`.  * @docs-private  */ // Note: this class is generic, rather than referencing CdkDrag and CdkDropList directly, in order // to avoid circular imports. If we were to reference them here, importing the registry into the // classes that are registering themselves will introduce a circular import. @Injectable({providedIn: 'root'}) export class DragDropRegistry<I extends {isDragging(): boolean}, C> implements OnDestroy {   private _document: Document;    /** Registered drop container instances. */   private _dropInstances = new Set<C>();    /** Registered drag item instances. */   private _dragInstances = new Set<I>();    /** Drag item instances that are currently being dragged. */   private _activeDragInstances: I[] = [];    /** Keeps track of the event listeners that we've bound to the `document`. */   private _globalListeners = new Map<     string,     {       handler: (event: Event) => void;       options?: AddEventListenerOptions | boolean;     }   >();    /**    * Predicate function to check if an item is being dragged.  Moved out into a property,    * because it'll be called a lot and we don't want to create a new function every time.    */   private _draggingPredicate = (item: I) => item.isDragging();    /**    * Emits the `touchmove` or `mousemove` events that are dispatched    * while the user is dragging a drag item instance.    */   readonly pointerMove: Subject<TouchEvent | MouseEvent> = new Subject<TouchEvent | MouseEvent>();    /**    * Emits the `touchend` or `mouseup` events that are dispatched    * while the user is dragging a drag item instance.    */   readonly pointerUp: Subject<TouchEvent | MouseEvent> = new Subject<TouchEvent | MouseEvent>();    /**    * Emits when the viewport has been scrolled while the user is dragging an item.    * @deprecated To be turned into a private member. Use the `scrolled` method instead.    * @breaking-change 13.0.0    */   readonly scroll: Subject<Event> = new Subject<Event>();    constructor(private _ngZone: NgZone, @Inject(DOCUMENT) _document: any) {     this._document = _document;   }    /** Adds a drop container to the registry. */   registerDropContainer(drop: C) {     if (!this._dropInstances.has(drop)) {       this._dropInstances.add(drop);     }   }    /** Adds a drag item instance to the registry. */   registerDragItem(drag: I) {     this._dragInstances.add(drag);      // The `touchmove` event gets bound once, ahead of time, because WebKit     // won't preventDefault on a dynamically-added `touchmove` listener.     // See https://bugs.webkit.org/show_bug.cgi?id=184250.     if (this._dragInstances.size === 1) {       this._ngZone.runOutsideAngular(() => {         // The event handler has to be explicitly active,         // because newer browsers make it passive by default.         this._document.addEventListener(           'touchmove',           this._persistentTouchmoveListener,           activeCapturingEventOptions,         );       });     }   }    /** Removes a drop container from the registry. */   removeDropContainer(drop: C) {     this._dropInstances.delete(drop);   }    /** Removes a drag item instance from the registry. */   removeDragItem(drag: I) {     this._dragInstances.delete(drag);     this.stopDragging(drag);      if (this._dragInstances.size === 0) {       this._document.removeEventListener(         'touchmove',         this._persistentTouchmoveListener,         activeCapturingEventOptions,       );     }   }    /**    * Starts the dragging sequence for a drag instance.    * @param drag Drag instance which is being dragged.    * @param event Event that initiated the dragging.    */   startDragging(drag: I, event: TouchEvent | MouseEvent) {     // Do not process the same drag twice to avoid memory leaks and redundant listeners     if (this._activeDragInstances.indexOf(drag) > -1) {       return;     }      this._activeDragInstances.push(drag);      if (this._activeDragInstances.length === 1) {       const isTouchEvent = event.type.startsWith('touch');        // We explicitly bind __active__ listeners here, because newer browsers will default to       // passive ones for `mousemove` and `touchmove`. The events need to be active, because we       // use `preventDefault` to prevent the page from scrolling while the user is dragging.       this._globalListeners         .set(isTouchEvent ? 'touchend' : 'mouseup', {           handler: (e: Event) => this.pointerUp.next(e as TouchEvent | MouseEvent),           options: true,         })         .set('scroll', {           handler: (e: Event) => this.scroll.next(e),           // Use capturing so that we pick up scroll changes in any scrollable nodes that aren't           // the document. See https://github.com/angular/components/issues/17144.           options: true,         })         // Preventing the default action on `mousemove` isn't enough to disable text selection         // on Safari so we need to prevent the selection event as well. Alternatively this can         // be done by setting `user-select: none` on the `body`, however it has causes a style         // recalculation which can be expensive on pages with a lot of elements.         .set('selectstart', {           handler: this._preventDefaultWhileDragging,           options: activeCapturingEventOptions,         });        // We don't have to bind a move event for touch drag sequences, because       // we already have a persistent global one bound from `registerDragItem`.       if (!isTouchEvent) {         this._globalListeners.set('mousemove', {           handler: (e: Event) => this.pointerMove.next(e as MouseEvent),           options: activeCapturingEventOptions,         });       }        this._ngZone.runOutsideAngular(() => {         this._globalListeners.forEach((config, name) => {           this._document.addEventListener(name, config.handler, config.options);         });       });     }   }    /** Stops dragging a drag item instance. */   stopDragging(drag: I) {     const index = this._activeDragInstances.indexOf(drag);      if (index > -1) {       this._activeDragInstances.splice(index, 1);        if (this._activeDragInstances.length === 0) {         this._clearGlobalListeners();       }     }   }    /** Gets whether a drag item instance is currently being dragged. */   isDragging(drag: I) {     return this._activeDragInstances.indexOf(drag) > -1;   }    /**    * Gets a stream that will emit when any element on the page is scrolled while an item is being    * dragged.    * @param shadowRoot Optional shadow root that the current dragging sequence started from.    *   Top-level listeners won't pick up events coming from the shadow DOM so this parameter can    *   be used to include an additional top-level listener at the shadow root level.    */   scrolled(shadowRoot?: DocumentOrShadowRoot | null): Observable<Event> {     const streams: Observable<Event>[] = [this.scroll];      if (shadowRoot && shadowRoot !== this._document) {       // Note that this is basically the same as `fromEvent` from rxjs, but we do it ourselves,       // because we want to guarantee that the event is bound outside of the `NgZone`. With       // `fromEvent` it'll only happen if the subscription is outside the `NgZone`.       streams.push(         new Observable((observer: Observer<Event>) => {           return this._ngZone.runOutsideAngular(() => {             const eventOptions = true;             const callback = (event: Event) => {               if (this._activeDragInstances.length) {                 observer.next(event);               }             };              (shadowRoot as ShadowRoot).addEventListener('scroll', callback, eventOptions);              return () => {               (shadowRoot as ShadowRoot).removeEventListener('scroll', callback, eventOptions);             };           });         }),       );     }      return merge(...streams);   }    ngOnDestroy() {     this._dragInstances.forEach(instance => this.removeDragItem(instance));     this._dropInstances.forEach(instance => this.removeDropContainer(instance));     this._clearGlobalListeners();     this.pointerMove.complete();     this.pointerUp.complete();   }    /**    * Event listener that will prevent the default browser action while the user is dragging.    * @param event Event whose default action should be prevented.    */   private _preventDefaultWhileDragging = (event: Event) => {     if (this._activeDragInstances.length > 0) {       event.preventDefault();     }   };    /** Event listener for `touchmove` that is bound even if no dragging is happening. */   private _persistentTouchmoveListener = (event: TouchEvent) => {     if (this._activeDragInstances.length > 0) {       // Note that we only want to prevent the default action after dragging has actually started.       // Usually this is the same time at which the item is added to the `_activeDragInstances`,       // but it could be pushed back if the user has set up a drag delay or threshold.       if (this._activeDragInstances.some(this._draggingPredicate)) {         event.preventDefault();       }        this.pointerMove.next(event);     }   };    /** Clears out the global event listeners from the `document`. */   private _clearGlobalListeners() {     this._globalListeners.forEach((config, name) => {       this._document.removeEventListener(name, config.handler, config.options);     });      this._globalListeners.clear();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable, Inject, NgZone, ElementRef} from '@angular/core'; import {DOCUMENT} from '@angular/common'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {DragRef, DragRefConfig} from './drag-ref'; import {DropListRef} from './drop-list-ref'; import {DragDropRegistry} from './drag-drop-registry';  /** Default configuration to be used when creating a `DragRef`. */ const DEFAULT_CONFIG = {   dragStartThreshold: 5,   pointerDirectionChangeThreshold: 5, };  /**  * Service that allows for drag-and-drop functionality to be attached to DOM elements.  */ @Injectable({providedIn: 'root'}) export class DragDrop {   constructor(     @Inject(DOCUMENT) private _document: any,     private _ngZone: NgZone,     private _viewportRuler: ViewportRuler,     private _dragDropRegistry: DragDropRegistry<DragRef, DropListRef>,   ) {}    /**    * Turns an element into a draggable item.    * @param element Element to which to attach the dragging functionality.    * @param config Object used to configure the dragging behavior.    */   createDrag<T = any>(     element: ElementRef<HTMLElement> | HTMLElement,     config: DragRefConfig = DEFAULT_CONFIG,   ): DragRef<T> {     return new DragRef<T>(       element,       config,       this._document,       this._ngZone,       this._viewportRuler,       this._dragDropRegistry,     );   }    /**    * Turns an element into a drop list.    * @param element Element to which to attach the drop list functionality.    */   createDropList<T = any>(element: ElementRef<HTMLElement> | HTMLElement): DropListRef<T> {     return new DropListRef<T>(       element,       this._dragDropRegistry,       this._document,       this._ngZone,       this._viewportRuler,     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core';  /**  * Injection token that can be used for a `CdkDrag` to provide itself as a parent to the  * drag-specific child directive (`CdkDragHandle`, `CdkDragPreview` etc.). Used primarily  * to avoid circular imports.  * @docs-private  */ export const CDK_DRAG_PARENT = new InjectionToken<{}>('CDK_DRAG_PARENT'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {CdkDrag} from './directives/drag'; import {CdkDropList} from './directives/drop-list';  /** Event emitted when the user starts dragging a draggable. */ export interface CdkDragStart<T = any> {   /** Draggable that emitted the event. */   source: CdkDrag<T>;   /** Native event that started the drag sequence. */   event: MouseEvent | TouchEvent; }  /** Event emitted when the user releases an item, before any animations have started. */ export interface CdkDragRelease<T = any> {   /** Draggable that emitted the event. */   source: CdkDrag<T>;   /** Native event that caused the release event. */   event: MouseEvent | TouchEvent; }  /** Event emitted when the user stops dragging a draggable. */ export interface CdkDragEnd<T = any> {   /** Draggable that emitted the event. */   source: CdkDrag<T>;   /** Distance in pixels that the user has dragged since the drag sequence started. */   distance: {x: number; y: number};   /** Position where the pointer was when the item was dropped */   dropPoint: {x: number; y: number};   /** Native event that caused the dragging to stop. */   event: MouseEvent | TouchEvent; }  /** Event emitted when the user moves an item into a new drop container. */ export interface CdkDragEnter<T = any, I = T> {   /** Container into which the user has moved the item. */   container: CdkDropList<T>;   /** Item that was moved into the container. */   item: CdkDrag<I>;   /** Index at which the item has entered the container. */   currentIndex: number; }  /**  * Event emitted when the user removes an item from a  * drop container by moving it into another one.  */ export interface CdkDragExit<T = any, I = T> {   /** Container from which the user has a removed an item. */   container: CdkDropList<T>;   /** Item that was removed from the container. */   item: CdkDrag<I>; }  /** Event emitted when the user drops a draggable item inside a drop container. */ export interface CdkDragDrop<T, O = T, I = any> {   /** Index of the item when it was picked up. */   previousIndex: number;   /** Current index of the item. */   currentIndex: number;   /** Item that is being dropped. */   item: CdkDrag<I>;   /** Container in which the item was dropped. */   container: CdkDropList<T>;   /** Container from which the item was picked up. Can be the same as the `container`. */   previousContainer: CdkDropList<O>;   /** Whether the user's pointer was over the container when the item was dropped. */   isPointerOverContainer: boolean;   /** Distance in pixels that the user has dragged since the drag sequence started. */   distance: {x: number; y: number};   /** Position where the pointer was when the item was dropped */   dropPoint: {x: number; y: number};   /** Native event that caused the drop event. */   event: MouseEvent | TouchEvent; }  /** Event emitted as the user is dragging a draggable item. */ export interface CdkDragMove<T = any> {   /** Item that is being dragged. */   source: CdkDrag<T>;   /** Position of the user's pointer on the page. */   pointerPosition: {x: number; y: number};   /** Native event that is causing the dragging. */   event: MouseEvent | TouchEvent;   /** Distance in pixels that the user has dragged since the drag sequence started. */   distance: {x: number; y: number};   /**    * Indicates the direction in which the user is dragging the element along each axis.    * `1` means that the position is increasing (e.g. the user is moving to the right or downwards),    * whereas `-1` means that it's decreasing (they're moving to the left or upwards). `0` means    * that the position hasn't changed.    */   delta: {x: -1 | 0 | 1; y: -1 | 0 | 1}; }  /** Event emitted when the user swaps the position of two drag items. */ export interface CdkDragSortEvent<T = any, I = T> {   /** Index from which the item was sorted previously. */   previousIndex: number;   /** Index that the item is currently in. */   currentIndex: number;   /** Container that the item belongs to. */   container: CdkDropList<T>;   /** Item that is being sorted. */   item: CdkDrag<I>; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, OnDestroy, Input, InjectionToken} from '@angular/core'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';  /**  * Injection token that can be used to reference instances of `CdkDropListGroup`. It serves as  * alternative token to the actual `CdkDropListGroup` class which could cause unnecessary  * retention of the class and its directive metadata.  */ export const CDK_DROP_LIST_GROUP = new InjectionToken<CdkDropListGroup<unknown>>(   'CdkDropListGroup', );  /**  * Declaratively connects sibling `cdkDropList` instances together. All of the `cdkDropList`  * elements that are placed inside a `cdkDropListGroup` will be connected to each other  * automatically. Can be used as an alternative to the `cdkDropListConnectedTo` input  * from `cdkDropList`.  */ @Directive({   selector: '[cdkDropListGroup]',   exportAs: 'cdkDropListGroup',   standalone: true,   providers: [{provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup}], }) export class CdkDropListGroup<T> implements OnDestroy {   /** Drop lists registered inside the group. */   readonly _items = new Set<T>();    /** Whether starting a dragging sequence from inside this group is disabled. */   @Input('cdkDropListGroupDisabled')   get disabled(): boolean {     return this._disabled;   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);   }   private _disabled = false;    ngOnDestroy() {     this._items.clear();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core'; import {DragRefConfig, Point, DragRef} from '../drag-ref';  /** Possible values that can be used to configure the drag start delay. */ export type DragStartDelay = number | {touch: number; mouse: number};  /** Possible axis along which dragging can be locked. */ export type DragAxis = 'x' | 'y';  /** Function that can be used to constrain the position of a dragged element. */ export type DragConstrainPosition = (point: Point, dragRef: DragRef) => Point;  /** Possible orientations for a drop list. */ export type DropListOrientation = 'horizontal' | 'vertical';  /**  * Injection token that can be used to configure the  * behavior of the drag&drop-related components.  */ export const CDK_DRAG_CONFIG = new InjectionToken<DragDropConfig>('CDK_DRAG_CONFIG');  /**  * Object that can be used to configure the drag  * items and drop lists within a module or a component.  */ export interface DragDropConfig extends Partial<DragRefConfig> {   lockAxis?: DragAxis;   dragStartDelay?: DragStartDelay;   constrainPosition?: DragConstrainPosition;   previewClass?: string | string[];   boundaryElement?: string;   rootElementSelector?: string;   draggingDisabled?: boolean;   sortingDisabled?: boolean;   listAutoScrollDisabled?: boolean;   listOrientation?: DropListOrientation;   zIndex?: number;   previewContainer?: 'global' | 'parent'; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Asserts that a particular node is an element.  * @param node Node to be checked.  * @param name Name to attach to the error message.  */ export function assertElementNode(node: Node, name: string): asserts node is HTMLElement {   if (node.nodeType !== 1) {     throw Error(       `${name} must be attached to an element node. ` + `Currently attached to \"${node.nodeName}\".`,     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   BooleanInput,   coerceArray,   coerceNumberProperty,   coerceBooleanProperty,   NumberInput, } from '@angular/cdk/coercion'; import {   ElementRef,   EventEmitter,   Input,   OnDestroy,   Output,   Optional,   Directive,   ChangeDetectorRef,   SkipSelf,   Inject,   InjectionToken, } from '@angular/core'; import {Directionality} from '@angular/cdk/bidi'; import {ScrollDispatcher} from '@angular/cdk/scrolling'; import {CdkDrag} from './drag'; import {CdkDragDrop, CdkDragEnter, CdkDragExit, CdkDragSortEvent} from '../drag-events'; import {CDK_DROP_LIST_GROUP, CdkDropListGroup} from './drop-list-group'; import {DropListRef} from '../drop-list-ref'; import {DragRef} from '../drag-ref'; import {DragDrop} from '../drag-drop'; import {DropListOrientation, DragAxis, DragDropConfig, CDK_DRAG_CONFIG} from './config'; import {merge, Subject} from 'rxjs'; import {startWith, takeUntil} from 'rxjs/operators'; import {assertElementNode} from './assertions';  /** Counter used to generate unique ids for drop zones. */ let _uniqueIdCounter = 0;  /**  * Internal compile-time-only representation of a `CdkDropList`.  * Used to avoid circular import issues between the `CdkDropList` and the `CdkDrag`.  * @docs-private  */ export interface CdkDropListInternal extends CdkDropList {}  /**  * Injection token that can be used to reference instances of `CdkDropList`. It serves as  * alternative token to the actual `CdkDropList` class which could cause unnecessary  * retention of the class and its directive metadata.  */ export const CDK_DROP_LIST = new InjectionToken<CdkDropList>('CdkDropList');  /** Container that wraps a set of draggable items. */ @Directive({   selector: '[cdkDropList], cdk-drop-list',   exportAs: 'cdkDropList',   standalone: true,   providers: [     // Prevent child drop lists from picking up the same group as their parent.     {provide: CDK_DROP_LIST_GROUP, useValue: undefined},     {provide: CDK_DROP_LIST, useExisting: CdkDropList},   ],   host: {     'class': 'cdk-drop-list',     '[attr.id]': 'id',     '[class.cdk-drop-list-disabled]': 'disabled',     '[class.cdk-drop-list-dragging]': '_dropListRef.isDragging()',     '[class.cdk-drop-list-receiving]': '_dropListRef.isReceiving()',   }, }) export class CdkDropList<T = any> implements OnDestroy {   /** Emits when the list has been destroyed. */   private readonly _destroyed = new Subject<void>();    /** Whether the element's scrollable parents have been resolved. */   private _scrollableParentsResolved: boolean;    /** Keeps track of the drop lists that are currently on the page. */   private static _dropLists: CdkDropList[] = [];    /** Reference to the underlying drop list instance. */   _dropListRef: DropListRef<CdkDropList<T>>;    /**    * Other draggable containers that this container is connected to and into which the    * container's items can be transferred. Can either be references to other drop containers,    * or their unique IDs.    */   @Input('cdkDropListConnectedTo')   connectedTo: (CdkDropList | string)[] | CdkDropList | string = [];    /** Arbitrary data to attach to this container. */   @Input('cdkDropListData') data: T;    /** Direction in which the list is oriented. */   @Input('cdkDropListOrientation') orientation: DropListOrientation;    /**    * Unique ID for the drop zone. Can be used as a reference    * in the `connectedTo` of another `CdkDropList`.    */   @Input() id: string = `cdk-drop-list-${_uniqueIdCounter++}`;    /** Locks the position of the draggable elements inside the container along the specified axis. */   @Input('cdkDropListLockAxis') lockAxis: DragAxis;    /** Whether starting a dragging sequence from this container is disabled. */   @Input('cdkDropListDisabled')   get disabled(): boolean {     return this._disabled || (!!this._group && this._group.disabled);   }   set disabled(value: BooleanInput) {     // Usually we sync the directive and ref state right before dragging starts, in order to have     // a single point of failure and to avoid having to use setters for everything. `disabled` is     // a special case, because it can prevent the `beforeStarted` event from firing, which can lock     // the user in a disabled state, so we also need to sync it as it's being set.     this._dropListRef.disabled = this._disabled = coerceBooleanProperty(value);   }   private _disabled: boolean;    /** Whether sorting within this drop list is disabled. */   @Input('cdkDropListSortingDisabled')   sortingDisabled: BooleanInput;    /**    * Function that is used to determine whether an item    * is allowed to be moved into a drop container.    */   @Input('cdkDropListEnterPredicate')   enterPredicate: (drag: CdkDrag, drop: CdkDropList) => boolean = () => true;    /** Functions that is used to determine whether an item can be sorted into a particular index. */   @Input('cdkDropListSortPredicate')   sortPredicate: (index: number, drag: CdkDrag, drop: CdkDropList) => boolean = () => true;    /** Whether to auto-scroll the view when the user moves their pointer close to the edges. */   @Input('cdkDropListAutoScrollDisabled')   autoScrollDisabled: BooleanInput;    /** Number of pixels to scroll for each frame when auto-scrolling an element. */   @Input('cdkDropListAutoScrollStep')   autoScrollStep: NumberInput;    /** Emits when the user drops an item inside the container. */   @Output('cdkDropListDropped')   readonly dropped: EventEmitter<CdkDragDrop<T, any>> = new EventEmitter<CdkDragDrop<T, any>>();    /**    * Emits when the user has moved a new drag item into this container.    */   @Output('cdkDropListEntered')   readonly entered: EventEmitter<CdkDragEnter<T>> = new EventEmitter<CdkDragEnter<T>>();    /**    * Emits when the user removes an item from the container    * by dragging it into another container.    */   @Output('cdkDropListExited')   readonly exited: EventEmitter<CdkDragExit<T>> = new EventEmitter<CdkDragExit<T>>();    /** Emits as the user is swapping items while actively dragging. */   @Output('cdkDropListSorted')   readonly sorted: EventEmitter<CdkDragSortEvent<T>> = new EventEmitter<CdkDragSortEvent<T>>();    /**    * Keeps track of the items that are registered with this container. Historically we used to    * do this with a `ContentChildren` query, however queries don't handle transplanted views very    * well which means that we can't handle cases like dragging the headers of a `mat-table`    * correctly. What we do instead is to have the items register themselves with the container    * and then we sort them based on their position in the DOM.    */   private _unsortedItems = new Set<CdkDrag>();    constructor(     /** Element that the drop list is attached to. */     public element: ElementRef<HTMLElement>,     dragDrop: DragDrop,     private _changeDetectorRef: ChangeDetectorRef,     private _scrollDispatcher: ScrollDispatcher,     @Optional() private _dir?: Directionality,     @Optional()     @Inject(CDK_DROP_LIST_GROUP)     @SkipSelf()     private _group?: CdkDropListGroup<CdkDropList>,     @Optional() @Inject(CDK_DRAG_CONFIG) config?: DragDropConfig,   ) {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       assertElementNode(element.nativeElement, 'cdkDropList');     }      this._dropListRef = dragDrop.createDropList(element);     this._dropListRef.data = this;      if (config) {       this._assignDefaults(config);     }      this._dropListRef.enterPredicate = (drag: DragRef<CdkDrag>, drop: DropListRef<CdkDropList>) => {       return this.enterPredicate(drag.data, drop.data);     };      this._dropListRef.sortPredicate = (       index: number,       drag: DragRef<CdkDrag>,       drop: DropListRef<CdkDropList>,     ) => {       return this.sortPredicate(index, drag.data, drop.data);     };      this._setupInputSyncSubscription(this._dropListRef);     this._handleEvents(this._dropListRef);     CdkDropList._dropLists.push(this);      if (_group) {       _group._items.add(this);     }   }    /** Registers an items with the drop list. */   addItem(item: CdkDrag): void {     this._unsortedItems.add(item);      if (this._dropListRef.isDragging()) {       this._syncItemsWithRef();     }   }    /** Removes an item from the drop list. */   removeItem(item: CdkDrag): void {     this._unsortedItems.delete(item);      if (this._dropListRef.isDragging()) {       this._syncItemsWithRef();     }   }    /** Gets the registered items in the list, sorted by their position in the DOM. */   getSortedItems(): CdkDrag[] {     return Array.from(this._unsortedItems).sort((a: CdkDrag, b: CdkDrag) => {       const documentPosition = a._dragRef         .getVisibleElement()         .compareDocumentPosition(b._dragRef.getVisibleElement());        // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.       // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition       // tslint:disable-next-line:no-bitwise       return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;     });   }    ngOnDestroy() {     const index = CdkDropList._dropLists.indexOf(this);      if (index > -1) {       CdkDropList._dropLists.splice(index, 1);     }      if (this._group) {       this._group._items.delete(this);     }      this._unsortedItems.clear();     this._dropListRef.dispose();     this._destroyed.next();     this._destroyed.complete();   }    /** Syncs the inputs of the CdkDropList with the options of the underlying DropListRef. */   private _setupInputSyncSubscription(ref: DropListRef<CdkDropList>) {     if (this._dir) {       this._dir.change         .pipe(startWith(this._dir.value), takeUntil(this._destroyed))         .subscribe(value => ref.withDirection(value));     }      ref.beforeStarted.subscribe(() => {       const siblings = coerceArray(this.connectedTo).map(drop => {         if (typeof drop === 'string') {           const correspondingDropList = CdkDropList._dropLists.find(list => list.id === drop);            if (!correspondingDropList && (typeof ngDevMode === 'undefined' || ngDevMode)) {             console.warn(`CdkDropList could not find connected drop list with id \"${drop}\"`);           }            return correspondingDropList!;         }          return drop;       });        if (this._group) {         this._group._items.forEach(drop => {           if (siblings.indexOf(drop) === -1) {             siblings.push(drop);           }         });       }        // Note that we resolve the scrollable parents here so that we delay the resolution       // as long as possible, ensuring that the element is in its final place in the DOM.       if (!this._scrollableParentsResolved) {         const scrollableParents = this._scrollDispatcher           .getAncestorScrollContainers(this.element)           .map(scrollable => scrollable.getElementRef().nativeElement);         this._dropListRef.withScrollableParents(scrollableParents);          // Only do this once since it involves traversing the DOM and the parents         // shouldn't be able to change without the drop list being destroyed.         this._scrollableParentsResolved = true;       }        ref.disabled = this.disabled;       ref.lockAxis = this.lockAxis;       ref.sortingDisabled = coerceBooleanProperty(this.sortingDisabled);       ref.autoScrollDisabled = coerceBooleanProperty(this.autoScrollDisabled);       ref.autoScrollStep = coerceNumberProperty(this.autoScrollStep, 2);       ref         .connectedTo(siblings.filter(drop => drop && drop !== this).map(list => list._dropListRef))         .withOrientation(this.orientation);     });   }    /** Handles events from the underlying DropListRef. */   private _handleEvents(ref: DropListRef<CdkDropList>) {     ref.beforeStarted.subscribe(() => {       this._syncItemsWithRef();       this._changeDetectorRef.markForCheck();     });      ref.entered.subscribe(event => {       this.entered.emit({         container: this,         item: event.item.data,         currentIndex: event.currentIndex,       });     });      ref.exited.subscribe(event => {       this.exited.emit({         container: this,         item: event.item.data,       });       this._changeDetectorRef.markForCheck();     });      ref.sorted.subscribe(event => {       this.sorted.emit({         previousIndex: event.previousIndex,         currentIndex: event.currentIndex,         container: this,         item: event.item.data,       });     });      ref.dropped.subscribe(dropEvent => {       this.dropped.emit({         previousIndex: dropEvent.previousIndex,         currentIndex: dropEvent.currentIndex,         previousContainer: dropEvent.previousContainer.data,         container: dropEvent.container.data,         item: dropEvent.item.data,         isPointerOverContainer: dropEvent.isPointerOverContainer,         distance: dropEvent.distance,         dropPoint: dropEvent.dropPoint,         event: dropEvent.event,       });        // Mark for check since all of these events run outside of change       // detection and we're not guaranteed for something else to have triggered it.       this._changeDetectorRef.markForCheck();     });      merge(ref.receivingStarted, ref.receivingStopped).subscribe(() =>       this._changeDetectorRef.markForCheck(),     );   }    /** Assigns the default input values based on a provided config object. */   private _assignDefaults(config: DragDropConfig) {     const {lockAxis, draggingDisabled, sortingDisabled, listAutoScrollDisabled, listOrientation} =       config;      this.disabled = draggingDisabled == null ? false : draggingDisabled;     this.sortingDisabled = sortingDisabled == null ? false : sortingDisabled;     this.autoScrollDisabled = listAutoScrollDisabled == null ? false : listAutoScrollDisabled;     this.orientation = listOrientation || 'vertical';      if (lockAxis) {       this.lockAxis = lockAxis;     }   }    /** Syncs up the registered drag items with underlying drop list ref. */   private _syncItemsWithRef() {     this._dropListRef.withItems(this.getSortedItems().map(item => item._dragRef));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {   Directive,   ElementRef,   Inject,   InjectionToken,   Input,   OnDestroy,   Optional,   SkipSelf, } from '@angular/core'; import {Subject} from 'rxjs'; import {CDK_DRAG_PARENT} from '../drag-parent'; import {assertElementNode} from './assertions';  /**  * Injection token that can be used to reference instances of `CdkDragHandle`. It serves as  * alternative token to the actual `CdkDragHandle` class which could cause unnecessary  * retention of the class and its directive metadata.  */ export const CDK_DRAG_HANDLE = new InjectionToken<CdkDragHandle>('CdkDragHandle');  /** Handle that can be used to drag a CdkDrag instance. */ @Directive({   selector: '[cdkDragHandle]',   standalone: true,   host: {     'class': 'cdk-drag-handle',   },   providers: [{provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle}], }) export class CdkDragHandle implements OnDestroy {   /** Closest parent draggable instance. */   _parentDrag: {} | undefined;    /** Emits when the state of the handle has changed. */   readonly _stateChanges = new Subject<CdkDragHandle>();    /** Whether starting to drag through this handle is disabled. */   @Input('cdkDragHandleDisabled')   get disabled(): boolean {     return this._disabled;   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);     this._stateChanges.next(this);   }   private _disabled = false;    constructor(     public element: ElementRef<HTMLElement>,     @Inject(CDK_DRAG_PARENT) @Optional() @SkipSelf() parentDrag?: any,   ) {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       assertElementNode(element.nativeElement, 'cdkDragHandle');     }      this._parentDrag = parentDrag;   }    ngOnDestroy() {     this._stateChanges.complete();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, TemplateRef, Input, InjectionToken} from '@angular/core';  /**  * Injection token that can be used to reference instances of `CdkDragPlaceholder`. It serves as  * alternative token to the actual `CdkDragPlaceholder` class which could cause unnecessary  * retention of the class and its directive metadata.  */ export const CDK_DRAG_PLACEHOLDER = new InjectionToken<CdkDragPlaceholder>('CdkDragPlaceholder');  /**  * Element that will be used as a template for the placeholder of a CdkDrag when  * it is being dragged. The placeholder is displayed in place of the element being dragged.  */ @Directive({   selector: 'ng-template[cdkDragPlaceholder]',   standalone: true,   providers: [{provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder}], }) export class CdkDragPlaceholder<T = any> {   /** Context data to be added to the placeholder template instance. */   @Input() data: T;   constructor(public templateRef: TemplateRef<T>) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {Directive, InjectionToken, Input, TemplateRef} from '@angular/core';  /**  * Injection token that can be used to reference instances of `CdkDragPreview`. It serves as  * alternative token to the actual `CdkDragPreview` class which could cause unnecessary  * retention of the class and its directive metadata.  */ export const CDK_DRAG_PREVIEW = new InjectionToken<CdkDragPreview>('CdkDragPreview');  /**  * Element that will be used as a template for the preview  * of a CdkDrag when it is being dragged.  */ @Directive({   selector: 'ng-template[cdkDragPreview]',   standalone: true,   providers: [{provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview}], }) export class CdkDragPreview<T = any> {   /** Context data to be added to the preview template instance. */   @Input() data: T;    /** Whether the preview should preserve the same size as the item that is being dragged. */   @Input()   get matchSize(): boolean {     return this._matchSize;   }   set matchSize(value: BooleanInput) {     this._matchSize = coerceBooleanProperty(value);   }   private _matchSize = false;    constructor(public templateRef: TemplateRef<T>) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {DOCUMENT} from '@angular/common'; import {   AfterViewInit,   ContentChild,   ContentChildren,   Directive,   ElementRef,   EventEmitter,   Inject,   Input,   NgZone,   OnDestroy,   Optional,   Output,   QueryList,   SkipSelf,   ViewContainerRef,   OnChanges,   SimpleChanges,   ChangeDetectorRef,   Self, } from '@angular/core'; import {   coerceBooleanProperty,   coerceNumberProperty,   coerceElement,   BooleanInput, } from '@angular/cdk/coercion'; import {Observable, Observer, Subject, merge} from 'rxjs'; import {startWith, take, map, takeUntil, switchMap, tap} from 'rxjs/operators'; import {   CdkDragDrop,   CdkDragEnd,   CdkDragEnter,   CdkDragExit,   CdkDragMove,   CdkDragStart,   CdkDragRelease, } from '../drag-events'; import {CDK_DRAG_HANDLE, CdkDragHandle} from './drag-handle'; import {CDK_DRAG_PLACEHOLDER, CdkDragPlaceholder} from './drag-placeholder'; import {CDK_DRAG_PREVIEW, CdkDragPreview} from './drag-preview'; import {CDK_DRAG_PARENT} from '../drag-parent'; import {DragRef, Point, PreviewContainer} from '../drag-ref'; import {CDK_DROP_LIST, CdkDropListInternal as CdkDropList} from './drop-list'; import {DragDrop} from '../drag-drop'; import {CDK_DRAG_CONFIG, DragDropConfig, DragStartDelay, DragAxis} from './config'; import {assertElementNode} from './assertions';  const DRAG_HOST_CLASS = 'cdk-drag';  /** Element that can be moved inside a CdkDropList container. */ @Directive({   selector: '[cdkDrag]',   exportAs: 'cdkDrag',   standalone: true,   host: {     'class': DRAG_HOST_CLASS,     '[class.cdk-drag-disabled]': 'disabled',     '[class.cdk-drag-dragging]': '_dragRef.isDragging()',   },   providers: [{provide: CDK_DRAG_PARENT, useExisting: CdkDrag}], }) export class CdkDrag<T = any> implements AfterViewInit, OnChanges, OnDestroy {   private readonly _destroyed = new Subject<void>();   private static _dragInstances: CdkDrag[] = [];    /** Reference to the underlying drag instance. */   _dragRef: DragRef<CdkDrag<T>>;    /** Elements that can be used to drag the draggable item. */   @ContentChildren(CDK_DRAG_HANDLE, {descendants: true}) _handles: QueryList<CdkDragHandle>;    /** Element that will be used as a template to create the draggable item's preview. */   @ContentChild(CDK_DRAG_PREVIEW) _previewTemplate: CdkDragPreview;    /** Template for placeholder element rendered to show where a draggable would be dropped. */   @ContentChild(CDK_DRAG_PLACEHOLDER) _placeholderTemplate: CdkDragPlaceholder;    /** Arbitrary data to attach to this drag instance. */   @Input('cdkDragData') data: T;    /** Locks the position of the dragged element along the specified axis. */   @Input('cdkDragLockAxis') lockAxis: DragAxis;    /**    * Selector that will be used to determine the root draggable element, starting from    * the `cdkDrag` element and going up the DOM. Passing an alternate root element is useful    * when trying to enable dragging on an element that you might not have access to.    */   @Input('cdkDragRootElement') rootElementSelector: string;    /**    * Node or selector that will be used to determine the element to which the draggable's    * position will be constrained. If a string is passed in, it'll be used as a selector that    * will be matched starting from the element's parent and going up the DOM until a match    * has been found.    */   @Input('cdkDragBoundary') boundaryElement: string | ElementRef<HTMLElement> | HTMLElement;    /**    * Amount of milliseconds to wait after the user has put their    * pointer down before starting to drag the element.    */   @Input('cdkDragStartDelay') dragStartDelay: DragStartDelay;    /**    * Sets the position of a `CdkDrag` that is outside of a drop container.    * Can be used to restore the element's position for a returning user.    */   @Input('cdkDragFreeDragPosition') freeDragPosition: Point;    /** Whether starting to drag this element is disabled. */   @Input('cdkDragDisabled')   get disabled(): boolean {     return this._disabled || (this.dropContainer && this.dropContainer.disabled);   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);     this._dragRef.disabled = this._disabled;   }   private _disabled: boolean;    /**    * Function that can be used to customize the logic of how the position of the drag item    * is limited while it's being dragged. Gets called with a point containing the current position    * of the user's pointer on the page, a reference to the item being dragged and its dimensions.    * Should return a point describing where the item should be rendered.    */   @Input('cdkDragConstrainPosition') constrainPosition?: (     userPointerPosition: Point,     dragRef: DragRef,     dimensions: ClientRect,     pickupPositionInElement: Point,   ) => Point;    /** Class to be added to the preview element. */   @Input('cdkDragPreviewClass') previewClass: string | string[];    /**    * Configures the place into which the preview of the item will be inserted. Can be configured    * globally through `CDK_DROP_LIST`. Possible values:    * - `global` - Preview will be inserted at the bottom of the `<body>`. The advantage is that    * you don't have to worry about `overflow: hidden` or `z-index`, but the item won't retain    * its inherited styles.    * - `parent` - Preview will be inserted into the parent of the drag item. The advantage is that    * inherited styles will be preserved, but it may be clipped by `overflow: hidden` or not be    * visible due to `z-index`. Furthermore, the preview is going to have an effect over selectors    * like `:nth-child` and some flexbox configurations.    * - `ElementRef<HTMLElement> | HTMLElement` - Preview will be inserted into a specific element.    * Same advantages and disadvantages as `parent`.    */   @Input('cdkDragPreviewContainer') previewContainer: PreviewContainer;    /** Emits when the user starts dragging the item. */   @Output('cdkDragStarted') readonly started: EventEmitter<CdkDragStart> =     new EventEmitter<CdkDragStart>();    /** Emits when the user has released a drag item, before any animations have started. */   @Output('cdkDragReleased') readonly released: EventEmitter<CdkDragRelease> =     new EventEmitter<CdkDragRelease>();    /** Emits when the user stops dragging an item in the container. */   @Output('cdkDragEnded') readonly ended: EventEmitter<CdkDragEnd> = new EventEmitter<CdkDragEnd>();    /** Emits when the user has moved the item into a new container. */   @Output('cdkDragEntered') readonly entered: EventEmitter<CdkDragEnter<any>> = new EventEmitter<     CdkDragEnter<any>   >();    /** Emits when the user removes the item its container by dragging it into another container. */   @Output('cdkDragExited') readonly exited: EventEmitter<CdkDragExit<any>> = new EventEmitter<     CdkDragExit<any>   >();    /** Emits when the user drops the item inside a container. */   @Output('cdkDragDropped') readonly dropped: EventEmitter<CdkDragDrop<any>> = new EventEmitter<     CdkDragDrop<any>   >();    /**    * Emits as the user is dragging the item. Use with caution,    * because this event will fire for every pixel that the user has dragged.    */   @Output('cdkDragMoved')   readonly moved: Observable<CdkDragMove<T>> = new Observable(     (observer: Observer<CdkDragMove<T>>) => {       const subscription = this._dragRef.moved         .pipe(           map(movedEvent => ({             source: this,             pointerPosition: movedEvent.pointerPosition,             event: movedEvent.event,             delta: movedEvent.delta,             distance: movedEvent.distance,           })),         )         .subscribe(observer);        return () => {         subscription.unsubscribe();       };     },   );    constructor(     /** Element that the draggable is attached to. */     public element: ElementRef<HTMLElement>,     /** Droppable container that the draggable is a part of. */     @Inject(CDK_DROP_LIST) @Optional() @SkipSelf() public dropContainer: CdkDropList,     /**      * @deprecated `_document` parameter no longer being used and will be removed.      * @breaking-change 12.0.0      */     @Inject(DOCUMENT) _document: any,     private _ngZone: NgZone,     private _viewContainerRef: ViewContainerRef,     @Optional() @Inject(CDK_DRAG_CONFIG) config: DragDropConfig,     @Optional() private _dir: Directionality,     dragDrop: DragDrop,     private _changeDetectorRef: ChangeDetectorRef,     @Optional() @Self() @Inject(CDK_DRAG_HANDLE) private _selfHandle?: CdkDragHandle,     @Optional() @SkipSelf() @Inject(CDK_DRAG_PARENT) private _parentDrag?: CdkDrag,   ) {     this._dragRef = dragDrop.createDrag(element, {       dragStartThreshold:         config && config.dragStartThreshold != null ? config.dragStartThreshold : 5,       pointerDirectionChangeThreshold:         config && config.pointerDirectionChangeThreshold != null           ? config.pointerDirectionChangeThreshold           : 5,       zIndex: config?.zIndex,     });     this._dragRef.data = this;      // We have to keep track of the drag instances in order to be able to match an element to     // a drag instance. We can't go through the global registry of `DragRef`, because the root     // element could be different.     CdkDrag._dragInstances.push(this);      if (config) {       this._assignDefaults(config);     }      // Note that usually the container is assigned when the drop list is picks up the item, but in     // some cases (mainly transplanted views with OnPush, see #18341) we may end up in a situation     // where there are no items on the first change detection pass, but the items get picked up as     // soon as the user triggers another pass by dragging. This is a problem, because the item would     // have to switch from standalone mode to drag mode in the middle of the dragging sequence which     // is too late since the two modes save different kinds of information. We work around it by     // assigning the drop container both from here and the list.     if (dropContainer) {       this._dragRef._withDropContainer(dropContainer._dropListRef);       dropContainer.addItem(this);     }      this._syncInputs(this._dragRef);     this._handleEvents(this._dragRef);   }    /**    * Returns the element that is being used as a placeholder    * while the current element is being dragged.    */   getPlaceholderElement(): HTMLElement {     return this._dragRef.getPlaceholderElement();   }    /** Returns the root draggable element. */   getRootElement(): HTMLElement {     return this._dragRef.getRootElement();   }    /** Resets a standalone drag item to its initial position. */   reset(): void {     this._dragRef.reset();   }    /**    * Gets the pixel coordinates of the draggable outside of a drop container.    */   getFreeDragPosition(): Readonly<Point> {     return this._dragRef.getFreeDragPosition();   }    /**    * Sets the current position in pixels the draggable outside of a drop container.    * @param value New position to be set.    */   setFreeDragPosition(value: Point): void {     this._dragRef.setFreeDragPosition(value);   }    ngAfterViewInit() {     // Normally this isn't in the zone, but it can cause major performance regressions for apps     // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.     this._ngZone.runOutsideAngular(() => {       // We need to wait for the zone to stabilize, in order for the reference       // element to be in the proper place in the DOM. This is mostly relevant       // for draggable elements inside portals since they get stamped out in       // their original DOM position and then they get transferred to the portal.       this._ngZone.onStable.pipe(take(1), takeUntil(this._destroyed)).subscribe(() => {         this._updateRootElement();         this._setupHandlesListener();          if (this.freeDragPosition) {           this._dragRef.setFreeDragPosition(this.freeDragPosition);         }       });     });   }    ngOnChanges(changes: SimpleChanges) {     const rootSelectorChange = changes['rootElementSelector'];     const positionChange = changes['freeDragPosition'];      // We don't have to react to the first change since it's being     // handled in `ngAfterViewInit` where it needs to be deferred.     if (rootSelectorChange && !rootSelectorChange.firstChange) {       this._updateRootElement();     }      // Skip the first change since it's being handled in `ngAfterViewInit`.     if (positionChange && !positionChange.firstChange && this.freeDragPosition) {       this._dragRef.setFreeDragPosition(this.freeDragPosition);     }   }    ngOnDestroy() {     if (this.dropContainer) {       this.dropContainer.removeItem(this);     }      const index = CdkDrag._dragInstances.indexOf(this);     if (index > -1) {       CdkDrag._dragInstances.splice(index, 1);     }      // Unnecessary in most cases, but used to avoid extra change detections with `zone-paths-rxjs`.     this._ngZone.runOutsideAngular(() => {       this._destroyed.next();       this._destroyed.complete();       this._dragRef.dispose();     });   }    /** Syncs the root element with the `DragRef`. */   private _updateRootElement() {     const element = this.element.nativeElement as HTMLElement;     let rootElement = element;     if (this.rootElementSelector) {       rootElement =         element.closest !== undefined           ? (element.closest(this.rootElementSelector) as HTMLElement)           : // Comment tag doesn't have closest method, so use parent's one.             (element.parentElement?.closest(this.rootElementSelector) as HTMLElement);     }      if (rootElement && (typeof ngDevMode === 'undefined' || ngDevMode)) {       assertElementNode(rootElement, 'cdkDrag');     }      this._dragRef.withRootElement(rootElement || element);   }    /** Gets the boundary element, based on the `boundaryElement` value. */   private _getBoundaryElement() {     const boundary = this.boundaryElement;      if (!boundary) {       return null;     }      if (typeof boundary === 'string') {       return this.element.nativeElement.closest<HTMLElement>(boundary);     }      return coerceElement(boundary);   }    /** Syncs the inputs of the CdkDrag with the options of the underlying DragRef. */   private _syncInputs(ref: DragRef<CdkDrag<T>>) {     ref.beforeStarted.subscribe(() => {       if (!ref.isDragging()) {         const dir = this._dir;         const dragStartDelay = this.dragStartDelay;         const placeholder = this._placeholderTemplate           ? {               template: this._placeholderTemplate.templateRef,               context: this._placeholderTemplate.data,               viewContainer: this._viewContainerRef,             }           : null;         const preview = this._previewTemplate           ? {               template: this._previewTemplate.templateRef,               context: this._previewTemplate.data,               matchSize: this._previewTemplate.matchSize,               viewContainer: this._viewContainerRef,             }           : null;          ref.disabled = this.disabled;         ref.lockAxis = this.lockAxis;         ref.dragStartDelay =           typeof dragStartDelay === 'object' && dragStartDelay             ? dragStartDelay             : coerceNumberProperty(dragStartDelay);         ref.constrainPosition = this.constrainPosition;         ref.previewClass = this.previewClass;         ref           .withBoundaryElement(this._getBoundaryElement())           .withPlaceholderTemplate(placeholder)           .withPreviewTemplate(preview)           .withPreviewContainer(this.previewContainer || 'global');          if (dir) {           ref.withDirection(dir.value);         }       }     });      // This only needs to be resolved once.     ref.beforeStarted.pipe(take(1)).subscribe(() => {       // If we managed to resolve a parent through DI, use it.       if (this._parentDrag) {         ref.withParent(this._parentDrag._dragRef);         return;       }        // Otherwise fall back to resolving the parent by looking up the DOM. This can happen if       // the item was projected into another item by something like `ngTemplateOutlet`.       let parent = this.element.nativeElement.parentElement;       while (parent) {         if (parent.classList.contains(DRAG_HOST_CLASS)) {           ref.withParent(             CdkDrag._dragInstances.find(drag => {               return drag.element.nativeElement === parent;             })?._dragRef || null,           );           break;         }         parent = parent.parentElement;       }     });   }    /** Handles the events from the underlying `DragRef`. */   private _handleEvents(ref: DragRef<CdkDrag<T>>) {     ref.started.subscribe(startEvent => {       this.started.emit({source: this, event: startEvent.event});        // Since all of these events run outside of change detection,       // we need to ensure that everything is marked correctly.       this._changeDetectorRef.markForCheck();     });      ref.released.subscribe(releaseEvent => {       this.released.emit({source: this, event: releaseEvent.event});     });      ref.ended.subscribe(endEvent => {       this.ended.emit({         source: this,         distance: endEvent.distance,         dropPoint: endEvent.dropPoint,         event: endEvent.event,       });        // Since all of these events run outside of change detection,       // we need to ensure that everything is marked correctly.       this._changeDetectorRef.markForCheck();     });      ref.entered.subscribe(enterEvent => {       this.entered.emit({         container: enterEvent.container.data,         item: this,         currentIndex: enterEvent.currentIndex,       });     });      ref.exited.subscribe(exitEvent => {       this.exited.emit({         container: exitEvent.container.data,         item: this,       });     });      ref.dropped.subscribe(dropEvent => {       this.dropped.emit({         previousIndex: dropEvent.previousIndex,         currentIndex: dropEvent.currentIndex,         previousContainer: dropEvent.previousContainer.data,         container: dropEvent.container.data,         isPointerOverContainer: dropEvent.isPointerOverContainer,         item: this,         distance: dropEvent.distance,         dropPoint: dropEvent.dropPoint,         event: dropEvent.event,       });     });   }    /** Assigns the default input values based on a provided config object. */   private _assignDefaults(config: DragDropConfig) {     const {       lockAxis,       dragStartDelay,       constrainPosition,       previewClass,       boundaryElement,       draggingDisabled,       rootElementSelector,       previewContainer,     } = config;      this.disabled = draggingDisabled == null ? false : draggingDisabled;     this.dragStartDelay = dragStartDelay || 0;      if (lockAxis) {       this.lockAxis = lockAxis;     }      if (constrainPosition) {       this.constrainPosition = constrainPosition;     }      if (previewClass) {       this.previewClass = previewClass;     }      if (boundaryElement) {       this.boundaryElement = boundaryElement;     }      if (rootElementSelector) {       this.rootElementSelector = rootElementSelector;     }      if (previewContainer) {       this.previewContainer = previewContainer;     }   }    /** Sets up the listener that syncs the handles with the drag ref. */   private _setupHandlesListener() {     // Listen for any newly-added handles.     this._handles.changes       .pipe(         startWith(this._handles),         // Sync the new handles with the DragRef.         tap((handles: QueryList<CdkDragHandle>) => {           const childHandleElements = handles             .filter(handle => handle._parentDrag === this)             .map(handle => handle.element);            // Usually handles are only allowed to be a descendant of the drag element, but if           // the consumer defined a different drag root, we should allow the drag element           // itself to be a handle too.           if (this._selfHandle && this.rootElementSelector) {             childHandleElements.push(this.element);           }            this._dragRef.withHandles(childHandleElements);         }),         // Listen if the state of any of the handles changes.         switchMap((handles: QueryList<CdkDragHandle>) => {           return merge(             ...handles.map(item => {               return item._stateChanges.pipe(startWith(item));             }),           ) as Observable<CdkDragHandle>;         }),         takeUntil(this._destroyed),       )       .subscribe(handleInstance => {         // Enabled/disable the handle that changed in the DragRef.         const dragRef = this._dragRef;         const handle = handleInstance.element.nativeElement;         handleInstance.disabled ? dragRef.disableHandle(handle) : dragRef.enableHandle(handle);       });   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {CdkScrollableModule} from '@angular/cdk/scrolling'; import {CdkDropList} from './directives/drop-list'; import {CdkDropListGroup} from './directives/drop-list-group'; import {CdkDrag} from './directives/drag'; import {CdkDragHandle} from './directives/drag-handle'; import {CdkDragPreview} from './directives/drag-preview'; import {CdkDragPlaceholder} from './directives/drag-placeholder'; import {DragDrop} from './drag-drop';  const DRAG_DROP_DIRECTIVES = [   CdkDropList,   CdkDropListGroup,   CdkDrag,   CdkDragHandle,   CdkDragPreview,   CdkDragPlaceholder, ];  @NgModule({   imports: DRAG_DROP_DIRECTIVES,   exports: [CdkScrollableModule, ...DRAG_DROP_DIRECTIVES],   providers: [DragDrop], }) export class DragDropModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export {DragDrop} from './drag-drop'; export {DragRef, DragRefConfig, Point, PreviewContainer} from './drag-ref'; export {DropListRef} from './drop-list-ref'; export {CDK_DRAG_PARENT} from './drag-parent';  export * from './drag-events'; export * from './drag-utils'; export * from './drag-drop-module'; export * from './drag-drop-registry';  export {CdkDropList, CDK_DROP_LIST} from './directives/drop-list'; export * from './directives/config'; export * from './directives/drop-list-group'; export * from './directives/drag'; export * from './directives/drag-handle'; export * from './directives/drag-preview'; export * from './directives/drag-placeholder'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["clamp","i2.DragDropRegistry","i1.DragDrop","i2","i1","i2.DragDrop"],"mappings":"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"}
-------------------- SECTION 201 --------------------
{"version":3,"file":"bidi.mjs","sources":["../../../../../../src/cdk/bidi/dir-document-token.ts","../../../../../../src/cdk/bidi/directionality.ts","../../../../../../src/cdk/bidi/dir.ts","../../../../../../src/cdk/bidi/bidi-module.ts","../../../../../../src/cdk/bidi/public-api.ts","../../../../../../src/cdk/bidi/index.ts","../../../../../../src/cdk/bidi/bidi_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {inject, InjectionToken} from '@angular/core';  /**  * Injection token used to inject the document into Directionality.  * This is used so that the value can be faked in tests.  *  * We can't use the real document in tests because changing the real `dir` causes geometry-based  * tests in Safari to fail.  *  * We also can't re-provide the DOCUMENT token from platform-browser because the unit tests  * themselves use things like `querySelector` in test code.  *  * This token is defined in a separate file from Directionality as a workaround for  * https://github.com/angular/angular/issues/22559  *  * @docs-private  */ export const DIR_DOCUMENT = new InjectionToken<Document>('cdk-dir-doc', {   providedIn: 'root',   factory: DIR_DOCUMENT_FACTORY, });  /** @docs-private */ export function DIR_DOCUMENT_FACTORY(): Document {   return inject(DOCUMENT); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EventEmitter, Inject, Injectable, Optional, OnDestroy} from '@angular/core'; import {DIR_DOCUMENT} from './dir-document-token';  export type Direction = 'ltr' | 'rtl';  /** Regex that matches locales with an RTL script. Taken from `goog.i18n.bidi.isRtlLanguage`. */ const RTL_LOCALE_PATTERN =   /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;  /** Resolves a string value to a specific direction. */ export function _resolveDirectionality(rawValue: string): Direction {   const value = rawValue?.toLowerCase() || '';    if (value === 'auto' && typeof navigator !== 'undefined' && navigator?.language) {     return RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr';   }    return value === 'rtl' ? 'rtl' : 'ltr'; }  /**  * The directionality (LTR / RTL) context for the application (or a subtree of it).  * Exposes the current direction and a stream of direction changes.  */ @Injectable({providedIn: 'root'}) export class Directionality implements OnDestroy {   /** The current 'ltr' or 'rtl' value. */   readonly value: Direction = 'ltr';    /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */   readonly change = new EventEmitter<Direction>();    constructor(@Optional() @Inject(DIR_DOCUMENT) _document?: any) {     if (_document) {       const bodyDir = _document.body ? _document.body.dir : null;       const htmlDir = _document.documentElement ? _document.documentElement.dir : null;       this.value = _resolveDirectionality(bodyDir || htmlDir || 'ltr');     }   }    ngOnDestroy() {     this.change.complete();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, Output, Input, EventEmitter, AfterContentInit, OnDestroy} from '@angular/core';  import {Direction, Directionality, _resolveDirectionality} from './directionality';  /**  * Directive to listen for changes of direction of part of the DOM.  *  * Provides itself as Directionality such that descendant directives only need to ever inject  * Directionality to get the closest direction.  */ @Directive({   selector: '[dir]',   providers: [{provide: Directionality, useExisting: Dir}],   host: {'[attr.dir]': '_rawDir'},   exportAs: 'dir', }) export class Dir implements Directionality, AfterContentInit, OnDestroy {   /** Normalized direction that accounts for invalid/unsupported values. */   private _dir: Direction = 'ltr';    /** Whether the `value` has been set to its initial value. */   private _isInitialized: boolean = false;    /** Direction as passed in by the consumer. */   _rawDir: string;    /** Event emitted when the direction changes. */   @Output('dirChange') readonly change = new EventEmitter<Direction>();    /** @docs-private */   @Input()   get dir(): Direction {     return this._dir;   }   set dir(value: Direction | 'auto') {     const previousValue = this._dir;      // Note: `_resolveDirectionality` resolves the language based on the browser's language,     // whereas the browser does it based on the content of the element. Since doing so based     // on the content can be expensive, for now we're doing the simpler matching.     this._dir = _resolveDirectionality(value);     this._rawDir = value;      if (previousValue !== this._dir && this._isInitialized) {       this.change.emit(this._dir);     }   }    /** Current layout direction of the element. */   get value(): Direction {     return this.dir;   }    /** Initialize once default value has been set. */   ngAfterContentInit() {     this._isInitialized = true;   }    ngOnDestroy() {     this.change.complete();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {Dir} from './dir';  @NgModule({   exports: [Dir],   declarations: [Dir], }) export class BidiModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export {Directionality, Direction} from './directionality'; export {DIR_DOCUMENT} from './dir-document-token'; export {Dir} from './dir'; export * from './bidi-module'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 202 --------------------
{"version":3,"file":"observers.mjs","sources":["../../../../../../src/cdk/observers/observe-content.ts","../../../../../../src/cdk/observers/public-api.ts","../../../../../../src/cdk/observers/index.ts","../../../../../../src/cdk/observers/observers_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   coerceBooleanProperty,   coerceNumberProperty,   coerceElement,   BooleanInput,   NumberInput, } from '@angular/cdk/coercion'; import {   AfterContentInit,   Directive,   ElementRef,   EventEmitter,   Injectable,   Input,   NgModule,   NgZone,   OnDestroy,   Output, } from '@angular/core'; import {Observable, Subject, Subscription, Observer} from 'rxjs'; import {debounceTime} from 'rxjs/operators';  /**  * Factory that creates a new MutationObserver and allows us to stub it out in unit tests.  * @docs-private  */ @Injectable({providedIn: 'root'}) export class MutationObserverFactory {   create(callback: MutationCallback): MutationObserver | null {     return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);   } }  /** An injectable service that allows watching elements for changes to their content. */ @Injectable({providedIn: 'root'}) export class ContentObserver implements OnDestroy {   /** Keeps track of the existing MutationObservers so they can be reused. */   private _observedElements = new Map<     Element,     {       observer: MutationObserver | null;       readonly stream: Subject<MutationRecord[]>;       count: number;     }   >();    constructor(private _mutationObserverFactory: MutationObserverFactory) {}    ngOnDestroy() {     this._observedElements.forEach((_, element) => this._cleanupObserver(element));   }    /**    * Observe content changes on an element.    * @param element The element to observe for content changes.    */   observe(element: Element): Observable<MutationRecord[]>;    /**    * Observe content changes on an element.    * @param element The element to observe for content changes.    */   observe(element: ElementRef<Element>): Observable<MutationRecord[]>;    observe(elementOrRef: Element | ElementRef<Element>): Observable<MutationRecord[]> {     const element = coerceElement(elementOrRef);      return new Observable((observer: Observer<MutationRecord[]>) => {       const stream = this._observeElement(element);       const subscription = stream.subscribe(observer);        return () => {         subscription.unsubscribe();         this._unobserveElement(element);       };     });   }    /**    * Observes the given element by using the existing MutationObserver if available, or creating a    * new one if not.    */   private _observeElement(element: Element): Subject<MutationRecord[]> {     if (!this._observedElements.has(element)) {       const stream = new Subject<MutationRecord[]>();       const observer = this._mutationObserverFactory.create(mutations => stream.next(mutations));       if (observer) {         observer.observe(element, {           characterData: true,           childList: true,           subtree: true,         });       }       this._observedElements.set(element, {observer, stream, count: 1});     } else {       this._observedElements.get(element)!.count++;     }     return this._observedElements.get(element)!.stream;   }    /**    * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is    * observing this element.    */   private _unobserveElement(element: Element) {     if (this._observedElements.has(element)) {       this._observedElements.get(element)!.count--;       if (!this._observedElements.get(element)!.count) {         this._cleanupObserver(element);       }     }   }    /** Clean up the underlying MutationObserver for the specified element. */   private _cleanupObserver(element: Element) {     if (this._observedElements.has(element)) {       const {observer, stream} = this._observedElements.get(element)!;       if (observer) {         observer.disconnect();       }       stream.complete();       this._observedElements.delete(element);     }   } }  /**  * Directive that triggers a callback whenever the content of  * its associated element has changed.  */ @Directive({   selector: '[cdkObserveContent]',   exportAs: 'cdkObserveContent', }) export class CdkObserveContent implements AfterContentInit, OnDestroy {   /** Event emitted for each change in the element's content. */   @Output('cdkObserveContent') readonly event = new EventEmitter<MutationRecord[]>();    /**    * Whether observing content is disabled. This option can be used    * to disconnect the underlying MutationObserver until it is needed.    */   @Input('cdkObserveContentDisabled')   get disabled(): boolean {     return this._disabled;   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);     this._disabled ? this._unsubscribe() : this._subscribe();   }   private _disabled = false;    /** Debounce interval for emitting the changes. */   @Input()   get debounce(): number {     return this._debounce;   }   set debounce(value: NumberInput) {     this._debounce = coerceNumberProperty(value);     this._subscribe();   }   private _debounce: number;    private _currentSubscription: Subscription | null = null;    constructor(     private _contentObserver: ContentObserver,     private _elementRef: ElementRef<HTMLElement>,     private _ngZone: NgZone,   ) {}    ngAfterContentInit() {     if (!this._currentSubscription && !this.disabled) {       this._subscribe();     }   }    ngOnDestroy() {     this._unsubscribe();   }    private _subscribe() {     this._unsubscribe();     const stream = this._contentObserver.observe(this._elementRef);      // TODO(mmalerba): We shouldn't be emitting on this @Output() outside the zone.     // Consider brining it back inside the zone next time we're making breaking changes.     // Bringing it back inside can cause things like infinite change detection loops and changed     // after checked errors if people's code isn't handling it properly.     this._ngZone.runOutsideAngular(() => {       this._currentSubscription = (         this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream       ).subscribe(this.event);     });   }    private _unsubscribe() {     this._currentSubscription?.unsubscribe();   } }  @NgModule({   exports: [CdkObserveContent],   declarations: [CdkObserveContent],   providers: [MutationObserverFactory], }) export class ObserversModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './observe-content'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 203 --------------------
{"version":3,"file":"clipboard.mjs","sources":["../../../../../../src/cdk/clipboard/pending-copy.ts","../../../../../../src/cdk/clipboard/clipboard.ts","../../../../../../src/cdk/clipboard/copy-to-clipboard.ts","../../../../../../src/cdk/clipboard/clipboard-module.ts","../../../../../../src/cdk/clipboard/public-api.ts","../../../../../../src/cdk/clipboard/index.ts","../../../../../../src/cdk/clipboard/clipboard_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * A pending copy-to-clipboard operation.  *  * The implementation of copying text to the clipboard modifies the DOM and  * forces a re-layout. This re-layout can take too long if the string is large,  * causing the execCommand('copy') to happen too long after the user clicked.  * This results in the browser refusing to copy. This object lets the  * re-layout happen in a separate tick from copying by providing a copy function  * that can be called later.  *  * Destroy must be called when no longer in use, regardless of whether `copy` is  * called.  */ export class PendingCopy {   private _textarea: HTMLTextAreaElement | undefined;    constructor(text: string, private readonly _document: Document) {     const textarea = (this._textarea = this._document.createElement('textarea'));     const styles = textarea.style;      // Hide the element for display and accessibility. Set a fixed position so the page layout     // isn't affected. We use `fixed` with `top: 0`, because focus is moved into the textarea     // for a split second and if it's off-screen, some browsers will attempt to scroll it into view.     styles.position = 'fixed';     styles.top = styles.opacity = '0';     styles.left = '-999em';     textarea.setAttribute('aria-hidden', 'true');     textarea.value = text;     // Making the textarea `readonly` prevents the screen from jumping on iOS Safari (see #25169).     textarea.readOnly = true;     this._document.body.appendChild(textarea);   }    /** Finishes copying the text. */   copy(): boolean {     const textarea = this._textarea;     let successful = false;      try {       // Older browsers could throw if copy is not supported.       if (textarea) {         const currentFocus = this._document.activeElement as HTMLOrSVGElement | null;          textarea.select();         textarea.setSelectionRange(0, textarea.value.length);         successful = this._document.execCommand('copy');          if (currentFocus) {           currentFocus.focus();         }       }     } catch {       // Discard error.       // Initial setting of {@code successful} will represent failure here.     }      return successful;   }    /** Cleans up DOM changes used to perform the copy operation. */   destroy() {     const textarea = this._textarea;      if (textarea) {       textarea.remove();       this._textarea = undefined;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable} from '@angular/core'; import {PendingCopy} from './pending-copy';  /**  * A service for copying text to the clipboard.  */ @Injectable({providedIn: 'root'}) export class Clipboard {   private readonly _document: Document;    constructor(@Inject(DOCUMENT) document: any) {     this._document = document;   }    /**    * Copies the provided text into the user's clipboard.    *    * @param text The string to copy.    * @returns Whether the operation was successful.    */   copy(text: string): boolean {     const pendingCopy = this.beginCopy(text);     const successful = pendingCopy.copy();     pendingCopy.destroy();      return successful;   }    /**    * Prepares a string to be copied later. This is useful for large strings    * which take too long to successfully render and be copied in the same tick.    *    * The caller must call `destroy` on the returned `PendingCopy`.    *    * @param text The string to copy.    * @returns the pending copy operation.    */   beginCopy(text: string): PendingCopy {     return new PendingCopy(text, this._document);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   Directive,   EventEmitter,   Input,   Output,   NgZone,   InjectionToken,   Inject,   Optional,   OnDestroy, } from '@angular/core'; import {Clipboard} from './clipboard'; import {PendingCopy} from './pending-copy';  /** Object that can be used to configure the default options for `CdkCopyToClipboard`. */ export interface CdkCopyToClipboardConfig {   /** Default number of attempts to make when copying text to the clipboard. */   attempts?: number; }  /** Injection token that can be used to provide the default options to `CdkCopyToClipboard`. */ export const CDK_COPY_TO_CLIPBOARD_CONFIG = new InjectionToken<CdkCopyToClipboardConfig>(   'CDK_COPY_TO_CLIPBOARD_CONFIG', );  /**  * Provides behavior for a button that when clicked copies content into user's  * clipboard.  */ @Directive({   selector: '[cdkCopyToClipboard]',   host: {     '(click)': 'copy()',   }, }) export class CdkCopyToClipboard implements OnDestroy {   /** Content to be copied. */   @Input('cdkCopyToClipboard') text: string = '';    /**    * How many times to attempt to copy the text. This may be necessary for longer text, because    * the browser needs time to fill an intermediate textarea element and copy the content.    */   @Input('cdkCopyToClipboardAttempts') attempts: number = 1;    /**    * Emits when some text is copied to the clipboard. The    * emitted value indicates whether copying was successful.    */   @Output('cdkCopyToClipboardCopied') readonly copied = new EventEmitter<boolean>();    /** Copies that are currently being attempted. */   private _pending = new Set<PendingCopy>();    /** Whether the directive has been destroyed. */   private _destroyed: boolean;    /** Timeout for the current copy attempt. */   private _currentTimeout: any;    constructor(     private _clipboard: Clipboard,     private _ngZone: NgZone,     @Optional() @Inject(CDK_COPY_TO_CLIPBOARD_CONFIG) config?: CdkCopyToClipboardConfig,   ) {     if (config && config.attempts != null) {       this.attempts = config.attempts;     }   }    /** Copies the current text to the clipboard. */   copy(attempts: number = this.attempts): void {     if (attempts > 1) {       let remainingAttempts = attempts;       const pending = this._clipboard.beginCopy(this.text);       this._pending.add(pending);        const attempt = () => {         const successful = pending.copy();         if (!successful && --remainingAttempts && !this._destroyed) {           // We use 1 for the timeout since it's more predictable when flushing in unit tests.           this._currentTimeout = this._ngZone.runOutsideAngular(() => setTimeout(attempt, 1));         } else {           this._currentTimeout = null;           this._pending.delete(pending);           pending.destroy();           this.copied.emit(successful);         }       };       attempt();     } else {       this.copied.emit(this._clipboard.copy(this.text));     }   }    ngOnDestroy() {     if (this._currentTimeout) {       clearTimeout(this._currentTimeout);     }      this._pending.forEach(copy => copy.destroy());     this._pending.clear();     this._destroyed = true;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core';  import {CdkCopyToClipboard} from './copy-to-clipboard';  @NgModule({   declarations: [CdkCopyToClipboard],   exports: [CdkCopyToClipboard], }) export class ClipboardModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './clipboard'; export * from './clipboard-module'; export * from './copy-to-clipboard'; export * from './pending-copy'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 204 --------------------
{"version":3,"file":"a11y.mjs","sources":["../../../../../../src/cdk/a11y/aria-describer/aria-reference.ts","../../../../../../src/cdk/a11y/aria-describer/aria-describer.ts","../../../../../../src/cdk/a11y/key-manager/list-key-manager.ts","../../../../../../src/cdk/a11y/key-manager/activedescendant-key-manager.ts","../../../../../../src/cdk/a11y/key-manager/focus-key-manager.ts","../../../../../../src/cdk/a11y/interactivity-checker/interactivity-checker.ts","../../../../../../src/cdk/a11y/focus-trap/focus-trap.ts","../../../../../../src/cdk/a11y/focus-trap/configurable-focus-trap.ts","../../../../../../src/cdk/a11y/focus-trap/focus-trap-inert-strategy.ts","../../../../../../src/cdk/a11y/focus-trap/event-listener-inert-strategy.ts","../../../../../../src/cdk/a11y/focus-trap/focus-trap-manager.ts","../../../../../../src/cdk/a11y/focus-trap/configurable-focus-trap-factory.ts","../../../../../../src/cdk/a11y/fake-event-detection.ts","../../../../../../src/cdk/a11y/input-modality/input-modality-detector.ts","../../../../../../src/cdk/a11y/live-announcer/live-announcer-tokens.ts","../../../../../../src/cdk/a11y/live-announcer/live-announcer.ts","../../../../../../src/cdk/a11y/focus-monitor/focus-monitor.ts","../../../../../../src/cdk/a11y/high-contrast-mode/high-contrast-mode-detector.ts","../../../../../../src/cdk/a11y/a11y-module.ts","../../../../../../src/cdk/a11y/public-api.ts","../../../../../../src/cdk/a11y/index.ts","../../../../../../src/cdk/a11y/a11y_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** IDs are delimited by an empty space, as per the spec. */ const ID_DELIMITER = ' ';  /**  * Adds the given ID to the specified ARIA attribute on an element.  * Used for attributes such as aria-labelledby, aria-owns, etc.  */ export function addAriaReferencedId(el: Element, attr: `aria-${string}`, id: string) {   const ids = getAriaReferenceIds(el, attr);   if (ids.some(existingId => existingId.trim() == id.trim())) {     return;   }   ids.push(id.trim());    el.setAttribute(attr, ids.join(ID_DELIMITER)); }  /**  * Removes the given ID from the specified ARIA attribute on an element.  * Used for attributes such as aria-labelledby, aria-owns, etc.  */ export function removeAriaReferencedId(el: Element, attr: `aria-${string}`, id: string) {   const ids = getAriaReferenceIds(el, attr);   const filteredIds = ids.filter(val => val != id.trim());    if (filteredIds.length) {     el.setAttribute(attr, filteredIds.join(ID_DELIMITER));   } else {     el.removeAttribute(attr);   } }  /**  * Gets the list of IDs referenced by the given ARIA attribute on an element.  * Used for attributes such as aria-labelledby, aria-owns, etc.  */ export function getAriaReferenceIds(el: Element, attr: string): string[] {   // Get string array of all individual ids (whitespace delimited) in the attribute value   return (el.getAttribute(attr) || '').match(/\\S+/g) || []; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, OnDestroy, APP_ID, inject} from '@angular/core'; import {Platform} from '@angular/cdk/platform'; import {addAriaReferencedId, getAriaReferenceIds, removeAriaReferencedId} from './aria-reference';  /**  * Interface used to register message elements and keep a count of how many registrations have  * the same message and the reference to the message element used for the `aria-describedby`.  */ export interface RegisteredMessage {   /** The element containing the message. */   messageElement: Element;    /** The number of elements that reference this message element via `aria-describedby`. */   referenceCount: number; }  /**  * ID used for the body container where all messages are appended.  * @deprecated No longer being used. To be removed.  * @breaking-change 14.0.0  */ export const MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';  /**  * ID prefix used for each created message element.  * @deprecated To be turned into a private variable.  * @breaking-change 14.0.0  */ export const CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';  /**  * Attribute given to each host element that is described by a message element.  * @deprecated To be turned into a private variable.  * @breaking-change 14.0.0  */ export const CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';  /** Global incremental identifier for each registered message element. */ let nextId = 0;  /**  * Utility that creates visually hidden elements with a message content. Useful for elements that  * want to use aria-describedby to further describe themselves without adding additional visual  * content.  */ @Injectable({providedIn: 'root'}) export class AriaDescriber implements OnDestroy {   private _document: Document;    /** Map of all registered message elements that have been placed into the document. */   private _messageRegistry = new Map<string | Element, RegisteredMessage>();    /** Container for all registered messages. */   private _messagesContainer: HTMLElement | null = null;    /** Unique ID for the service. */   private readonly _id = `${nextId++}`;    constructor(     @Inject(DOCUMENT) _document: any,     /**      * @deprecated To be turned into a required parameter.      * @breaking-change 14.0.0      */     private _platform?: Platform,   ) {     this._document = _document;     this._id = inject(APP_ID) + '-' + nextId++;   }    /**    * Adds to the host element an aria-describedby reference to a hidden element that contains    * the message. If the same message has already been registered, then it will reuse the created    * message element.    */   describe(hostElement: Element, message: string, role?: string): void;    /**    * Adds to the host element an aria-describedby reference to an already-existing message element.    */   describe(hostElement: Element, message: HTMLElement): void;    describe(hostElement: Element, message: string | HTMLElement, role?: string): void {     if (!this._canBeDescribed(hostElement, message)) {       return;     }      const key = getKey(message, role);      if (typeof message !== 'string') {       // We need to ensure that the element has an ID.       setMessageId(message, this._id);       this._messageRegistry.set(key, {messageElement: message, referenceCount: 0});     } else if (!this._messageRegistry.has(key)) {       this._createMessageElement(message, role);     }      if (!this._isElementDescribedByMessage(hostElement, key)) {       this._addMessageReference(hostElement, key);     }   }    /** Removes the host element's aria-describedby reference to the message. */   removeDescription(hostElement: Element, message: string, role?: string): void;    /** Removes the host element's aria-describedby reference to the message element. */   removeDescription(hostElement: Element, message: HTMLElement): void;    removeDescription(hostElement: Element, message: string | HTMLElement, role?: string): void {     if (!message || !this._isElementNode(hostElement)) {       return;     }      const key = getKey(message, role);      if (this._isElementDescribedByMessage(hostElement, key)) {       this._removeMessageReference(hostElement, key);     }      // If the message is a string, it means that it's one that we created for the     // consumer so we can remove it safely, otherwise we should leave it in place.     if (typeof message === 'string') {       const registeredMessage = this._messageRegistry.get(key);       if (registeredMessage && registeredMessage.referenceCount === 0) {         this._deleteMessageElement(key);       }     }      if (this._messagesContainer?.childNodes.length === 0) {       this._messagesContainer.remove();       this._messagesContainer = null;     }   }    /** Unregisters all created message elements and removes the message container. */   ngOnDestroy() {     const describedElements = this._document.querySelectorAll(       `[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}=\"${this._id}\"]`,     );      for (let i = 0; i < describedElements.length; i++) {       this._removeCdkDescribedByReferenceIds(describedElements[i]);       describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);     }      this._messagesContainer?.remove();     this._messagesContainer = null;     this._messageRegistry.clear();   }    /**    * Creates a new element in the visually hidden message container element with the message    * as its content and adds it to the message registry.    */   private _createMessageElement(message: string, role?: string) {     const messageElement = this._document.createElement('div');     setMessageId(messageElement, this._id);     messageElement.textContent = message;      if (role) {       messageElement.setAttribute('role', role);     }      this._createMessagesContainer();     this._messagesContainer!.appendChild(messageElement);     this._messageRegistry.set(getKey(message, role), {messageElement, referenceCount: 0});   }    /** Deletes the message element from the global messages container. */   private _deleteMessageElement(key: string | Element) {     this._messageRegistry.get(key)?.messageElement?.remove();     this._messageRegistry.delete(key);   }    /** Creates the global container for all aria-describedby messages. */   private _createMessagesContainer() {     if (this._messagesContainer) {       return;     }      const containerClassName = 'cdk-describedby-message-container';     const serverContainers = this._document.querySelectorAll(       `.${containerClassName}[platform=\"server\"]`,     );      for (let i = 0; i < serverContainers.length; i++) {       // When going from the server to the client, we may end up in a situation where there's       // already a container on the page, but we don't have a reference to it. Clear the       // old container so we don't get duplicates. Doing this, instead of emptying the previous       // container, should be slightly faster.       serverContainers[i].remove();     }      const messagesContainer = this._document.createElement('div');      // We add `visibility: hidden` in order to prevent text in this container from     // being searchable by the browser's Ctrl + F functionality.     // Screen-readers will still read the description for elements with aria-describedby even     // when the description element is not visible.     messagesContainer.style.visibility = 'hidden';     // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that     // the description element doesn't impact page layout.     messagesContainer.classList.add(containerClassName);     messagesContainer.classList.add('cdk-visually-hidden');      // @breaking-change 14.0.0 Remove null check for `_platform`.     if (this._platform && !this._platform.isBrowser) {       messagesContainer.setAttribute('platform', 'server');     }      this._document.body.appendChild(messagesContainer);     this._messagesContainer = messagesContainer;   }    /** Removes all cdk-describedby messages that are hosted through the element. */   private _removeCdkDescribedByReferenceIds(element: Element) {     // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX     const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(       id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0,     );     element.setAttribute('aria-describedby', originalReferenceIds.join(' '));   }    /**    * Adds a message reference to the element using aria-describedby and increments the registered    * message's reference count.    */   private _addMessageReference(element: Element, key: string | Element) {     const registeredMessage = this._messageRegistry.get(key)!;      // Add the aria-describedby reference and set the     // describedby_host attribute to mark the element.     addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);     element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, this._id);     registeredMessage.referenceCount++;   }    /**    * Removes a message reference from the element using aria-describedby    * and decrements the registered message's reference count.    */   private _removeMessageReference(element: Element, key: string | Element) {     const registeredMessage = this._messageRegistry.get(key)!;     registeredMessage.referenceCount--;      removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);     element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);   }    /** Returns true if the element has been described by the provided message ID. */   private _isElementDescribedByMessage(element: Element, key: string | Element): boolean {     const referenceIds = getAriaReferenceIds(element, 'aria-describedby');     const registeredMessage = this._messageRegistry.get(key);     const messageId = registeredMessage && registeredMessage.messageElement.id;      return !!messageId && referenceIds.indexOf(messageId) != -1;   }    /** Determines whether a message can be described on a particular element. */   private _canBeDescribed(element: Element, message: string | HTMLElement | void): boolean {     if (!this._isElementNode(element)) {       return false;     }      if (message && typeof message === 'object') {       // We'd have to make some assumptions about the description element's text, if the consumer       // passed in an element. Assume that if an element is passed in, the consumer has verified       // that it can be used as a description.       return true;     }      const trimmedMessage = message == null ? '' : `${message}`.trim();     const ariaLabel = element.getAttribute('aria-label');      // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the     // element, because screen readers will end up reading out the same text twice in a row.     return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false;   }    /** Checks whether a node is an Element node. */   private _isElementNode(element: Node): element is Element {     return element.nodeType === this._document.ELEMENT_NODE;   } }  /** Gets a key that can be used to look messages up in the registry. */ function getKey(message: string | Element, role?: string): string | Element {   return typeof message === 'string' ? `${role || ''}/${message}` : message; }  /** Assigns a unique ID to an element, if it doesn't have one already. */ function setMessageId(element: HTMLElement, serviceId: string) {   if (!element.id) {     element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${serviceId}-${nextId++}`;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {QueryList} from '@angular/core'; import {Subject, Subscription} from 'rxjs'; import {   UP_ARROW,   DOWN_ARROW,   LEFT_ARROW,   RIGHT_ARROW,   TAB,   A,   Z,   ZERO,   NINE,   hasModifierKey,   HOME,   END,   PAGE_UP,   PAGE_DOWN, } from '@angular/cdk/keycodes'; import {debounceTime, filter, map, tap} from 'rxjs/operators';  /** This interface is for items that can be passed to a ListKeyManager. */ export interface ListKeyManagerOption {   /** Whether the option is disabled. */   disabled?: boolean;    /** Gets the label for this option. */   getLabel?(): string; }  /** Modifier keys handled by the ListKeyManager. */ export type ListKeyManagerModifierKey = 'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey';  /**  * This class manages keyboard events for selectable lists. If you pass it a query list  * of items, it will set the active item correctly when arrow events occur.  */ export class ListKeyManager<T extends ListKeyManagerOption> {   private _activeItemIndex = -1;   private _activeItem: T | null = null;   private _wrap = false;   private readonly _letterKeyStream = new Subject<string>();   private _typeaheadSubscription = Subscription.EMPTY;   private _itemChangesSubscription?: Subscription;   private _vertical = true;   private _horizontal: 'ltr' | 'rtl' | null;   private _allowedModifierKeys: ListKeyManagerModifierKey[] = [];   private _homeAndEnd = false;   private _pageUpAndDown = {enabled: false, delta: 10};    /**    * Predicate function that can be used to check whether an item should be skipped    * by the key manager. By default, disabled items are skipped.    */   private _skipPredicateFn = (item: T) => item.disabled;    // Buffer for the letters that the user has pressed when the typeahead option is turned on.   private _pressedLetters: string[] = [];    constructor(private _items: QueryList<T> | T[]) {     // We allow for the items to be an array because, in some cases, the consumer may     // not have access to a QueryList of the items they want to manage (e.g. when the     // items aren't being collected via `ViewChildren` or `ContentChildren`).     if (_items instanceof QueryList) {       this._itemChangesSubscription = _items.changes.subscribe((newItems: QueryList<T>) => {         if (this._activeItem) {           const itemArray = newItems.toArray();           const newIndex = itemArray.indexOf(this._activeItem);            if (newIndex > -1 && newIndex !== this._activeItemIndex) {             this._activeItemIndex = newIndex;           }         }       });     }   }    /**    * Stream that emits any time the TAB key is pressed, so components can react    * when focus is shifted off of the list.    */   readonly tabOut = new Subject<void>();    /** Stream that emits whenever the active item of the list manager changes. */   readonly change = new Subject<number>();    /**    * Sets the predicate function that determines which items should be skipped by the    * list key manager.    * @param predicate Function that determines whether the given item should be skipped.    */   skipPredicate(predicate: (item: T) => boolean): this {     this._skipPredicateFn = predicate;     return this;   }    /**    * Configures wrapping mode, which determines whether the active item will wrap to    * the other end of list when there are no more items in the given direction.    * @param shouldWrap Whether the list should wrap when reaching the end.    */   withWrap(shouldWrap = true): this {     this._wrap = shouldWrap;     return this;   }    /**    * Configures whether the key manager should be able to move the selection vertically.    * @param enabled Whether vertical selection should be enabled.    */   withVerticalOrientation(enabled: boolean = true): this {     this._vertical = enabled;     return this;   }    /**    * Configures the key manager to move the selection horizontally.    * Passing in `null` will disable horizontal movement.    * @param direction Direction in which the selection can be moved.    */   withHorizontalOrientation(direction: 'ltr' | 'rtl' | null): this {     this._horizontal = direction;     return this;   }    /**    * Modifier keys which are allowed to be held down and whose default actions will be prevented    * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.    */   withAllowedModifierKeys(keys: ListKeyManagerModifierKey[]): this {     this._allowedModifierKeys = keys;     return this;   }    /**    * Turns on typeahead mode which allows users to set the active item by typing.    * @param debounceInterval Time to wait after the last keystroke before setting the active item.    */   withTypeAhead(debounceInterval: number = 200): this {     if (       (typeof ngDevMode === 'undefined' || ngDevMode) &&       this._items.length &&       this._items.some(item => typeof item.getLabel !== 'function')     ) {       throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');     }      this._typeaheadSubscription.unsubscribe();      // Debounce the presses of non-navigational keys, collect the ones that correspond to letters     // and convert those letters back into a string. Afterwards find the first item that starts     // with that string and select it.     this._typeaheadSubscription = this._letterKeyStream       .pipe(         tap(letter => this._pressedLetters.push(letter)),         debounceTime(debounceInterval),         filter(() => this._pressedLetters.length > 0),         map(() => this._pressedLetters.join('')),       )       .subscribe(inputString => {         const items = this._getItemsArray();          // Start at 1 because we want to start searching at the item immediately         // following the current active item.         for (let i = 1; i < items.length + 1; i++) {           const index = (this._activeItemIndex + i) % items.length;           const item = items[index];            if (             !this._skipPredicateFn(item) &&             item.getLabel!().toUpperCase().trim().indexOf(inputString) === 0           ) {             this.setActiveItem(index);             break;           }         }          this._pressedLetters = [];       });      return this;   }    /** Cancels the current typeahead sequence. */   cancelTypeahead(): this {     this._pressedLetters = [];     return this;   }    /**    * Configures the key manager to activate the first and last items    * respectively when the Home or End key is pressed.    * @param enabled Whether pressing the Home or End key activates the first/last item.    */   withHomeAndEnd(enabled: boolean = true): this {     this._homeAndEnd = enabled;     return this;   }    /**    * Configures the key manager to activate every 10th, configured or first/last element in up/down direction    * respectively when the Page-Up or Page-Down key is pressed.    * @param enabled Whether pressing the Page-Up or Page-Down key activates the first/last item.    * @param delta Whether pressing the Home or End key activates the first/last item.    */   withPageUpDown(enabled: boolean = true, delta: number = 10): this {     this._pageUpAndDown = {enabled, delta};     return this;   }    /**    * Sets the active item to the item at the index specified.    * @param index The index of the item to be set as active.    */   setActiveItem(index: number): void;    /**    * Sets the active item to the specified item.    * @param item The item to be set as active.    */   setActiveItem(item: T): void;    setActiveItem(item: any): void {     const previousActiveItem = this._activeItem;      this.updateActiveItem(item);      if (this._activeItem !== previousActiveItem) {       this.change.next(this._activeItemIndex);     }   }    /**    * Sets the active item depending on the key event passed in.    * @param event Keyboard event to be used for determining which element should be active.    */   onKeydown(event: KeyboardEvent): void {     const keyCode = event.keyCode;     const modifiers: ListKeyManagerModifierKey[] = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];     const isModifierAllowed = modifiers.every(modifier => {       return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;     });      switch (keyCode) {       case TAB:         this.tabOut.next();         return;        case DOWN_ARROW:         if (this._vertical && isModifierAllowed) {           this.setNextItemActive();           break;         } else {           return;         }        case UP_ARROW:         if (this._vertical && isModifierAllowed) {           this.setPreviousItemActive();           break;         } else {           return;         }        case RIGHT_ARROW:         if (this._horizontal && isModifierAllowed) {           this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();           break;         } else {           return;         }        case LEFT_ARROW:         if (this._horizontal && isModifierAllowed) {           this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();           break;         } else {           return;         }        case HOME:         if (this._homeAndEnd && isModifierAllowed) {           this.setFirstItemActive();           break;         } else {           return;         }        case END:         if (this._homeAndEnd && isModifierAllowed) {           this.setLastItemActive();           break;         } else {           return;         }        case PAGE_UP:         if (this._pageUpAndDown.enabled && isModifierAllowed) {           const targetIndex = this._activeItemIndex - this._pageUpAndDown.delta;           this._setActiveItemByIndex(targetIndex > 0 ? targetIndex : 0, 1);           break;         } else {           return;         }        case PAGE_DOWN:         if (this._pageUpAndDown.enabled && isModifierAllowed) {           const targetIndex = this._activeItemIndex + this._pageUpAndDown.delta;           const itemsLength = this._getItemsArray().length;           this._setActiveItemByIndex(targetIndex < itemsLength ? targetIndex : itemsLength - 1, -1);           break;         } else {           return;         }        default:         if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {           // Attempt to use the `event.key` which also maps it to the user's keyboard language,           // otherwise fall back to resolving alphanumeric characters via the keyCode.           if (event.key && event.key.length === 1) {             this._letterKeyStream.next(event.key.toLocaleUpperCase());           } else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {             this._letterKeyStream.next(String.fromCharCode(keyCode));           }         }          // Note that we return here, in order to avoid preventing         // the default action of non-navigational keys.         return;     }      this._pressedLetters = [];     event.preventDefault();   }    /** Index of the currently active item. */   get activeItemIndex(): number | null {     return this._activeItemIndex;   }    /** The active item. */   get activeItem(): T | null {     return this._activeItem;   }    /** Gets whether the user is currently typing into the manager using the typeahead feature. */   isTyping(): boolean {     return this._pressedLetters.length > 0;   }    /** Sets the active item to the first enabled item in the list. */   setFirstItemActive(): void {     this._setActiveItemByIndex(0, 1);   }    /** Sets the active item to the last enabled item in the list. */   setLastItemActive(): void {     this._setActiveItemByIndex(this._items.length - 1, -1);   }    /** Sets the active item to the next enabled item in the list. */   setNextItemActive(): void {     this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);   }    /** Sets the active item to a previous enabled item in the list. */   setPreviousItemActive(): void {     this._activeItemIndex < 0 && this._wrap       ? this.setLastItemActive()       : this._setActiveItemByDelta(-1);   }    /**    * Allows setting the active without any other effects.    * @param index Index of the item to be set as active.    */   updateActiveItem(index: number): void;    /**    * Allows setting the active item without any other effects.    * @param item Item to be set as active.    */   updateActiveItem(item: T): void;    updateActiveItem(item: any): void {     const itemArray = this._getItemsArray();     const index = typeof item === 'number' ? item : itemArray.indexOf(item);     const activeItem = itemArray[index];      // Explicitly check for `null` and `undefined` because other falsy values are valid.     this._activeItem = activeItem == null ? null : activeItem;     this._activeItemIndex = index;   }    /** Cleans up the key manager. */   destroy() {     this._typeaheadSubscription.unsubscribe();     this._itemChangesSubscription?.unsubscribe();     this._letterKeyStream.complete();     this.tabOut.complete();     this.change.complete();     this._pressedLetters = [];   }    /**    * This method sets the active item, given a list of items and the delta between the    * currently active item and the new active item. It will calculate differently    * depending on whether wrap mode is turned on.    */   private _setActiveItemByDelta(delta: -1 | 1): void {     this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);   }    /**    * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move    * down the list until it finds an item that is not disabled, and it will wrap if it    * encounters either end of the list.    */   private _setActiveInWrapMode(delta: -1 | 1): void {     const items = this._getItemsArray();      for (let i = 1; i <= items.length; i++) {       const index = (this._activeItemIndex + delta * i + items.length) % items.length;       const item = items[index];        if (!this._skipPredicateFn(item)) {         this.setActiveItem(index);         return;       }     }   }    /**    * Sets the active item properly given the default mode. In other words, it will    * continue to move down the list until it finds an item that is not disabled. If    * it encounters either end of the list, it will stop and not wrap.    */   private _setActiveInDefaultMode(delta: -1 | 1): void {     this._setActiveItemByIndex(this._activeItemIndex + delta, delta);   }    /**    * Sets the active item to the first enabled item starting at the index specified. If the    * item is disabled, it will move in the fallbackDelta direction until it either    * finds an enabled item or encounters the end of the list.    */   private _setActiveItemByIndex(index: number, fallbackDelta: -1 | 1): void {     const items = this._getItemsArray();      if (!items[index]) {       return;     }      while (this._skipPredicateFn(items[index])) {       index += fallbackDelta;        if (!items[index]) {         return;       }     }      this.setActiveItem(index);   }    /** Returns the items as an array. */   private _getItemsArray(): T[] {     return this._items instanceof QueryList ? this._items.toArray() : this._items;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ListKeyManager, ListKeyManagerOption} from './list-key-manager';  /**  * This is the interface for highlightable items (used by the ActiveDescendantKeyManager).  * Each item must know how to style itself as active or inactive and whether or not it is  * currently disabled.  */ export interface Highlightable extends ListKeyManagerOption {   /** Applies the styles for an active item to this item. */   setActiveStyles(): void;    /** Applies the styles for an inactive item to this item. */   setInactiveStyles(): void; }  export class ActiveDescendantKeyManager<T> extends ListKeyManager<Highlightable & T> {   /**    * Sets the active item to the item at the specified index and adds the    * active styles to the newly active item. Also removes active styles    * from the previously active item.    * @param index Index of the item to be set as active.    */   override setActiveItem(index: number): void;    /**    * Sets the active item to the item to the specified one and adds the    * active styles to the it. Also removes active styles from the    * previously active item.    * @param item Item to be set as active.    */   override setActiveItem(item: T): void;    override setActiveItem(index: any): void {     if (this.activeItem) {       this.activeItem.setInactiveStyles();     }     super.setActiveItem(index);     if (this.activeItem) {       this.activeItem.setActiveStyles();     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ListKeyManager, ListKeyManagerOption} from './list-key-manager'; import {FocusOrigin} from '../focus-monitor/focus-monitor';  /**  * This is the interface for focusable items (used by the FocusKeyManager).  * Each item must know how to focus itself, whether or not it is currently disabled  * and be able to supply its label.  */ export interface FocusableOption extends ListKeyManagerOption {   /** Focuses the `FocusableOption`. */   focus(origin?: FocusOrigin): void; }  export class FocusKeyManager<T> extends ListKeyManager<FocusableOption & T> {   private _origin: FocusOrigin = 'program';    /**    * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.    * @param origin Focus origin to be used when focusing items.    */   setFocusOrigin(origin: FocusOrigin): this {     this._origin = origin;     return this;   }    /**    * Sets the active item to the item at the specified    * index and focuses the newly active item.    * @param index Index of the item to be set as active.    */   override setActiveItem(index: number): void;    /**    * Sets the active item to the item that is specified and focuses it.    * @param item Item to be set as active.    */   override setActiveItem(item: T): void;    override setActiveItem(item: any): void {     super.setActiveItem(item);      if (this.activeItem) {       this.activeItem.focus(this._origin);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Platform} from '@angular/cdk/platform'; import {Injectable} from '@angular/core';  /**  * Configuration for the isFocusable method.  */ export class IsFocusableConfig {   /**    * Whether to count an element as focusable even if it is not currently visible.    */   ignoreVisibility: boolean = false; }  // The InteractivityChecker leans heavily on the ally.js accessibility utilities. // Methods like `isTabbable` are only covering specific edge-cases for the browsers which are // supported.  /**  * Utility for checking the interactivity of an element, such as whether is is focusable or  * tabbable.  */ @Injectable({providedIn: 'root'}) export class InteractivityChecker {   constructor(private _platform: Platform) {}    /**    * Gets whether an element is disabled.    *    * @param element Element to be checked.    * @returns Whether the element is disabled.    */   isDisabled(element: HTMLElement): boolean {     // This does not capture some cases, such as a non-form control with a disabled attribute or     // a form control inside of a disabled form, but should capture the most common cases.     return element.hasAttribute('disabled');   }    /**    * Gets whether an element is visible for the purposes of interactivity.    *    * This will capture states like `display: none` and `visibility: hidden`, but not things like    * being clipped by an `overflow: hidden` parent or being outside the viewport.    *    * @returns Whether the element is visible.    */   isVisible(element: HTMLElement): boolean {     return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';   }    /**    * Gets whether an element can be reached via Tab key.    * Assumes that the element has already been checked with isFocusable.    *    * @param element Element to be checked.    * @returns Whether the element is tabbable.    */   isTabbable(element: HTMLElement): boolean {     // Nothing is tabbable on the server 😎     if (!this._platform.isBrowser) {       return false;     }      const frameElement = getFrameElement(getWindow(element));      if (frameElement) {       // Frame elements inherit their tabindex onto all child elements.       if (getTabIndexValue(frameElement) === -1) {         return false;       }        // Browsers disable tabbing to an element inside of an invisible frame.       if (!this.isVisible(frameElement)) {         return false;       }     }      let nodeName = element.nodeName.toLowerCase();     let tabIndexValue = getTabIndexValue(element);      if (element.hasAttribute('contenteditable')) {       return tabIndexValue !== -1;     }      if (nodeName === 'iframe' || nodeName === 'object') {       // The frame or object's content may be tabbable depending on the content, but it's       // not possibly to reliably detect the content of the frames. We always consider such       // elements as non-tabbable.       return false;     }      // In iOS, the browser only considers some specific elements as tabbable.     if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {       return false;     }      if (nodeName === 'audio') {       // Audio elements without controls enabled are never tabbable, regardless       // of the tabindex attribute explicitly being set.       if (!element.hasAttribute('controls')) {         return false;       }       // Audio elements with controls are by default tabbable unless the       // tabindex attribute is set to `-1` explicitly.       return tabIndexValue !== -1;     }      if (nodeName === 'video') {       // For all video elements, if the tabindex attribute is set to `-1`, the video       // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`       // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The       // tabindex attribute is the source of truth here.       if (tabIndexValue === -1) {         return false;       }       // If the tabindex is explicitly set, and not `-1` (as per check before), the       // video element is always tabbable (regardless of whether it has controls or not).       if (tabIndexValue !== null) {         return true;       }       // Otherwise (when no explicit tabindex is set), a video is only tabbable if it       // has controls enabled. Firefox is special as videos are always tabbable regardless       // of whether there are controls or not.       return this._platform.FIREFOX || element.hasAttribute('controls');     }      return element.tabIndex >= 0;   }    /**    * Gets whether an element can be focused by the user.    *    * @param element Element to be checked.    * @param config The config object with options to customize this method's behavior    * @returns Whether the element is focusable.    */   isFocusable(element: HTMLElement, config?: IsFocusableConfig): boolean {     // Perform checks in order of left to most expensive.     // Again, naive approach that does not capture many edge cases and browser quirks.     return (       isPotentiallyFocusable(element) &&       !this.isDisabled(element) &&       (config?.ignoreVisibility || this.isVisible(element))     );   } }  /**  * Returns the frame element from a window object. Since browsers like MS Edge throw errors if  * the frameElement property is being accessed from a different host address, this property  * should be accessed carefully.  */ function getFrameElement(window: Window) {   try {     return window.frameElement as HTMLElement;   } catch {     return null;   } }  /** Checks whether the specified element has any geometry / rectangles. */ function hasGeometry(element: HTMLElement): boolean {   // Use logic from jQuery to check for an invisible element.   // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12   return !!(     element.offsetWidth ||     element.offsetHeight ||     (typeof element.getClientRects === 'function' && element.getClientRects().length)   ); }  /** Gets whether an element's  */ function isNativeFormElement(element: Node) {   let nodeName = element.nodeName.toLowerCase();   return (     nodeName === 'input' ||     nodeName === 'select' ||     nodeName === 'button' ||     nodeName === 'textarea'   ); }  /** Gets whether an element is an `<input type=\"hidden\">`. */ function isHiddenInput(element: HTMLElement): boolean {   return isInputElement(element) && element.type == 'hidden'; }  /** Gets whether an element is an anchor that has an href attribute. */ function isAnchorWithHref(element: HTMLElement): boolean {   return isAnchorElement(element) && element.hasAttribute('href'); }  /** Gets whether an element is an input element. */ function isInputElement(element: HTMLElement): element is HTMLInputElement {   return element.nodeName.toLowerCase() == 'input'; }  /** Gets whether an element is an anchor element. */ function isAnchorElement(element: HTMLElement): element is HTMLAnchorElement {   return element.nodeName.toLowerCase() == 'a'; }  /** Gets whether an element has a valid tabindex. */ function hasValidTabIndex(element: HTMLElement): boolean {   if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {     return false;   }    let tabIndex = element.getAttribute('tabindex');   return !!(tabIndex && !isNaN(parseInt(tabIndex, 10))); }  /**  * Returns the parsed tabindex from the element attributes instead of returning the  * evaluated tabindex from the browsers defaults.  */ function getTabIndexValue(element: HTMLElement): number | null {   if (!hasValidTabIndex(element)) {     return null;   }    // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054   const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);    return isNaN(tabIndex) ? -1 : tabIndex; }  /** Checks whether the specified element is potentially tabbable on iOS */ function isPotentiallyTabbableIOS(element: HTMLElement): boolean {   let nodeName = element.nodeName.toLowerCase();   let inputType = nodeName === 'input' && (element as HTMLInputElement).type;    return (     inputType === 'text' ||     inputType === 'password' ||     nodeName === 'select' ||     nodeName === 'textarea'   ); }  /**  * Gets whether an element is potentially focusable without taking current visible/disabled state  * into account.  */ function isPotentiallyFocusable(element: HTMLElement): boolean {   // Inputs are potentially focusable *unless* they're type=\"hidden\".   if (isHiddenInput(element)) {     return false;   }    return (     isNativeFormElement(element) ||     isAnchorWithHref(element) ||     element.hasAttribute('contenteditable') ||     hasValidTabIndex(element)   ); }  /** Gets the parent window of a DOM node with regards of being inside of an iframe. */ function getWindow(node: HTMLElement): Window {   // ownerDocument is null if `node` itself *is* a document.   return (node.ownerDocument && node.ownerDocument.defaultView) || window; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {_getFocusedElementPierceShadowDom} from '@angular/cdk/platform'; import {DOCUMENT} from '@angular/common'; import {   AfterContentInit,   Directive,   ElementRef,   Inject,   Injectable,   Input,   NgZone,   OnDestroy,   DoCheck,   SimpleChanges,   OnChanges, } from '@angular/core'; import {take} from 'rxjs/operators'; import {InteractivityChecker} from '../interactivity-checker/interactivity-checker';  /**  * Class that allows for trapping focus within a DOM element.  *  * This class currently uses a relatively simple approach to focus trapping.  * It assumes that the tab order is the same as DOM order, which is not necessarily true.  * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to be misaligned.  *  * @deprecated Use `ConfigurableFocusTrap` instead.  * @breaking-change 11.0.0  */ export class FocusTrap {   private _startAnchor: HTMLElement | null;   private _endAnchor: HTMLElement | null;   private _hasAttached = false;    // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.   protected startAnchorListener = () => this.focusLastTabbableElement();   protected endAnchorListener = () => this.focusFirstTabbableElement();    /** Whether the focus trap is active. */   get enabled(): boolean {     return this._enabled;   }   set enabled(value: boolean) {     this._enabled = value;      if (this._startAnchor && this._endAnchor) {       this._toggleAnchorTabIndex(value, this._startAnchor);       this._toggleAnchorTabIndex(value, this._endAnchor);     }   }   protected _enabled: boolean = true;    constructor(     readonly _element: HTMLElement,     private _checker: InteractivityChecker,     readonly _ngZone: NgZone,     readonly _document: Document,     deferAnchors = false,   ) {     if (!deferAnchors) {       this.attachAnchors();     }   }    /** Destroys the focus trap by cleaning up the anchors. */   destroy() {     const startAnchor = this._startAnchor;     const endAnchor = this._endAnchor;      if (startAnchor) {       startAnchor.removeEventListener('focus', this.startAnchorListener);       startAnchor.remove();     }      if (endAnchor) {       endAnchor.removeEventListener('focus', this.endAnchorListener);       endAnchor.remove();     }      this._startAnchor = this._endAnchor = null;     this._hasAttached = false;   }    /**    * Inserts the anchors into the DOM. This is usually done automatically    * in the constructor, but can be deferred for cases like directives with `*ngIf`.    * @returns Whether the focus trap managed to attach successfully. This may not be the case    * if the target element isn't currently in the DOM.    */   attachAnchors(): boolean {     // If we're not on the browser, there can be no focus to trap.     if (this._hasAttached) {       return true;     }      this._ngZone.runOutsideAngular(() => {       if (!this._startAnchor) {         this._startAnchor = this._createAnchor();         this._startAnchor!.addEventListener('focus', this.startAnchorListener);       }        if (!this._endAnchor) {         this._endAnchor = this._createAnchor();         this._endAnchor!.addEventListener('focus', this.endAnchorListener);       }     });      if (this._element.parentNode) {       this._element.parentNode.insertBefore(this._startAnchor!, this._element);       this._element.parentNode.insertBefore(this._endAnchor!, this._element.nextSibling);       this._hasAttached = true;     }      return this._hasAttached;   }    /**    * Waits for the zone to stabilize, then focuses the first tabbable element.    * @returns Returns a promise that resolves with a boolean, depending    * on whether focus was moved successfully.    */   focusInitialElementWhenReady(options?: FocusOptions): Promise<boolean> {     return new Promise<boolean>(resolve => {       this._executeOnStable(() => resolve(this.focusInitialElement(options)));     });   }    /**    * Waits for the zone to stabilize, then focuses    * the first tabbable element within the focus trap region.    * @returns Returns a promise that resolves with a boolean, depending    * on whether focus was moved successfully.    */   focusFirstTabbableElementWhenReady(options?: FocusOptions): Promise<boolean> {     return new Promise<boolean>(resolve => {       this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));     });   }    /**    * Waits for the zone to stabilize, then focuses    * the last tabbable element within the focus trap region.    * @returns Returns a promise that resolves with a boolean, depending    * on whether focus was moved successfully.    */   focusLastTabbableElementWhenReady(options?: FocusOptions): Promise<boolean> {     return new Promise<boolean>(resolve => {       this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));     });   }    /**    * Get the specified boundary element of the trapped region.    * @param bound The boundary to get (start or end of trapped region).    * @returns The boundary element.    */   private _getRegionBoundary(bound: 'start' | 'end'): HTMLElement | null {     // Contains the deprecated version of selector, for temporary backwards comparability.     const markers = this._element.querySelectorAll(       `[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`,     ) as NodeListOf<HTMLElement>;      if (typeof ngDevMode === 'undefined' || ngDevMode) {       for (let i = 0; i < markers.length; i++) {         // @breaking-change 8.0.0         if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {           console.warn(             `Found use of deprecated attribute 'cdk-focus-${bound}', ` +               `use 'cdkFocusRegion${bound}' instead. The deprecated ` +               `attribute will be removed in 8.0.0.`,             markers[i],           );         } else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {           console.warn(             `Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +               `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +               `will be removed in 8.0.0.`,             markers[i],           );         }       }     }      if (bound == 'start') {       return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);     }     return markers.length       ? markers[markers.length - 1]       : this._getLastTabbableElement(this._element);   }    /**    * Focuses the element that should be focused when the focus trap is initialized.    * @returns Whether focus was moved successfully.    */   focusInitialElement(options?: FocusOptions): boolean {     // Contains the deprecated version of selector, for temporary backwards comparability.     const redirectToElement = this._element.querySelector(       `[cdk-focus-initial], ` + `[cdkFocusInitial]`,     ) as HTMLElement;      if (redirectToElement) {       // @breaking-change 8.0.0       if (         (typeof ngDevMode === 'undefined' || ngDevMode) &&         redirectToElement.hasAttribute(`cdk-focus-initial`)       ) {         console.warn(           `Found use of deprecated attribute 'cdk-focus-initial', ` +             `use 'cdkFocusInitial' instead. The deprecated attribute ` +             `will be removed in 8.0.0`,           redirectToElement,         );       }        // Warn the consumer if the element they've pointed to       // isn't focusable, when not in production mode.       if (         (typeof ngDevMode === 'undefined' || ngDevMode) &&         !this._checker.isFocusable(redirectToElement)       ) {         console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);       }        if (!this._checker.isFocusable(redirectToElement)) {         const focusableChild = this._getFirstTabbableElement(redirectToElement) as HTMLElement;         focusableChild?.focus(options);         return !!focusableChild;       }        redirectToElement.focus(options);       return true;     }      return this.focusFirstTabbableElement(options);   }    /**    * Focuses the first tabbable element within the focus trap region.    * @returns Whether focus was moved successfully.    */   focusFirstTabbableElement(options?: FocusOptions): boolean {     const redirectToElement = this._getRegionBoundary('start');      if (redirectToElement) {       redirectToElement.focus(options);     }      return !!redirectToElement;   }    /**    * Focuses the last tabbable element within the focus trap region.    * @returns Whether focus was moved successfully.    */   focusLastTabbableElement(options?: FocusOptions): boolean {     const redirectToElement = this._getRegionBoundary('end');      if (redirectToElement) {       redirectToElement.focus(options);     }      return !!redirectToElement;   }    /**    * Checks whether the focus trap has successfully been attached.    */   hasAttached(): boolean {     return this._hasAttached;   }    /** Get the first tabbable element from a DOM subtree (inclusive). */   private _getFirstTabbableElement(root: HTMLElement): HTMLElement | null {     if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {       return root;     }      const children = root.children;      for (let i = 0; i < children.length; i++) {       const tabbableChild =         children[i].nodeType === this._document.ELEMENT_NODE           ? this._getFirstTabbableElement(children[i] as HTMLElement)           : null;        if (tabbableChild) {         return tabbableChild;       }     }      return null;   }    /** Get the last tabbable element from a DOM subtree (inclusive). */   private _getLastTabbableElement(root: HTMLElement): HTMLElement | null {     if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {       return root;     }      // Iterate in reverse DOM order.     const children = root.children;      for (let i = children.length - 1; i >= 0; i--) {       const tabbableChild =         children[i].nodeType === this._document.ELEMENT_NODE           ? this._getLastTabbableElement(children[i] as HTMLElement)           : null;        if (tabbableChild) {         return tabbableChild;       }     }      return null;   }    /** Creates an anchor element. */   private _createAnchor(): HTMLElement {     const anchor = this._document.createElement('div');     this._toggleAnchorTabIndex(this._enabled, anchor);     anchor.classList.add('cdk-visually-hidden');     anchor.classList.add('cdk-focus-trap-anchor');     anchor.setAttribute('aria-hidden', 'true');     return anchor;   }    /**    * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.    * @param isEnabled Whether the focus trap is enabled.    * @param anchor Anchor on which to toggle the tabindex.    */   private _toggleAnchorTabIndex(isEnabled: boolean, anchor: HTMLElement) {     // Remove the tabindex completely, rather than setting it to -1, because if the     // element has a tabindex, the user might still hit it when navigating with the arrow keys.     isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');   }    /**    * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.    * @param enabled: Whether the anchors should trap Tab.    */   protected toggleAnchors(enabled: boolean) {     if (this._startAnchor && this._endAnchor) {       this._toggleAnchorTabIndex(enabled, this._startAnchor);       this._toggleAnchorTabIndex(enabled, this._endAnchor);     }   }    /** Executes a function when the zone is stable. */   private _executeOnStable(fn: () => any): void {     if (this._ngZone.isStable) {       fn();     } else {       this._ngZone.onStable.pipe(take(1)).subscribe(fn);     }   } }  /**  * Factory that allows easy instantiation of focus traps.  * @deprecated Use `ConfigurableFocusTrapFactory` instead.  * @breaking-change 11.0.0  */ @Injectable({providedIn: 'root'}) export class FocusTrapFactory {   private _document: Document;    constructor(     private _checker: InteractivityChecker,     private _ngZone: NgZone,     @Inject(DOCUMENT) _document: any,   ) {     this._document = _document;   }    /**    * Creates a focus-trapped region around the given element.    * @param element The element around which focus will be trapped.    * @param deferCaptureElements Defers the creation of focus-capturing elements to be done    *     manually by the user.    * @returns The created focus trap instance.    */   create(element: HTMLElement, deferCaptureElements: boolean = false): FocusTrap {     return new FocusTrap(       element,       this._checker,       this._ngZone,       this._document,       deferCaptureElements,     );   } }  /** Directive for trapping focus within a region. */ @Directive({   selector: '[cdkTrapFocus]',   exportAs: 'cdkTrapFocus', }) export class CdkTrapFocus implements OnDestroy, AfterContentInit, OnChanges, DoCheck {   /** Underlying FocusTrap instance. */   focusTrap: FocusTrap;    /** Previously focused element to restore focus to upon destroy when using autoCapture. */   private _previouslyFocusedElement: HTMLElement | null = null;    /** Whether the focus trap is active. */   @Input('cdkTrapFocus')   get enabled(): boolean {     return this.focusTrap.enabled;   }   set enabled(value: BooleanInput) {     this.focusTrap.enabled = coerceBooleanProperty(value);   }    /**    * Whether the directive should automatically move focus into the trapped region upon    * initialization and return focus to the previous activeElement upon destruction.    */   @Input('cdkTrapFocusAutoCapture')   get autoCapture(): boolean {     return this._autoCapture;   }   set autoCapture(value: BooleanInput) {     this._autoCapture = coerceBooleanProperty(value);   }   private _autoCapture: boolean;    constructor(     private _elementRef: ElementRef<HTMLElement>,     private _focusTrapFactory: FocusTrapFactory,     /**      * @deprecated No longer being used. To be removed.      * @breaking-change 13.0.0      */     @Inject(DOCUMENT) _document: any,   ) {     this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);   }    ngOnDestroy() {     this.focusTrap.destroy();      // If we stored a previously focused element when using autoCapture, return focus to that     // element now that the trapped region is being destroyed.     if (this._previouslyFocusedElement) {       this._previouslyFocusedElement.focus();       this._previouslyFocusedElement = null;     }   }    ngAfterContentInit() {     this.focusTrap.attachAnchors();      if (this.autoCapture) {       this._captureFocus();     }   }    ngDoCheck() {     if (!this.focusTrap.hasAttached()) {       this.focusTrap.attachAnchors();     }   }    ngOnChanges(changes: SimpleChanges) {     const autoCaptureChange = changes['autoCapture'];      if (       autoCaptureChange &&       !autoCaptureChange.firstChange &&       this.autoCapture &&       this.focusTrap.hasAttached()     ) {       this._captureFocus();     }   }    private _captureFocus() {     this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();     this.focusTrap.focusInitialElementWhenReady();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgZone} from '@angular/core'; import {InteractivityChecker} from '../interactivity-checker/interactivity-checker'; import {FocusTrap} from './focus-trap'; import {FocusTrapManager, ManagedFocusTrap} from './focus-trap-manager'; import {FocusTrapInertStrategy} from './focus-trap-inert-strategy'; import {ConfigurableFocusTrapConfig} from './configurable-focus-trap-config';  /**  * Class that allows for trapping focus within a DOM element.  *  * This class uses a strategy pattern that determines how it traps focus.  * See FocusTrapInertStrategy.  */ export class ConfigurableFocusTrap extends FocusTrap implements ManagedFocusTrap {   /** Whether the FocusTrap is enabled. */   override get enabled(): boolean {     return this._enabled;   }   override set enabled(value: boolean) {     this._enabled = value;     if (this._enabled) {       this._focusTrapManager.register(this);     } else {       this._focusTrapManager.deregister(this);     }   }    constructor(     _element: HTMLElement,     _checker: InteractivityChecker,     _ngZone: NgZone,     _document: Document,     private _focusTrapManager: FocusTrapManager,     private _inertStrategy: FocusTrapInertStrategy,     config: ConfigurableFocusTrapConfig,   ) {     super(_element, _checker, _ngZone, _document, config.defer);     this._focusTrapManager.register(this);   }    /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */   override destroy() {     this._focusTrapManager.deregister(this);     super.destroy();   }    /** @docs-private Implemented as part of ManagedFocusTrap. */   _enable() {     this._inertStrategy.preventFocus(this);     this.toggleAnchors(true);   }    /** @docs-private Implemented as part of ManagedFocusTrap. */   _disable() {     this._inertStrategy.allowFocus(this);     this.toggleAnchors(false);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {InjectionToken} from '@angular/core'; import {FocusTrap} from './focus-trap';  /** The injection token used to specify the inert strategy. */ export const FOCUS_TRAP_INERT_STRATEGY = new InjectionToken<FocusTrapInertStrategy>(   'FOCUS_TRAP_INERT_STRATEGY', );  /**  * A strategy that dictates how FocusTrap should prevent elements  * outside of the FocusTrap from being focused.  */ export interface FocusTrapInertStrategy {   /** Makes all elements outside focusTrap unfocusable. */   preventFocus(focusTrap: FocusTrap): void;   /** Reverts elements made unfocusable by preventFocus to their previous state. */   allowFocus(focusTrap: FocusTrap): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {FocusTrapInertStrategy} from './focus-trap-inert-strategy'; import {ConfigurableFocusTrap} from './configurable-focus-trap';  /**  * Lightweight FocusTrapInertStrategy that adds a document focus event  * listener to redirect focus back inside the FocusTrap.  */ export class EventListenerFocusTrapInertStrategy implements FocusTrapInertStrategy {   /** Focus event handler. */   private _listener: ((e: FocusEvent) => void) | null = null;    /** Adds a document event listener that keeps focus inside the FocusTrap. */   preventFocus(focusTrap: ConfigurableFocusTrap): void {     // Ensure there's only one listener per document     if (this._listener) {       focusTrap._document.removeEventListener('focus', this._listener!, true);     }      this._listener = (e: FocusEvent) => this._trapFocus(focusTrap, e);     focusTrap._ngZone.runOutsideAngular(() => {       focusTrap._document.addEventListener('focus', this._listener!, true);     });   }    /** Removes the event listener added in preventFocus. */   allowFocus(focusTrap: ConfigurableFocusTrap): void {     if (!this._listener) {       return;     }     focusTrap._document.removeEventListener('focus', this._listener!, true);     this._listener = null;   }    /**    * Refocuses the first element in the FocusTrap if the focus event target was outside    * the FocusTrap.    *    * This is an event listener callback. The event listener is added in runOutsideAngular,    * so all this code runs outside Angular as well.    */   private _trapFocus(focusTrap: ConfigurableFocusTrap, event: FocusEvent) {     const target = event.target as HTMLElement;     const focusTrapRoot = focusTrap._element;      // Don't refocus if target was in an overlay, because the overlay might be associated     // with an element inside the FocusTrap, ex. mat-select.     if (target && !focusTrapRoot.contains(target) && !target.closest?.('div.cdk-overlay-pane')) {       // Some legacy FocusTrap usages have logic that focuses some element on the page       // just before FocusTrap is destroyed. For backwards compatibility, wait       // to be sure FocusTrap is still enabled before refocusing.       setTimeout(() => {         // Check whether focus wasn't put back into the focus trap while the timeout was pending.         if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {           focusTrap.focusFirstTabbableElement();         }       });     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable} from '@angular/core';  /**  * A FocusTrap managed by FocusTrapManager.  * Implemented by ConfigurableFocusTrap to avoid circular dependency.  */ export interface ManagedFocusTrap {   _enable(): void;   _disable(): void;   focusInitialElementWhenReady(): Promise<boolean>; }  /** Injectable that ensures only the most recently enabled FocusTrap is active. */ @Injectable({providedIn: 'root'}) export class FocusTrapManager {   // A stack of the FocusTraps on the page. Only the FocusTrap at the   // top of the stack is active.   private _focusTrapStack: ManagedFocusTrap[] = [];    /**    * Disables the FocusTrap at the top of the stack, and then pushes    * the new FocusTrap onto the stack.    */   register(focusTrap: ManagedFocusTrap): void {     // Dedupe focusTraps that register multiple times.     this._focusTrapStack = this._focusTrapStack.filter(ft => ft !== focusTrap);      let stack = this._focusTrapStack;      if (stack.length) {       stack[stack.length - 1]._disable();     }      stack.push(focusTrap);     focusTrap._enable();   }    /**    * Removes the FocusTrap from the stack, and activates the    * FocusTrap that is the new top of the stack.    */   deregister(focusTrap: ManagedFocusTrap): void {     focusTrap._disable();      const stack = this._focusTrapStack;      const i = stack.indexOf(focusTrap);     if (i !== -1) {       stack.splice(i, 1);       if (stack.length) {         stack[stack.length - 1]._enable();       }     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, Optional, NgZone} from '@angular/core'; import {InteractivityChecker} from '../interactivity-checker/interactivity-checker'; import {ConfigurableFocusTrap} from './configurable-focus-trap'; import {ConfigurableFocusTrapConfig} from './configurable-focus-trap-config'; import {FOCUS_TRAP_INERT_STRATEGY, FocusTrapInertStrategy} from './focus-trap-inert-strategy'; import {EventListenerFocusTrapInertStrategy} from './event-listener-inert-strategy'; import {FocusTrapManager} from './focus-trap-manager';  /** Factory that allows easy instantiation of configurable focus traps. */ @Injectable({providedIn: 'root'}) export class ConfigurableFocusTrapFactory {   private _document: Document;   private _inertStrategy: FocusTrapInertStrategy;    constructor(     private _checker: InteractivityChecker,     private _ngZone: NgZone,     private _focusTrapManager: FocusTrapManager,     @Inject(DOCUMENT) _document: any,     @Optional() @Inject(FOCUS_TRAP_INERT_STRATEGY) _inertStrategy?: FocusTrapInertStrategy,   ) {     this._document = _document;     // TODO split up the strategies into different modules, similar to DateAdapter.     this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();   }    /**    * Creates a focus-trapped region around the given element.    * @param element The element around which focus will be trapped.    * @param config The focus trap configuration.    * @returns The created focus trap instance.    */   create(element: HTMLElement, config?: ConfigurableFocusTrapConfig): ConfigurableFocusTrap;    /**    * @deprecated Pass a config object instead of the `deferCaptureElements` flag.    * @breaking-change 11.0.0    */   create(element: HTMLElement, deferCaptureElements: boolean): ConfigurableFocusTrap;    create(     element: HTMLElement,     config: ConfigurableFocusTrapConfig | boolean = {defer: false},   ): ConfigurableFocusTrap {     let configObject: ConfigurableFocusTrapConfig;     if (typeof config === 'boolean') {       configObject = {defer: config};     } else {       configObject = config;     }     return new ConfigurableFocusTrap(       element,       this._checker,       this._ngZone,       this._document,       this._focusTrapManager,       this._inertStrategy,       configObject,     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */ export function isFakeMousedownFromScreenReader(event: MouseEvent): boolean {   // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on   // a clickable element. We can distinguish these events when both `offsetX` and `offsetY` are   // zero or `event.buttons` is zero, depending on the browser:   // - `event.buttons` works on Firefox, but fails on Chrome.   // - `offsetX` and `offsetY` work on Chrome, but fail on Firefox.   // Note that there's an edge case where the user could click the 0x0 spot of the   // screen themselves, but that is unlikely to contain interactive elements.   return event.buttons === 0 || (event.offsetX === 0 && event.offsetY === 0); }  /** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */ export function isFakeTouchstartFromScreenReader(event: TouchEvent): boolean {   const touch: Touch | undefined =     (event.touches && event.touches[0]) || (event.changedTouches && event.changedTouches[0]);    // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`   // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,   // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10   // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.   return (     !!touch &&     touch.identifier === -1 &&     (touch.radiusX == null || touch.radiusX === 1) &&     (touch.radiusY == null || touch.radiusY === 1)   ); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ALT, CONTROL, MAC_META, META, SHIFT} from '@angular/cdk/keycodes'; import {Inject, Injectable, InjectionToken, OnDestroy, Optional, NgZone} from '@angular/core'; import {normalizePassiveListenerOptions, Platform, _getEventTarget} from '@angular/cdk/platform'; import {DOCUMENT} from '@angular/common'; import {BehaviorSubject, Observable} from 'rxjs'; import {distinctUntilChanged, skip} from 'rxjs/operators'; import {   isFakeMousedownFromScreenReader,   isFakeTouchstartFromScreenReader, } from '../fake-event-detection';  /**  * The input modalities detected by this service. Null is used if the input modality is unknown.  */ export type InputModality = 'keyboard' | 'mouse' | 'touch' | null;  /** Options to configure the behavior of the InputModalityDetector. */ export interface InputModalityDetectorOptions {   /** Keys to ignore when detecting keyboard input modality. */   ignoreKeys?: number[]; }  /**  * Injectable options for the InputModalityDetector. These are shallowly merged with the default  * options.  */ export const INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken<InputModalityDetectorOptions>(   'cdk-input-modality-detector-options', );  /**  * Default options for the InputModalityDetector.  *  * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect  * keyboard input modality) for two reasons:  *  * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open  *    in new tab', and are thus less representative of actual keyboard interaction.  * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but  *    confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore  *    these keys so as to not update the input modality.  *  * Note that we do not by default ignore the right Meta key on Safari because it has the same key  * code as the ContextMenu key on other browsers. When we switch to using event.key, we can  * distinguish between the two.  */ export const INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS: InputModalityDetectorOptions = {   ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT], };  /**  * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown  * event to be attributed as mouse and not touch.  *  * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found  * that a value of around 650ms seems appropriate.  */ export const TOUCH_BUFFER_MS = 650;  /**  * Event listener options that enable capturing and also mark the listener as passive if the browser  * supports it.  */ const modalityEventListenerOptions = normalizePassiveListenerOptions({   passive: true,   capture: true, });  /**  * Service that detects the user's input modality.  *  * This service does not update the input modality when a user navigates with a screen reader  * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC  * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not  * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a  * screen reader is akin to visually scanning a page, and should not be interpreted as actual user  * input interaction.  *  * When a user is not navigating but *interacting* with a screen reader, this service attempts to  * update the input modality to keyboard, but in general this service's behavior is largely  * undefined.  */ @Injectable({providedIn: 'root'}) export class InputModalityDetector implements OnDestroy {   /** Emits whenever an input modality is detected. */   readonly modalityDetected: Observable<InputModality>;    /** Emits when the input modality changes. */   readonly modalityChanged: Observable<InputModality>;    /** The most recently detected input modality. */   get mostRecentModality(): InputModality {     return this._modality.value;   }    /**    * The most recently detected input modality event target. Is null if no input modality has been    * detected or if the associated event target is null for some unknown reason.    */   _mostRecentTarget: HTMLElement | null = null;    /** The underlying BehaviorSubject that emits whenever an input modality is detected. */   private readonly _modality = new BehaviorSubject<InputModality>(null);    /** Options for this InputModalityDetector. */   private readonly _options: InputModalityDetectorOptions;    /**    * The timestamp of the last touch input modality. Used to determine whether mousedown events    * should be attributed to mouse or touch.    */   private _lastTouchMs = 0;    /**    * Handles keydown events. Must be an arrow function in order to preserve the context when it gets    * bound.    */   private _onKeydown = (event: KeyboardEvent) => {     // If this is one of the keys we should ignore, then ignore it and don't update the input     // modality to keyboard.     if (this._options?.ignoreKeys?.some(keyCode => keyCode === event.keyCode)) {       return;     }      this._modality.next('keyboard');     this._mostRecentTarget = _getEventTarget(event);   };    /**    * Handles mousedown events. Must be an arrow function in order to preserve the context when it    * gets bound.    */   private _onMousedown = (event: MouseEvent) => {     // Touches trigger both touch and mouse events, so we need to distinguish between mouse events     // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely     // after the previous touch event.     if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {       return;     }      // Fake mousedown events are fired by some screen readers when controls are activated by the     // screen reader. Attribute them to keyboard input modality.     this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');     this._mostRecentTarget = _getEventTarget(event);   };    /**    * Handles touchstart events. Must be an arrow function in order to preserve the context when it    * gets bound.    */   private _onTouchstart = (event: TouchEvent) => {     // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart     // events are fired. Again, attribute to keyboard input modality.     if (isFakeTouchstartFromScreenReader(event)) {       this._modality.next('keyboard');       return;     }      // Store the timestamp of this touch event, as it's used to distinguish between mouse events     // triggered via mouse vs touch.     this._lastTouchMs = Date.now();      this._modality.next('touch');     this._mostRecentTarget = _getEventTarget(event);   };    constructor(     private readonly _platform: Platform,     ngZone: NgZone,     @Inject(DOCUMENT) document: Document,     @Optional()     @Inject(INPUT_MODALITY_DETECTOR_OPTIONS)     options?: InputModalityDetectorOptions,   ) {     this._options = {       ...INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,       ...options,     };      // Skip the first emission as it's null.     this.modalityDetected = this._modality.pipe(skip(1));     this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged());      // If we're not in a browser, this service should do nothing, as there's no relevant input     // modality to detect.     if (_platform.isBrowser) {       ngZone.runOutsideAngular(() => {         document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);         document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);         document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);       });     }   }    ngOnDestroy() {     this._modality.complete();      if (this._platform.isBrowser) {       document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);       document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);       document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core';  // The tokens for the live announcer are defined in a separate file from LiveAnnouncer // as a workaround for https://github.com/angular/angular/issues/22559  /** Possible politeness levels. */ export type AriaLivePoliteness = 'off' | 'polite' | 'assertive';  export const LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken<HTMLElement | null>(   'liveAnnouncerElement',   {     providedIn: 'root',     factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY,   }, );  /** @docs-private */ export function LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY(): null {   return null; }  /** Object that can be used to configure the default options for the LiveAnnouncer. */ export interface LiveAnnouncerDefaultOptions {   /** Default politeness for the announcements. */   politeness?: AriaLivePoliteness;    /** Default duration for the announcement messages. */   duration?: number; }  /** Injection token that can be used to configure the default options for the LiveAnnouncer. */ export const LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken<LiveAnnouncerDefaultOptions>(   'LIVE_ANNOUNCER_DEFAULT_OPTIONS', ); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ContentObserver} from '@angular/cdk/observers'; import {DOCUMENT} from '@angular/common'; import {   Directive,   ElementRef,   Inject,   Injectable,   Input,   NgZone,   OnDestroy,   Optional, } from '@angular/core'; import {Subscription} from 'rxjs'; import {   AriaLivePoliteness,   LiveAnnouncerDefaultOptions,   LIVE_ANNOUNCER_ELEMENT_TOKEN,   LIVE_ANNOUNCER_DEFAULT_OPTIONS, } from './live-announcer-tokens';  let uniqueIds = 0;  @Injectable({providedIn: 'root'}) export class LiveAnnouncer implements OnDestroy {   private _liveElement: HTMLElement;   private _document: Document;   private _previousTimeout: number;   private _currentPromise: Promise<void> | undefined;   private _currentResolve: (() => void) | undefined;    constructor(     @Optional() @Inject(LIVE_ANNOUNCER_ELEMENT_TOKEN) elementToken: any,     private _ngZone: NgZone,     @Inject(DOCUMENT) _document: any,     @Optional()     @Inject(LIVE_ANNOUNCER_DEFAULT_OPTIONS)     private _defaultOptions?: LiveAnnouncerDefaultOptions,   ) {     // We inject the live element and document as `any` because the constructor signature cannot     // reference browser globals (HTMLElement, Document) on non-browser environments, since having     // a class decorator causes TypeScript to preserve the constructor signature types.     this._document = _document;     this._liveElement = elementToken || this._createLiveElement();   }    /**    * Announces a message to screen readers.    * @param message Message to be announced to the screen reader.    * @returns Promise that will be resolved when the message is added to the DOM.    */   announce(message: string): Promise<void>;    /**    * Announces a message to screen readers.    * @param message Message to be announced to the screen reader.    * @param politeness The politeness of the announcer element.    * @returns Promise that will be resolved when the message is added to the DOM.    */   announce(message: string, politeness?: AriaLivePoliteness): Promise<void>;    /**    * Announces a message to screen readers.    * @param message Message to be announced to the screen reader.    * @param duration Time in milliseconds after which to clear out the announcer element. Note    *   that this takes effect after the message has been added to the DOM, which can be up to    *   100ms after `announce` has been called.    * @returns Promise that will be resolved when the message is added to the DOM.    */   announce(message: string, duration?: number): Promise<void>;    /**    * Announces a message to screen readers.    * @param message Message to be announced to the screen reader.    * @param politeness The politeness of the announcer element.    * @param duration Time in milliseconds after which to clear out the announcer element. Note    *   that this takes effect after the message has been added to the DOM, which can be up to    *   100ms after `announce` has been called.    * @returns Promise that will be resolved when the message is added to the DOM.    */   announce(message: string, politeness?: AriaLivePoliteness, duration?: number): Promise<void>;    announce(message: string, ...args: any[]): Promise<void> {     const defaultOptions = this._defaultOptions;     let politeness: AriaLivePoliteness | undefined;     let duration: number | undefined;      if (args.length === 1 && typeof args[0] === 'number') {       duration = args[0];     } else {       [politeness, duration] = args;     }      this.clear();     clearTimeout(this._previousTimeout);      if (!politeness) {       politeness =         defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite';     }      if (duration == null && defaultOptions) {       duration = defaultOptions.duration;     }      // TODO: ensure changing the politeness works on all environments we support.     this._liveElement.setAttribute('aria-live', politeness);      if (this._liveElement.id) {       this._exposeAnnouncerToModals(this._liveElement.id);     }      // This 100ms timeout is necessary for some browser + screen-reader combinations:     // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.     // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a     //   second time without clearing and then using a non-zero delay.     // (using JAWS 17 at time of this writing).     return this._ngZone.runOutsideAngular(() => {       if (!this._currentPromise) {         this._currentPromise = new Promise(resolve => (this._currentResolve = resolve));       }        clearTimeout(this._previousTimeout);       this._previousTimeout = setTimeout(() => {         this._liveElement.textContent = message;          if (typeof duration === 'number') {           this._previousTimeout = setTimeout(() => this.clear(), duration);         }          this._currentResolve!();         this._currentPromise = this._currentResolve = undefined;       }, 100);        return this._currentPromise;     });   }    /**    * Clears the current text from the announcer element. Can be used to prevent    * screen readers from reading the text out again while the user is going    * through the page landmarks.    */   clear() {     if (this._liveElement) {       this._liveElement.textContent = '';     }   }    ngOnDestroy() {     clearTimeout(this._previousTimeout);     this._liveElement?.remove();     this._liveElement = null!;     this._currentResolve?.();     this._currentPromise = this._currentResolve = undefined;   }    private _createLiveElement(): HTMLElement {     const elementClass = 'cdk-live-announcer-element';     const previousElements = this._document.getElementsByClassName(elementClass);     const liveEl = this._document.createElement('div');      // Remove any old containers. This can happen when coming in from a server-side-rendered page.     for (let i = 0; i < previousElements.length; i++) {       previousElements[i].remove();     }      liveEl.classList.add(elementClass);     liveEl.classList.add('cdk-visually-hidden');      liveEl.setAttribute('aria-atomic', 'true');     liveEl.setAttribute('aria-live', 'polite');     liveEl.id = `cdk-live-announcer-${uniqueIds++}`;      this._document.body.appendChild(liveEl);      return liveEl;   }    /**    * Some browsers won't expose the accessibility node of the live announcer element if there is an    * `aria-modal` and the live announcer is outside of it. This method works around the issue by    * pointing the `aria-owns` of all modals to the live announcer element.    */   private _exposeAnnouncerToModals(id: string) {     // Note that the selector here is limited to CDK overlays at the moment in order to reduce the     // section of the DOM we need to look through. This should cover all the cases we support, but     // the selector can be expanded if it turns out to be too narrow.     const modals = this._document.querySelectorAll(       'body > .cdk-overlay-container [aria-modal=\"true\"]',     );      for (let i = 0; i < modals.length; i++) {       const modal = modals[i];       const ariaOwns = modal.getAttribute('aria-owns');        if (!ariaOwns) {         modal.setAttribute('aria-owns', id);       } else if (ariaOwns.indexOf(id) === -1) {         modal.setAttribute('aria-owns', ariaOwns + ' ' + id);       }     }   } }  /**  * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility  * with a wider range of browsers and screen readers.  */ @Directive({   selector: '[cdkAriaLive]',   exportAs: 'cdkAriaLive', }) export class CdkAriaLive implements OnDestroy {   /** The aria-live politeness level to use when announcing messages. */   @Input('cdkAriaLive')   get politeness(): AriaLivePoliteness {     return this._politeness;   }   set politeness(value: AriaLivePoliteness) {     this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';     if (this._politeness === 'off') {       if (this._subscription) {         this._subscription.unsubscribe();         this._subscription = null;       }     } else if (!this._subscription) {       this._subscription = this._ngZone.runOutsideAngular(() => {         return this._contentObserver.observe(this._elementRef).subscribe(() => {           // Note that we use textContent here, rather than innerText, in order to avoid a reflow.           const elementText = this._elementRef.nativeElement.textContent;            // The `MutationObserver` fires also for attribute           // changes which we don't want to announce.           if (elementText !== this._previousAnnouncedText) {             this._liveAnnouncer.announce(elementText, this._politeness, this.duration);             this._previousAnnouncedText = elementText;           }         });       });     }   }   private _politeness: AriaLivePoliteness = 'polite';    /** Time in milliseconds after which to clear out the announcer element. */   @Input('cdkAriaLiveDuration') duration: number;    private _previousAnnouncedText?: string;   private _subscription: Subscription | null;    constructor(     private _elementRef: ElementRef,     private _liveAnnouncer: LiveAnnouncer,     private _contentObserver: ContentObserver,     private _ngZone: NgZone,   ) {}    ngOnDestroy() {     if (this._subscription) {       this._subscription.unsubscribe();     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   Platform,   normalizePassiveListenerOptions,   _getShadowRoot,   _getEventTarget, } from '@angular/cdk/platform'; import {   Directive,   ElementRef,   EventEmitter,   Inject,   Injectable,   InjectionToken,   NgZone,   OnDestroy,   Optional,   Output,   AfterViewInit, } from '@angular/core'; import {Observable, of as observableOf, Subject, Subscription} from 'rxjs'; import {takeUntil} from 'rxjs/operators'; import {coerceElement} from '@angular/cdk/coercion'; import {DOCUMENT} from '@angular/common'; import {InputModalityDetector, TOUCH_BUFFER_MS} from '../input-modality/input-modality-detector';  export type FocusOrigin = 'touch' | 'mouse' | 'keyboard' | 'program' | null;  /**  * Corresponds to the options that can be passed to the native `focus` event.  * via https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus  */ export interface FocusOptions {   /** Whether the browser should scroll to the element when it is focused. */   preventScroll?: boolean; }  /** Detection mode used for attributing the origin of a focus event. */ export const enum FocusMonitorDetectionMode {   /**    * Any mousedown, keydown, or touchstart event that happened in the previous    * tick or the current tick will be used to assign a focus event's origin (to    * either mouse, keyboard, or touch). This is the default option.    */   IMMEDIATE,   /**    * A focus event's origin is always attributed to the last corresponding    * mousedown, keydown, or touchstart event, no matter how long ago it occurred.    */   EVENTUAL, }  /** Injectable service-level options for FocusMonitor. */ export interface FocusMonitorOptions {   detectionMode?: FocusMonitorDetectionMode; }  /** InjectionToken for FocusMonitorOptions. */ export const FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken<FocusMonitorOptions>(   'cdk-focus-monitor-default-options', );  type MonitoredElementInfo = {   checkChildren: boolean;   readonly subject: Subject<FocusOrigin>;   rootNode: HTMLElement | ShadowRoot | Document; };  /**  * Event listener options that enable capturing and also  * mark the listener as passive if the browser supports it.  */ const captureEventListenerOptions = normalizePassiveListenerOptions({   passive: true,   capture: true, });  /** Monitors mouse and keyboard events to determine the cause of focus events. */ @Injectable({providedIn: 'root'}) export class FocusMonitor implements OnDestroy {   /** The focus origin that the next focus event is a result of. */   private _origin: FocusOrigin = null;    /** The FocusOrigin of the last focus event tracked by the FocusMonitor. */   private _lastFocusOrigin: FocusOrigin;    /** Whether the window has just been focused. */   private _windowFocused = false;    /** The timeout id of the window focus timeout. */   private _windowFocusTimeoutId: number;    /** The timeout id of the origin clearing timeout. */   private _originTimeoutId: number;    /**    * Whether the origin was determined via a touch interaction. Necessary as properly attributing    * focus events to touch interactions requires special logic.    */   private _originFromTouchInteraction = false;    /** Map of elements being monitored to their info. */   private _elementInfo = new Map<HTMLElement, MonitoredElementInfo>();    /** The number of elements currently being monitored. */   private _monitoredElementCount = 0;    /**    * Keeps track of the root nodes to which we've currently bound a focus/blur handler,    * as well as the number of monitored elements that they contain. We have to treat focus/blur    * handlers differently from the rest of the events, because the browser won't emit events    * to the document when focus moves inside of a shadow root.    */   private _rootNodeFocusListenerCount = new Map<HTMLElement | Document | ShadowRoot, number>();    /**    * The specified detection mode, used for attributing the origin of a focus    * event.    */   private readonly _detectionMode: FocusMonitorDetectionMode;    /**    * Event listener for `focus` events on the window.    * Needs to be an arrow function in order to preserve the context when it gets bound.    */   private _windowFocusListener = () => {     // Make a note of when the window regains focus, so we can     // restore the origin info for the focused element.     this._windowFocused = true;     this._windowFocusTimeoutId = window.setTimeout(() => (this._windowFocused = false));   };    /** Used to reference correct document/window */   protected _document?: Document;    /** Subject for stopping our InputModalityDetector subscription. */   private readonly _stopInputModalityDetector = new Subject<void>();    constructor(     private _ngZone: NgZone,     private _platform: Platform,     private readonly _inputModalityDetector: InputModalityDetector,     /** @breaking-change 11.0.0 make document required */     @Optional() @Inject(DOCUMENT) document: any | null,     @Optional() @Inject(FOCUS_MONITOR_DEFAULT_OPTIONS) options: FocusMonitorOptions | null,   ) {     this._document = document;     this._detectionMode = options?.detectionMode || FocusMonitorDetectionMode.IMMEDIATE;   }   /**    * Event listener for `focus` and 'blur' events on the document.    * Needs to be an arrow function in order to preserve the context when it gets bound.    */   private _rootNodeFocusAndBlurListener = (event: Event) => {     const target = _getEventTarget<HTMLElement>(event);      // We need to walk up the ancestor chain in order to support `checkChildren`.     for (let element = target; element; element = element.parentElement) {       if (event.type === 'focus') {         this._onFocus(event as FocusEvent, element);       } else {         this._onBlur(event as FocusEvent, element);       }     }   };    /**    * Monitors focus on an element and applies appropriate CSS classes.    * @param element The element to monitor    * @param checkChildren Whether to count the element as focused when its children are focused.    * @returns An observable that emits when the focus state of the element changes.    *     When the element is blurred, null will be emitted.    */   monitor(element: HTMLElement, checkChildren?: boolean): Observable<FocusOrigin>;    /**    * Monitors focus on an element and applies appropriate CSS classes.    * @param element The element to monitor    * @param checkChildren Whether to count the element as focused when its children are focused.    * @returns An observable that emits when the focus state of the element changes.    *     When the element is blurred, null will be emitted.    */   monitor(element: ElementRef<HTMLElement>, checkChildren?: boolean): Observable<FocusOrigin>;    monitor(     element: HTMLElement | ElementRef<HTMLElement>,     checkChildren: boolean = false,   ): Observable<FocusOrigin> {     const nativeElement = coerceElement(element);      // Do nothing if we're not on the browser platform or the passed in node isn't an element.     if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {       return observableOf(null);     }      // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to     // the shadow root, rather than the `document`, because the browser won't emit focus events     // to the `document`, if focus is moving within the same shadow root.     const rootNode = _getShadowRoot(nativeElement) || this._getDocument();     const cachedInfo = this._elementInfo.get(nativeElement);      // Check if we're already monitoring this element.     if (cachedInfo) {       if (checkChildren) {         // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren         // observers into ones that behave as if `checkChildren` was turned on. We need a more         // robust solution.         cachedInfo.checkChildren = true;       }        return cachedInfo.subject;     }      // Create monitored element info.     const info: MonitoredElementInfo = {       checkChildren: checkChildren,       subject: new Subject<FocusOrigin>(),       rootNode,     };     this._elementInfo.set(nativeElement, info);     this._registerGlobalListeners(info);      return info.subject;   }    /**    * Stops monitoring an element and removes all focus classes.    * @param element The element to stop monitoring.    */   stopMonitoring(element: HTMLElement): void;    /**    * Stops monitoring an element and removes all focus classes.    * @param element The element to stop monitoring.    */   stopMonitoring(element: ElementRef<HTMLElement>): void;    stopMonitoring(element: HTMLElement | ElementRef<HTMLElement>): void {     const nativeElement = coerceElement(element);     const elementInfo = this._elementInfo.get(nativeElement);      if (elementInfo) {       elementInfo.subject.complete();        this._setClasses(nativeElement);       this._elementInfo.delete(nativeElement);       this._removeGlobalListeners(elementInfo);     }   }    /**    * Focuses the element via the specified focus origin.    * @param element Element to focus.    * @param origin Focus origin.    * @param options Options that can be used to configure the focus behavior.    */   focusVia(element: HTMLElement, origin: FocusOrigin, options?: FocusOptions): void;    /**    * Focuses the element via the specified focus origin.    * @param element Element to focus.    * @param origin Focus origin.    * @param options Options that can be used to configure the focus behavior.    */   focusVia(element: ElementRef<HTMLElement>, origin: FocusOrigin, options?: FocusOptions): void;    focusVia(     element: HTMLElement | ElementRef<HTMLElement>,     origin: FocusOrigin,     options?: FocusOptions,   ): void {     const nativeElement = coerceElement(element);     const focusedElement = this._getDocument().activeElement;      // If the element is focused already, calling `focus` again won't trigger the event listener     // which means that the focus classes won't be updated. If that's the case, update the classes     // directly without waiting for an event.     if (nativeElement === focusedElement) {       this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) =>         this._originChanged(currentElement, origin, info),       );     } else {       this._setOrigin(origin);        // `focus` isn't available on the server       if (typeof nativeElement.focus === 'function') {         nativeElement.focus(options);       }     }   }    ngOnDestroy() {     this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));   }    /** Access injected document if available or fallback to global document reference */   private _getDocument(): Document {     return this._document || document;   }    /** Use defaultView of injected document if available or fallback to global window reference */   private _getWindow(): Window {     const doc = this._getDocument();     return doc.defaultView || window;   }    private _getFocusOrigin(focusEventTarget: HTMLElement | null): FocusOrigin {     if (this._origin) {       // If the origin was realized via a touch interaction, we need to perform additional checks       // to determine whether the focus origin should be attributed to touch or program.       if (this._originFromTouchInteraction) {         return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';       } else {         return this._origin;       }     }      // If the window has just regained focus, we can restore the most recent origin from before the     // window blurred. Otherwise, we've reached the point where we can't identify the source of the     // focus. This typically means one of two things happened:     //     // 1) The element was programmatically focused, or     // 2) The element was focused via screen reader navigation (which generally doesn't fire     //    events).     //     // Because we can't distinguish between these two cases, we default to setting `program`.     if (this._windowFocused && this._lastFocusOrigin) {       return this._lastFocusOrigin;     }      // If the interaction is coming from an input label, we consider it a mouse interactions.     // This is a special case where focus moves on `click`, rather than `mousedown` which breaks     // our detection, because all our assumptions are for `mousedown`. We need to handle this     // special case, because it's very common for checkboxes and radio buttons.     if (focusEventTarget && this._isLastInteractionFromInputLabel(focusEventTarget)) {       return 'mouse';     }      return 'program';   }    /**    * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a    * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we    * handle a focus event following a touch interaction, we need to determine whether (1) the focus    * event was directly caused by the touch interaction or (2) the focus event was caused by a    * subsequent programmatic focus call triggered by the touch interaction.    * @param focusEventTarget The target of the focus event under examination.    */   private _shouldBeAttributedToTouch(focusEventTarget: HTMLElement | null): boolean {     // Please note that this check is not perfect. Consider the following edge case:     //     // <div #parent tabindex=\"0\">     //   <div #child tabindex=\"0\" (click)=\"#parent.focus()\"></div>     // </div>     //     // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches     // #child, #parent is programmatically focused. This code will attribute the focus to touch     // instead of program. This is a relatively minor edge-case that can be worked around by using     // focusVia(parent, 'program') to focus #parent.     return (       this._detectionMode === FocusMonitorDetectionMode.EVENTUAL ||       !!focusEventTarget?.contains(this._inputModalityDetector._mostRecentTarget)     );   }    /**    * Sets the focus classes on the element based on the given focus origin.    * @param element The element to update the classes on.    * @param origin The focus origin.    */   private _setClasses(element: HTMLElement, origin?: FocusOrigin): void {     element.classList.toggle('cdk-focused', !!origin);     element.classList.toggle('cdk-touch-focused', origin === 'touch');     element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');     element.classList.toggle('cdk-mouse-focused', origin === 'mouse');     element.classList.toggle('cdk-program-focused', origin === 'program');   }    /**    * Updates the focus origin. If we're using immediate detection mode, we schedule an async    * function to clear the origin at the end of a timeout. The duration of the timeout depends on    * the origin being set.    * @param origin The origin to set.    * @param isFromInteraction Whether we are setting the origin from an interaction event.    */   private _setOrigin(origin: FocusOrigin, isFromInteraction = false): void {     this._ngZone.runOutsideAngular(() => {       this._origin = origin;       this._originFromTouchInteraction = origin === 'touch' && isFromInteraction;        // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms       // for a touch event). We reset the origin at the next tick because Firefox focuses one tick       // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for       // a touch event because when a touch event is fired, the associated focus event isn't yet in       // the event queue. Before doing so, clear any pending timeouts.       if (this._detectionMode === FocusMonitorDetectionMode.IMMEDIATE) {         clearTimeout(this._originTimeoutId);         const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;         this._originTimeoutId = setTimeout(() => (this._origin = null), ms);       }     });   }    /**    * Handles focus events on a registered element.    * @param event The focus event.    * @param element The monitored element.    */   private _onFocus(event: FocusEvent, element: HTMLElement) {     // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent     // focus event affecting the monitored element. If we want to use the origin of the first event     // instead we should check for the cdk-focused class here and return if the element already has     // it. (This only matters for elements that have includesChildren = true).      // If we are not counting child-element-focus as focused, make sure that the event target is the     // monitored element itself.     const elementInfo = this._elementInfo.get(element);     const focusEventTarget = _getEventTarget<HTMLElement>(event);     if (!elementInfo || (!elementInfo.checkChildren && element !== focusEventTarget)) {       return;     }      this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);   }    /**    * Handles blur events on a registered element.    * @param event The blur event.    * @param element The monitored element.    */   _onBlur(event: FocusEvent, element: HTMLElement) {     // If we are counting child-element-focus as focused, make sure that we aren't just blurring in     // order to focus another child of the monitored element.     const elementInfo = this._elementInfo.get(element);      if (       !elementInfo ||       (elementInfo.checkChildren &&         event.relatedTarget instanceof Node &&         element.contains(event.relatedTarget))     ) {       return;     }      this._setClasses(element);     this._emitOrigin(elementInfo, null);   }    private _emitOrigin(info: MonitoredElementInfo, origin: FocusOrigin) {     if (info.subject.observers.length) {       this._ngZone.run(() => info.subject.next(origin));     }   }    private _registerGlobalListeners(elementInfo: MonitoredElementInfo) {     if (!this._platform.isBrowser) {       return;     }      const rootNode = elementInfo.rootNode;     const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;      if (!rootNodeFocusListeners) {       this._ngZone.runOutsideAngular(() => {         rootNode.addEventListener(           'focus',           this._rootNodeFocusAndBlurListener,           captureEventListenerOptions,         );         rootNode.addEventListener(           'blur',           this._rootNodeFocusAndBlurListener,           captureEventListenerOptions,         );       });     }      this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1);      // Register global listeners when first element is monitored.     if (++this._monitoredElementCount === 1) {       // Note: we listen to events in the capture phase so we       // can detect them even if the user stops propagation.       this._ngZone.runOutsideAngular(() => {         const window = this._getWindow();         window.addEventListener('focus', this._windowFocusListener);       });        // The InputModalityDetector is also just a collection of global listeners.       this._inputModalityDetector.modalityDetected         .pipe(takeUntil(this._stopInputModalityDetector))         .subscribe(modality => {           this._setOrigin(modality, true /* isFromInteraction */);         });     }   }    private _removeGlobalListeners(elementInfo: MonitoredElementInfo) {     const rootNode = elementInfo.rootNode;      if (this._rootNodeFocusListenerCount.has(rootNode)) {       const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode)!;        if (rootNodeFocusListeners > 1) {         this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);       } else {         rootNode.removeEventListener(           'focus',           this._rootNodeFocusAndBlurListener,           captureEventListenerOptions,         );         rootNode.removeEventListener(           'blur',           this._rootNodeFocusAndBlurListener,           captureEventListenerOptions,         );         this._rootNodeFocusListenerCount.delete(rootNode);       }     }      // Unregister global listeners when last element is unmonitored.     if (!--this._monitoredElementCount) {       const window = this._getWindow();       window.removeEventListener('focus', this._windowFocusListener);        // Equivalently, stop our InputModalityDetector subscription.       this._stopInputModalityDetector.next();        // Clear timeouts for all potentially pending timeouts to prevent the leaks.       clearTimeout(this._windowFocusTimeoutId);       clearTimeout(this._originTimeoutId);     }   }    /** Updates all the state on an element once its focus origin has changed. */   private _originChanged(     element: HTMLElement,     origin: FocusOrigin,     elementInfo: MonitoredElementInfo,   ) {     this._setClasses(element, origin);     this._emitOrigin(elementInfo, origin);     this._lastFocusOrigin = origin;   }    /**    * Collects the `MonitoredElementInfo` of a particular element and    * all of its ancestors that have enabled `checkChildren`.    * @param element Element from which to start the search.    */   private _getClosestElementsInfo(element: HTMLElement): [HTMLElement, MonitoredElementInfo][] {     const results: [HTMLElement, MonitoredElementInfo][] = [];      this._elementInfo.forEach((info, currentElement) => {       if (currentElement === element || (info.checkChildren && currentElement.contains(element))) {         results.push([currentElement, info]);       }     });      return results;   }    /**    * Returns whether an interaction is likely to have come from the user clicking the `label` of    * an `input` or `textarea` in order to focus it.    * @param focusEventTarget Target currently receiving focus.    */   private _isLastInteractionFromInputLabel(focusEventTarget: HTMLElement): boolean {     const {_mostRecentTarget: mostRecentTarget, mostRecentModality} = this._inputModalityDetector;      // If the last interaction used the mouse on an element contained by one of the labels     // of an `input`/`textarea` that is currently focused, it is very likely that the     // user redirected focus using the label.     if (       mostRecentModality !== 'mouse' ||       !mostRecentTarget ||       mostRecentTarget === focusEventTarget ||       (focusEventTarget.nodeName !== 'INPUT' && focusEventTarget.nodeName !== 'TEXTAREA') ||       (focusEventTarget as HTMLInputElement | HTMLTextAreaElement).disabled     ) {       return false;     }      const labels = (focusEventTarget as HTMLInputElement | HTMLTextAreaElement).labels;      if (labels) {       for (let i = 0; i < labels.length; i++) {         if (labels[i].contains(mostRecentTarget)) {           return true;         }       }     }      return false;   } }  /**  * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or  * programmatically) and adds corresponding classes to the element.  *  * There are two variants of this directive:  * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is  *    focused.  * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.  */ @Directive({   selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',   exportAs: 'cdkMonitorFocus', }) export class CdkMonitorFocus implements AfterViewInit, OnDestroy {   private _monitorSubscription: Subscription;   private _focusOrigin: FocusOrigin = null;    @Output() readonly cdkFocusChange = new EventEmitter<FocusOrigin>();    constructor(private _elementRef: ElementRef<HTMLElement>, private _focusMonitor: FocusMonitor) {}    get focusOrigin(): FocusOrigin {     return this._focusOrigin;   }    ngAfterViewInit() {     const element = this._elementRef.nativeElement;     this._monitorSubscription = this._focusMonitor       .monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus'))       .subscribe(origin => {         this._focusOrigin = origin;         this.cdkFocusChange.emit(origin);       });   }    ngOnDestroy() {     this._focusMonitor.stopMonitoring(this._elementRef);      if (this._monitorSubscription) {       this._monitorSubscription.unsubscribe();     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {inject, Inject, Injectable, OnDestroy} from '@angular/core'; import {BreakpointObserver} from '@angular/cdk/layout'; import {Platform} from '@angular/cdk/platform'; import {DOCUMENT} from '@angular/common'; import {Subscription} from 'rxjs';  /** Set of possible high-contrast mode backgrounds. */ export const enum HighContrastMode {   NONE,   BLACK_ON_WHITE,   WHITE_ON_BLACK, }  /** CSS class applied to the document body when in black-on-white high-contrast mode. */ export const BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';  /** CSS class applied to the document body when in white-on-black high-contrast mode. */ export const WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';  /** CSS class applied to the document body when in high-contrast mode. */ export const HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';  /**  * Service to determine whether the browser is currently in a high-contrast-mode environment.  *  * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode  * changes the appearance of all applications, including web applications, to dramatically increase  * contrast.  *  * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast  * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"  * browser extension.  */ @Injectable({providedIn: 'root'}) export class HighContrastModeDetector implements OnDestroy {   /**    * Figuring out the high contrast mode and adding the body classes can cause    * some expensive layouts. This flag is used to ensure that we only do it once.    */   private _hasCheckedHighContrastMode: boolean;   private _document: Document;   private _breakpointSubscription: Subscription;    constructor(private _platform: Platform, @Inject(DOCUMENT) document: any) {     this._document = document;      this._breakpointSubscription = inject(BreakpointObserver)       .observe('(forced-colors: active)')       .subscribe(() => {         if (this._hasCheckedHighContrastMode) {           this._hasCheckedHighContrastMode = false;           this._applyBodyHighContrastModeCssClasses();         }       });   }    /** Gets the current high-contrast-mode for the page. */   getHighContrastMode(): HighContrastMode {     if (!this._platform.isBrowser) {       return HighContrastMode.NONE;     }      // Create a test element with an arbitrary background-color that is neither black nor     // white; high-contrast mode will coerce the color to either black or white. Also ensure that     // appending the test element to the DOM does not affect layout by absolutely positioning it     const testElement = this._document.createElement('div');     testElement.style.backgroundColor = 'rgb(1,2,3)';     testElement.style.position = 'absolute';     this._document.body.appendChild(testElement);      // Get the computed style for the background color, collapsing spaces to normalize between     // browsers. Once we get this color, we no longer need the test element. Access the `window`     // via the document so we can fake it in tests. Note that we have extra null checks, because     // this logic will likely run during app bootstrap and throwing can break the entire app.     const documentWindow = this._document.defaultView || window;     const computedStyle =       documentWindow && documentWindow.getComputedStyle         ? documentWindow.getComputedStyle(testElement)         : null;     const computedColor = ((computedStyle && computedStyle.backgroundColor) || '').replace(       / /g,       '',     );     testElement.remove();      switch (computedColor) {       // Pre Windows 11 dark theme.       case 'rgb(0,0,0)':       // Windows 11 dark themes.       case 'rgb(45,50,54)':       case 'rgb(32,32,32)':         return HighContrastMode.WHITE_ON_BLACK;       // Pre Windows 11 light theme.       case 'rgb(255,255,255)':       // Windows 11 light theme.       case 'rgb(255,250,239)':         return HighContrastMode.BLACK_ON_WHITE;     }     return HighContrastMode.NONE;   }    ngOnDestroy(): void {     this._breakpointSubscription.unsubscribe();   }    /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */   _applyBodyHighContrastModeCssClasses(): void {     if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {       const bodyClasses = this._document.body.classList;       bodyClasses.remove(         HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS,         BLACK_ON_WHITE_CSS_CLASS,         WHITE_ON_BLACK_CSS_CLASS,       );       this._hasCheckedHighContrastMode = true;        const mode = this.getHighContrastMode();       if (mode === HighContrastMode.BLACK_ON_WHITE) {         bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS);       } else if (mode === HighContrastMode.WHITE_ON_BLACK) {         bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);       }     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ObserversModule} from '@angular/cdk/observers'; import {NgModule} from '@angular/core'; import {CdkMonitorFocus} from './focus-monitor/focus-monitor'; import {CdkTrapFocus} from './focus-trap/focus-trap'; import {HighContrastModeDetector} from './high-contrast-mode/high-contrast-mode-detector'; import {CdkAriaLive} from './live-announcer/live-announcer';  @NgModule({   imports: [ObserversModule],   declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],   exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], }) export class A11yModule {   constructor(highContrastModeDetector: HighContrastModeDetector) {     highContrastModeDetector._applyBodyHighContrastModeCssClasses();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ export * from './aria-describer/aria-describer'; export * from './key-manager/activedescendant-key-manager'; export * from './key-manager/focus-key-manager'; export * from './key-manager/list-key-manager'; export * from './focus-trap/configurable-focus-trap'; export * from './focus-trap/configurable-focus-trap-config'; export * from './focus-trap/configurable-focus-trap-factory'; export * from './focus-trap/event-listener-inert-strategy'; export * from './focus-trap/focus-trap'; export * from './focus-trap/focus-trap-inert-strategy'; export * from './interactivity-checker/interactivity-checker'; export {   InputModality,   InputModalityDetector,   InputModalityDetectorOptions,   INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,   INPUT_MODALITY_DETECTOR_OPTIONS, } from './input-modality/input-modality-detector'; export * from './live-announcer/live-announcer'; export * from './live-announcer/live-announcer-tokens'; export * from './focus-monitor/focus-monitor'; export * from './fake-event-detection'; export * from './a11y-module'; export {   HighContrastModeDetector,   HighContrastMode, } from './high-contrast-mode/high-contrast-mode-detector'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["i1.InteractivityChecker","i2.FocusTrapManager","i1","observableOf","i2.InputModalityDetector","i1.HighContrastModeDetector"],"mappings":"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"}
-------------------- SECTION 205 --------------------
{"version":3,"file":"stepper.mjs","sources":["../../../../../../src/cdk/stepper/step-header.ts","../../../../../../src/cdk/stepper/step-label.ts","../../../../../../src/cdk/stepper/stepper.ts","../../../../../../src/cdk/stepper/stepper-button.ts","../../../../../../src/cdk/stepper/stepper-module.ts","../../../../../../src/cdk/stepper/public-api.ts","../../../../../../src/cdk/stepper/index.ts","../../../../../../src/cdk/stepper/stepper_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef} from '@angular/core'; import {FocusableOption} from '@angular/cdk/a11y';  @Directive({   selector: '[cdkStepHeader]',   host: {     'role': 'tab',   }, }) export class CdkStepHeader implements FocusableOption {   constructor(public _elementRef: ElementRef<HTMLElement>) {}    /** Focuses the step header. */   focus() {     this._elementRef.nativeElement.focus();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, TemplateRef} from '@angular/core';  @Directive({   selector: '[cdkStepLabel]', }) export class CdkStepLabel {   constructor(/** @docs-private */ public template: TemplateRef<any>) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {FocusableOption, FocusKeyManager} from '@angular/cdk/a11y'; import {Direction, Directionality} from '@angular/cdk/bidi'; import {   BooleanInput,   coerceBooleanProperty,   coerceNumberProperty,   NumberInput, } from '@angular/cdk/coercion'; import {ENTER, hasModifierKey, SPACE} from '@angular/cdk/keycodes'; import {   AfterViewInit,   ChangeDetectionStrategy,   ChangeDetectorRef,   Component,   ContentChild,   ContentChildren,   Directive,   ElementRef,   EventEmitter,   forwardRef,   Inject,   InjectionToken,   Input,   OnChanges,   OnDestroy,   Optional,   Output,   QueryList,   TemplateRef,   ViewChild,   ViewEncapsulation,   AfterContentInit, } from '@angular/core'; import {_getFocusedElementPierceShadowDom} from '@angular/cdk/platform'; import {Observable, of as observableOf, Subject} from 'rxjs'; import {startWith, takeUntil} from 'rxjs/operators';  import {CdkStepHeader} from './step-header'; import {CdkStepLabel} from './step-label';  /** Used to generate unique ID for each stepper component. */ let nextId = 0;  /**  * Position state of the content of each step in stepper that is used for transitioning  * the content into correct position upon step selection change.  */ export type StepContentPositionState = 'previous' | 'current' | 'next';  /** Possible orientation of a stepper. */ export type StepperOrientation = 'horizontal' | 'vertical';  /** Change event emitted on selection changes. */ export class StepperSelectionEvent {   /** Index of the step now selected. */   selectedIndex: number;    /** Index of the step previously selected. */   previouslySelectedIndex: number;    /** The step instance now selected. */   selectedStep: CdkStep;    /** The step instance previously selected. */   previouslySelectedStep: CdkStep; }  /** The state of each step. */ export type StepState = 'number' | 'edit' | 'done' | 'error' | string;  /** Enum to represent the different states of the steps. */ export const STEP_STATE = {   NUMBER: 'number',   EDIT: 'edit',   DONE: 'done',   ERROR: 'error', };  /** InjectionToken that can be used to specify the global stepper options. */ export const STEPPER_GLOBAL_OPTIONS = new InjectionToken<StepperOptions>('STEPPER_GLOBAL_OPTIONS');  /** Configurable options for stepper. */ export interface StepperOptions {   /**    * Whether the stepper should display an error state or not.    * Default behavior is assumed to be false.    */   showError?: boolean;    /**    * Whether the stepper should display the default indicator type    * or not.    * Default behavior is assumed to be true.    */   displayDefaultIndicatorType?: boolean; }  @Component({   selector: 'cdk-step',   exportAs: 'cdkStep',   template: '<ng-template><ng-content></ng-content></ng-template>',   encapsulation: ViewEncapsulation.None,   changeDetection: ChangeDetectionStrategy.OnPush, }) export class CdkStep implements OnChanges {   private _stepperOptions: StepperOptions;   _displayDefaultIndicatorType: boolean;    /** Template for step label if it exists. */   @ContentChild(CdkStepLabel) stepLabel: CdkStepLabel;    /** Template for step content. */   @ViewChild(TemplateRef, {static: true}) content: TemplateRef<any>;    /** The top level abstract control of the step. */   @Input() stepControl: AbstractControlLike;    /** Whether user has attempted to move away from the step. */   interacted = false;    /** Emits when the user has attempted to move away from the step. */   @Output('interacted')   readonly interactedStream: EventEmitter<CdkStep> = new EventEmitter<CdkStep>();    /** Plain text label of the step. */   @Input() label: string;    /** Error message to display when there's an error. */   @Input() errorMessage: string;    /** Aria label for the tab. */   @Input('aria-label') ariaLabel: string;    /**    * Reference to the element that the tab is labelled by.    * Will be cleared if `aria-label` is set at the same time.    */   @Input('aria-labelledby') ariaLabelledby: string;    /** State of the step. */   @Input() state: StepState;    /** Whether the user can return to this step once it has been marked as completed. */   @Input()   get editable(): boolean {     return this._editable;   }   set editable(value: BooleanInput) {     this._editable = coerceBooleanProperty(value);   }   private _editable = true;    /** Whether the completion of step is optional. */   @Input()   get optional(): boolean {     return this._optional;   }   set optional(value: BooleanInput) {     this._optional = coerceBooleanProperty(value);   }   private _optional = false;    /** Whether step is marked as completed. */   @Input()   get completed(): boolean {     return this._completedOverride == null ? this._getDefaultCompleted() : this._completedOverride;   }   set completed(value: BooleanInput) {     this._completedOverride = coerceBooleanProperty(value);   }   _completedOverride: boolean | null = null;    private _getDefaultCompleted() {     return this.stepControl ? this.stepControl.valid && this.interacted : this.interacted;   }    /** Whether step has an error. */   @Input()   get hasError(): boolean {     return this._customError == null ? this._getDefaultError() : this._customError;   }   set hasError(value: BooleanInput) {     this._customError = coerceBooleanProperty(value);   }   private _customError: boolean | null = null;    private _getDefaultError() {     return this.stepControl && this.stepControl.invalid && this.interacted;   }    constructor(     @Inject(forwardRef(() => CdkStepper)) public _stepper: CdkStepper,     @Optional() @Inject(STEPPER_GLOBAL_OPTIONS) stepperOptions?: StepperOptions,   ) {     this._stepperOptions = stepperOptions ? stepperOptions : {};     this._displayDefaultIndicatorType = this._stepperOptions.displayDefaultIndicatorType !== false;   }    /** Selects this step component. */   select(): void {     this._stepper.selected = this;   }    /** Resets the step to its initial state. Note that this includes resetting form data. */   reset(): void {     this.interacted = false;      if (this._completedOverride != null) {       this._completedOverride = false;     }      if (this._customError != null) {       this._customError = false;     }      if (this.stepControl) {       this.stepControl.reset();     }   }    ngOnChanges() {     // Since basically all inputs of the MatStep get proxied through the view down to the     // underlying MatStepHeader, we have to make sure that change detection runs correctly.     this._stepper._stateChanged();   }    _markAsInteracted() {     if (!this.interacted) {       this.interacted = true;       this.interactedStream.emit(this);     }   }    /** Determines whether the error state can be shown. */   _showError(): boolean {     // We want to show the error state either if the user opted into/out of it using the     // global options, or if they've explicitly set it through the `hasError` input.     return this._stepperOptions.showError ?? this._customError != null;   } }  @Directive({   selector: '[cdkStepper]',   exportAs: 'cdkStepper', }) export class CdkStepper implements AfterContentInit, AfterViewInit, OnDestroy {   /** Emits when the component is destroyed. */   protected readonly _destroyed = new Subject<void>();    /** Used for managing keyboard focus. */   private _keyManager: FocusKeyManager<FocusableOption>;    /** Full list of steps inside the stepper, including inside nested steppers. */   @ContentChildren(CdkStep, {descendants: true}) _steps: QueryList<CdkStep>;    /** Steps that belong to the current stepper, excluding ones from nested steppers. */   readonly steps: QueryList<CdkStep> = new QueryList<CdkStep>();    /** The list of step headers of the steps in the stepper. */   @ContentChildren(CdkStepHeader, {descendants: true}) _stepHeader: QueryList<CdkStepHeader>;    /** List of step headers sorted based on their DOM order. */   private _sortedHeaders = new QueryList<CdkStepHeader>();    /** Whether the validity of previous steps should be checked or not. */   @Input()   get linear(): boolean {     return this._linear;   }   set linear(value: BooleanInput) {     this._linear = coerceBooleanProperty(value);   }   private _linear = false;    /** The index of the selected step. */   @Input()   get selectedIndex(): number {     return this._selectedIndex;   }   set selectedIndex(index: NumberInput) {     const newIndex = coerceNumberProperty(index);      if (this.steps && this._steps) {       // Ensure that the index can't be out of bounds.       if (!this._isValidIndex(newIndex) && (typeof ngDevMode === 'undefined' || ngDevMode)) {         throw Error('cdkStepper: Cannot assign out-of-bounds value to `selectedIndex`.');       }        this.selected?._markAsInteracted();        if (         this._selectedIndex !== newIndex &&         !this._anyControlsInvalidOrPending(newIndex) &&         (newIndex >= this._selectedIndex || this.steps.toArray()[newIndex].editable)       ) {         this._updateSelectedItemIndex(newIndex);       }     } else {       this._selectedIndex = newIndex;     }   }   private _selectedIndex = 0;    /** The step that is selected. */   @Input()   get selected(): CdkStep | undefined {     return this.steps ? this.steps.toArray()[this.selectedIndex] : undefined;   }   set selected(step: CdkStep | undefined) {     this.selectedIndex = step && this.steps ? this.steps.toArray().indexOf(step) : -1;   }    /** Event emitted when the selected step has changed. */   @Output() readonly selectionChange = new EventEmitter<StepperSelectionEvent>();    /** Used to track unique ID for each stepper component. */   _groupId: number;    /** Orientation of the stepper. */   @Input()   get orientation(): StepperOrientation {     return this._orientation;   }   set orientation(value: StepperOrientation) {     // This is a protected method so that `MatStepper` can hook into it.     this._orientation = value;      if (this._keyManager) {       this._keyManager.withVerticalOrientation(value === 'vertical');     }   }   private _orientation: StepperOrientation = 'horizontal';    constructor(     @Optional() private _dir: Directionality,     private _changeDetectorRef: ChangeDetectorRef,     private _elementRef: ElementRef<HTMLElement>,   ) {     this._groupId = nextId++;   }    ngAfterContentInit() {     this._steps.changes       .pipe(startWith(this._steps), takeUntil(this._destroyed))       .subscribe((steps: QueryList<CdkStep>) => {         this.steps.reset(steps.filter(step => step._stepper === this));         this.steps.notifyOnChanges();       });   }    ngAfterViewInit() {     // If the step headers are defined outside of the `ngFor` that renders the steps, like in the     // Material stepper, they won't appear in the `QueryList` in the same order as they're     // rendered in the DOM which will lead to incorrect keyboard navigation. We need to sort     // them manually to ensure that they're correct. Alternatively, we can change the Material     // template to inline the headers in the `ngFor`, but that'll result in a lot of     // code duplication. See #23539.     this._stepHeader.changes       .pipe(startWith(this._stepHeader), takeUntil(this._destroyed))       .subscribe((headers: QueryList<CdkStepHeader>) => {         this._sortedHeaders.reset(           headers.toArray().sort((a, b) => {             const documentPosition = a._elementRef.nativeElement.compareDocumentPosition(               b._elementRef.nativeElement,             );              // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.             // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition             // tslint:disable-next-line:no-bitwise             return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;           }),         );         this._sortedHeaders.notifyOnChanges();       });      // Note that while the step headers are content children by default, any components that     // extend this one might have them as view children. We initialize the keyboard handling in     // AfterViewInit so we're guaranteed for both view and content children to be defined.     this._keyManager = new FocusKeyManager<FocusableOption>(this._sortedHeaders)       .withWrap()       .withHomeAndEnd()       .withVerticalOrientation(this._orientation === 'vertical');      (this._dir ? (this._dir.change as Observable<Direction>) : observableOf<Direction>())       .pipe(startWith(this._layoutDirection()), takeUntil(this._destroyed))       .subscribe(direction => this._keyManager.withHorizontalOrientation(direction));      this._keyManager.updateActiveItem(this._selectedIndex);      // No need to `takeUntil` here, because we're the ones destroying `steps`.     this.steps.changes.subscribe(() => {       if (!this.selected) {         this._selectedIndex = Math.max(this._selectedIndex - 1, 0);       }     });      // The logic which asserts that the selected index is within bounds doesn't run before the     // steps are initialized, because we don't how many steps there are yet so we may have an     // invalid index on init. If that's the case, auto-correct to the default so we don't throw.     if (!this._isValidIndex(this._selectedIndex)) {       this._selectedIndex = 0;     }   }    ngOnDestroy() {     this._keyManager?.destroy();     this.steps.destroy();     this._sortedHeaders.destroy();     this._destroyed.next();     this._destroyed.complete();   }    /** Selects and focuses the next step in list. */   next(): void {     this.selectedIndex = Math.min(this._selectedIndex + 1, this.steps.length - 1);   }    /** Selects and focuses the previous step in list. */   previous(): void {     this.selectedIndex = Math.max(this._selectedIndex - 1, 0);   }    /** Resets the stepper to its initial state. Note that this includes clearing form data. */   reset(): void {     this._updateSelectedItemIndex(0);     this.steps.forEach(step => step.reset());     this._stateChanged();   }    /** Returns a unique id for each step label element. */   _getStepLabelId(i: number): string {     return `cdk-step-label-${this._groupId}-${i}`;   }    /** Returns unique id for each step content element. */   _getStepContentId(i: number): string {     return `cdk-step-content-${this._groupId}-${i}`;   }    /** Marks the component to be change detected. */   _stateChanged() {     this._changeDetectorRef.markForCheck();   }    /** Returns position state of the step with the given index. */   _getAnimationDirection(index: number): StepContentPositionState {     const position = index - this._selectedIndex;     if (position < 0) {       return this._layoutDirection() === 'rtl' ? 'next' : 'previous';     } else if (position > 0) {       return this._layoutDirection() === 'rtl' ? 'previous' : 'next';     }     return 'current';   }    /** Returns the type of icon to be displayed. */   _getIndicatorType(index: number, state: StepState = STEP_STATE.NUMBER): StepState {     const step = this.steps.toArray()[index];     const isCurrentStep = this._isCurrentStep(index);      return step._displayDefaultIndicatorType       ? this._getDefaultIndicatorLogic(step, isCurrentStep)       : this._getGuidelineLogic(step, isCurrentStep, state);   }    private _getDefaultIndicatorLogic(step: CdkStep, isCurrentStep: boolean): StepState {     if (step._showError() && step.hasError && !isCurrentStep) {       return STEP_STATE.ERROR;     } else if (!step.completed || isCurrentStep) {       return STEP_STATE.NUMBER;     } else {       return step.editable ? STEP_STATE.EDIT : STEP_STATE.DONE;     }   }    private _getGuidelineLogic(     step: CdkStep,     isCurrentStep: boolean,     state: StepState = STEP_STATE.NUMBER,   ): StepState {     if (step._showError() && step.hasError && !isCurrentStep) {       return STEP_STATE.ERROR;     } else if (step.completed && !isCurrentStep) {       return STEP_STATE.DONE;     } else if (step.completed && isCurrentStep) {       return state;     } else if (step.editable && isCurrentStep) {       return STEP_STATE.EDIT;     } else {       return state;     }   }    private _isCurrentStep(index: number) {     return this._selectedIndex === index;   }    /** Returns the index of the currently-focused step header. */   _getFocusIndex() {     return this._keyManager ? this._keyManager.activeItemIndex : this._selectedIndex;   }    private _updateSelectedItemIndex(newIndex: number): void {     const stepsArray = this.steps.toArray();     this.selectionChange.emit({       selectedIndex: newIndex,       previouslySelectedIndex: this._selectedIndex,       selectedStep: stepsArray[newIndex],       previouslySelectedStep: stepsArray[this._selectedIndex],     });      // If focus is inside the stepper, move it to the next header, otherwise it may become     // lost when the active step content is hidden. We can't be more granular with the check     // (e.g. checking whether focus is inside the active step), because we don't have a     // reference to the elements that are rendering out the content.     this._containsFocus()       ? this._keyManager.setActiveItem(newIndex)       : this._keyManager.updateActiveItem(newIndex);      this._selectedIndex = newIndex;     this._stateChanged();   }    _onKeydown(event: KeyboardEvent) {     const hasModifier = hasModifierKey(event);     const keyCode = event.keyCode;     const manager = this._keyManager;      if (       manager.activeItemIndex != null &&       !hasModifier &&       (keyCode === SPACE || keyCode === ENTER)     ) {       this.selectedIndex = manager.activeItemIndex;       event.preventDefault();     } else {       manager.setFocusOrigin('keyboard').onKeydown(event);     }   }    private _anyControlsInvalidOrPending(index: number): boolean {     if (this._linear && index >= 0) {       return this.steps         .toArray()         .slice(0, index)         .some(step => {           const control = step.stepControl;           const isIncomplete = control             ? control.invalid || control.pending || !step.interacted             : !step.completed;           return isIncomplete && !step.optional && !step._completedOverride;         });     }      return false;   }    private _layoutDirection(): Direction {     return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';   }    /** Checks whether the stepper contains the focused element. */   private _containsFocus(): boolean {     const stepperElement = this._elementRef.nativeElement;     const focusedElement = _getFocusedElementPierceShadowDom();     return stepperElement === focusedElement || stepperElement.contains(focusedElement);   }    /** Checks whether the passed-in index is a valid step index. */   private _isValidIndex(index: number): boolean {     return index > -1 && (!this.steps || index < this.steps.length);   } }  /**  * Simplified representation of an \"AbstractControl\" from @angular/forms.  * Used to avoid having to bring in @angular/forms for a single optional interface.  * @docs-private  */ interface AbstractControlLike {   asyncValidator: ((control: any) => any) | null;   dirty: boolean;   disabled: boolean;   enabled: boolean;   errors: {[key: string]: any} | null;   invalid: boolean;   parent: any;   pending: boolean;   pristine: boolean;   root: AbstractControlLike;   status: string;   readonly statusChanges: Observable<any>;   touched: boolean;   untouched: boolean;   updateOn: any;   valid: boolean;   validator: ((control: any) => any) | null;   value: any;   readonly valueChanges: Observable<any>;   clearAsyncValidators(): void;   clearValidators(): void;   disable(opts?: any): void;   enable(opts?: any): void;   get(path: (string | number)[] | string): AbstractControlLike | null;   getError(errorCode: string, path?: (string | number)[] | string): any;   hasError(errorCode: string, path?: (string | number)[] | string): boolean;   markAllAsTouched(): void;   markAsDirty(opts?: any): void;   markAsPending(opts?: any): void;   markAsPristine(opts?: any): void;   markAsTouched(opts?: any): void;   markAsUntouched(opts?: any): void;   patchValue(value: any, options?: Object): void;   reset(value?: any, options?: Object): void;   setAsyncValidators(newValidator: (control: any) => any | ((control: any) => any)[] | null): void;   setErrors(errors: {[key: string]: any} | null, opts?: any): void;   setParent(parent: any): void;   setValidators(newValidator: (control: any) => any | ((control: any) => any)[] | null): void;   setValue(value: any, options?: Object): void;   updateValueAndValidity(opts?: any): void;   patchValue(value: any, options?: any): void;   reset(formState?: any, options?: any): void;   setValue(value: any, options?: any): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, Input} from '@angular/core';  import {CdkStepper} from './stepper';  /** Button that moves to the next step in a stepper workflow. */ @Directive({   selector: 'button[cdkStepperNext]',   host: {     '[type]': 'type',     '(click)': '_stepper.next()',   }, }) export class CdkStepperNext {   /** Type of the next button. Defaults to \"submit\" if not specified. */   @Input() type: string = 'submit';    constructor(public _stepper: CdkStepper) {} }  /** Button that moves to the previous step in a stepper workflow. */ @Directive({   selector: 'button[cdkStepperPrevious]',   host: {     '[type]': 'type',     '(click)': '_stepper.previous()',   }, }) export class CdkStepperPrevious {   /** Type of the previous button. Defaults to \"button\" if not specified. */   @Input() type: string = 'button';    constructor(public _stepper: CdkStepper) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {CdkStepper, CdkStep} from './stepper'; import {CdkStepLabel} from './step-label'; import {CdkStepperNext, CdkStepperPrevious} from './stepper-button'; import {CdkStepHeader} from './step-header'; import {BidiModule} from '@angular/cdk/bidi';  @NgModule({   imports: [BidiModule],   exports: [CdkStep, CdkStepper, CdkStepHeader, CdkStepLabel, CdkStepperNext, CdkStepperPrevious],   declarations: [     CdkStep,     CdkStepper,     CdkStepHeader,     CdkStepLabel,     CdkStepperNext,     CdkStepperPrevious,   ], }) export class CdkStepperModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './stepper'; export * from './step-label'; export * from './stepper-button'; export * from './stepper-module'; export * from './step-header'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["observableOf","i1.CdkStepper"],"mappings":"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"}
-------------------- SECTION 206 --------------------
{"version":3,"file":"portal.mjs","sources":["../../../../../../src/cdk/portal/portal-errors.ts","../../../../../../src/cdk/portal/portal.ts","../../../../../../src/cdk/portal/dom-portal-outlet.ts","../../../../../../src/cdk/portal/portal-directives.ts","../../../../../../src/cdk/portal/portal-injector.ts","../../../../../../src/cdk/portal/public-api.ts","../../../../../../src/cdk/portal/index.ts","../../../../../../src/cdk/portal/portal_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Throws an exception when attempting to attach a null portal to a host.  * @docs-private  */ export function throwNullPortalError() {   throw Error('Must provide a portal to attach'); }  /**  * Throws an exception when attempting to attach a portal to a host that is already attached.  * @docs-private  */ export function throwPortalAlreadyAttachedError() {   throw Error('Host already has a portal attached'); }  /**  * Throws an exception when attempting to attach a portal to an already-disposed host.  * @docs-private  */ export function throwPortalOutletAlreadyDisposedError() {   throw Error('This PortalOutlet has already been disposed'); }  /**  * Throws an exception when attempting to attach an unknown portal type.  * @docs-private  */ export function throwUnknownPortalTypeError() {   throw Error(     'Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +       'a ComponentPortal or a TemplatePortal.',   ); }  /**  * Throws an exception when attempting to attach a portal to a null host.  * @docs-private  */ export function throwNullPortalOutletError() {   throw Error('Attempting to attach a portal to a null PortalOutlet'); }  /**  * Throws an exception when attempting to detach a portal that is not attached.  * @docs-private  */ export function throwNoPortalAttachedError() {   throw Error('Attempting to detach a portal that is not attached to a host'); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   TemplateRef,   ViewContainerRef,   ElementRef,   ComponentRef,   EmbeddedViewRef,   Injector,   ComponentFactoryResolver, } from '@angular/core'; import {   throwNullPortalOutletError,   throwPortalAlreadyAttachedError,   throwNoPortalAttachedError,   throwNullPortalError,   throwPortalOutletAlreadyDisposedError,   throwUnknownPortalTypeError, } from './portal-errors';  /** Interface that can be used to generically type a class. */ export interface ComponentType<T> {   new (...args: any[]): T; }  /**  * A `Portal` is something that you want to render somewhere else.  * It can be attach to / detached from a `PortalOutlet`.  */ export abstract class Portal<T> {   private _attachedHost: PortalOutlet | null;    /** Attach this portal to a host. */   attach(host: PortalOutlet): T {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       if (host == null) {         throwNullPortalOutletError();       }        if (host.hasAttached()) {         throwPortalAlreadyAttachedError();       }     }      this._attachedHost = host;     return <T>host.attach(this);   }    /** Detach this portal from its host */   detach(): void {     let host = this._attachedHost;      if (host != null) {       this._attachedHost = null;       host.detach();     } else if (typeof ngDevMode === 'undefined' || ngDevMode) {       throwNoPortalAttachedError();     }   }    /** Whether this portal is attached to a host. */   get isAttached(): boolean {     return this._attachedHost != null;   }    /**    * Sets the PortalOutlet reference without performing `attach()`. This is used directly by    * the PortalOutlet when it is performing an `attach()` or `detach()`.    */   setAttachedHost(host: PortalOutlet | null) {     this._attachedHost = host;   } }  /**  * A `ComponentPortal` is a portal that instantiates some Component upon attachment.  */ export class ComponentPortal<T> extends Portal<ComponentRef<T>> {   /** The type of the component that will be instantiated for attachment. */   component: ComponentType<T>;    /**    * Where the attached component should live in Angular's *logical* component tree.    * This is different from where the component *renders*, which is determined by the PortalOutlet.    * The origin is necessary when the host is outside of the Angular application context.    */   viewContainerRef?: ViewContainerRef | null;    /** Injector used for the instantiation of the component. */   injector?: Injector | null;    /**    * Alternate `ComponentFactoryResolver` to use when resolving the associated component.    * Defaults to using the resolver from the outlet that the portal is attached to.    */   componentFactoryResolver?: ComponentFactoryResolver | null;    /**    * List of DOM nodes that should be projected through `<ng-content>` of the attached component.    */   projectableNodes?: Node[][] | null;    constructor(     component: ComponentType<T>,     viewContainerRef?: ViewContainerRef | null,     injector?: Injector | null,     componentFactoryResolver?: ComponentFactoryResolver | null,     projectableNodes?: Node[][] | null,   ) {     super();     this.component = component;     this.viewContainerRef = viewContainerRef;     this.injector = injector;     this.componentFactoryResolver = componentFactoryResolver;     this.projectableNodes = projectableNodes;   } }  /**  * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).  */ export class TemplatePortal<C = any> extends Portal<EmbeddedViewRef<C>> {   constructor(     /** The embedded template that will be used to instantiate an embedded View in the host. */     public templateRef: TemplateRef<C>,     /** Reference to the ViewContainer into which the template will be stamped out. */     public viewContainerRef: ViewContainerRef,     /** Contextual data to be passed in to the embedded view. */     public context?: C,     /** The injector to use for the embedded view. */     public injector?: Injector,   ) {     super();   }    get origin(): ElementRef {     return this.templateRef.elementRef;   }    /**    * Attach the portal to the provided `PortalOutlet`.    * When a context is provided it will override the `context` property of the `TemplatePortal`    * instance.    */   override attach(host: PortalOutlet, context: C | undefined = this.context): EmbeddedViewRef<C> {     this.context = context;     return super.attach(host);   }    override detach(): void {     this.context = undefined;     return super.detach();   } }  /**  * A `DomPortal` is a portal whose DOM element will be taken from its current position  * in the DOM and moved into a portal outlet, when it is attached. On detach, the content  * will be restored to its original position.  */ export class DomPortal<T = HTMLElement> extends Portal<T> {   /** DOM node hosting the portal's content. */   readonly element: T;    constructor(element: T | ElementRef<T>) {     super();     this.element = element instanceof ElementRef ? element.nativeElement : element;   } }  /** A `PortalOutlet` is an space that can contain a single `Portal`. */ export interface PortalOutlet {   /** Attaches a portal to this outlet. */   attach(portal: Portal<any>): any;    /** Detaches the currently attached portal from this outlet. */   detach(): any;    /** Performs cleanup before the outlet is destroyed. */   dispose(): void;    /** Whether there is currently a portal attached to this outlet. */   hasAttached(): boolean; }  /**  * @deprecated Use `PortalOutlet` instead.  * @breaking-change 9.0.0  */ export type PortalHost = PortalOutlet;  /**  * Partial implementation of PortalOutlet that handles attaching  * ComponentPortal and TemplatePortal.  */ export abstract class BasePortalOutlet implements PortalOutlet {   /** The portal currently attached to the host. */   protected _attachedPortal: Portal<any> | null;    /** A function that will permanently dispose this host. */   private _disposeFn: (() => void) | null;    /** Whether this host has already been permanently disposed. */   private _isDisposed: boolean = false;    /** Whether this host has an attached portal. */   hasAttached(): boolean {     return !!this._attachedPortal;   }    attach<T>(portal: ComponentPortal<T>): ComponentRef<T>;   attach<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T>;   attach(portal: any): any;    /** Attaches a portal. */   attach(portal: Portal<any>): any {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       if (!portal) {         throwNullPortalError();       }        if (this.hasAttached()) {         throwPortalAlreadyAttachedError();       }        if (this._isDisposed) {         throwPortalOutletAlreadyDisposedError();       }     }      if (portal instanceof ComponentPortal) {       this._attachedPortal = portal;       return this.attachComponentPortal(portal);     } else if (portal instanceof TemplatePortal) {       this._attachedPortal = portal;       return this.attachTemplatePortal(portal);       // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.     } else if (this.attachDomPortal && portal instanceof DomPortal) {       this._attachedPortal = portal;       return this.attachDomPortal(portal);     }      if (typeof ngDevMode === 'undefined' || ngDevMode) {       throwUnknownPortalTypeError();     }   }    abstract attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T>;    abstract attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C>;    // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.   readonly attachDomPortal: null | ((portal: DomPortal) => any) = null;    /** Detaches a previously attached portal. */   detach(): void {     if (this._attachedPortal) {       this._attachedPortal.setAttachedHost(null);       this._attachedPortal = null;     }      this._invokeDisposeFn();   }    /** Permanently dispose of this portal host. */   dispose(): void {     if (this.hasAttached()) {       this.detach();     }      this._invokeDisposeFn();     this._isDisposed = true;   }    /** @docs-private */   setDisposeFn(fn: () => void) {     this._disposeFn = fn;   }    private _invokeDisposeFn() {     if (this._disposeFn) {       this._disposeFn();       this._disposeFn = null;     }   } }  /**  * @deprecated Use `BasePortalOutlet` instead.  * @breaking-change 9.0.0  */ export abstract class BasePortalHost extends BasePortalOutlet {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   ApplicationRef,   ComponentFactoryResolver,   ComponentRef,   EmbeddedViewRef,   Injector, } from '@angular/core'; import {BasePortalOutlet, ComponentPortal, DomPortal, TemplatePortal} from './portal';  /**  * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular  * application context.  */ export class DomPortalOutlet extends BasePortalOutlet {   private _document: Document;    /**    * @param outletElement Element into which the content is projected.    * @param _componentFactoryResolver Used to resolve the component factory.    *   Only required when attaching component portals.    * @param _appRef Reference to the application. Only used in component portals when there    *   is no `ViewContainerRef` available.    * @param _defaultInjector Injector to use as a fallback when the portal being attached doesn't    *   have one. Only used for component portals.    * @param _document Reference to the document. Used when attaching a DOM portal. Will eventually    *   become a required parameter.    */   constructor(     /** Element into which the content is projected. */     public outletElement: Element,     private _componentFactoryResolver?: ComponentFactoryResolver,     private _appRef?: ApplicationRef,     private _defaultInjector?: Injector,      /**      * @deprecated `_document` Parameter to be made required.      * @breaking-change 10.0.0      */     _document?: any,   ) {     super();     this._document = _document;   }    /**    * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.    * @param portal Portal to be attached    * @returns Reference to the created component.    */   attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {     const resolver = (portal.componentFactoryResolver || this._componentFactoryResolver)!;      if ((typeof ngDevMode === 'undefined' || ngDevMode) && !resolver) {       throw Error('Cannot attach component portal to outlet without a ComponentFactoryResolver.');     }      const componentFactory = resolver.resolveComponentFactory(portal.component);     let componentRef: ComponentRef<T>;      // If the portal specifies a ViewContainerRef, we will use that as the attachment point     // for the component (in terms of Angular's component tree, not rendering).     // When the ViewContainerRef is missing, we use the factory to create the component directly     // and then manually attach the view to the application.     if (portal.viewContainerRef) {       componentRef = portal.viewContainerRef.createComponent(         componentFactory,         portal.viewContainerRef.length,         portal.injector || portal.viewContainerRef.injector,         portal.projectableNodes || undefined,       );        this.setDisposeFn(() => componentRef.destroy());     } else {       if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._appRef) {         throw Error('Cannot attach component portal to outlet without an ApplicationRef.');       }        componentRef = componentFactory.create(         portal.injector || this._defaultInjector || Injector.NULL,       );       this._appRef!.attachView(componentRef.hostView);       this.setDisposeFn(() => {         // Verify that the ApplicationRef has registered views before trying to detach a host view.         // This check also protects the `detachView` from being called on a destroyed ApplicationRef.         if (this._appRef!.viewCount > 0) {           this._appRef!.detachView(componentRef.hostView);         }         componentRef.destroy();       });     }     // At this point the component has been instantiated, so we move it to the location in the DOM     // where we want it to be rendered.     this.outletElement.appendChild(this._getComponentRootNode(componentRef));     this._attachedPortal = portal;      return componentRef;   }    /**    * Attaches a template portal to the DOM as an embedded view.    * @param portal Portal to be attached.    * @returns Reference to the created embedded view.    */   attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {     let viewContainer = portal.viewContainerRef;     let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context, {       injector: portal.injector,     });      // The method `createEmbeddedView` will add the view as a child of the viewContainer.     // But for the DomPortalOutlet the view can be added everywhere in the DOM     // (e.g Overlay Container) To move the view to the specified host element. We just     // re-append the existing root nodes.     viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));      // Note that we want to detect changes after the nodes have been moved so that     // any directives inside the portal that are looking at the DOM inside a lifecycle     // hook won't be invoked too early.     viewRef.detectChanges();      this.setDisposeFn(() => {       let index = viewContainer.indexOf(viewRef);       if (index !== -1) {         viewContainer.remove(index);       }     });      this._attachedPortal = portal;      // TODO(jelbourn): Return locals from view.     return viewRef;   }    /**    * Attaches a DOM portal by transferring its content into the outlet.    * @param portal Portal to be attached.    * @deprecated To be turned into a method.    * @breaking-change 10.0.0    */   override attachDomPortal = (portal: DomPortal) => {     // @breaking-change 10.0.0 Remove check and error once the     // `_document` constructor parameter is required.     if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw Error('Cannot attach DOM portal without _document constructor parameter');     }      const element = portal.element;     if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw Error('DOM portal content must be attached to a parent node.');     }      // Anchor used to save the element's previous position so     // that we can restore it when the portal is detached.     const anchorNode = this._document.createComment('dom-portal');      element.parentNode!.insertBefore(anchorNode, element);     this.outletElement.appendChild(element);     this._attachedPortal = portal;      super.setDisposeFn(() => {       // We can't use `replaceWith` here because IE doesn't support it.       if (anchorNode.parentNode) {         anchorNode.parentNode.replaceChild(element, anchorNode);       }     });   };    /**    * Clears out a portal from the DOM.    */   override dispose(): void {     super.dispose();     this.outletElement.remove();   }    /** Gets the root HTMLElement for an instantiated component. */   private _getComponentRootNode(componentRef: ComponentRef<any>): HTMLElement {     return (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;   } }  /**  * @deprecated Use `DomPortalOutlet` instead.  * @breaking-change 9.0.0  */ export class DomPortalHost extends DomPortalOutlet {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   ComponentFactoryResolver,   ComponentRef,   Directive,   EmbeddedViewRef,   EventEmitter,   NgModule,   OnDestroy,   OnInit,   Output,   TemplateRef,   ViewContainerRef,   Inject, } from '@angular/core'; import {DOCUMENT} from '@angular/common'; import {BasePortalOutlet, ComponentPortal, Portal, TemplatePortal, DomPortal} from './portal';  /**  * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,  * the directive instance itself can be attached to a host, enabling declarative use of portals.  */ @Directive({   selector: '[cdkPortal]',   exportAs: 'cdkPortal', }) export class CdkPortal extends TemplatePortal {   constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {     super(templateRef, viewContainerRef);   } }  /**  * @deprecated Use `CdkPortal` instead.  * @breaking-change 9.0.0  */ @Directive({   selector: '[cdk-portal], [portal]',   exportAs: 'cdkPortal',   providers: [     {       provide: CdkPortal,       useExisting: TemplatePortalDirective,     },   ], }) export class TemplatePortalDirective extends CdkPortal {}  /**  * Possible attached references to the CdkPortalOutlet.  */ export type CdkPortalOutletAttachedRef = ComponentRef<any> | EmbeddedViewRef<any> | null;  /**  * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be  * directly attached to it, enabling declarative use.  *  * Usage:  * `<ng-template [cdkPortalOutlet]=\"greeting\"></ng-template>`  */ @Directive({   selector: '[cdkPortalOutlet]',   exportAs: 'cdkPortalOutlet',   inputs: ['portal: cdkPortalOutlet'], }) export class CdkPortalOutlet extends BasePortalOutlet implements OnInit, OnDestroy {   private _document: Document;    /** Whether the portal component is initialized. */   private _isInitialized = false;    /** Reference to the currently-attached component/view ref. */   private _attachedRef: CdkPortalOutletAttachedRef;    constructor(     private _componentFactoryResolver: ComponentFactoryResolver,     private _viewContainerRef: ViewContainerRef,      /**      * @deprecated `_document` parameter to be made required.      * @breaking-change 9.0.0      */     @Inject(DOCUMENT) _document?: any,   ) {     super();     this._document = _document;   }    /** Portal associated with the Portal outlet. */   get portal(): Portal<any> | null {     return this._attachedPortal;   }    set portal(portal: Portal<any> | null | undefined | '') {     // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have     // run. This handles the cases where the user might do something like `<div cdkPortalOutlet>`     // and attach a portal programmatically in the parent component. When Angular does the first CD     // round, it will fire the setter with empty string, causing the user's content to be cleared.     if (this.hasAttached() && !portal && !this._isInitialized) {       return;     }      if (this.hasAttached()) {       super.detach();     }      if (portal) {       super.attach(portal);     }      this._attachedPortal = portal || null;   }    /** Emits when a portal is attached to the outlet. */   @Output() readonly attached: EventEmitter<CdkPortalOutletAttachedRef> =     new EventEmitter<CdkPortalOutletAttachedRef>();    /** Component or view reference that is attached to the portal. */   get attachedRef(): CdkPortalOutletAttachedRef {     return this._attachedRef;   }    ngOnInit() {     this._isInitialized = true;   }    ngOnDestroy() {     super.dispose();     this._attachedRef = this._attachedPortal = null;   }    /**    * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.    *    * @param portal Portal to be attached to the portal outlet.    * @returns Reference to the created component.    */   attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {     portal.setAttachedHost(this);      // If the portal specifies an origin, use that as the logical location of the component     // in the application tree. Otherwise use the location of this PortalOutlet.     const viewContainerRef =       portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;      const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;     const componentFactory = resolver.resolveComponentFactory(portal.component);     const ref = viewContainerRef.createComponent(       componentFactory,       viewContainerRef.length,       portal.injector || viewContainerRef.injector,       portal.projectableNodes || undefined,     );      // If we're using a view container that's different from the injected one (e.g. when the portal     // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered     // inside of the alternate view container.     if (viewContainerRef !== this._viewContainerRef) {       this._getRootNode().appendChild((ref.hostView as EmbeddedViewRef<any>).rootNodes[0]);     }      super.setDisposeFn(() => ref.destroy());     this._attachedPortal = portal;     this._attachedRef = ref;     this.attached.emit(ref);      return ref;   }    /**    * Attach the given TemplatePortal to this PortalHost as an embedded View.    * @param portal Portal to be attached.    * @returns Reference to the created embedded view.    */   attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {     portal.setAttachedHost(this);     const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context, {       injector: portal.injector,     });     super.setDisposeFn(() => this._viewContainerRef.clear());      this._attachedPortal = portal;     this._attachedRef = viewRef;     this.attached.emit(viewRef);      return viewRef;   }    /**    * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.    * @param portal Portal to be attached.    * @deprecated To be turned into a method.    * @breaking-change 10.0.0    */   override attachDomPortal = (portal: DomPortal) => {     // @breaking-change 9.0.0 Remove check and error once the     // `_document` constructor parameter is required.     if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw Error('Cannot attach DOM portal without _document constructor parameter');     }      const element = portal.element;     if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw Error('DOM portal content must be attached to a parent node.');     }      // Anchor used to save the element's previous position so     // that we can restore it when the portal is detached.     const anchorNode = this._document.createComment('dom-portal');      portal.setAttachedHost(this);     element.parentNode!.insertBefore(anchorNode, element);     this._getRootNode().appendChild(element);     this._attachedPortal = portal;      super.setDisposeFn(() => {       if (anchorNode.parentNode) {         anchorNode.parentNode!.replaceChild(element, anchorNode);       }     });   };    /** Gets the root node of the portal outlet. */   private _getRootNode(): HTMLElement {     const nativeElement: Node = this._viewContainerRef.element.nativeElement;      // The directive could be set on a template which will result in a comment     // node being the root. Use the comment's parent node if that is the case.     return (       nativeElement.nodeType === nativeElement.ELEMENT_NODE         ? nativeElement         : nativeElement.parentNode!     ) as HTMLElement;   } }  /**  * @deprecated Use `CdkPortalOutlet` instead.  * @breaking-change 9.0.0  */ @Directive({   selector: '[cdkPortalHost], [portalHost]',   exportAs: 'cdkPortalHost',   inputs: ['portal: cdkPortalHost'],   providers: [     {       provide: CdkPortalOutlet,       useExisting: PortalHostDirective,     },   ], }) export class PortalHostDirective extends CdkPortalOutlet {}  @NgModule({   exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],   declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], }) export class PortalModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injector} from '@angular/core';  /**  * Custom injector to be used when providing custom  * injection tokens to components inside a portal.  * @docs-private  * @deprecated Use `Injector.create` instead.  * @breaking-change 11.0.0  */ export class PortalInjector implements Injector {   constructor(private _parentInjector: Injector, private _customTokens: WeakMap<any, any>) {}    get(token: any, notFoundValue?: any): any {     const value = this._customTokens.get(token);      if (typeof value !== 'undefined') {       return value;     }      return this._parentInjector.get<any>(token, notFoundValue);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './portal'; export * from './dom-portal-outlet'; export * from './portal-directives'; export * from './portal-injector'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 207 --------------------
{"version":3,"file":"testing.mjs","sources":["../../../../../../src/cdk/testing/change-detection.ts","../../../../../../src/cdk/testing/component-harness.ts","../../../../../../src/cdk/testing/harness-environment.ts","../../../../../../src/cdk/testing/test-element.ts","../../../../../../src/cdk/testing/test-element-errors.ts","../../../../../../src/cdk/testing/element-dimensions.ts","../../../../../../src/cdk/testing/text-filtering.ts","../../../../../../src/cdk/testing/public-api.ts","../../../../../../src/cdk/testing/index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BehaviorSubject, Subscription} from 'rxjs';  /** Represents the status of auto change detection. */ export interface AutoChangeDetectionStatus {   /** Whether auto change detection is disabled. */   isDisabled: boolean;   /**    * An optional callback, if present it indicates that change detection should be run immediately,    * while handling the status change. The callback should then be called as soon as change    * detection is done.    */   onDetectChangesNow?: () => void; }  /** Subject used to dispatch and listen for changes to the auto change detection status . */ const autoChangeDetectionSubject = new BehaviorSubject<AutoChangeDetectionStatus>({   isDisabled: false, });  /** The current subscription to `autoChangeDetectionSubject`. */ let autoChangeDetectionSubscription: Subscription | null;  /**  * The default handler for auto change detection status changes. This handler will be used if the  * specific environment does not install its own.  * @param status The new auto change detection status.  */ function defaultAutoChangeDetectionHandler(status: AutoChangeDetectionStatus) {   status.onDetectChangesNow?.(); }  /**  * Allows a test `HarnessEnvironment` to install its own handler for auto change detection status  * changes.  * @param handler The handler for the auto change detection status.  */ export function handleAutoChangeDetectionStatus(   handler: (status: AutoChangeDetectionStatus) => void, ) {   stopHandlingAutoChangeDetectionStatus();   autoChangeDetectionSubscription = autoChangeDetectionSubject.subscribe(handler); }  /** Allows a `HarnessEnvironment` to stop handling auto change detection status changes. */ export function stopHandlingAutoChangeDetectionStatus() {   autoChangeDetectionSubscription?.unsubscribe();   autoChangeDetectionSubscription = null; }  /**  * Batches together triggering of change detection over the duration of the given function.  * @param fn The function to call with batched change detection.  * @param triggerBeforeAndAfter Optionally trigger change detection once before and after the batch  *   operation. If false, change detection will not be triggered.  * @return The result of the given function.  */ async function batchChangeDetection<T>(fn: () => Promise<T>, triggerBeforeAndAfter: boolean) {   // If change detection batching is already in progress, just run the function.   if (autoChangeDetectionSubject.getValue().isDisabled) {     return await fn();   }    // If nothing is handling change detection batching, install the default handler.   if (!autoChangeDetectionSubscription) {     handleAutoChangeDetectionStatus(defaultAutoChangeDetectionHandler);   }    if (triggerBeforeAndAfter) {     await new Promise(resolve =>       autoChangeDetectionSubject.next({         isDisabled: true,         onDetectChangesNow: resolve as () => void,       }),     );     // The function passed in may throw (e.g. if the user wants to make an expectation of an error     // being thrown. If this happens, we need to make sure we still re-enable change detection, so     // we wrap it in a `finally` block.     try {       return await fn();     } finally {       await new Promise(resolve =>         autoChangeDetectionSubject.next({           isDisabled: false,           onDetectChangesNow: resolve as () => void,         }),       );     }   } else {     autoChangeDetectionSubject.next({isDisabled: true});     // The function passed in may throw (e.g. if the user wants to make an expectation of an error     // being thrown. If this happens, we need to make sure we still re-enable change detection, so     // we wrap it in a `finally` block.     try {       return await fn();     } finally {       autoChangeDetectionSubject.next({isDisabled: false});     }   } }  /**  * Disables the harness system's auto change detection for the duration of the given function.  * @param fn The function to disable auto change detection for.  * @return The result of the given function.  */ export async function manualChangeDetection<T>(fn: () => Promise<T>) {   return batchChangeDetection(fn, false); }  /**  * Resolves the given list of async values in parallel (i.e. via Promise.all) while batching change  * detection over the entire operation such that change detection occurs exactly once before  * resolving the values and once after.  * @param values A getter for the async values to resolve in parallel with batched change detection.  * @return The resolved values.  */ export function parallel<T1, T2, T3, T4, T5>(   values: () => [     T1 | PromiseLike<T1>,     T2 | PromiseLike<T2>,     T3 | PromiseLike<T3>,     T4 | PromiseLike<T4>,     T5 | PromiseLike<T5>,   ], ): Promise<[T1, T2, T3, T4, T5]>;  /**  * Resolves the given list of async values in parallel (i.e. via Promise.all) while batching change  * detection over the entire operation such that change detection occurs exactly once before  * resolving the values and once after.  * @param values A getter for the async values to resolve in parallel with batched change detection.  * @return The resolved values.  */ export function parallel<T1, T2, T3, T4>(   values: () => [     T1 | PromiseLike<T1>,     T2 | PromiseLike<T2>,     T3 | PromiseLike<T3>,     T4 | PromiseLike<T4>,   ], ): Promise<[T1, T2, T3, T4]>;  /**  * Resolves the given list of async values in parallel (i.e. via Promise.all) while batching change  * detection over the entire operation such that change detection occurs exactly once before  * resolving the values and once after.  * @param values A getter for the async values to resolve in parallel with batched change detection.  * @return The resolved values.  */ export function parallel<T1, T2, T3>(   values: () => [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>], ): Promise<[T1, T2, T3]>;  /**  * Resolves the given list of async values in parallel (i.e. via Promise.all) while batching change  * detection over the entire operation such that change detection occurs exactly once before  * resolving the values and once after.  * @param values A getter for the async values to resolve in parallel with batched change detection.  * @return The resolved values.  */ export function parallel<T1, T2>(   values: () => [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>], ): Promise<[T1, T2]>;  /**  * Resolves the given list of async values in parallel (i.e. via Promise.all) while batching change  * detection over the entire operation such that change detection occurs exactly once before  * resolving the values and once after.  * @param values A getter for the async values to resolve in parallel with batched change detection.  * @return The resolved values.  */ export function parallel<T>(values: () => (T | PromiseLike<T>)[]): Promise<T[]>;  /**  * Resolves the given list of async values in parallel (i.e. via Promise.all) while batching change  * detection over the entire operation such that change detection occurs exactly once before  * resolving the values and once after.  * @param values A getter for the async values to resolve in parallel with batched change detection.  * @return The resolved values.  */ export async function parallel<T>(values: () => Iterable<T | PromiseLike<T>>): Promise<T[]> {   return batchChangeDetection(() => Promise.all(values()), true); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {parallel} from './change-detection'; import {TestElement} from './test-element';  /** An async function that returns a promise when called. */ export type AsyncFactoryFn<T> = () => Promise<T>;  /** An async function that takes an item and returns a boolean promise */ export type AsyncPredicate<T> = (item: T) => Promise<boolean>;  /** An async function that takes an item and an option value and returns a boolean promise. */ export type AsyncOptionPredicate<T, O> = (item: T, option: O) => Promise<boolean>;  /**  * A query for a `ComponentHarness`, which is expressed as either a `ComponentHarnessConstructor` or  * a `HarnessPredicate`.  */ export type HarnessQuery<T extends ComponentHarness> =   | ComponentHarnessConstructor<T>   | HarnessPredicate<T>;  /**  * The result type obtained when searching using a particular list of queries. This type depends on  * the particular items being queried.  * - If one of the queries is for a `ComponentHarnessConstructor<C1>`, it means that the result  *   might be a harness of type `C1`  * - If one of the queries is for a `HarnessPredicate<C2>`, it means that the result might be a  *   harness of type `C2`  * - If one of the queries is for a `string`, it means that the result might be a `TestElement`.  *  * Since we don't know for sure which query will match, the result type if the union of the types  * for all possible results.  *  * e.g.  * The type:  * `LocatorFnResult&lt;[  *   ComponentHarnessConstructor&lt;MyHarness&gt;,  *   HarnessPredicate&lt;MyOtherHarness&gt;,  *   string  * ]&gt;`  * is equivalent to:  * `MyHarness | MyOtherHarness | TestElement`.  */ export type LocatorFnResult<T extends (HarnessQuery<any> | string)[]> = {   [I in keyof T]: T[I] extends new (...args: any[]) => infer C // Map `ComponentHarnessConstructor<C>` to `C`.     ? C     : // Map `HarnessPredicate<C>` to `C`.     T[I] extends {harnessType: new (...args: any[]) => infer C}     ? C     : // Map `string` to `TestElement`.     T[I] extends string     ? TestElement     : // Map everything else to `never` (should not happen due to the type constraint on `T`).       never; }[number];  /**  * Interface used to load ComponentHarness objects. This interface is used by test authors to  * instantiate `ComponentHarness`es.  */ export interface HarnessLoader {   /**    * Searches for an element with the given selector under the current instances's root element,    * and returns a `HarnessLoader` rooted at the matching element. If multiple elements match the    * selector, the first is used. If no elements match, an error is thrown.    * @param selector The selector for the root element of the new `HarnessLoader`    * @return A `HarnessLoader` rooted at the element matching the given selector.    * @throws If a matching element can't be found.    */   getChildLoader(selector: string): Promise<HarnessLoader>;    /**    * Searches for all elements with the given selector under the current instances's root element,    * and returns an array of `HarnessLoader`s, one for each matching element, rooted at that    * element.    * @param selector The selector for the root element of the new `HarnessLoader`    * @return A list of `HarnessLoader`s, one for each matching element, rooted at that element.    */   getAllChildLoaders(selector: string): Promise<HarnessLoader[]>;    /**    * Searches for an instance of the component corresponding to the given harness type under the    * `HarnessLoader`'s root element, and returns a `ComponentHarness` for that instance. If multiple    * matching components are found, a harness for the first one is returned. If no matching    * component is found, an error is thrown.    * @param query A query for a harness to create    * @return An instance of the given harness type    * @throws If a matching component instance can't be found.    */   getHarness<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T>;    /**    * Searches for an instance of the component corresponding to the given harness type under the    * `HarnessLoader`'s root element, and returns a `ComponentHarness` for that instance. If multiple    * matching components are found, a harness for the first one is returned. If no matching    * component is found, null is returned.    * @param query A query for a harness to create    * @return An instance of the given harness type (or null if not found).    */   getHarnessOrNull<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T | null>;    /**    * Searches for all instances of the component corresponding to the given harness type under the    * `HarnessLoader`'s root element, and returns a list `ComponentHarness` for each instance.    * @param query A query for a harness to create    * @return A list instances of the given harness type.    */   getAllHarnesses<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T[]>;    /**    * Searches for an instance of the component corresponding to the given harness type under the    * `HarnessLoader`'s root element, and returns a boolean indicating if any were found.    * @param query A query for a harness to create    * @return A boolean indicating if an instance was found.    */   hasHarness<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<boolean>; }  /**  * Interface used to create asynchronous locator functions used find elements and component  * harnesses. This interface is used by `ComponentHarness` authors to create locator functions for  * their `ComponentHarness` subclass.  */ export interface LocatorFactory {   /** Gets a locator factory rooted at the document root. */   documentRootLocatorFactory(): LocatorFactory;    /** The root element of this `LocatorFactory` as a `TestElement`. */   rootElement: TestElement;    /**    * Creates an asynchronous locator function that can be used to find a `ComponentHarness` instance    * or element under the root element of this `LocatorFactory`.    * @param queries A list of queries specifying which harnesses and elements to search for:    *   - A `string` searches for elements matching the CSS selector specified by the string.    *   - A `ComponentHarness` constructor searches for `ComponentHarness` instances matching the    *     given class.    *   - A `HarnessPredicate` searches for `ComponentHarness` instances matching the given    *     predicate.    * @return An asynchronous locator function that searches for and returns a `Promise` for the    *   first element or harness matching the given search criteria. Matches are ordered first by    *   order in the DOM, and second by order in the queries list. If no matches are found, the    *   `Promise` rejects. The type that the `Promise` resolves to is a union of all result types for    *   each query.    *    * e.g. Given the following DOM: `<div id=\"d1\" /><div id=\"d2\" />`, and assuming    * `DivHarness.hostSelector === 'div'`:    * - `await lf.locatorFor(DivHarness, 'div')()` gets a `DivHarness` instance for `#d1`    * - `await lf.locatorFor('div', DivHarness)()` gets a `TestElement` instance for `#d1`    * - `await lf.locatorFor('span')()` throws because the `Promise` rejects.    */   locatorFor<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T>>;    /**    * Creates an asynchronous locator function that can be used to find a `ComponentHarness` instance    * or element under the root element of this `LocatorFactory`.    * @param queries A list of queries specifying which harnesses and elements to search for:    *   - A `string` searches for elements matching the CSS selector specified by the string.    *   - A `ComponentHarness` constructor searches for `ComponentHarness` instances matching the    *     given class.    *   - A `HarnessPredicate` searches for `ComponentHarness` instances matching the given    *     predicate.    * @return An asynchronous locator function that searches for and returns a `Promise` for the    *   first element or harness matching the given search criteria. Matches are ordered first by    *   order in the DOM, and second by order in the queries list. If no matches are found, the    *   `Promise` is resolved with `null`. The type that the `Promise` resolves to is a union of all    *   result types for each query or null.    *    * e.g. Given the following DOM: `<div id=\"d1\" /><div id=\"d2\" />`, and assuming    * `DivHarness.hostSelector === 'div'`:    * - `await lf.locatorForOptional(DivHarness, 'div')()` gets a `DivHarness` instance for `#d1`    * - `await lf.locatorForOptional('div', DivHarness)()` gets a `TestElement` instance for `#d1`    * - `await lf.locatorForOptional('span')()` gets `null`.    */   locatorForOptional<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T> | null>;    /**    * Creates an asynchronous locator function that can be used to find `ComponentHarness` instances    * or elements under the root element of this `LocatorFactory`.    * @param queries A list of queries specifying which harnesses and elements to search for:    *   - A `string` searches for elements matching the CSS selector specified by the string.    *   - A `ComponentHarness` constructor searches for `ComponentHarness` instances matching the    *     given class.    *   - A `HarnessPredicate` searches for `ComponentHarness` instances matching the given    *     predicate.    * @return An asynchronous locator function that searches for and returns a `Promise` for all    *   elements and harnesses matching the given search criteria. Matches are ordered first by    *   order in the DOM, and second by order in the queries list. If an element matches more than    *   one `ComponentHarness` class, the locator gets an instance of each for the same element. If    *   an element matches multiple `string` selectors, only one `TestElement` instance is returned    *   for that element. The type that the `Promise` resolves to is an array where each element is    *   the union of all result types for each query.    *    * e.g. Given the following DOM: `<div id=\"d1\" /><div id=\"d2\" />`, and assuming    * `DivHarness.hostSelector === 'div'` and `IdIsD1Harness.hostSelector === '#d1'`:    * - `await lf.locatorForAll(DivHarness, 'div')()` gets `[    *     DivHarness, // for #d1    *     TestElement, // for #d1    *     DivHarness, // for #d2    *     TestElement // for #d2    *   ]`    * - `await lf.locatorForAll('div', '#d1')()` gets `[    *     TestElement, // for #d1    *     TestElement // for #d2    *   ]`    * - `await lf.locatorForAll(DivHarness, IdIsD1Harness)()` gets `[    *     DivHarness, // for #d1    *     IdIsD1Harness, // for #d1    *     DivHarness // for #d2    *   ]`    * - `await lf.locatorForAll('span')()` gets `[]`.    */   locatorForAll<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T>[]>;    /** @return A `HarnessLoader` rooted at the root element of this `LocatorFactory`. */   rootHarnessLoader(): Promise<HarnessLoader>;    /**    * Gets a `HarnessLoader` instance for an element under the root of this `LocatorFactory`.    * @param selector The selector for the root element.    * @return A `HarnessLoader` rooted at the first element matching the given selector.    * @throws If no matching element is found for the given selector.    */   harnessLoaderFor(selector: string): Promise<HarnessLoader>;    /**    * Gets a `HarnessLoader` instance for an element under the root of this `LocatorFactory`    * @param selector The selector for the root element.    * @return A `HarnessLoader` rooted at the first element matching the given selector, or null if    *     no matching element is found.    */   harnessLoaderForOptional(selector: string): Promise<HarnessLoader | null>;    /**    * Gets a list of `HarnessLoader` instances, one for each matching element.    * @param selector The selector for the root element.    * @return A list of `HarnessLoader`, one rooted at each element matching the given selector.    */   harnessLoaderForAll(selector: string): Promise<HarnessLoader[]>;    /**    * Flushes change detection and async tasks captured in the Angular zone.    * In most cases it should not be necessary to call this manually. However, there may be some edge    * cases where it is needed to fully flush animation events.    */   forceStabilize(): Promise<void>;    /**    * Waits for all scheduled or running async tasks to complete. This allows harness    * authors to wait for async tasks outside of the Angular zone.    */   waitForTasksOutsideAngular(): Promise<void>; }  /**  * Base class for component harnesses that all component harness authors should extend. This base  * component harness provides the basic ability to locate element and sub-component harness. It  * should be inherited when defining user's own harness.  */ export abstract class ComponentHarness {   constructor(protected readonly locatorFactory: LocatorFactory) {}    /** Gets a `Promise` for the `TestElement` representing the host element of the component. */   async host(): Promise<TestElement> {     return this.locatorFactory.rootElement;   }    /**    * Gets a `LocatorFactory` for the document root element. This factory can be used to create    * locators for elements that a component creates outside of its own root element. (e.g. by    * appending to document.body).    */   protected documentRootLocatorFactory(): LocatorFactory {     return this.locatorFactory.documentRootLocatorFactory();   }    /**    * Creates an asynchronous locator function that can be used to find a `ComponentHarness` instance    * or element under the host element of this `ComponentHarness`.    * @param queries A list of queries specifying which harnesses and elements to search for:    *   - A `string` searches for elements matching the CSS selector specified by the string.    *   - A `ComponentHarness` constructor searches for `ComponentHarness` instances matching the    *     given class.    *   - A `HarnessPredicate` searches for `ComponentHarness` instances matching the given    *     predicate.    * @return An asynchronous locator function that searches for and returns a `Promise` for the    *   first element or harness matching the given search criteria. Matches are ordered first by    *   order in the DOM, and second by order in the queries list. If no matches are found, the    *   `Promise` rejects. The type that the `Promise` resolves to is a union of all result types for    *   each query.    *    * e.g. Given the following DOM: `<div id=\"d1\" /><div id=\"d2\" />`, and assuming    * `DivHarness.hostSelector === 'div'`:    * - `await ch.locatorFor(DivHarness, 'div')()` gets a `DivHarness` instance for `#d1`    * - `await ch.locatorFor('div', DivHarness)()` gets a `TestElement` instance for `#d1`    * - `await ch.locatorFor('span')()` throws because the `Promise` rejects.    */   protected locatorFor<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T>> {     return this.locatorFactory.locatorFor(...queries);   }    /**    * Creates an asynchronous locator function that can be used to find a `ComponentHarness` instance    * or element under the host element of this `ComponentHarness`.    * @param queries A list of queries specifying which harnesses and elements to search for:    *   - A `string` searches for elements matching the CSS selector specified by the string.    *   - A `ComponentHarness` constructor searches for `ComponentHarness` instances matching the    *     given class.    *   - A `HarnessPredicate` searches for `ComponentHarness` instances matching the given    *     predicate.    * @return An asynchronous locator function that searches for and returns a `Promise` for the    *   first element or harness matching the given search criteria. Matches are ordered first by    *   order in the DOM, and second by order in the queries list. If no matches are found, the    *   `Promise` is resolved with `null`. The type that the `Promise` resolves to is a union of all    *   result types for each query or null.    *    * e.g. Given the following DOM: `<div id=\"d1\" /><div id=\"d2\" />`, and assuming    * `DivHarness.hostSelector === 'div'`:    * - `await ch.locatorForOptional(DivHarness, 'div')()` gets a `DivHarness` instance for `#d1`    * - `await ch.locatorForOptional('div', DivHarness)()` gets a `TestElement` instance for `#d1`    * - `await ch.locatorForOptional('span')()` gets `null`.    */   protected locatorForOptional<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T> | null> {     return this.locatorFactory.locatorForOptional(...queries);   }    /**    * Creates an asynchronous locator function that can be used to find `ComponentHarness` instances    * or elements under the host element of this `ComponentHarness`.    * @param queries A list of queries specifying which harnesses and elements to search for:    *   - A `string` searches for elements matching the CSS selector specified by the string.    *   - A `ComponentHarness` constructor searches for `ComponentHarness` instances matching the    *     given class.    *   - A `HarnessPredicate` searches for `ComponentHarness` instances matching the given    *     predicate.    * @return An asynchronous locator function that searches for and returns a `Promise` for all    *   elements and harnesses matching the given search criteria. Matches are ordered first by    *   order in the DOM, and second by order in the queries list. If an element matches more than    *   one `ComponentHarness` class, the locator gets an instance of each for the same element. If    *   an element matches multiple `string` selectors, only one `TestElement` instance is returned    *   for that element. The type that the `Promise` resolves to is an array where each element is    *   the union of all result types for each query.    *    * e.g. Given the following DOM: `<div id=\"d1\" /><div id=\"d2\" />`, and assuming    * `DivHarness.hostSelector === 'div'` and `IdIsD1Harness.hostSelector === '#d1'`:    * - `await ch.locatorForAll(DivHarness, 'div')()` gets `[    *     DivHarness, // for #d1    *     TestElement, // for #d1    *     DivHarness, // for #d2    *     TestElement // for #d2    *   ]`    * - `await ch.locatorForAll('div', '#d1')()` gets `[    *     TestElement, // for #d1    *     TestElement // for #d2    *   ]`    * - `await ch.locatorForAll(DivHarness, IdIsD1Harness)()` gets `[    *     DivHarness, // for #d1    *     IdIsD1Harness, // for #d1    *     DivHarness // for #d2    *   ]`    * - `await ch.locatorForAll('span')()` gets `[]`.    */   protected locatorForAll<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T>[]> {     return this.locatorFactory.locatorForAll(...queries);   }    /**    * Flushes change detection and async tasks in the Angular zone.    * In most cases it should not be necessary to call this manually. However, there may be some edge    * cases where it is needed to fully flush animation events.    */   protected async forceStabilize() {     return this.locatorFactory.forceStabilize();   }    /**    * Waits for all scheduled or running async tasks to complete. This allows harness    * authors to wait for async tasks outside of the Angular zone.    */   protected async waitForTasksOutsideAngular() {     return this.locatorFactory.waitForTasksOutsideAngular();   } }  /**  * Base class for component harnesses that authors should extend if they anticipate that consumers  * of the harness may want to access other harnesses within the `<ng-content>` of the component.  */ export abstract class ContentContainerComponentHarness<S extends string = string>   extends ComponentHarness   implements HarnessLoader {   async getChildLoader(selector: S): Promise<HarnessLoader> {     return (await this.getRootHarnessLoader()).getChildLoader(selector);   }    async getAllChildLoaders(selector: S): Promise<HarnessLoader[]> {     return (await this.getRootHarnessLoader()).getAllChildLoaders(selector);   }    async getHarness<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T> {     return (await this.getRootHarnessLoader()).getHarness(query);   }    async getHarnessOrNull<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T | null> {     return (await this.getRootHarnessLoader()).getHarnessOrNull(query);   }    async getAllHarnesses<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T[]> {     return (await this.getRootHarnessLoader()).getAllHarnesses(query);   }    async hasHarness<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<boolean> {     return (await this.getRootHarnessLoader()).hasHarness(query);   }    /**    * Gets the root harness loader from which to start    * searching for content contained by this harness.    */   protected async getRootHarnessLoader(): Promise<HarnessLoader> {     return this.locatorFactory.rootHarnessLoader();   } }  /** Constructor for a ComponentHarness subclass. */ export interface ComponentHarnessConstructor<T extends ComponentHarness> {   new (locatorFactory: LocatorFactory): T;    /**    * `ComponentHarness` subclasses must specify a static `hostSelector` property that is used to    * find the host element for the corresponding component. This property should match the selector    * for the Angular component.    */   hostSelector: string; }  /** A set of criteria that can be used to filter a list of `ComponentHarness` instances. */ export interface BaseHarnessFilters {   /** Only find instances whose host element matches the given selector. */   selector?: string;   /** Only find instances that are nested under an element with the given selector. */   ancestor?: string; }  /**  * A class used to associate a ComponentHarness class with predicates functions that can be used to  * filter instances of the class.  */ export class HarnessPredicate<T extends ComponentHarness> {   private _predicates: AsyncPredicate<T>[] = [];   private _descriptions: string[] = [];   private _ancestor: string;    constructor(public harnessType: ComponentHarnessConstructor<T>, options: BaseHarnessFilters) {     this._addBaseOptions(options);   }    /**    * Checks if the specified nullable string value matches the given pattern.    * @param value The nullable string value to check, or a Promise resolving to the    *   nullable string value.    * @param pattern The pattern the value is expected to match. If `pattern` is a string,    *   `value` is expected to match exactly. If `pattern` is a regex, a partial match is    *   allowed. If `pattern` is `null`, the value is expected to be `null`.    * @return Whether the value matches the pattern.    */   static async stringMatches(     value: string | null | Promise<string | null>,     pattern: string | RegExp | null,   ): Promise<boolean> {     value = await value;     if (pattern === null) {       return value === null;     } else if (value === null) {       return false;     }     return typeof pattern === 'string' ? value === pattern : pattern.test(value);   }    /**    * Adds a predicate function to be run against candidate harnesses.    * @param description A description of this predicate that may be used in error messages.    * @param predicate An async predicate function.    * @return this (for method chaining).    */   add(description: string, predicate: AsyncPredicate<T>) {     this._descriptions.push(description);     this._predicates.push(predicate);     return this;   }    /**    * Adds a predicate function that depends on an option value to be run against candidate    * harnesses. If the option value is undefined, the predicate will be ignored.    * @param name The name of the option (may be used in error messages).    * @param option The option value.    * @param predicate The predicate function to run if the option value is not undefined.    * @return this (for method chaining).    */   addOption<O>(name: string, option: O | undefined, predicate: AsyncOptionPredicate<T, O>) {     if (option !== undefined) {       this.add(`${name} = ${_valueAsString(option)}`, item => predicate(item, option));     }     return this;   }    /**    * Filters a list of harnesses on this predicate.    * @param harnesses The list of harnesses to filter.    * @return A list of harnesses that satisfy this predicate.    */   async filter(harnesses: T[]): Promise<T[]> {     if (harnesses.length === 0) {       return [];     }     const results = await parallel(() => harnesses.map(h => this.evaluate(h)));     return harnesses.filter((_, i) => results[i]);   }    /**    * Evaluates whether the given harness satisfies this predicate.    * @param harness The harness to check    * @return A promise that resolves to true if the harness satisfies this predicate,    *   and resolves to false otherwise.    */   async evaluate(harness: T): Promise<boolean> {     const results = await parallel(() => this._predicates.map(p => p(harness)));     return results.reduce((combined, current) => combined && current, true);   }    /** Gets a description of this predicate for use in error messages. */   getDescription() {     return this._descriptions.join(', ');   }    /** Gets the selector used to find candidate elements. */   getSelector() {     // We don't have to go through the extra trouble if there are no ancestors.     if (!this._ancestor) {       return (this.harnessType.hostSelector || '').trim();     }      const [ancestors, ancestorPlaceholders] = _splitAndEscapeSelector(this._ancestor);     const [selectors, selectorPlaceholders] = _splitAndEscapeSelector(       this.harnessType.hostSelector || '',     );     const result: string[] = [];      // We have to add the ancestor to each part of the host compound selector, otherwise we can get     // incorrect results. E.g. `.ancestor .a, .ancestor .b` vs `.ancestor .a, .b`.     ancestors.forEach(escapedAncestor => {       const ancestor = _restoreSelector(escapedAncestor, ancestorPlaceholders);       return selectors.forEach(escapedSelector =>         result.push(`${ancestor} ${_restoreSelector(escapedSelector, selectorPlaceholders)}`),       );     });      return result.join(', ');   }    /** Adds base options common to all harness types. */   private _addBaseOptions(options: BaseHarnessFilters) {     this._ancestor = options.ancestor || '';     if (this._ancestor) {       this._descriptions.push(`has ancestor matching selector \"${this._ancestor}\"`);     }     const selector = options.selector;     if (selector !== undefined) {       this.add(`host matches selector \"${selector}\"`, async item => {         return (await item.host()).matchesSelector(selector);       });     }   } }  /** Represent a value as a string for the purpose of logging. */ function _valueAsString(value: unknown) {   if (value === undefined) {     return 'undefined';   }   try {     // `JSON.stringify` doesn't handle RegExp properly, so we need a custom replacer.     // Use a character that is unlikely to appear in real strings to denote the start and end of     // the regex. This allows us to strip out the extra quotes around the value added by     // `JSON.stringify`. Also do custom escaping on `\"` characters to prevent `JSON.stringify`     // from escaping them as if they were part of a string.     const stringifiedValue = JSON.stringify(value, (_, v) =>       v instanceof RegExp         ? `◬MAT_RE_ESCAPE◬${v.toString().replace(/\"/g, '◬MAT_RE_ESCAPE◬')}◬MAT_RE_ESCAPE◬`         : v,     );     // Strip out the extra quotes around regexes and put back the manually escaped `\"` characters.     return stringifiedValue       .replace(/\"◬MAT_RE_ESCAPE◬|◬MAT_RE_ESCAPE◬\"/g, '')       .replace(/◬MAT_RE_ESCAPE◬/g, '\"');   } catch {     // `JSON.stringify` will throw if the object is cyclical,     // in this case the best we can do is report the value as `{...}`.     return '{...}';   } }  /**  * Splits up a compound selector into its parts and escapes any quoted content. The quoted content  * has to be escaped, because it can contain commas which will throw throw us off when trying to  * split it.  * @param selector Selector to be split.  * @returns The escaped string where any quoted content is replaced with a placeholder. E.g.  * `[foo=\"bar\"]` turns into `[foo=__cdkPlaceholder-0__]`. Use `_restoreSelector` to restore  * the placeholders.  */ function _splitAndEscapeSelector(selector: string): [parts: string[], placeholders: string[]] {   const placeholders: string[] = [];    // Note that the regex doesn't account for nested quotes so something like `\"ab'cd'e\"` will be   // considered as two blocks. It's a bit of an edge case, but if we find that it's a problem,   // we can make it a bit smarter using a loop. Use this for now since it's more readable and   // compact. More complete implementation:   // https://github.com/angular/angular/blob/bd34bc9e89f18a/packages/compiler/src/shadow_css.ts#L655   const result = selector.replace(/([\"'][^[\"']*[\"'])/g, (_, keep) => {     const replaceBy = `__cdkPlaceholder-${placeholders.length}__`;     placeholders.push(keep);     return replaceBy;   });    return [result.split(',').map(part => part.trim()), placeholders]; }  /** Restores a selector whose content was escaped in `_splitAndEscapeSelector`. */ function _restoreSelector(selector: string, placeholders: string[]): string {   return selector.replace(/__cdkPlaceholder-(\\d+)__/g, (_, index) => placeholders[+index]); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {parallel} from './change-detection'; import {   AsyncFactoryFn,   ComponentHarness,   ComponentHarnessConstructor,   HarnessLoader,   HarnessPredicate,   HarnessQuery,   LocatorFactory,   LocatorFnResult, } from './component-harness'; import {TestElement} from './test-element';  /** Parsed form of the queries passed to the `locatorFor*` methods. */ type ParsedQueries<T extends ComponentHarness> = {   /** The full list of queries, in their original order. */   allQueries: (string | HarnessPredicate<T>)[];   /**    * A filtered view of `allQueries` containing only the queries that are looking for a    * `ComponentHarness`    */   harnessQueries: HarnessPredicate<T>[];   /**    * A filtered view of `allQueries` containing only the queries that are looking for a    * `TestElement`    */   elementQueries: string[];   /** The set of all `ComponentHarness` subclasses represented in the original query list. */   harnessTypes: Set<ComponentHarnessConstructor<T>>; };  /**  * Base harness environment class that can be extended to allow `ComponentHarness`es to be used in  * different test environments (e.g. testbed, protractor, etc.). This class implements the  * functionality of both a `HarnessLoader` and `LocatorFactory`. This class is generic on the raw  * element type, `E`, used by the particular test environment.  */ export abstract class HarnessEnvironment<E> implements HarnessLoader, LocatorFactory {   // Implemented as part of the `LocatorFactory` interface.   get rootElement(): TestElement {     this._rootElement = this._rootElement || this.createTestElement(this.rawRootElement);     return this._rootElement;   }   set rootElement(element: TestElement) {     this._rootElement = element;   }   private _rootElement: TestElement | undefined;    protected constructor(protected rawRootElement: E) {}    // Implemented as part of the `LocatorFactory` interface.   documentRootLocatorFactory(): LocatorFactory {     return this.createEnvironment(this.getDocumentRoot());   }    // Implemented as part of the `LocatorFactory` interface.   locatorFor<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T>> {     return () =>       _assertResultFound(         this._getAllHarnessesAndTestElements(queries),         _getDescriptionForLocatorForQueries(queries),       );   }    // Implemented as part of the `LocatorFactory` interface.   locatorForOptional<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T> | null> {     return async () => (await this._getAllHarnessesAndTestElements(queries))[0] || null;   }    // Implemented as part of the `LocatorFactory` interface.   locatorForAll<T extends (HarnessQuery<any> | string)[]>(     ...queries: T   ): AsyncFactoryFn<LocatorFnResult<T>[]> {     return () => this._getAllHarnessesAndTestElements(queries);   }    // Implemented as part of the `LocatorFactory` interface.   async rootHarnessLoader(): Promise<HarnessLoader> {     return this;   }    // Implemented as part of the `LocatorFactory` interface.   async harnessLoaderFor(selector: string): Promise<HarnessLoader> {     return this.createEnvironment(       await _assertResultFound(this.getAllRawElements(selector), [         _getDescriptionForHarnessLoaderQuery(selector),       ]),     );   }    // Implemented as part of the `LocatorFactory` interface.   async harnessLoaderForOptional(selector: string): Promise<HarnessLoader | null> {     const elements = await this.getAllRawElements(selector);     return elements[0] ? this.createEnvironment(elements[0]) : null;   }    // Implemented as part of the `LocatorFactory` interface.   async harnessLoaderForAll(selector: string): Promise<HarnessLoader[]> {     const elements = await this.getAllRawElements(selector);     return elements.map(element => this.createEnvironment(element));   }    // Implemented as part of the `HarnessLoader` interface.   getHarness<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T> {     return this.locatorFor(query)();   }    // Implemented as part of the `HarnessLoader` interface.   getHarnessOrNull<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T | null> {     return this.locatorForOptional(query)();   }    // Implemented as part of the `HarnessLoader` interface.   getAllHarnesses<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<T[]> {     return this.locatorForAll(query)();   }    // Implemented as part of the `HarnessLoader` interface.   async hasHarness<T extends ComponentHarness>(query: HarnessQuery<T>): Promise<boolean> {     return (await this.locatorForOptional(query)()) !== null;   }    // Implemented as part of the `HarnessLoader` interface.   async getChildLoader(selector: string): Promise<HarnessLoader> {     return this.createEnvironment(       await _assertResultFound(this.getAllRawElements(selector), [         _getDescriptionForHarnessLoaderQuery(selector),       ]),     );   }    // Implemented as part of the `HarnessLoader` interface.   async getAllChildLoaders(selector: string): Promise<HarnessLoader[]> {     return (await this.getAllRawElements(selector)).map(e => this.createEnvironment(e));   }    /** Creates a `ComponentHarness` for the given harness type with the given raw host element. */   protected createComponentHarness<T extends ComponentHarness>(     harnessType: ComponentHarnessConstructor<T>,     element: E,   ): T {     return new harnessType(this.createEnvironment(element));   }    // Part of LocatorFactory interface, subclasses will implement.   abstract forceStabilize(): Promise<void>;    // Part of LocatorFactory interface, subclasses will implement.   abstract waitForTasksOutsideAngular(): Promise<void>;    /** Gets the root element for the document. */   protected abstract getDocumentRoot(): E;    /** Creates a `TestElement` from a raw element. */   protected abstract createTestElement(element: E): TestElement;    /** Creates a `HarnessLoader` rooted at the given raw element. */   protected abstract createEnvironment(element: E): HarnessEnvironment<E>;    /**    * Gets a list of all elements matching the given selector under this environment's root element.    */   protected abstract getAllRawElements(selector: string): Promise<E[]>;    /**    * Matches the given raw elements with the given list of element and harness queries to produce a    * list of matched harnesses and test elements.    */   private async _getAllHarnessesAndTestElements<T extends (HarnessQuery<any> | string)[]>(     queries: T,   ): Promise<LocatorFnResult<T>[]> {     if (!queries.length) {       throw Error('CDK Component harness query must contain at least one element.');     }      const {allQueries, harnessQueries, elementQueries, harnessTypes} = _parseQueries(queries);      // Combine all of the queries into one large comma-delimited selector and use it to get all raw     // elements matching any of the individual queries.     const rawElements = await this.getAllRawElements(       [...elementQueries, ...harnessQueries.map(predicate => predicate.getSelector())].join(','),     );      // If every query is searching for the same harness subclass, we know every result corresponds     // to an instance of that subclass. Likewise, if every query is for a `TestElement`, we know     // every result corresponds to a `TestElement`. Otherwise we need to verify which result was     // found by which selector so it can be matched to the appropriate instance.     const skipSelectorCheck =       (elementQueries.length === 0 && harnessTypes.size === 1) || harnessQueries.length === 0;      const perElementMatches = await parallel(() =>       rawElements.map(async rawElement => {         const testElement = this.createTestElement(rawElement);         const allResultsForElement = await parallel(           // For each query, get `null` if it doesn't match, or a `TestElement` or           // `ComponentHarness` as appropriate if it does match. This gives us everything that           // matches the current raw element, but it may contain duplicate entries (e.g.           // multiple `TestElement` or multiple `ComponentHarness` of the same type).           () =>             allQueries.map(query =>               this._getQueryResultForElement(query, rawElement, testElement, skipSelectorCheck),             ),         );         return _removeDuplicateQueryResults(allResultsForElement);       }),     );     return ([] as any).concat(...perElementMatches);   }    /**    * Check whether the given query matches the given element, if it does return the matched    * `TestElement` or `ComponentHarness`, if it does not, return null. In cases where the caller    * knows for sure that the query matches the element's selector, `skipSelectorCheck` can be used    * to skip verification and optimize performance.    */   private async _getQueryResultForElement<T extends ComponentHarness>(     query: string | HarnessPredicate<T>,     rawElement: E,     testElement: TestElement,     skipSelectorCheck: boolean = false,   ): Promise<T | TestElement | null> {     if (typeof query === 'string') {       return skipSelectorCheck || (await testElement.matchesSelector(query)) ? testElement : null;     }     if (skipSelectorCheck || (await testElement.matchesSelector(query.getSelector()))) {       const harness = this.createComponentHarness(query.harnessType, rawElement);       return (await query.evaluate(harness)) ? harness : null;     }     return null;   } }  /**  * Parses a list of queries in the format accepted by the `locatorFor*` methods into an easier to  * work with format.  */ function _parseQueries<T extends (HarnessQuery<any> | string)[]>(   queries: T, ): ParsedQueries<LocatorFnResult<T> & ComponentHarness> {   const allQueries = [];   const harnessQueries = [];   const elementQueries = [];   const harnessTypes = new Set<     ComponentHarnessConstructor<LocatorFnResult<T> & ComponentHarness>   >();    for (const query of queries) {     if (typeof query === 'string') {       allQueries.push(query);       elementQueries.push(query);     } else {       const predicate = query instanceof HarnessPredicate ? query : new HarnessPredicate(query, {});       allQueries.push(predicate);       harnessQueries.push(predicate);       harnessTypes.add(predicate.harnessType);     }   }    return {allQueries, harnessQueries, elementQueries, harnessTypes}; }  /**  * Removes duplicate query results for a particular element. (e.g. multiple `TestElement`  * instances or multiple instances of the same `ComponentHarness` class.  */ async function _removeDuplicateQueryResults<T extends (ComponentHarness | TestElement | null)[]>(   results: T, ): Promise<T> {   let testElementMatched = false;   let matchedHarnessTypes = new Set();   const dedupedMatches = [];   for (const result of results) {     if (!result) {       continue;     }     if (result instanceof ComponentHarness) {       if (!matchedHarnessTypes.has(result.constructor)) {         matchedHarnessTypes.add(result.constructor);         dedupedMatches.push(result);       }     } else if (!testElementMatched) {       testElementMatched = true;       dedupedMatches.push(result);     }   }   return dedupedMatches as T; }  /** Verifies that there is at least one result in an array. */ async function _assertResultFound<T>(   results: Promise<T[]>,   queryDescriptions: string[], ): Promise<T> {   const result = (await results)[0];   if (result == undefined) {     throw Error(       `Failed to find element matching one of the following queries:\ ` +         queryDescriptions.map(desc => `(${desc})`).join(',\ '),     );   }   return result; }  /** Gets a list of description strings from a list of queries. */ function _getDescriptionForLocatorForQueries(queries: (string | HarnessQuery<any>)[]) {   return queries.map(query =>     typeof query === 'string'       ? _getDescriptionForTestElementQuery(query)       : _getDescriptionForComponentHarnessQuery(query),   ); }  /** Gets a description string for a `ComponentHarness` query. */ function _getDescriptionForComponentHarnessQuery(query: HarnessQuery<any>) {   const harnessPredicate =     query instanceof HarnessPredicate ? query : new HarnessPredicate(query, {});   const {name, hostSelector} = harnessPredicate.harnessType;   const description = `${name} with host element matching selector: \"${hostSelector}\"`;   const constraints = harnessPredicate.getDescription();   return (     description +     (constraints ? ` satisfying the constraints: ${harnessPredicate.getDescription()}` : '')   ); }  /** Gets a description string for a `TestElement` query. */ function _getDescriptionForTestElementQuery(selector: string) {   return `TestElement for element matching selector: \"${selector}\"`; }  /** Gets a description string for a `HarnessLoader` query. */ function _getDescriptionForHarnessLoaderQuery(selector: string) {   return `HarnessLoader for element matching selector: \"${selector}\"`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ElementDimensions} from './element-dimensions';  /** Modifier keys that may be held while typing. */ export interface ModifierKeys {   control?: boolean;   alt?: boolean;   shift?: boolean;   meta?: boolean; }  /** Data that can be attached to a custom event dispatched from a `TestElement`. */ export type EventData =   | string   | number   | boolean   | Function   | undefined   | null   | EventData[]   | {[key: string]: EventData};  /** An enum of non-text keys that can be used with the `sendKeys` method. */ // NOTE: This is a separate enum from `@angular/cdk/keycodes` because we don't necessarily want to // support every possible keyCode. We also can't rely on Protractor's `Key` because we don't want a // dependency on any particular testing framework here. Instead we'll just maintain this supported // list of keys and let individual concrete `HarnessEnvironment` classes map them to whatever key // representation is used in its respective testing framework. // tslint:disable-next-line:prefer-const-enum Seems like this causes some issues with System.js export enum TestKey {   BACKSPACE,   TAB,   ENTER,   SHIFT,   CONTROL,   ALT,   ESCAPE,   PAGE_UP,   PAGE_DOWN,   END,   HOME,   LEFT_ARROW,   UP_ARROW,   RIGHT_ARROW,   DOWN_ARROW,   INSERT,   DELETE,   F1,   F2,   F3,   F4,   F5,   F6,   F7,   F8,   F9,   F10,   F11,   F12,   META, }  /**  * This acts as a common interface for DOM elements across both unit and e2e tests. It is the  * interface through which the ComponentHarness interacts with the component's DOM.  */ export interface TestElement {   /** Blur the element. */   blur(): Promise<void>;    /** Clear the element's input (for input and textarea elements only). */   clear(): Promise<void>;    /**    * Click the element at the default location for the current environment. If you need to guarantee    * the element is clicked at a specific location, consider using `click('center')` or    * `click(x, y)` instead.    */   click(modifiers?: ModifierKeys): Promise<void>;    /** Click the element at the element's center. */   click(location: 'center', modifiers?: ModifierKeys): Promise<void>;    /**    * Click the element at the specified coordinates relative to the top-left of the element.    * @param relativeX Coordinate within the element, along the X-axis at which to click.    * @param relativeY Coordinate within the element, along the Y-axis at which to click.    * @param modifiers Modifier keys held while clicking    */   click(relativeX: number, relativeY: number, modifiers?: ModifierKeys): Promise<void>;    /**    * Right clicks on the element at the specified coordinates relative to the top-left of it.    * @param relativeX Coordinate within the element, along the X-axis at which to click.    * @param relativeY Coordinate within the element, along the Y-axis at which to click.    * @param modifiers Modifier keys held while clicking    */   rightClick(relativeX: number, relativeY: number, modifiers?: ModifierKeys): Promise<void>;    /** Focus the element. */   focus(): Promise<void>;    /** Get the computed value of the given CSS property for the element. */   getCssValue(property: string): Promise<string>;    /** Hovers the mouse over the element. */   hover(): Promise<void>;    /** Moves the mouse away from the element. */   mouseAway(): Promise<void>;    /**    * Sends the given string to the input as a series of key presses. Also fires input events    * and attempts to add the string to the Element's value. Note that some environments cannot    * reproduce native browser behavior for keyboard shortcuts such as Tab, Ctrl + A, etc.    * @throws An error if no keys have been specified.    */   sendKeys(...keys: (string | TestKey)[]): Promise<void>;    /**    * Sends the given string to the input as a series of key presses. Also fires input    * events and attempts to add the string to the Element's value.    * @throws An error if no keys have been specified.    */   sendKeys(modifiers: ModifierKeys, ...keys: (string | TestKey)[]): Promise<void>;    /**    * Gets the text from the element.    * @param options Options that affect what text is included.    */   text(options?: TextOptions): Promise<string>;    /**    * Sets the value of a `contenteditable` element.    * @param value Value to be set on the element.    * @breaking-change 16.0.0 Will become a required method.    */   setContenteditableValue?(value: string): Promise<void>;    /** Gets the value for the given attribute from the element. */   getAttribute(name: string): Promise<string | null>;    /** Checks whether the element has the given class. */   hasClass(name: string): Promise<boolean>;    /** Gets the dimensions of the element. */   getDimensions(): Promise<ElementDimensions>;    /** Gets the value of a property of an element. */   getProperty<T = any>(name: string): Promise<T>;    /** Checks whether this element matches the given selector. */   matchesSelector(selector: string): Promise<boolean>;    /** Checks whether the element is focused. */   isFocused(): Promise<boolean>;    /** Sets the value of a property of an input. */   setInputValue(value: string): Promise<void>;    // Note that ideally here we'd be selecting options based on their value, rather than their   // index, but we're limited by `@angular/forms` which will modify the option value in some cases.   // Since the value will be truncated, we can't rely on it to do the lookup in the DOM. See:   // https://github.com/angular/angular/blob/main/packages/forms/src/directives/select_control_value_accessor.ts#L19   /** Selects the options at the specified indexes inside of a native `select` element. */   selectOptions(...optionIndexes: number[]): Promise<void>;    /**    * Dispatches an event with a particular name.    * @param name Name of the event to be dispatched.    */   dispatchEvent(name: string, data?: Record<string, EventData>): Promise<void>; }  export interface TextOptions {   /** Optional selector for elements to exclude. */   exclude?: string; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Returns an error which reports that no keys have been specified.  * @docs-private  */ export function getNoKeysSpecifiedError() {   return Error('No keys have been specified.'); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Dimensions for element size and its position relative to the viewport.  */ export interface ElementDimensions {   top: number;   left: number;   width: number;   height: number; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Gets text of element excluding certain selectors within the element.  * @param element Element to get text from,  * @param excludeSelector Selector identifying which elements to exclude,  */ export function _getTextWithExcludedElements(element: Element, excludeSelector: string) {   const clone = element.cloneNode(true) as Element;   const exclusions = clone.querySelectorAll(excludeSelector);   for (let i = 0; i < exclusions.length; i++) {     exclusions[i].remove();   }   return (clone.textContent || '').trim(); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './component-harness'; export * from './harness-environment'; export * from './test-element'; export * from './test-element-errors'; export * from './element-dimensions'; export * from './text-filtering'; export * from './change-detection'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; "],"names":[],"mappings":"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"}
-------------------- SECTION 208 --------------------
{"version":3,"file":"observers.mjs","sources":["../../../../../../src/cdk/observers/observe-content.ts","../../../../../../src/cdk/observers/public-api.ts","../../../../../../src/cdk/observers/index.ts","../../../../../../src/cdk/observers/observers_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   coerceBooleanProperty,   coerceNumberProperty,   coerceElement,   BooleanInput,   NumberInput, } from '@angular/cdk/coercion'; import {   AfterContentInit,   Directive,   ElementRef,   EventEmitter,   Injectable,   Input,   NgModule,   NgZone,   OnDestroy,   Output, } from '@angular/core'; import {Observable, Subject, Subscription, Observer} from 'rxjs'; import {debounceTime} from 'rxjs/operators';  /**  * Factory that creates a new MutationObserver and allows us to stub it out in unit tests.  * @docs-private  */ @Injectable({providedIn: 'root'}) export class MutationObserverFactory {   create(callback: MutationCallback): MutationObserver | null {     return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);   } }  /** An injectable service that allows watching elements for changes to their content. */ @Injectable({providedIn: 'root'}) export class ContentObserver implements OnDestroy {   /** Keeps track of the existing MutationObservers so they can be reused. */   private _observedElements = new Map<     Element,     {       observer: MutationObserver | null;       readonly stream: Subject<MutationRecord[]>;       count: number;     }   >();    constructor(private _mutationObserverFactory: MutationObserverFactory) {}    ngOnDestroy() {     this._observedElements.forEach((_, element) => this._cleanupObserver(element));   }    /**    * Observe content changes on an element.    * @param element The element to observe for content changes.    */   observe(element: Element): Observable<MutationRecord[]>;    /**    * Observe content changes on an element.    * @param element The element to observe for content changes.    */   observe(element: ElementRef<Element>): Observable<MutationRecord[]>;    observe(elementOrRef: Element | ElementRef<Element>): Observable<MutationRecord[]> {     const element = coerceElement(elementOrRef);      return new Observable((observer: Observer<MutationRecord[]>) => {       const stream = this._observeElement(element);       const subscription = stream.subscribe(observer);        return () => {         subscription.unsubscribe();         this._unobserveElement(element);       };     });   }    /**    * Observes the given element by using the existing MutationObserver if available, or creating a    * new one if not.    */   private _observeElement(element: Element): Subject<MutationRecord[]> {     if (!this._observedElements.has(element)) {       const stream = new Subject<MutationRecord[]>();       const observer = this._mutationObserverFactory.create(mutations => stream.next(mutations));       if (observer) {         observer.observe(element, {           characterData: true,           childList: true,           subtree: true,         });       }       this._observedElements.set(element, {observer, stream, count: 1});     } else {       this._observedElements.get(element)!.count++;     }     return this._observedElements.get(element)!.stream;   }    /**    * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is    * observing this element.    */   private _unobserveElement(element: Element) {     if (this._observedElements.has(element)) {       this._observedElements.get(element)!.count--;       if (!this._observedElements.get(element)!.count) {         this._cleanupObserver(element);       }     }   }    /** Clean up the underlying MutationObserver for the specified element. */   private _cleanupObserver(element: Element) {     if (this._observedElements.has(element)) {       const {observer, stream} = this._observedElements.get(element)!;       if (observer) {         observer.disconnect();       }       stream.complete();       this._observedElements.delete(element);     }   } }  /**  * Directive that triggers a callback whenever the content of  * its associated element has changed.  */ @Directive({   selector: '[cdkObserveContent]',   exportAs: 'cdkObserveContent', }) export class CdkObserveContent implements AfterContentInit, OnDestroy {   /** Event emitted for each change in the element's content. */   @Output('cdkObserveContent') readonly event = new EventEmitter<MutationRecord[]>();    /**    * Whether observing content is disabled. This option can be used    * to disconnect the underlying MutationObserver until it is needed.    */   @Input('cdkObserveContentDisabled')   get disabled(): boolean {     return this._disabled;   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);     this._disabled ? this._unsubscribe() : this._subscribe();   }   private _disabled = false;    /** Debounce interval for emitting the changes. */   @Input()   get debounce(): number {     return this._debounce;   }   set debounce(value: NumberInput) {     this._debounce = coerceNumberProperty(value);     this._subscribe();   }   private _debounce: number;    private _currentSubscription: Subscription | null = null;    constructor(     private _contentObserver: ContentObserver,     private _elementRef: ElementRef<HTMLElement>,     private _ngZone: NgZone,   ) {}    ngAfterContentInit() {     if (!this._currentSubscription && !this.disabled) {       this._subscribe();     }   }    ngOnDestroy() {     this._unsubscribe();   }    private _subscribe() {     this._unsubscribe();     const stream = this._contentObserver.observe(this._elementRef);      // TODO(mmalerba): We shouldn't be emitting on this @Output() outside the zone.     // Consider brining it back inside the zone next time we're making breaking changes.     // Bringing it back inside can cause things like infinite change detection loops and changed     // after checked errors if people's code isn't handling it properly.     this._ngZone.runOutsideAngular(() => {       this._currentSubscription = (         this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream       ).subscribe(this.event);     });   }    private _unsubscribe() {     this._currentSubscription?.unsubscribe();   } }  @NgModule({   exports: [CdkObserveContent],   declarations: [CdkObserveContent],   providers: [MutationObserverFactory], }) export class ObserversModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './observe-content'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 209 --------------------
{"version":3,"file":"tree.mjs","sources":["../../../../../../src/cdk/tree/control/base-tree-control.ts","../../../../../../src/cdk/tree/control/flat-tree-control.ts","../../../../../../src/cdk/tree/control/nested-tree-control.ts","../../../../../../src/cdk/tree/outlet.ts","../../../../../../src/cdk/tree/node.ts","../../../../../../src/cdk/tree/tree-errors.ts","../../../../../../src/cdk/tree/tree.ts","../../../../../../src/cdk/tree/nested-node.ts","../../../../../../src/cdk/tree/padding.ts","../../../../../../src/cdk/tree/toggle.ts","../../../../../../src/cdk/tree/tree-module.ts","../../../../../../src/cdk/tree/public-api.ts","../../../../../../src/cdk/tree/index.ts","../../../../../../src/cdk/tree/tree_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {SelectionModel} from '@angular/cdk/collections'; import {Observable} from 'rxjs'; import {TreeControl} from './tree-control';  /** Base tree control. It has basic toggle/expand/collapse operations on a single data node. */ export abstract class BaseTreeControl<T, K = T> implements TreeControl<T, K> {   /** Gets a list of descendent data nodes of a subtree rooted at given data node recursively. */   abstract getDescendants(dataNode: T): T[];    /** Expands all data nodes in the tree. */   abstract expandAll(): void;    /** Saved data node for `expandAll` action. */   dataNodes: T[];    /** A selection model with multi-selection to track expansion status. */   expansionModel: SelectionModel<K> = new SelectionModel<K>(true);    /**    * Returns the identifier by which a dataNode should be tracked, should its    * reference change.    *    * Similar to trackBy for *ngFor    */   trackBy?: (dataNode: T) => K;    /** Get depth of a given data node, return the level number. This is for flat tree node. */   getLevel: (dataNode: T) => number;    /**    * Whether the data node is expandable. Returns true if expandable.    * This is for flat tree node.    */   isExpandable: (dataNode: T) => boolean;    /** Gets a stream that emits whenever the given data node's children change. */   getChildren: (dataNode: T) => Observable<T[]> | T[] | undefined | null;    /** Toggles one single data node's expanded/collapsed state. */   toggle(dataNode: T): void {     this.expansionModel.toggle(this._trackByValue(dataNode));   }    /** Expands one single data node. */   expand(dataNode: T): void {     this.expansionModel.select(this._trackByValue(dataNode));   }    /** Collapses one single data node. */   collapse(dataNode: T): void {     this.expansionModel.deselect(this._trackByValue(dataNode));   }    /** Whether a given data node is expanded or not. Returns true if the data node is expanded. */   isExpanded(dataNode: T): boolean {     return this.expansionModel.isSelected(this._trackByValue(dataNode));   }    /** Toggles a subtree rooted at `node` recursively. */   toggleDescendants(dataNode: T): void {     this.expansionModel.isSelected(this._trackByValue(dataNode))       ? this.collapseDescendants(dataNode)       : this.expandDescendants(dataNode);   }    /** Collapse all dataNodes in the tree. */   collapseAll(): void {     this.expansionModel.clear();   }    /** Expands a subtree rooted at given data node recursively. */   expandDescendants(dataNode: T): void {     let toBeProcessed = [dataNode];     toBeProcessed.push(...this.getDescendants(dataNode));     this.expansionModel.select(...toBeProcessed.map(value => this._trackByValue(value)));   }    /** Collapses a subtree rooted at given data node recursively. */   collapseDescendants(dataNode: T): void {     let toBeProcessed = [dataNode];     toBeProcessed.push(...this.getDescendants(dataNode));     this.expansionModel.deselect(...toBeProcessed.map(value => this._trackByValue(value)));   }    protected _trackByValue(value: T | K): K {     return this.trackBy ? this.trackBy(value as T) : (value as K);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BaseTreeControl} from './base-tree-control';  /** Optional set of configuration that can be provided to the FlatTreeControl. */ export interface FlatTreeControlOptions<T, K> {   trackBy?: (dataNode: T) => K; }  /** Flat tree control. Able to expand/collapse a subtree recursively for flattened tree. */ export class FlatTreeControl<T, K = T> extends BaseTreeControl<T, K> {   /** Construct with flat tree data node functions getLevel and isExpandable. */   constructor(     public override getLevel: (dataNode: T) => number,     public override isExpandable: (dataNode: T) => boolean,     public options?: FlatTreeControlOptions<T, K>,   ) {     super();      if (this.options) {       this.trackBy = this.options.trackBy;     }   }    /**    * Gets a list of the data node's subtree of descendent data nodes.    *    * To make this working, the `dataNodes` of the TreeControl must be flattened tree nodes    * with correct levels.    */   getDescendants(dataNode: T): T[] {     const startIndex = this.dataNodes.indexOf(dataNode);     const results: T[] = [];      // Goes through flattened tree nodes in the `dataNodes` array, and get all descendants.     // The level of descendants of a tree node must be greater than the level of the given     // tree node.     // If we reach a node whose level is equal to the level of the tree node, we hit a sibling.     // If we reach a node whose level is greater than the level of the tree node, we hit a     // sibling of an ancestor.     for (       let i = startIndex + 1;       i < this.dataNodes.length && this.getLevel(dataNode) < this.getLevel(this.dataNodes[i]);       i++     ) {       results.push(this.dataNodes[i]);     }     return results;   }    /**    * Expands all data nodes in the tree.    *    * To make this working, the `dataNodes` variable of the TreeControl must be set to all flattened    * data nodes of the tree.    */   expandAll(): void {     this.expansionModel.select(...this.dataNodes.map(node => this._trackByValue(node)));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {Observable, isObservable} from 'rxjs'; import {take, filter} from 'rxjs/operators'; import {BaseTreeControl} from './base-tree-control';  /** Optional set of configuration that can be provided to the NestedTreeControl. */ export interface NestedTreeControlOptions<T, K> {   trackBy?: (dataNode: T) => K; }  /** Nested tree control. Able to expand/collapse a subtree recursively for NestedNode type. */ export class NestedTreeControl<T, K = T> extends BaseTreeControl<T, K> {   /** Construct with nested tree function getChildren. */   constructor(     public override getChildren: (dataNode: T) => Observable<T[]> | T[] | undefined | null,     public options?: NestedTreeControlOptions<T, K>,   ) {     super();      if (this.options) {       this.trackBy = this.options.trackBy;     }   }    /**    * Expands all dataNodes in the tree.    *    * To make this working, the `dataNodes` variable of the TreeControl must be set to all root level    * data nodes of the tree.    */   expandAll(): void {     this.expansionModel.clear();     const allNodes = this.dataNodes.reduce(       (accumulator: T[], dataNode) => [...accumulator, ...this.getDescendants(dataNode), dataNode],       [],     );     this.expansionModel.select(...allNodes.map(node => this._trackByValue(node)));   }    /** Gets a list of descendant dataNodes of a subtree rooted at given data node recursively. */   getDescendants(dataNode: T): T[] {     const descendants: T[] = [];      this._getDescendants(descendants, dataNode);     // Remove the node itself     return descendants.splice(1);   }    /** A helper function to get descendants recursively. */   protected _getDescendants(descendants: T[], dataNode: T): void {     descendants.push(dataNode);     const childrenNodes = this.getChildren(dataNode);     if (Array.isArray(childrenNodes)) {       childrenNodes.forEach((child: T) => this._getDescendants(descendants, child));     } else if (isObservable(childrenNodes)) {       // TypeScript as of version 3.5 doesn't seem to treat `Boolean` like a function that       // returns a `boolean` specifically in the context of `filter`, so we manually clarify that.       childrenNodes.pipe(take(1), filter(Boolean as () => boolean)).subscribe(children => {         for (const child of children) {           this._getDescendants(descendants, child);         }       });     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {Directive, Inject, InjectionToken, Optional, ViewContainerRef} from '@angular/core';  /**  * Injection token used to provide a `CdkTreeNode` to its outlet.  * Used primarily to avoid circular imports.  * @docs-private  */ export const CDK_TREE_NODE_OUTLET_NODE = new InjectionToken<{}>('CDK_TREE_NODE_OUTLET_NODE');  /**  * Outlet for nested CdkNode. Put `[cdkTreeNodeOutlet]` on a tag to place children dataNodes  * inside the outlet.  */ @Directive({   selector: '[cdkTreeNodeOutlet]', }) export class CdkTreeNodeOutlet {   constructor(     public viewContainer: ViewContainerRef,     @Inject(CDK_TREE_NODE_OUTLET_NODE) @Optional() public _node?: any,   ) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, TemplateRef} from '@angular/core';  /** Context provided to the tree node component. */ export class CdkTreeNodeOutletContext<T> {   /** Data for the node. */   $implicit: T;    /** Depth of the node. */   level: number;    /** Index location of the node. */   index?: number;    /** Length of the number of total dataNodes. */   count?: number;    constructor(data: T) {     this.$implicit = data;   } }  /**  * Data node definition for the CdkTree.  * Captures the node's template and a when predicate that describes when this node should be used.  */ @Directive({   selector: '[cdkTreeNodeDef]',   inputs: ['when: cdkTreeNodeDefWhen'], }) export class CdkTreeNodeDef<T> {   /**    * Function that should return true if this node template should be used for the provided node    * data and index. If left undefined, this node will be considered the default node template to    * use when no other when functions return true for the data.    * For every node, there must be at least one when function that passes or an undefined to    * default.    */   when: (index: number, nodeData: T) => boolean;    /** @docs-private */   constructor(public template: TemplateRef<any>) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Returns an error to be thrown when there is no usable data.  * @docs-private  */ export function getTreeNoValidDataSourceError() {   return Error(`A valid data source must be provided.`); }  /**  * Returns an error to be thrown when there are multiple nodes that are missing a when function.  * @docs-private  */ export function getTreeMultipleDefaultNodeDefsError() {   return Error(`There can only be one default row without a when predicate function.`); }  /**  * Returns an error to be thrown when there are no matching node defs for a particular set of data.  * @docs-private  */ export function getTreeMissingMatchingNodeDefError() {   return Error(`Could not find a matching node definition for the provided node data.`); }  /**  * Returns an error to be thrown when there are tree control.  * @docs-private  */ export function getTreeControlMissingError() {   return Error(`Could not find a tree control for the tree.`); }  /**  * Returns an error to be thrown when tree control did not implement functions for flat/nested node.  * @docs-private  */ export function getTreeControlFunctionsMissingError() {   return Error(`Could not find functions for nested/flat tree in tree control.`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {FocusableOption} from '@angular/cdk/a11y'; import {CollectionViewer, DataSource, isDataSource} from '@angular/cdk/collections'; import {   AfterContentChecked,   ChangeDetectionStrategy,   ChangeDetectorRef,   Component,   ContentChildren,   Directive,   ElementRef,   Input,   IterableChangeRecord,   IterableDiffer,   IterableDiffers,   OnDestroy,   OnInit,   QueryList,   TrackByFunction,   ViewChild,   ViewContainerRef,   ViewEncapsulation, } from '@angular/core'; import {   BehaviorSubject,   isObservable,   Observable,   of as observableOf,   Subject,   Subscription, } from 'rxjs'; import {takeUntil} from 'rxjs/operators'; import {TreeControl} from './control/tree-control'; import {CdkTreeNodeDef, CdkTreeNodeOutletContext} from './node'; import {CdkTreeNodeOutlet} from './outlet'; import {   getTreeControlFunctionsMissingError,   getTreeControlMissingError,   getTreeMissingMatchingNodeDefError,   getTreeMultipleDefaultNodeDefsError,   getTreeNoValidDataSourceError, } from './tree-errors'; import {coerceNumberProperty} from '@angular/cdk/coercion';  /**  * CDK tree component that connects with a data source to retrieve data of type `T` and renders  * dataNodes with hierarchy. Updates the dataNodes when new data is provided by the data source.  */ @Component({   selector: 'cdk-tree',   exportAs: 'cdkTree',   template: `<ng-container cdkTreeNodeOutlet></ng-container>`,   host: {     'class': 'cdk-tree',     'role': 'tree',   },   encapsulation: ViewEncapsulation.None,    // The \"OnPush\" status for the `CdkTree` component is effectively a noop, so we are removing it.   // The view for `CdkTree` consists entirely of templates declared in other views. As they are   // declared elsewhere, they are checked when their declaration points are checked.   // tslint:disable-next-line:validate-decorators   changeDetection: ChangeDetectionStrategy.Default, }) export class CdkTree<T, K = T> implements AfterContentChecked, CollectionViewer, OnDestroy, OnInit {   /** Subject that emits when the component has been destroyed. */   private readonly _onDestroy = new Subject<void>();    /** Differ used to find the changes in the data provided by the data source. */   private _dataDiffer: IterableDiffer<T>;    /** Stores the node definition that does not have a when predicate. */   private _defaultNodeDef: CdkTreeNodeDef<T> | null;    /** Data subscription */   private _dataSubscription: Subscription | null;    /** Level of nodes */   private _levels: Map<T, number> = new Map<T, number>();    /**    * Provides a stream containing the latest data array to render. Influenced by the tree's    * stream of view window (what dataNodes are currently on screen).    * Data source can be an observable of data array, or a data array to render.    */   @Input()   get dataSource(): DataSource<T> | Observable<T[]> | T[] {     return this._dataSource;   }   set dataSource(dataSource: DataSource<T> | Observable<T[]> | T[]) {     if (this._dataSource !== dataSource) {       this._switchDataSource(dataSource);     }   }   private _dataSource: DataSource<T> | Observable<T[]> | T[];    /** The tree controller */   @Input() treeControl: TreeControl<T, K>;    /**    * Tracking function that will be used to check the differences in data changes. Used similarly    * to `ngFor` `trackBy` function. Optimize node operations by identifying a node based on its data    * relative to the function to know if a node should be added/removed/moved.    * Accepts a function that takes two parameters, `index` and `item`.    */   @Input() trackBy: TrackByFunction<T>;    // Outlets within the tree's template where the dataNodes will be inserted.   @ViewChild(CdkTreeNodeOutlet, {static: true}) _nodeOutlet: CdkTreeNodeOutlet;    /** The tree node template for the tree */   @ContentChildren(CdkTreeNodeDef, {     // We need to use `descendants: true`, because Ivy will no longer match     // indirect descendants if it's left as false.     descendants: true,   })   _nodeDefs: QueryList<CdkTreeNodeDef<T>>;    // TODO(tinayuangao): Setup a listener for scrolling, emit the calculated view to viewChange.   //     Remove the MAX_VALUE in viewChange   /**    * Stream containing the latest information on what rows are being displayed on screen.    * Can be used by the data source to as a heuristic of what data should be provided.    */   readonly viewChange = new BehaviorSubject<{start: number; end: number}>({     start: 0,     end: Number.MAX_VALUE,   });    constructor(private _differs: IterableDiffers, private _changeDetectorRef: ChangeDetectorRef) {}    ngOnInit() {     this._dataDiffer = this._differs.find([]).create(this.trackBy);     if (!this.treeControl && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getTreeControlMissingError();     }   }    ngOnDestroy() {     this._nodeOutlet.viewContainer.clear();      this.viewChange.complete();     this._onDestroy.next();     this._onDestroy.complete();      if (this._dataSource && typeof (this._dataSource as DataSource<T>).disconnect === 'function') {       (this.dataSource as DataSource<T>).disconnect(this);     }      if (this._dataSubscription) {       this._dataSubscription.unsubscribe();       this._dataSubscription = null;     }   }    ngAfterContentChecked() {     const defaultNodeDefs = this._nodeDefs.filter(def => !def.when);     if (defaultNodeDefs.length > 1 && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getTreeMultipleDefaultNodeDefsError();     }     this._defaultNodeDef = defaultNodeDefs[0];      if (this.dataSource && this._nodeDefs && !this._dataSubscription) {       this._observeRenderChanges();     }   }    // TODO(tinayuangao): Work on keyboard traversal and actions, make sure it's working for RTL   //     and nested trees.    /**    * Switch to the provided data source by resetting the data and unsubscribing from the current    * render change subscription if one exists. If the data source is null, interpret this by    * clearing the node outlet. Otherwise start listening for new data.    */   private _switchDataSource(dataSource: DataSource<T> | Observable<T[]> | T[]) {     if (this._dataSource && typeof (this._dataSource as DataSource<T>).disconnect === 'function') {       (this.dataSource as DataSource<T>).disconnect(this);     }      if (this._dataSubscription) {       this._dataSubscription.unsubscribe();       this._dataSubscription = null;     }      // Remove the all dataNodes if there is now no data source     if (!dataSource) {       this._nodeOutlet.viewContainer.clear();     }      this._dataSource = dataSource;     if (this._nodeDefs) {       this._observeRenderChanges();     }   }    /** Set up a subscription for the data provided by the data source. */   private _observeRenderChanges() {     let dataStream: Observable<readonly T[]> | undefined;      if (isDataSource(this._dataSource)) {       dataStream = this._dataSource.connect(this);     } else if (isObservable(this._dataSource)) {       dataStream = this._dataSource;     } else if (Array.isArray(this._dataSource)) {       dataStream = observableOf(this._dataSource);     }      if (dataStream) {       this._dataSubscription = dataStream         .pipe(takeUntil(this._onDestroy))         .subscribe(data => this.renderNodeChanges(data));     } else if (typeof ngDevMode === 'undefined' || ngDevMode) {       throw getTreeNoValidDataSourceError();     }   }    /** Check for changes made in the data and render each change (node added/removed/moved). */   renderNodeChanges(     data: readonly T[],     dataDiffer: IterableDiffer<T> = this._dataDiffer,     viewContainer: ViewContainerRef = this._nodeOutlet.viewContainer,     parentData?: T,   ) {     const changes = dataDiffer.diff(data);     if (!changes) {       return;     }      changes.forEachOperation(       (         item: IterableChangeRecord<T>,         adjustedPreviousIndex: number | null,         currentIndex: number | null,       ) => {         if (item.previousIndex == null) {           this.insertNode(data[currentIndex!], currentIndex!, viewContainer, parentData);         } else if (currentIndex == null) {           viewContainer.remove(adjustedPreviousIndex!);           this._levels.delete(item.item);         } else {           const view = viewContainer.get(adjustedPreviousIndex!);           viewContainer.move(view!, currentIndex);         }       },     );      this._changeDetectorRef.detectChanges();   }    /**    * Finds the matching node definition that should be used for this node data. If there is only    * one node definition, it is returned. Otherwise, find the node definition that has a when    * predicate that returns true with the data. If none return true, return the default node    * definition.    */   _getNodeDef(data: T, i: number): CdkTreeNodeDef<T> {     if (this._nodeDefs.length === 1) {       return this._nodeDefs.first!;     }      const nodeDef =       this._nodeDefs.find(def => def.when && def.when(i, data)) || this._defaultNodeDef;      if (!nodeDef && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getTreeMissingMatchingNodeDefError();     }      return nodeDef!;   }    /**    * Create the embedded view for the data node template and place it in the correct index location    * within the data node view container.    */   insertNode(nodeData: T, index: number, viewContainer?: ViewContainerRef, parentData?: T) {     const node = this._getNodeDef(nodeData, index);      // Node context that will be provided to created embedded view     const context = new CdkTreeNodeOutletContext<T>(nodeData);      // If the tree is flat tree, then use the `getLevel` function in flat tree control     // Otherwise, use the level of parent node.     if (this.treeControl.getLevel) {       context.level = this.treeControl.getLevel(nodeData);     } else if (typeof parentData !== 'undefined' && this._levels.has(parentData)) {       context.level = this._levels.get(parentData)! + 1;     } else {       context.level = 0;     }     this._levels.set(nodeData, context.level);      // Use default tree nodeOutlet, or nested node's nodeOutlet     const container = viewContainer ? viewContainer : this._nodeOutlet.viewContainer;     container.createEmbeddedView(node.template, context, index);      // Set the data to just created `CdkTreeNode`.     // The `CdkTreeNode` created from `createEmbeddedView` will be saved in static variable     //     `mostRecentTreeNode`. We get it from static variable and pass the node data to it.     if (CdkTreeNode.mostRecentTreeNode) {       CdkTreeNode.mostRecentTreeNode.data = nodeData;     }   } }  /**  * Tree node for CdkTree. It contains the data in the tree node.  */ @Directive({   selector: 'cdk-tree-node',   exportAs: 'cdkTreeNode',   host: {     'class': 'cdk-tree-node',     '[attr.aria-expanded]': 'isExpanded',   }, }) export class CdkTreeNode<T, K = T> implements FocusableOption, OnDestroy, OnInit {   /**    * The role of the tree node.    * @deprecated The correct role is 'treeitem', 'group' should not be used. This input will be    *   removed in a future version.    * @breaking-change 12.0.0 Remove this input    */   @Input() get role(): 'treeitem' | 'group' {     return 'treeitem';   }    set role(_role: 'treeitem' | 'group') {     // TODO: move to host after View Engine deprecation     this._elementRef.nativeElement.setAttribute('role', _role);   }    /**    * The most recently created `CdkTreeNode`. We save it in static variable so we can retrieve it    * in `CdkTree` and set the data to it.    */   static mostRecentTreeNode: CdkTreeNode<any> | null = null;    /** Subject that emits when the component has been destroyed. */   protected readonly _destroyed = new Subject<void>();    /** Emits when the node's data has changed. */   readonly _dataChanges = new Subject<void>();    private _parentNodeAriaLevel: number;    /** The tree node's data. */   get data(): T {     return this._data;   }   set data(value: T) {     if (value !== this._data) {       this._data = value;       this._setRoleFromData();       this._dataChanges.next();     }   }   protected _data: T;    get isExpanded(): boolean {     return this._tree.treeControl.isExpanded(this._data);   }    get level(): number {     // If the treeControl has a getLevel method, use it to get the level. Otherwise read the     // aria-level off the parent node and use it as the level for this node (note aria-level is     // 1-indexed, while this property is 0-indexed, so we don't need to increment).     return this._tree.treeControl.getLevel       ? this._tree.treeControl.getLevel(this._data)       : this._parentNodeAriaLevel;   }    constructor(protected _elementRef: ElementRef<HTMLElement>, protected _tree: CdkTree<T, K>) {     CdkTreeNode.mostRecentTreeNode = this as CdkTreeNode<T, K>;     this.role = 'treeitem';   }    ngOnInit(): void {     this._parentNodeAriaLevel = getParentNodeAriaLevel(this._elementRef.nativeElement);     this._elementRef.nativeElement.setAttribute('aria-level', `${this.level + 1}`);   }    ngOnDestroy() {     // If this is the last tree node being destroyed,     // clear out the reference to avoid leaking memory.     if (CdkTreeNode.mostRecentTreeNode === this) {       CdkTreeNode.mostRecentTreeNode = null;     }      this._dataChanges.complete();     this._destroyed.next();     this._destroyed.complete();   }    /** Focuses the menu item. Implements for FocusableOption. */   focus(): void {     this._elementRef.nativeElement.focus();   }    // TODO: role should eventually just be set in the component host   protected _setRoleFromData(): void {     if (       !this._tree.treeControl.isExpandable &&       !this._tree.treeControl.getChildren &&       (typeof ngDevMode === 'undefined' || ngDevMode)     ) {       throw getTreeControlFunctionsMissingError();     }     this.role = 'treeitem';   } }  function getParentNodeAriaLevel(nodeElement: HTMLElement): number {   let parent = nodeElement.parentElement;   while (parent && !isNodeElement(parent)) {     parent = parent.parentElement;   }   if (!parent) {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       throw Error('Incorrect tree structure containing detached node.');     } else {       return -1;     }   } else if (parent.classList.contains('cdk-nested-tree-node')) {     return coerceNumberProperty(parent.getAttribute('aria-level')!);   } else {     // The ancestor element is the cdk-tree itself     return 0;   } }  function isNodeElement(element: HTMLElement) {   const classList = element.classList;   return !!(classList?.contains('cdk-nested-tree-node') || classList?.contains('cdk-tree')); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {   AfterContentInit,   ContentChildren,   Directive,   ElementRef,   IterableDiffer,   IterableDiffers,   OnDestroy,   OnInit,   QueryList, } from '@angular/core'; import {isObservable} from 'rxjs'; import {takeUntil} from 'rxjs/operators';  import {CDK_TREE_NODE_OUTLET_NODE, CdkTreeNodeOutlet} from './outlet'; import {CdkTree, CdkTreeNode} from './tree'; import {getTreeControlFunctionsMissingError} from './tree-errors';  /**  * Nested node is a child of `<cdk-tree>`. It works with nested tree.  * By using `cdk-nested-tree-node` component in tree node template, children of the parent node will  * be added in the `cdkTreeNodeOutlet` in tree node template.  * The children of node will be automatically added to `cdkTreeNodeOutlet`.  */ @Directive({   selector: 'cdk-nested-tree-node',   exportAs: 'cdkNestedTreeNode',   inputs: ['role', 'disabled', 'tabIndex'],   providers: [     {provide: CdkTreeNode, useExisting: CdkNestedTreeNode},     {provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: CdkNestedTreeNode},   ],   host: {     'class': 'cdk-nested-tree-node',   }, }) export class CdkNestedTreeNode<T, K = T>   extends CdkTreeNode<T, K>   implements AfterContentInit, OnDestroy, OnInit {   /** Differ used to find the changes in the data provided by the data source. */   private _dataDiffer: IterableDiffer<T>;    /** The children data dataNodes of current node. They will be placed in `CdkTreeNodeOutlet`. */   protected _children: T[];    /** The children node placeholder. */   @ContentChildren(CdkTreeNodeOutlet, {     // We need to use `descendants: true`, because Ivy will no longer match     // indirect descendants if it's left as false.     descendants: true,   })   nodeOutlet: QueryList<CdkTreeNodeOutlet>;    constructor(     elementRef: ElementRef<HTMLElement>,     tree: CdkTree<T, K>,     protected _differs: IterableDiffers,   ) {     super(elementRef, tree);   }    ngAfterContentInit() {     this._dataDiffer = this._differs.find([]).create(this._tree.trackBy);     if (!this._tree.treeControl.getChildren && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getTreeControlFunctionsMissingError();     }     const childrenNodes = this._tree.treeControl.getChildren(this.data);     if (Array.isArray(childrenNodes)) {       this.updateChildrenNodes(childrenNodes as T[]);     } else if (isObservable(childrenNodes)) {       childrenNodes         .pipe(takeUntil(this._destroyed))         .subscribe(result => this.updateChildrenNodes(result));     }     this.nodeOutlet.changes       .pipe(takeUntil(this._destroyed))       .subscribe(() => this.updateChildrenNodes());   }    // This is a workaround for https://github.com/angular/angular/issues/23091   // In aot mode, the lifecycle hooks from parent class are not called.   override ngOnInit() {     super.ngOnInit();   }    override ngOnDestroy() {     this._clear();     super.ngOnDestroy();   }    /** Add children dataNodes to the NodeOutlet */   protected updateChildrenNodes(children?: T[]): void {     const outlet = this._getNodeOutlet();     if (children) {       this._children = children;     }     if (outlet && this._children) {       const viewContainer = outlet.viewContainer;       this._tree.renderNodeChanges(this._children, this._dataDiffer, viewContainer, this._data);     } else {       // Reset the data differ if there's no children nodes displayed       this._dataDiffer.diff([]);     }   }    /** Clear the children dataNodes. */   protected _clear(): void {     const outlet = this._getNodeOutlet();     if (outlet) {       outlet.viewContainer.clear();       this._dataDiffer.diff([]);     }   }    /** Gets the outlet for the current node. */   private _getNodeOutlet() {     const outlets = this.nodeOutlet;      // Note that since we use `descendants: true` on the query, we have to ensure     // that we don't pick up the outlet of a child node by accident.     return outlets && outlets.find(outlet => !outlet._node || outlet._node === this);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion'; import {Directive, ElementRef, Input, OnDestroy, Optional} from '@angular/core'; import {takeUntil} from 'rxjs/operators'; import {Subject} from 'rxjs'; import {CdkTree, CdkTreeNode} from './tree';  /** Regex used to split a string on its CSS units. */ const cssUnitPattern = /([A-Za-z%]+)$/;  /**  * Indent for the children tree dataNodes.  * This directive will add left-padding to the node to show hierarchy.  */ @Directive({   selector: '[cdkTreeNodePadding]', }) export class CdkTreeNodePadding<T, K = T> implements OnDestroy {   /** Current padding value applied to the element. Used to avoid unnecessarily hitting the DOM. */   private _currentPadding: string | null;    /** Subject that emits when the component has been destroyed. */   private readonly _destroyed = new Subject<void>();    /** CSS units used for the indentation value. */   indentUnits = 'px';    /** The level of depth of the tree node. The padding will be `level * indent` pixels. */   @Input('cdkTreeNodePadding')   get level(): number {     return this._level;   }   set level(value: NumberInput) {     this._setLevelInput(value);   }   _level: number;    /**    * The indent for each level. Can be a number or a CSS string.    * Default number 40px from material design menu sub-menu spec.    */   @Input('cdkTreeNodePaddingIndent')   get indent(): number | string {     return this._indent;   }   set indent(indent: number | string) {     this._setIndentInput(indent);   }   _indent: number = 40;    constructor(     private _treeNode: CdkTreeNode<T, K>,     private _tree: CdkTree<T, K>,     private _element: ElementRef<HTMLElement>,     @Optional() private _dir: Directionality,   ) {     this._setPadding();     if (_dir) {       _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => this._setPadding(true));     }      // In Ivy the indentation binding might be set before the tree node's data has been added,     // which means that we'll miss the first render. We have to subscribe to changes in the     // data to ensure that everything is up to date.     _treeNode._dataChanges.subscribe(() => this._setPadding());   }    ngOnDestroy() {     this._destroyed.next();     this._destroyed.complete();   }    /** The padding indent value for the tree node. Returns a string with px numbers if not null. */   _paddingIndent(): string | null {     const nodeLevel =       this._treeNode.data && this._tree.treeControl.getLevel         ? this._tree.treeControl.getLevel(this._treeNode.data)         : null;     const level = this._level == null ? nodeLevel : this._level;     return typeof level === 'number' ? `${level * this._indent}${this.indentUnits}` : null;   }    _setPadding(forceChange = false) {     const padding = this._paddingIndent();      if (padding !== this._currentPadding || forceChange) {       const element = this._element.nativeElement;       const paddingProp = this._dir && this._dir.value === 'rtl' ? 'paddingRight' : 'paddingLeft';       const resetProp = paddingProp === 'paddingLeft' ? 'paddingRight' : 'paddingLeft';       element.style[paddingProp] = padding || '';       element.style[resetProp] = '';       this._currentPadding = padding;     }   }    /**    * This has been extracted to a util because of TS 4 and VE.    * View Engine doesn't support property rename inheritance.    * TS 4.0 doesn't allow properties to override accessors or vice-versa.    * @docs-private    */   protected _setLevelInput(value: NumberInput) {     // Set to null as the fallback value so that _setPadding can fall back to the node level if the     // consumer set the directive as `cdkTreeNodePadding=\"\"`. We still want to take this value if     // they set 0 explicitly.     this._level = coerceNumberProperty(value, null)!;     this._setPadding();   }    /**    * This has been extracted to a util because of TS 4 and VE.    * View Engine doesn't support property rename inheritance.    * TS 4.0 doesn't allow properties to override accessors or vice-versa.    * @docs-private    */   protected _setIndentInput(indent: number | string) {     let value = indent;     let units = 'px';      if (typeof indent === 'string') {       const parts = indent.split(cssUnitPattern);       value = parts[0];       units = parts[1] || units;     }      this.indentUnits = units;     this._indent = coerceNumberProperty(value);     this._setPadding();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {Directive, Input} from '@angular/core';  import {CdkTree, CdkTreeNode} from './tree';  /**  * Node toggle to expand/collapse the node.  */ @Directive({   selector: '[cdkTreeNodeToggle]',   host: {     '(click)': '_toggle($event)',   }, }) export class CdkTreeNodeToggle<T, K = T> {   /** Whether expand/collapse the node recursively. */   @Input('cdkTreeNodeToggleRecursive')   get recursive(): boolean {     return this._recursive;   }   set recursive(value: BooleanInput) {     this._recursive = coerceBooleanProperty(value);   }   protected _recursive = false;    constructor(protected _tree: CdkTree<T, K>, protected _treeNode: CdkTreeNode<T, K>) {}    _toggle(event: Event): void {     this.recursive       ? this._tree.treeControl.toggleDescendants(this._treeNode.data)       : this._tree.treeControl.toggle(this._treeNode.data);      event.stopPropagation();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {CdkTreeNodeOutlet} from './outlet'; import {CdkTreeNodePadding} from './padding'; import {CdkTreeNodeToggle} from './toggle'; import {CdkTree, CdkTreeNode} from './tree'; import {CdkTreeNodeDef} from './node'; import {CdkNestedTreeNode} from './nested-node';  const EXPORTED_DECLARATIONS = [   CdkNestedTreeNode,   CdkTreeNodeDef,   CdkTreeNodePadding,   CdkTreeNodeToggle,   CdkTree,   CdkTreeNode,   CdkTreeNodeOutlet, ];  @NgModule({   exports: EXPORTED_DECLARATIONS,   declarations: EXPORTED_DECLARATIONS, }) export class CdkTreeModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './control/base-tree-control'; export * from './control/flat-tree-control'; export * from './control/nested-tree-control'; export * from './control/tree-control'; export * from './nested-node'; export * from './node'; export * from './padding'; export * from './outlet'; export * from './tree'; export * from './tree-errors'; export * from './tree-module'; export * from './toggle'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["observableOf","i1.CdkTreeNodeOutlet","i1.CdkTree","i1.CdkTreeNode"],"mappings":"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"}
-------------------- SECTION 210 --------------------
{"version":3,"file":"portal.mjs","sources":["../../../../../../src/cdk/portal/portal-errors.ts","../../../../../../src/cdk/portal/portal.ts","../../../../../../src/cdk/portal/dom-portal-outlet.ts","../../../../../../src/cdk/portal/portal-directives.ts","../../../../../../src/cdk/portal/portal-injector.ts","../../../../../../src/cdk/portal/public-api.ts","../../../../../../src/cdk/portal/index.ts","../../../../../../src/cdk/portal/portal_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Throws an exception when attempting to attach a null portal to a host.  * @docs-private  */ export function throwNullPortalError() {   throw Error('Must provide a portal to attach'); }  /**  * Throws an exception when attempting to attach a portal to a host that is already attached.  * @docs-private  */ export function throwPortalAlreadyAttachedError() {   throw Error('Host already has a portal attached'); }  /**  * Throws an exception when attempting to attach a portal to an already-disposed host.  * @docs-private  */ export function throwPortalOutletAlreadyDisposedError() {   throw Error('This PortalOutlet has already been disposed'); }  /**  * Throws an exception when attempting to attach an unknown portal type.  * @docs-private  */ export function throwUnknownPortalTypeError() {   throw Error(     'Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +       'a ComponentPortal or a TemplatePortal.',   ); }  /**  * Throws an exception when attempting to attach a portal to a null host.  * @docs-private  */ export function throwNullPortalOutletError() {   throw Error('Attempting to attach a portal to a null PortalOutlet'); }  /**  * Throws an exception when attempting to detach a portal that is not attached.  * @docs-private  */ export function throwNoPortalAttachedError() {   throw Error('Attempting to detach a portal that is not attached to a host'); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   TemplateRef,   ViewContainerRef,   ElementRef,   ComponentRef,   EmbeddedViewRef,   Injector,   ComponentFactoryResolver, } from '@angular/core'; import {   throwNullPortalOutletError,   throwPortalAlreadyAttachedError,   throwNoPortalAttachedError,   throwNullPortalError,   throwPortalOutletAlreadyDisposedError,   throwUnknownPortalTypeError, } from './portal-errors';  /** Interface that can be used to generically type a class. */ export interface ComponentType<T> {   new (...args: any[]): T; }  /**  * A `Portal` is something that you want to render somewhere else.  * It can be attach to / detached from a `PortalOutlet`.  */ export abstract class Portal<T> {   private _attachedHost: PortalOutlet | null;    /** Attach this portal to a host. */   attach(host: PortalOutlet): T {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       if (host == null) {         throwNullPortalOutletError();       }        if (host.hasAttached()) {         throwPortalAlreadyAttachedError();       }     }      this._attachedHost = host;     return <T>host.attach(this);   }    /** Detach this portal from its host */   detach(): void {     let host = this._attachedHost;      if (host != null) {       this._attachedHost = null;       host.detach();     } else if (typeof ngDevMode === 'undefined' || ngDevMode) {       throwNoPortalAttachedError();     }   }    /** Whether this portal is attached to a host. */   get isAttached(): boolean {     return this._attachedHost != null;   }    /**    * Sets the PortalOutlet reference without performing `attach()`. This is used directly by    * the PortalOutlet when it is performing an `attach()` or `detach()`.    */   setAttachedHost(host: PortalOutlet | null) {     this._attachedHost = host;   } }  /**  * A `ComponentPortal` is a portal that instantiates some Component upon attachment.  */ export class ComponentPortal<T> extends Portal<ComponentRef<T>> {   /** The type of the component that will be instantiated for attachment. */   component: ComponentType<T>;    /**    * Where the attached component should live in Angular's *logical* component tree.    * This is different from where the component *renders*, which is determined by the PortalOutlet.    * The origin is necessary when the host is outside of the Angular application context.    */   viewContainerRef?: ViewContainerRef | null;    /** Injector used for the instantiation of the component. */   injector?: Injector | null;    /**    * Alternate `ComponentFactoryResolver` to use when resolving the associated component.    * Defaults to using the resolver from the outlet that the portal is attached to.    */   componentFactoryResolver?: ComponentFactoryResolver | null;    /**    * List of DOM nodes that should be projected through `<ng-content>` of the attached component.    */   projectableNodes?: Node[][] | null;    constructor(     component: ComponentType<T>,     viewContainerRef?: ViewContainerRef | null,     injector?: Injector | null,     componentFactoryResolver?: ComponentFactoryResolver | null,     projectableNodes?: Node[][] | null,   ) {     super();     this.component = component;     this.viewContainerRef = viewContainerRef;     this.injector = injector;     this.componentFactoryResolver = componentFactoryResolver;     this.projectableNodes = projectableNodes;   } }  /**  * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).  */ export class TemplatePortal<C = any> extends Portal<EmbeddedViewRef<C>> {   constructor(     /** The embedded template that will be used to instantiate an embedded View in the host. */     public templateRef: TemplateRef<C>,     /** Reference to the ViewContainer into which the template will be stamped out. */     public viewContainerRef: ViewContainerRef,     /** Contextual data to be passed in to the embedded view. */     public context?: C,     /** The injector to use for the embedded view. */     public injector?: Injector,   ) {     super();   }    get origin(): ElementRef {     return this.templateRef.elementRef;   }    /**    * Attach the portal to the provided `PortalOutlet`.    * When a context is provided it will override the `context` property of the `TemplatePortal`    * instance.    */   override attach(host: PortalOutlet, context: C | undefined = this.context): EmbeddedViewRef<C> {     this.context = context;     return super.attach(host);   }    override detach(): void {     this.context = undefined;     return super.detach();   } }  /**  * A `DomPortal` is a portal whose DOM element will be taken from its current position  * in the DOM and moved into a portal outlet, when it is attached. On detach, the content  * will be restored to its original position.  */ export class DomPortal<T = HTMLElement> extends Portal<T> {   /** DOM node hosting the portal's content. */   readonly element: T;    constructor(element: T | ElementRef<T>) {     super();     this.element = element instanceof ElementRef ? element.nativeElement : element;   } }  /** A `PortalOutlet` is an space that can contain a single `Portal`. */ export interface PortalOutlet {   /** Attaches a portal to this outlet. */   attach(portal: Portal<any>): any;    /** Detaches the currently attached portal from this outlet. */   detach(): any;    /** Performs cleanup before the outlet is destroyed. */   dispose(): void;    /** Whether there is currently a portal attached to this outlet. */   hasAttached(): boolean; }  /**  * @deprecated Use `PortalOutlet` instead.  * @breaking-change 9.0.0  */ export type PortalHost = PortalOutlet;  /**  * Partial implementation of PortalOutlet that handles attaching  * ComponentPortal and TemplatePortal.  */ export abstract class BasePortalOutlet implements PortalOutlet {   /** The portal currently attached to the host. */   protected _attachedPortal: Portal<any> | null;    /** A function that will permanently dispose this host. */   private _disposeFn: (() => void) | null;    /** Whether this host has already been permanently disposed. */   private _isDisposed: boolean = false;    /** Whether this host has an attached portal. */   hasAttached(): boolean {     return !!this._attachedPortal;   }    attach<T>(portal: ComponentPortal<T>): ComponentRef<T>;   attach<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T>;   attach(portal: any): any;    /** Attaches a portal. */   attach(portal: Portal<any>): any {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       if (!portal) {         throwNullPortalError();       }        if (this.hasAttached()) {         throwPortalAlreadyAttachedError();       }        if (this._isDisposed) {         throwPortalOutletAlreadyDisposedError();       }     }      if (portal instanceof ComponentPortal) {       this._attachedPortal = portal;       return this.attachComponentPortal(portal);     } else if (portal instanceof TemplatePortal) {       this._attachedPortal = portal;       return this.attachTemplatePortal(portal);       // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.     } else if (this.attachDomPortal && portal instanceof DomPortal) {       this._attachedPortal = portal;       return this.attachDomPortal(portal);     }      if (typeof ngDevMode === 'undefined' || ngDevMode) {       throwUnknownPortalTypeError();     }   }    abstract attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T>;    abstract attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C>;    // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.   readonly attachDomPortal: null | ((portal: DomPortal) => any) = null;    /** Detaches a previously attached portal. */   detach(): void {     if (this._attachedPortal) {       this._attachedPortal.setAttachedHost(null);       this._attachedPortal = null;     }      this._invokeDisposeFn();   }    /** Permanently dispose of this portal host. */   dispose(): void {     if (this.hasAttached()) {       this.detach();     }      this._invokeDisposeFn();     this._isDisposed = true;   }    /** @docs-private */   setDisposeFn(fn: () => void) {     this._disposeFn = fn;   }    private _invokeDisposeFn() {     if (this._disposeFn) {       this._disposeFn();       this._disposeFn = null;     }   } }  /**  * @deprecated Use `BasePortalOutlet` instead.  * @breaking-change 9.0.0  */ export abstract class BasePortalHost extends BasePortalOutlet {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   ApplicationRef,   ComponentFactoryResolver,   ComponentRef,   EmbeddedViewRef,   Injector, } from '@angular/core'; import {BasePortalOutlet, ComponentPortal, DomPortal, TemplatePortal} from './portal';  /**  * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular  * application context.  */ export class DomPortalOutlet extends BasePortalOutlet {   private _document: Document;    /**    * @param outletElement Element into which the content is projected.    * @param _componentFactoryResolver Used to resolve the component factory.    *   Only required when attaching component portals.    * @param _appRef Reference to the application. Only used in component portals when there    *   is no `ViewContainerRef` available.    * @param _defaultInjector Injector to use as a fallback when the portal being attached doesn't    *   have one. Only used for component portals.    * @param _document Reference to the document. Used when attaching a DOM portal. Will eventually    *   become a required parameter.    */   constructor(     /** Element into which the content is projected. */     public outletElement: Element,     private _componentFactoryResolver?: ComponentFactoryResolver,     private _appRef?: ApplicationRef,     private _defaultInjector?: Injector,      /**      * @deprecated `_document` Parameter to be made required.      * @breaking-change 10.0.0      */     _document?: any,   ) {     super();     this._document = _document;   }    /**    * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.    * @param portal Portal to be attached    * @returns Reference to the created component.    */   attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {     const resolver = (portal.componentFactoryResolver || this._componentFactoryResolver)!;      if ((typeof ngDevMode === 'undefined' || ngDevMode) && !resolver) {       throw Error('Cannot attach component portal to outlet without a ComponentFactoryResolver.');     }      const componentFactory = resolver.resolveComponentFactory(portal.component);     let componentRef: ComponentRef<T>;      // If the portal specifies a ViewContainerRef, we will use that as the attachment point     // for the component (in terms of Angular's component tree, not rendering).     // When the ViewContainerRef is missing, we use the factory to create the component directly     // and then manually attach the view to the application.     if (portal.viewContainerRef) {       componentRef = portal.viewContainerRef.createComponent(         componentFactory,         portal.viewContainerRef.length,         portal.injector || portal.viewContainerRef.injector,         portal.projectableNodes || undefined,       );        this.setDisposeFn(() => componentRef.destroy());     } else {       if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._appRef) {         throw Error('Cannot attach component portal to outlet without an ApplicationRef.');       }        componentRef = componentFactory.create(         portal.injector || this._defaultInjector || Injector.NULL,       );       this._appRef!.attachView(componentRef.hostView);       this.setDisposeFn(() => {         // Verify that the ApplicationRef has registered views before trying to detach a host view.         // This check also protects the `detachView` from being called on a destroyed ApplicationRef.         if (this._appRef!.viewCount > 0) {           this._appRef!.detachView(componentRef.hostView);         }         componentRef.destroy();       });     }     // At this point the component has been instantiated, so we move it to the location in the DOM     // where we want it to be rendered.     this.outletElement.appendChild(this._getComponentRootNode(componentRef));     this._attachedPortal = portal;      return componentRef;   }    /**    * Attaches a template portal to the DOM as an embedded view.    * @param portal Portal to be attached.    * @returns Reference to the created embedded view.    */   attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {     let viewContainer = portal.viewContainerRef;     let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context, {       injector: portal.injector,     });      // The method `createEmbeddedView` will add the view as a child of the viewContainer.     // But for the DomPortalOutlet the view can be added everywhere in the DOM     // (e.g Overlay Container) To move the view to the specified host element. We just     // re-append the existing root nodes.     viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));      // Note that we want to detect changes after the nodes have been moved so that     // any directives inside the portal that are looking at the DOM inside a lifecycle     // hook won't be invoked too early.     viewRef.detectChanges();      this.setDisposeFn(() => {       let index = viewContainer.indexOf(viewRef);       if (index !== -1) {         viewContainer.remove(index);       }     });      this._attachedPortal = portal;      // TODO(jelbourn): Return locals from view.     return viewRef;   }    /**    * Attaches a DOM portal by transferring its content into the outlet.    * @param portal Portal to be attached.    * @deprecated To be turned into a method.    * @breaking-change 10.0.0    */   override attachDomPortal = (portal: DomPortal) => {     // @breaking-change 10.0.0 Remove check and error once the     // `_document` constructor parameter is required.     if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw Error('Cannot attach DOM portal without _document constructor parameter');     }      const element = portal.element;     if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw Error('DOM portal content must be attached to a parent node.');     }      // Anchor used to save the element's previous position so     // that we can restore it when the portal is detached.     const anchorNode = this._document.createComment('dom-portal');      element.parentNode!.insertBefore(anchorNode, element);     this.outletElement.appendChild(element);     this._attachedPortal = portal;      super.setDisposeFn(() => {       // We can't use `replaceWith` here because IE doesn't support it.       if (anchorNode.parentNode) {         anchorNode.parentNode.replaceChild(element, anchorNode);       }     });   };    /**    * Clears out a portal from the DOM.    */   override dispose(): void {     super.dispose();     this.outletElement.remove();   }    /** Gets the root HTMLElement for an instantiated component. */   private _getComponentRootNode(componentRef: ComponentRef<any>): HTMLElement {     return (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;   } }  /**  * @deprecated Use `DomPortalOutlet` instead.  * @breaking-change 9.0.0  */ export class DomPortalHost extends DomPortalOutlet {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   ComponentFactoryResolver,   ComponentRef,   Directive,   EmbeddedViewRef,   EventEmitter,   NgModule,   OnDestroy,   OnInit,   Output,   TemplateRef,   ViewContainerRef,   Inject, } from '@angular/core'; import {DOCUMENT} from '@angular/common'; import {BasePortalOutlet, ComponentPortal, Portal, TemplatePortal, DomPortal} from './portal';  /**  * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,  * the directive instance itself can be attached to a host, enabling declarative use of portals.  */ @Directive({   selector: '[cdkPortal]',   exportAs: 'cdkPortal', }) export class CdkPortal extends TemplatePortal {   constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {     super(templateRef, viewContainerRef);   } }  /**  * @deprecated Use `CdkPortal` instead.  * @breaking-change 9.0.0  */ @Directive({   selector: '[cdk-portal], [portal]',   exportAs: 'cdkPortal',   providers: [     {       provide: CdkPortal,       useExisting: TemplatePortalDirective,     },   ], }) export class TemplatePortalDirective extends CdkPortal {}  /**  * Possible attached references to the CdkPortalOutlet.  */ export type CdkPortalOutletAttachedRef = ComponentRef<any> | EmbeddedViewRef<any> | null;  /**  * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be  * directly attached to it, enabling declarative use.  *  * Usage:  * `<ng-template [cdkPortalOutlet]=\"greeting\"></ng-template>`  */ @Directive({   selector: '[cdkPortalOutlet]',   exportAs: 'cdkPortalOutlet',   inputs: ['portal: cdkPortalOutlet'], }) export class CdkPortalOutlet extends BasePortalOutlet implements OnInit, OnDestroy {   private _document: Document;    /** Whether the portal component is initialized. */   private _isInitialized = false;    /** Reference to the currently-attached component/view ref. */   private _attachedRef: CdkPortalOutletAttachedRef;    constructor(     private _componentFactoryResolver: ComponentFactoryResolver,     private _viewContainerRef: ViewContainerRef,      /**      * @deprecated `_document` parameter to be made required.      * @breaking-change 9.0.0      */     @Inject(DOCUMENT) _document?: any,   ) {     super();     this._document = _document;   }    /** Portal associated with the Portal outlet. */   get portal(): Portal<any> | null {     return this._attachedPortal;   }    set portal(portal: Portal<any> | null | undefined | '') {     // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have     // run. This handles the cases where the user might do something like `<div cdkPortalOutlet>`     // and attach a portal programmatically in the parent component. When Angular does the first CD     // round, it will fire the setter with empty string, causing the user's content to be cleared.     if (this.hasAttached() && !portal && !this._isInitialized) {       return;     }      if (this.hasAttached()) {       super.detach();     }      if (portal) {       super.attach(portal);     }      this._attachedPortal = portal || null;   }    /** Emits when a portal is attached to the outlet. */   @Output() readonly attached: EventEmitter<CdkPortalOutletAttachedRef> =     new EventEmitter<CdkPortalOutletAttachedRef>();    /** Component or view reference that is attached to the portal. */   get attachedRef(): CdkPortalOutletAttachedRef {     return this._attachedRef;   }    ngOnInit() {     this._isInitialized = true;   }    ngOnDestroy() {     super.dispose();     this._attachedRef = this._attachedPortal = null;   }    /**    * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.    *    * @param portal Portal to be attached to the portal outlet.    * @returns Reference to the created component.    */   attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {     portal.setAttachedHost(this);      // If the portal specifies an origin, use that as the logical location of the component     // in the application tree. Otherwise use the location of this PortalOutlet.     const viewContainerRef =       portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;      const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;     const componentFactory = resolver.resolveComponentFactory(portal.component);     const ref = viewContainerRef.createComponent(       componentFactory,       viewContainerRef.length,       portal.injector || viewContainerRef.injector,       portal.projectableNodes || undefined,     );      // If we're using a view container that's different from the injected one (e.g. when the portal     // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered     // inside of the alternate view container.     if (viewContainerRef !== this._viewContainerRef) {       this._getRootNode().appendChild((ref.hostView as EmbeddedViewRef<any>).rootNodes[0]);     }      super.setDisposeFn(() => ref.destroy());     this._attachedPortal = portal;     this._attachedRef = ref;     this.attached.emit(ref);      return ref;   }    /**    * Attach the given TemplatePortal to this PortalHost as an embedded View.    * @param portal Portal to be attached.    * @returns Reference to the created embedded view.    */   attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {     portal.setAttachedHost(this);     const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context, {       injector: portal.injector,     });     super.setDisposeFn(() => this._viewContainerRef.clear());      this._attachedPortal = portal;     this._attachedRef = viewRef;     this.attached.emit(viewRef);      return viewRef;   }    /**    * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.    * @param portal Portal to be attached.    * @deprecated To be turned into a method.    * @breaking-change 10.0.0    */   override attachDomPortal = (portal: DomPortal) => {     // @breaking-change 9.0.0 Remove check and error once the     // `_document` constructor parameter is required.     if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw Error('Cannot attach DOM portal without _document constructor parameter');     }      const element = portal.element;     if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw Error('DOM portal content must be attached to a parent node.');     }      // Anchor used to save the element's previous position so     // that we can restore it when the portal is detached.     const anchorNode = this._document.createComment('dom-portal');      portal.setAttachedHost(this);     element.parentNode!.insertBefore(anchorNode, element);     this._getRootNode().appendChild(element);     this._attachedPortal = portal;      super.setDisposeFn(() => {       if (anchorNode.parentNode) {         anchorNode.parentNode!.replaceChild(element, anchorNode);       }     });   };    /** Gets the root node of the portal outlet. */   private _getRootNode(): HTMLElement {     const nativeElement: Node = this._viewContainerRef.element.nativeElement;      // The directive could be set on a template which will result in a comment     // node being the root. Use the comment's parent node if that is the case.     return (       nativeElement.nodeType === nativeElement.ELEMENT_NODE         ? nativeElement         : nativeElement.parentNode!     ) as HTMLElement;   } }  /**  * @deprecated Use `CdkPortalOutlet` instead.  * @breaking-change 9.0.0  */ @Directive({   selector: '[cdkPortalHost], [portalHost]',   exportAs: 'cdkPortalHost',   inputs: ['portal: cdkPortalHost'],   providers: [     {       provide: CdkPortalOutlet,       useExisting: PortalHostDirective,     },   ], }) export class PortalHostDirective extends CdkPortalOutlet {}  @NgModule({   exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],   declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], }) export class PortalModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injector} from '@angular/core';  /**  * Custom injector to be used when providing custom  * injection tokens to components inside a portal.  * @docs-private  * @deprecated Use `Injector.create` instead.  * @breaking-change 11.0.0  */ export class PortalInjector implements Injector {   constructor(private _parentInjector: Injector, private _customTokens: WeakMap<any, any>) {}    get(token: any, notFoundValue?: any): any {     const value = this._customTokens.get(token);      if (typeof value !== 'undefined') {       return value;     }      return this._parentInjector.get<any>(token, notFoundValue);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './portal'; export * from './dom-portal-outlet'; export * from './portal-directives'; export * from './portal-injector'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 211 --------------------
{"version":3,"file":"keycodes.mjs","sources":["../../../../../../src/cdk/keycodes/keycodes.ts","../../../../../../src/cdk/keycodes/modifiers.ts","../../../../../../src/cdk/keycodes/public-api.ts","../../../../../../src/cdk/keycodes/index.ts","../../../../../../src/cdk/keycodes/keycodes_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export const MAC_ENTER = 3; export const BACKSPACE = 8; export const TAB = 9; export const NUM_CENTER = 12; export const ENTER = 13; export const SHIFT = 16; export const CONTROL = 17; export const ALT = 18; export const PAUSE = 19; export const CAPS_LOCK = 20; export const ESCAPE = 27; export const SPACE = 32; export const PAGE_UP = 33; export const PAGE_DOWN = 34; export const END = 35; export const HOME = 36; export const LEFT_ARROW = 37; export const UP_ARROW = 38; export const RIGHT_ARROW = 39; export const DOWN_ARROW = 40; export const PLUS_SIGN = 43; export const PRINT_SCREEN = 44; export const INSERT = 45; export const DELETE = 46; export const ZERO = 48; export const ONE = 49; export const TWO = 50; export const THREE = 51; export const FOUR = 52; export const FIVE = 53; export const SIX = 54; export const SEVEN = 55; export const EIGHT = 56; export const NINE = 57; export const FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186 export const FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187 export const QUESTION_MARK = 63; export const AT_SIGN = 64; export const A = 65; export const B = 66; export const C = 67; export const D = 68; export const E = 69; export const F = 70; export const G = 71; export const H = 72; export const I = 73; export const J = 74; export const K = 75; export const L = 76; export const M = 77; export const N = 78; export const O = 79; export const P = 80; export const Q = 81; export const R = 82; export const S = 83; export const T = 84; export const U = 85; export const V = 86; export const W = 87; export const X = 88; export const Y = 89; export const Z = 90; export const META = 91; // WIN_KEY_LEFT export const MAC_WK_CMD_LEFT = 91; export const MAC_WK_CMD_RIGHT = 93; export const CONTEXT_MENU = 93; export const NUMPAD_ZERO = 96; export const NUMPAD_ONE = 97; export const NUMPAD_TWO = 98; export const NUMPAD_THREE = 99; export const NUMPAD_FOUR = 100; export const NUMPAD_FIVE = 101; export const NUMPAD_SIX = 102; export const NUMPAD_SEVEN = 103; export const NUMPAD_EIGHT = 104; export const NUMPAD_NINE = 105; export const NUMPAD_MULTIPLY = 106; export const NUMPAD_PLUS = 107; export const NUMPAD_MINUS = 109; export const NUMPAD_PERIOD = 110; export const NUMPAD_DIVIDE = 111; export const F1 = 112; export const F2 = 113; export const F3 = 114; export const F4 = 115; export const F5 = 116; export const F6 = 117; export const F7 = 118; export const F8 = 119; export const F9 = 120; export const F10 = 121; export const F11 = 122; export const F12 = 123; export const NUM_LOCK = 144; export const SCROLL_LOCK = 145; export const FIRST_MEDIA = 166; export const FF_MINUS = 173; export const MUTE = 173; // Firefox (Gecko) fires 181 for MUTE export const VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN export const VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP export const FF_MUTE = 181; export const FF_VOLUME_DOWN = 182; export const LAST_MEDIA = 183; export const FF_VOLUME_UP = 183; export const SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON export const EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS export const COMMA = 188; export const DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS export const PERIOD = 190; export const SLASH = 191; export const APOSTROPHE = 192; export const TILDE = 192; export const OPEN_SQUARE_BRACKET = 219; export const BACKSLASH = 220; export const CLOSE_SQUARE_BRACKET = 221; export const SINGLE_QUOTE = 222; export const MAC_META = 224; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export type ModifierKey = 'altKey' | 'shiftKey' | 'ctrlKey' | 'metaKey';  /**  * Checks whether a modifier key is pressed.  * @param event Event to be checked.  */ export function hasModifierKey(event: KeyboardEvent, ...modifiers: ModifierKey[]): boolean {   if (modifiers.length) {     return modifiers.some(modifier => event[modifier]);   }    return event.altKey || event.shiftKey || event.ctrlKey || event.metaKey; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './keycodes'; export * from './modifiers'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 212 --------------------
{"version":3,"file":"collections.mjs","sources":["../../../../../../src/cdk/collections/data-source.ts","../../../../../../src/cdk/collections/array-data-source.ts","../../../../../../src/cdk/collections/dispose-view-repeater-strategy.ts","../../../../../../src/cdk/collections/recycle-view-repeater-strategy.ts","../../../../../../src/cdk/collections/selection-model.ts","../../../../../../src/cdk/collections/unique-selection-dispatcher.ts","../../../../../../src/cdk/collections/view-repeater.ts","../../../../../../src/cdk/collections/public-api.ts","../../../../../../src/cdk/collections/index.ts","../../../../../../src/cdk/collections/collections_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ConnectableObservable, Observable} from 'rxjs'; import {CollectionViewer} from './collection-viewer';  export abstract class DataSource<T> {   /**    * Connects a collection viewer (such as a data-table) to this data source. Note that    * the stream provided will be accessed during change detection and should not directly change    * values that are bound in template views.    * @param collectionViewer The component that exposes a view over the data provided by this    *     data source.    * @returns Observable that emits a new value when the data changes.    */   abstract connect(collectionViewer: CollectionViewer): Observable<readonly T[]>;    /**    * Disconnects a collection viewer (such as a data-table) from this data source. Can be used    * to perform any clean-up or tear-down operations when a view is being destroyed.    *    * @param collectionViewer The component that exposes a view over the data provided by this    *     data source.    */   abstract disconnect(collectionViewer: CollectionViewer): void; }  /** Checks whether an object is a data source. */ export function isDataSource(value: any): value is DataSource<any> {   // Check if the value is a DataSource by observing if it has a connect function. Cannot   // be checked as an `instanceof DataSource` since people could create their own sources   // that match the interface, but don't extend DataSource. We also can't use `isObservable`   // here, because of some internal apps.   return value && typeof value.connect === 'function' && !(value instanceof ConnectableObservable); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Observable, isObservable, of as observableOf} from 'rxjs'; import {DataSource} from './data-source';  /** DataSource wrapper for a native array. */ export class ArrayDataSource<T> extends DataSource<T> {   constructor(private _data: readonly T[] | Observable<readonly T[]>) {     super();   }    connect(): Observable<readonly T[]> {     return isObservable(this._data) ? this._data : observableOf(this._data);   }    disconnect() {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   EmbeddedViewRef,   IterableChangeRecord,   IterableChanges,   ViewContainerRef, } from '@angular/core'; import {   _ViewRepeater,   _ViewRepeaterItemChanged,   _ViewRepeaterItemContext,   _ViewRepeaterItemContextFactory,   _ViewRepeaterItemValueResolver,   _ViewRepeaterOperation, } from './view-repeater';  /**  * A repeater that destroys views when they are removed from a  * {@link ViewContainerRef}. When new items are inserted into the container,  * the repeater will always construct a new embedded view for each item.  *  * @template T The type for the embedded view's $implicit property.  * @template R The type for the item in each IterableDiffer change record.  * @template C The type for the context passed to each embedded view.  */ export class _DisposeViewRepeaterStrategy<T, R, C extends _ViewRepeaterItemContext<T>>   implements _ViewRepeater<T, R, C> {   applyChanges(     changes: IterableChanges<R>,     viewContainerRef: ViewContainerRef,     itemContextFactory: _ViewRepeaterItemContextFactory<T, R, C>,     itemValueResolver: _ViewRepeaterItemValueResolver<T, R>,     itemViewChanged?: _ViewRepeaterItemChanged<R, C>,   ) {     changes.forEachOperation(       (         record: IterableChangeRecord<R>,         adjustedPreviousIndex: number | null,         currentIndex: number | null,       ) => {         let view: EmbeddedViewRef<C> | undefined;         let operation: _ViewRepeaterOperation;         if (record.previousIndex == null) {           const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);           view = viewContainerRef.createEmbeddedView(             insertContext.templateRef,             insertContext.context,             insertContext.index,           );           operation = _ViewRepeaterOperation.INSERTED;         } else if (currentIndex == null) {           viewContainerRef.remove(adjustedPreviousIndex!);           operation = _ViewRepeaterOperation.REMOVED;         } else {           view = viewContainerRef.get(adjustedPreviousIndex!) as EmbeddedViewRef<C>;           viewContainerRef.move(view!, currentIndex);           operation = _ViewRepeaterOperation.MOVED;         }          if (itemViewChanged) {           itemViewChanged({             context: view?.context,             operation,             record,           });         }       },     );   }    detach() {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   EmbeddedViewRef,   IterableChangeRecord,   IterableChanges,   ViewContainerRef, } from '@angular/core'; import {   _ViewRepeater,   _ViewRepeaterItemChanged,   _ViewRepeaterItemContext,   _ViewRepeaterItemContextFactory,   _ViewRepeaterItemInsertArgs,   _ViewRepeaterItemValueResolver,   _ViewRepeaterOperation, } from './view-repeater';  /**  * A repeater that caches views when they are removed from a  * {@link ViewContainerRef}. When new items are inserted into the container,  * the repeater will reuse one of the cached views instead of creating a new  * embedded view. Recycling cached views reduces the quantity of expensive DOM  * inserts.  *  * @template T The type for the embedded view's $implicit property.  * @template R The type for the item in each IterableDiffer change record.  * @template C The type for the context passed to each embedded view.  */ export class _RecycleViewRepeaterStrategy<T, R, C extends _ViewRepeaterItemContext<T>>   implements _ViewRepeater<T, R, C> {   /**    * The size of the cache used to store unused views.    * Setting the cache size to `0` will disable caching. Defaults to 20 views.    */   viewCacheSize: number = 20;    /**    * View cache that stores embedded view instances that have been previously stamped out,    * but don't are not currently rendered. The view repeater will reuse these views rather than    * creating brand new ones.    *    * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.    */   private _viewCache: EmbeddedViewRef<C>[] = [];    /** Apply changes to the DOM. */   applyChanges(     changes: IterableChanges<R>,     viewContainerRef: ViewContainerRef,     itemContextFactory: _ViewRepeaterItemContextFactory<T, R, C>,     itemValueResolver: _ViewRepeaterItemValueResolver<T, R>,     itemViewChanged?: _ViewRepeaterItemChanged<R, C>,   ) {     // Rearrange the views to put them in the right location.     changes.forEachOperation(       (         record: IterableChangeRecord<R>,         adjustedPreviousIndex: number | null,         currentIndex: number | null,       ) => {         let view: EmbeddedViewRef<C> | undefined;         let operation: _ViewRepeaterOperation;         if (record.previousIndex == null) {           // Item added.           const viewArgsFactory = () =>             itemContextFactory(record, adjustedPreviousIndex, currentIndex);           view = this._insertView(             viewArgsFactory,             currentIndex!,             viewContainerRef,             itemValueResolver(record),           );           operation = view ? _ViewRepeaterOperation.INSERTED : _ViewRepeaterOperation.REPLACED;         } else if (currentIndex == null) {           // Item removed.           this._detachAndCacheView(adjustedPreviousIndex!, viewContainerRef);           operation = _ViewRepeaterOperation.REMOVED;         } else {           // Item moved.           view = this._moveView(             adjustedPreviousIndex!,             currentIndex!,             viewContainerRef,             itemValueResolver(record),           );           operation = _ViewRepeaterOperation.MOVED;         }          if (itemViewChanged) {           itemViewChanged({             context: view?.context,             operation,             record,           });         }       },     );   }    detach() {     for (const view of this._viewCache) {       view.destroy();     }     this._viewCache = [];   }    /**    * Inserts a view for a new item, either from the cache or by creating a new    * one. Returns `undefined` if the item was inserted into a cached view.    */   private _insertView(     viewArgsFactory: () => _ViewRepeaterItemInsertArgs<C>,     currentIndex: number,     viewContainerRef: ViewContainerRef,     value: T,   ): EmbeddedViewRef<C> | undefined {     const cachedView = this._insertViewFromCache(currentIndex!, viewContainerRef);     if (cachedView) {       cachedView.context.$implicit = value;       return undefined;     }      const viewArgs = viewArgsFactory();     return viewContainerRef.createEmbeddedView(       viewArgs.templateRef,       viewArgs.context,       viewArgs.index,     );   }    /** Detaches the view at the given index and inserts into the view cache. */   private _detachAndCacheView(index: number, viewContainerRef: ViewContainerRef) {     const detachedView = viewContainerRef.detach(index) as EmbeddedViewRef<C>;     this._maybeCacheView(detachedView, viewContainerRef);   }    /** Moves view at the previous index to the current index. */   private _moveView(     adjustedPreviousIndex: number,     currentIndex: number,     viewContainerRef: ViewContainerRef,     value: T,   ): EmbeddedViewRef<C> {     const view = viewContainerRef.get(adjustedPreviousIndex!) as EmbeddedViewRef<C>;     viewContainerRef.move(view, currentIndex);     view.context.$implicit = value;     return view;   }    /**    * Cache the given detached view. If the cache is full, the view will be    * destroyed.    */   private _maybeCacheView(view: EmbeddedViewRef<C>, viewContainerRef: ViewContainerRef) {     if (this._viewCache.length < this.viewCacheSize) {       this._viewCache.push(view);     } else {       const index = viewContainerRef.indexOf(view);        // The host component could remove views from the container outside of       // the view repeater. It's unlikely this will occur, but just in case,       // destroy the view on its own, otherwise destroy it through the       // container to ensure that all the references are removed.       if (index === -1) {         view.destroy();       } else {         viewContainerRef.remove(index);       }     }   }    /** Inserts a recycled view from the cache at the given index. */   private _insertViewFromCache(     index: number,     viewContainerRef: ViewContainerRef,   ): EmbeddedViewRef<C> | null {     const cachedView = this._viewCache.pop();     if (cachedView) {       viewContainerRef.insert(cachedView, index);     }     return cachedView || null;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Subject} from 'rxjs';  /**  * Class to be used to power selecting one or more options from a list.  */ export class SelectionModel<T> {   /** Currently-selected values. */   private _selection = new Set<T>();    /** Keeps track of the deselected options that haven't been emitted by the change event. */   private _deselectedToEmit: T[] = [];    /** Keeps track of the selected options that haven't been emitted by the change event. */   private _selectedToEmit: T[] = [];    /** Cache for the array value of the selected items. */   private _selected: T[] | null;    /** Selected values. */   get selected(): T[] {     if (!this._selected) {       this._selected = Array.from(this._selection.values());     }      return this._selected;   }    /** Event emitted when the value has changed. */   readonly changed = new Subject<SelectionChange<T>>();    constructor(     private _multiple = false,     initiallySelectedValues?: T[],     private _emitChanges = true,     public compareWith?: (o1: T, o2: T) => boolean,   ) {     if (initiallySelectedValues && initiallySelectedValues.length) {       if (_multiple) {         initiallySelectedValues.forEach(value => this._markSelected(value));       } else {         this._markSelected(initiallySelectedValues[0]);       }        // Clear the array in order to avoid firing the change event for preselected values.       this._selectedToEmit.length = 0;     }   }    /**    * Selects a value or an array of values.    * @param values The values to select    * @return Whether the selection changed as a result of this call    * @breaking-change 16.0.0 make return type boolean    */   select(...values: T[]): boolean | void {     this._verifyValueAssignment(values);     values.forEach(value => this._markSelected(value));     const changed = this._hasQueuedChanges();     this._emitChangeEvent();     return changed;   }    /**    * Deselects a value or an array of values.    * @param values The values to deselect    * @return Whether the selection changed as a result of this call    * @breaking-change 16.0.0 make return type boolean    */   deselect(...values: T[]): boolean | void {     this._verifyValueAssignment(values);     values.forEach(value => this._unmarkSelected(value));     const changed = this._hasQueuedChanges();     this._emitChangeEvent();     return changed;   }    /**    * Sets the selected values    * @param values The new selected values    * @return Whether the selection changed as a result of this call    * @breaking-change 16.0.0 make return type boolean    */   setSelection(...values: T[]): boolean | void {     this._verifyValueAssignment(values);     const oldValues = this.selected;     const newSelectedSet = new Set(values);     values.forEach(value => this._markSelected(value));     oldValues       .filter(value => !newSelectedSet.has(value))       .forEach(value => this._unmarkSelected(value));     const changed = this._hasQueuedChanges();     this._emitChangeEvent();     return changed;   }    /**    * Toggles a value between selected and deselected.    * @param value The value to toggle    * @return Whether the selection changed as a result of this call    * @breaking-change 16.0.0 make return type boolean    */   toggle(value: T): boolean | void {     return this.isSelected(value) ? this.deselect(value) : this.select(value);   }    /**    * Clears all of the selected values.    * @param flushEvent Whether to flush the changes in an event.    *   If false, the changes to the selection will be flushed along with the next event.    * @return Whether the selection changed as a result of this call    * @breaking-change 16.0.0 make return type boolean    */   clear(flushEvent = true): boolean | void {     this._unmarkAll();     const changed = this._hasQueuedChanges();     if (flushEvent) {       this._emitChangeEvent();     }     return changed;   }    /**    * Determines whether a value is selected.    */   isSelected(value: T): boolean {     return this._selection.has(this._getConcreteValue(value));   }    /**    * Determines whether the model does not have a value.    */   isEmpty(): boolean {     return this._selection.size === 0;   }    /**    * Determines whether the model has a value.    */   hasValue(): boolean {     return !this.isEmpty();   }    /**    * Sorts the selected values based on a predicate function.    */   sort(predicate?: (a: T, b: T) => number): void {     if (this._multiple && this.selected) {       this._selected!.sort(predicate);     }   }    /**    * Gets whether multiple values can be selected.    */   isMultipleSelection() {     return this._multiple;   }    /** Emits a change event and clears the records of selected and deselected values. */   private _emitChangeEvent() {     // Clear the selected values so they can be re-cached.     this._selected = null;      if (this._selectedToEmit.length || this._deselectedToEmit.length) {       this.changed.next({         source: this,         added: this._selectedToEmit,         removed: this._deselectedToEmit,       });        this._deselectedToEmit = [];       this._selectedToEmit = [];     }   }    /** Selects a value. */   private _markSelected(value: T) {     value = this._getConcreteValue(value);     if (!this.isSelected(value)) {       if (!this._multiple) {         this._unmarkAll();       }        if (!this.isSelected(value)) {         this._selection.add(value);       }        if (this._emitChanges) {         this._selectedToEmit.push(value);       }     }   }    /** Deselects a value. */   private _unmarkSelected(value: T) {     value = this._getConcreteValue(value);     if (this.isSelected(value)) {       this._selection.delete(value);        if (this._emitChanges) {         this._deselectedToEmit.push(value);       }     }   }    /** Clears out the selected values. */   private _unmarkAll() {     if (!this.isEmpty()) {       this._selection.forEach(value => this._unmarkSelected(value));     }   }    /**    * Verifies the value assignment and throws an error if the specified value array is    * including multiple values while the selection model is not supporting multiple values.    */   private _verifyValueAssignment(values: T[]) {     if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getMultipleValuesInSingleSelectionError();     }   }    /** Whether there are queued up change to be emitted. */   private _hasQueuedChanges() {     return !!(this._deselectedToEmit.length || this._selectedToEmit.length);   }    /** Returns a value that is comparable to inputValue by applying compareWith function, returns the same inputValue otherwise. */   private _getConcreteValue(inputValue: T): T {     if (!this.compareWith) {       return inputValue;     } else {       for (let selectedValue of this._selection) {         if (this.compareWith!(inputValue, selectedValue)) {           return selectedValue;         }       }       return inputValue;     }   } }  /**  * Event emitted when the value of a MatSelectionModel has changed.  * @docs-private  */ export interface SelectionChange<T> {   /** Model that dispatched the event. */   source: SelectionModel<T>;   /** Options that were added to the model. */   added: T[];   /** Options that were removed from the model. */   removed: T[]; }  /**  * Returns an error that reports that multiple values are passed into a selection model  * with a single value.  * @docs-private  */ export function getMultipleValuesInSingleSelectionError() {   return Error('Cannot pass multiple values into SelectionModel with single-value mode.'); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable, OnDestroy} from '@angular/core';  // Users of the Dispatcher never need to see this type, but TypeScript requires it to be exported. export type UniqueSelectionDispatcherListener = (id: string, name: string) => void;  /**  * Class to coordinate unique selection based on name.  * Intended to be consumed as an Angular service.  * This service is needed because native radio change events are only fired on the item currently  * being selected, and we still need to uncheck the previous selection.  *  * This service does not *store* any IDs and names because they may change at any time, so it is  * less error-prone if they are simply passed through when the events occur.  */ @Injectable({providedIn: 'root'}) export class UniqueSelectionDispatcher implements OnDestroy {   private _listeners: UniqueSelectionDispatcherListener[] = [];    /**    * Notify other items that selection for the given name has been set.    * @param id ID of the item.    * @param name Name of the item.    */   notify(id: string, name: string) {     for (let listener of this._listeners) {       listener(id, name);     }   }    /**    * Listen for future changes to item selection.    * @return Function used to deregister listener    */   listen(listener: UniqueSelectionDispatcherListener): () => void {     this._listeners.push(listener);     return () => {       this._listeners = this._listeners.filter((registered: UniqueSelectionDispatcherListener) => {         return listener !== registered;       });     };   }    ngOnDestroy() {     this._listeners = [];   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   InjectionToken,   IterableChangeRecord,   IterableChanges,   TemplateRef,   ViewContainerRef, } from '@angular/core';  /**  * The context for an embedded view in the repeater's view container.  *  * @template T The type for the embedded view's $implicit property.  */ export interface _ViewRepeaterItemContext<T> {   $implicit?: T; }  /**  * The arguments needed to construct an embedded view for an item in a view  * container.  *  * @template C The type for the context passed to each embedded view.  */ export interface _ViewRepeaterItemInsertArgs<C> {   templateRef: TemplateRef<C>;   context?: C;   index?: number; }  /**  * A factory that derives the embedded view context for an item in a view  * container.  *  * @template T The type for the embedded view's $implicit property.  * @template R The type for the item in each IterableDiffer change record.  * @template C The type for the context passed to each embedded view.  */ export type _ViewRepeaterItemContextFactory<T, R, C extends _ViewRepeaterItemContext<T>> = (   record: IterableChangeRecord<R>,   adjustedPreviousIndex: number | null,   currentIndex: number | null, ) => _ViewRepeaterItemInsertArgs<C>;  /**  * Extracts the value of an item from an {@link IterableChangeRecord}.  *  * @template T The type for the embedded view's $implicit property.  * @template R The type for the item in each IterableDiffer change record.  */ export type _ViewRepeaterItemValueResolver<T, R> = (record: IterableChangeRecord<R>) => T;  /** Indicates how a view was changed by a {@link _ViewRepeater}. */ export const enum _ViewRepeaterOperation {   /** The content of an existing view was replaced with another item. */   REPLACED,   /** A new view was created with `createEmbeddedView`. */   INSERTED,   /** The position of a view changed, but the content remains the same. */   MOVED,   /** A view was detached from the view container. */   REMOVED, }  /**  * Meta data describing the state of a view after it was updated by a  * {@link _ViewRepeater}.  *  * @template R The type for the item in each IterableDiffer change record.  * @template C The type for the context passed to each embedded view.  */ export interface _ViewRepeaterItemChange<R, C> {   /** The view's context after it was changed. */   context?: C;   /** Indicates how the view was changed. */   operation: _ViewRepeaterOperation;   /** The view's corresponding change record. */   record: IterableChangeRecord<R>; }  /**  * Type for a callback to be executed after a view has changed.  *  * @template R The type for the item in each IterableDiffer change record.  * @template C The type for the context passed to each embedded view.  */ export type _ViewRepeaterItemChanged<R, C> = (change: _ViewRepeaterItemChange<R, C>) => void;  /**  * Describes a strategy for rendering items in a {@link ViewContainerRef}.  *  * @template T The type for the embedded view's $implicit property.  * @template R The type for the item in each IterableDiffer change record.  * @template C The type for the context passed to each embedded view.  */ export interface _ViewRepeater<T, R, C extends _ViewRepeaterItemContext<T>> {   applyChanges(     changes: IterableChanges<R>,     viewContainerRef: ViewContainerRef,     itemContextFactory: _ViewRepeaterItemContextFactory<T, R, C>,     itemValueResolver: _ViewRepeaterItemValueResolver<T, R>,     itemViewChanged?: _ViewRepeaterItemChanged<R, C>,   ): void;    detach(): void; }  /**  * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.  * @docs-private  */ export const _VIEW_REPEATER_STRATEGY = new InjectionToken<   _ViewRepeater<unknown, unknown, _ViewRepeaterItemContext<unknown>> >('_ViewRepeater'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './array-data-source'; export * from './collection-viewer'; export * from './data-source'; export * from './dispose-view-repeater-strategy'; export * from './recycle-view-repeater-strategy'; export * from './selection-model'; export {   UniqueSelectionDispatcher,   UniqueSelectionDispatcherListener, } from './unique-selection-dispatcher'; export * from './tree-adapter'; export * from './view-repeater'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["observableOf"],"mappings":"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"}
-------------------- SECTION 213 --------------------
{"version":3,"file":"table.mjs","sources":["../../../../../../src/cdk/table/can-stick.ts","../../../../../../src/cdk/table/tokens.ts","../../../../../../src/cdk/table/cell.ts","../../../../../../src/cdk/table/coalesced-style-scheduler.ts","../../../../../../src/cdk/table/row.ts","../../../../../../src/cdk/table/sticky-styler.ts","../../../../../../src/cdk/table/table-errors.ts","../../../../../../src/cdk/table/sticky-position-listener.ts","../../../../../../src/cdk/table/table.ts","../../../../../../src/cdk/table/text-column.ts","../../../../../../src/cdk/table/table-module.ts","../../../../../../src/cdk/table/public-api.ts","../../../../../../src/cdk/table/index.ts","../../../../../../src/cdk/table/table_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';  /** @docs-private */ export type Constructor<T> = new (...args: any[]) => T;  /**  * Interface for a mixin to provide a directive with a function that checks if the sticky input has  * been changed since the last time the function was called. Essentially adds a dirty-check to the  * sticky value.  * @docs-private  */ export interface CanStick {   /** Whether sticky positioning should be applied. */   sticky: boolean;    /** Whether the sticky input has changed since it was last checked. */   _hasStickyChanged: boolean;    /** Whether the sticky value has changed since this was last called. */   hasStickyChanged(): boolean;    /** Resets the dirty check for cases where the sticky state has been used without checking. */   resetStickyChanged(): void; }  /** @docs-private */ export type CanStickCtor = Constructor<CanStick>;  /**  * Mixin to provide a directive with a function that checks if the sticky input has been  * changed since the last time the function was called. Essentially adds a dirty-check to the  * sticky value.  * @docs-private  */ export function mixinHasStickyInput<T extends Constructor<{}>>(base: T): CanStickCtor & T {   return class extends base {     /** Whether sticky positioning should be applied. */     get sticky(): boolean {       return this._sticky;     }     set sticky(v: BooleanInput) {       const prevValue = this._sticky;       this._sticky = coerceBooleanProperty(v);       this._hasStickyChanged = prevValue !== this._sticky;     }     _sticky: boolean = false;      /** Whether the sticky input has changed since it was last checked. */     _hasStickyChanged: boolean = false;      /** Whether the sticky value has changed since this was last called. */     hasStickyChanged(): boolean {       const hasStickyChanged = this._hasStickyChanged;       this._hasStickyChanged = false;       return hasStickyChanged;     }      /** Resets the dirty check for cases where the sticky state has been used without checking. */     resetStickyChanged() {       this._hasStickyChanged = false;     }      constructor(...args: any[]) {       super(...args);     }   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core';  /**  * Used to provide a table to some of the sub-components without causing a circular dependency.  * @docs-private  */ export const CDK_TABLE = new InjectionToken<any>('CDK_TABLE');  /** Configurable options for `CdkTextColumn`. */ export interface TextColumnOptions<T> {   /**    * Default function that provides the header text based on the column name if a header    * text is not provided.    */   defaultHeaderTextTransform?: (name: string) => string;    /** Default data accessor to use if one is not provided. */   defaultDataAccessor?: (data: T, name: string) => string; }  /** Injection token that can be used to specify the text column options. */ export const TEXT_COLUMN_OPTIONS = new InjectionToken<TextColumnOptions<any>>(   'text-column-options', ); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {   ContentChild,   Directive,   ElementRef,   Inject,   Input,   Optional,   TemplateRef, } from '@angular/core'; import {CanStick, CanStickCtor, mixinHasStickyInput} from './can-stick'; import {CDK_TABLE} from './tokens';  /** Base interface for a cell definition. Captures a column's cell template definition. */ export interface CellDef {   template: TemplateRef<any>; }  /**  * Cell definition for a CDK table.  * Captures the template of a column's data row cell as well as cell-specific properties.  */ @Directive({selector: '[cdkCellDef]'}) export class CdkCellDef implements CellDef {   constructor(/** @docs-private */ public template: TemplateRef<any>) {} }  /**  * Header cell definition for a CDK table.  * Captures the template of a column's header cell and as well as cell-specific properties.  */ @Directive({selector: '[cdkHeaderCellDef]'}) export class CdkHeaderCellDef implements CellDef {   constructor(/** @docs-private */ public template: TemplateRef<any>) {} }  /**  * Footer cell definition for a CDK table.  * Captures the template of a column's footer cell and as well as cell-specific properties.  */ @Directive({selector: '[cdkFooterCellDef]'}) export class CdkFooterCellDef implements CellDef {   constructor(/** @docs-private */ public template: TemplateRef<any>) {} }  // Boilerplate for applying mixins to CdkColumnDef. /** @docs-private */ class CdkColumnDefBase {} const _CdkColumnDefBase: CanStickCtor & typeof CdkColumnDefBase =   mixinHasStickyInput(CdkColumnDefBase);  /**  * Column definition for the CDK table.  * Defines a set of cells available for a table column.  */ @Directive({   selector: '[cdkColumnDef]',   inputs: ['sticky'],   providers: [{provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef}], }) export class CdkColumnDef extends _CdkColumnDefBase implements CanStick {   /** Unique name for this column. */   @Input('cdkColumnDef')   get name(): string {     return this._name;   }   set name(name: string) {     this._setNameInput(name);   }   protected _name: string;    /**    * Whether this column should be sticky positioned on the end of the row. Should make sure    * that it mimics the `CanStick` mixin such that `_hasStickyChanged` is set to true if the value    * has been changed.    */   @Input('stickyEnd')   get stickyEnd(): boolean {     return this._stickyEnd;   }   set stickyEnd(v: BooleanInput) {     const prevValue = this._stickyEnd;     this._stickyEnd = coerceBooleanProperty(v);     this._hasStickyChanged = prevValue !== this._stickyEnd;   }   _stickyEnd: boolean = false;    /** @docs-private */   @ContentChild(CdkCellDef) cell: CdkCellDef;    /** @docs-private */   @ContentChild(CdkHeaderCellDef) headerCell: CdkHeaderCellDef;    /** @docs-private */   @ContentChild(CdkFooterCellDef) footerCell: CdkFooterCellDef;    /**    * Transformed version of the column name that can be used as part of a CSS classname. Excludes    * all non-alphanumeric characters and the special characters '-' and '_'. Any characters that    * do not match are replaced by the '-' character.    */   cssClassFriendlyName: string;    /**    * Class name for cells in this column.    * @docs-private    */   _columnCssClassName: string[];    constructor(@Inject(CDK_TABLE) @Optional() public _table?: any) {     super();   }    /**    * Overridable method that sets the css classes that will be added to every cell in this    * column.    * In the future, columnCssClassName will change from type string[] to string and this    * will set a single string value.    * @docs-private    */   protected _updateColumnCssClassName() {     this._columnCssClassName = [`cdk-column-${this.cssClassFriendlyName}`];   }    /**    * This has been extracted to a util because of TS 4 and VE.    * View Engine doesn't support property rename inheritance.    * TS 4.0 doesn't allow properties to override accessors or vice-versa.    * @docs-private    */   protected _setNameInput(value: string) {     // If the directive is set without a name (updated programmatically), then this setter will     // trigger with an empty string and should not overwrite the programmatically set value.     if (value) {       this._name = value;       this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/gi, '-');       this._updateColumnCssClassName();     }   } }  /** Base class for the cells. Adds a CSS classname that identifies the column it renders in. */ export class BaseCdkCell {   constructor(columnDef: CdkColumnDef, elementRef: ElementRef) {     elementRef.nativeElement.classList.add(...columnDef._columnCssClassName);   } }  /** Header cell template container that adds the right classes and role. */ @Directive({   selector: 'cdk-header-cell, th[cdk-header-cell]',   host: {     'class': 'cdk-header-cell',     'role': 'columnheader',   }, }) export class CdkHeaderCell extends BaseCdkCell {   constructor(columnDef: CdkColumnDef, elementRef: ElementRef) {     super(columnDef, elementRef);   } }  /** Footer cell template container that adds the right classes and role. */ @Directive({   selector: 'cdk-footer-cell, td[cdk-footer-cell]',   host: {     'class': 'cdk-footer-cell',   }, }) export class CdkFooterCell extends BaseCdkCell {   constructor(columnDef: CdkColumnDef, elementRef: ElementRef) {     super(columnDef, elementRef);     if (columnDef._table?._elementRef.nativeElement.nodeType === 1) {       const tableRole = columnDef._table._elementRef.nativeElement.getAttribute('role');       const role = tableRole === 'grid' || tableRole === 'treegrid' ? 'gridcell' : 'cell';       elementRef.nativeElement.setAttribute('role', role);     }   } }  /** Cell template container that adds the right classes and role. */ @Directive({   selector: 'cdk-cell, td[cdk-cell]',   host: {     'class': 'cdk-cell',   }, }) export class CdkCell extends BaseCdkCell {   constructor(columnDef: CdkColumnDef, elementRef: ElementRef) {     super(columnDef, elementRef);     if (columnDef._table?._elementRef.nativeElement.nodeType === 1) {       const tableRole = columnDef._table._elementRef.nativeElement.getAttribute('role');       const role = tableRole === 'grid' || tableRole === 'treegrid' ? 'gridcell' : 'cell';       elementRef.nativeElement.setAttribute('role', role);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable, NgZone, OnDestroy, InjectionToken} from '@angular/core'; import {from, Subject} from 'rxjs'; import {take, takeUntil} from 'rxjs/operators';  /**  * @docs-private  */ export class _Schedule {   tasks: (() => unknown)[] = [];   endTasks: (() => unknown)[] = []; }  /** Injection token used to provide a coalesced style scheduler. */ export const _COALESCED_STYLE_SCHEDULER = new InjectionToken<_CoalescedStyleScheduler>(   '_COALESCED_STYLE_SCHEDULER', );  /**  * Allows grouping up CSSDom mutations after the current execution context.  * This can significantly improve performance when separate consecutive functions are  * reading from the CSSDom and then mutating it.  *  * @docs-private  */ @Injectable() export class _CoalescedStyleScheduler implements OnDestroy {   private _currentSchedule: _Schedule | null = null;   private readonly _destroyed = new Subject<void>();    constructor(private readonly _ngZone: NgZone) {}    /**    * Schedules the specified task to run at the end of the current VM turn.    */   schedule(task: () => unknown): void {     this._createScheduleIfNeeded();      this._currentSchedule!.tasks.push(task);   }    /**    * Schedules the specified task to run after other scheduled tasks at the end of the current    * VM turn.    */   scheduleEnd(task: () => unknown): void {     this._createScheduleIfNeeded();      this._currentSchedule!.endTasks.push(task);   }    /** Prevent any further tasks from running. */   ngOnDestroy() {     this._destroyed.next();     this._destroyed.complete();   }    private _createScheduleIfNeeded() {     if (this._currentSchedule) {       return;     }      this._currentSchedule = new _Schedule();      this._getScheduleObservable()       .pipe(takeUntil(this._destroyed))       .subscribe(() => {         while (this._currentSchedule!.tasks.length || this._currentSchedule!.endTasks.length) {           const schedule = this._currentSchedule!;            // Capture new tasks scheduled by the current set of tasks.           this._currentSchedule = new _Schedule();            for (const task of schedule.tasks) {             task();           }            for (const task of schedule.endTasks) {             task();           }         }          this._currentSchedule = null;       });   }    private _getScheduleObservable() {     // Use onStable when in the context of an ongoing change detection cycle so that we     // do not accidentally trigger additional cycles.     return this._ngZone.isStable       ? from(Promise.resolve(undefined))       : this._ngZone.onStable.pipe(take(1));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   ChangeDetectionStrategy,   Component,   Directive,   IterableChanges,   IterableDiffer,   IterableDiffers,   OnChanges,   OnDestroy,   SimpleChanges,   TemplateRef,   ViewContainerRef,   ViewEncapsulation,   Inject,   Optional, } from '@angular/core'; import {CanStick, CanStickCtor, mixinHasStickyInput} from './can-stick'; import {CdkCellDef, CdkColumnDef} from './cell'; import {CDK_TABLE} from './tokens';  /**  * The row template that can be used by the mat-table. Should not be used outside of the  * material library.  */ export const CDK_ROW_TEMPLATE = `<ng-container cdkCellOutlet></ng-container>`;  /**  * Base class for the CdkHeaderRowDef and CdkRowDef that handles checking their columns inputs  * for changes and notifying the table.  */ @Directive() export abstract class BaseRowDef implements OnChanges {   /** The columns to be displayed on this row. */   columns: Iterable<string>;    /** Differ used to check if any changes were made to the columns. */   protected _columnsDiffer: IterableDiffer<any>;    constructor(     /** @docs-private */ public template: TemplateRef<any>,     protected _differs: IterableDiffers,   ) {}    ngOnChanges(changes: SimpleChanges): void {     // Create a new columns differ if one does not yet exist. Initialize it based on initial value     // of the columns property or an empty array if none is provided.     if (!this._columnsDiffer) {       const columns = (changes['columns'] && changes['columns'].currentValue) || [];       this._columnsDiffer = this._differs.find(columns).create();       this._columnsDiffer.diff(columns);     }   }    /**    * Returns the difference between the current columns and the columns from the last diff, or null    * if there is no difference.    */   getColumnsDiff(): IterableChanges<any> | null {     return this._columnsDiffer.diff(this.columns);   }    /** Gets this row def's relevant cell template from the provided column def. */   extractCellTemplate(column: CdkColumnDef): TemplateRef<any> {     if (this instanceof CdkHeaderRowDef) {       return column.headerCell.template;     }     if (this instanceof CdkFooterRowDef) {       return column.footerCell.template;     } else {       return column.cell.template;     }   } }  // Boilerplate for applying mixins to CdkHeaderRowDef. /** @docs-private */ class CdkHeaderRowDefBase extends BaseRowDef {} const _CdkHeaderRowDefBase: CanStickCtor & typeof CdkHeaderRowDefBase =   mixinHasStickyInput(CdkHeaderRowDefBase);  /**  * Header row definition for the CDK table.  * Captures the header row's template and other header properties such as the columns to display.  */ @Directive({   selector: '[cdkHeaderRowDef]',   inputs: ['columns: cdkHeaderRowDef', 'sticky: cdkHeaderRowDefSticky'], }) export class CdkHeaderRowDef extends _CdkHeaderRowDefBase implements CanStick, OnChanges {   constructor(     template: TemplateRef<any>,     _differs: IterableDiffers,     @Inject(CDK_TABLE) @Optional() public _table?: any,   ) {     super(template, _differs);   }    // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.   // Explicitly define it so that the method is called as part of the Angular lifecycle.   override ngOnChanges(changes: SimpleChanges): void {     super.ngOnChanges(changes);   } }  // Boilerplate for applying mixins to CdkFooterRowDef. /** @docs-private */ class CdkFooterRowDefBase extends BaseRowDef {} const _CdkFooterRowDefBase: CanStickCtor & typeof CdkFooterRowDefBase =   mixinHasStickyInput(CdkFooterRowDefBase);  /**  * Footer row definition for the CDK table.  * Captures the footer row's template and other footer properties such as the columns to display.  */ @Directive({   selector: '[cdkFooterRowDef]',   inputs: ['columns: cdkFooterRowDef', 'sticky: cdkFooterRowDefSticky'], }) export class CdkFooterRowDef extends _CdkFooterRowDefBase implements CanStick, OnChanges {   constructor(     template: TemplateRef<any>,     _differs: IterableDiffers,     @Inject(CDK_TABLE) @Optional() public _table?: any,   ) {     super(template, _differs);   }    // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.   // Explicitly define it so that the method is called as part of the Angular lifecycle.   override ngOnChanges(changes: SimpleChanges): void {     super.ngOnChanges(changes);   } }  /**  * Data row definition for the CDK table.  * Captures the header row's template and other row properties such as the columns to display and  * a when predicate that describes when this row should be used.  */ @Directive({   selector: '[cdkRowDef]',   inputs: ['columns: cdkRowDefColumns', 'when: cdkRowDefWhen'], }) export class CdkRowDef<T> extends BaseRowDef {   /**    * Function that should return true if this row template should be used for the provided index    * and row data. If left undefined, this row will be considered the default row template to use    * when no other when functions return true for the data.    * For every row, there must be at least one when function that passes or an undefined to default.    */   when: (index: number, rowData: T) => boolean;    // TODO(andrewseguin): Add an input for providing a switch function to determine   //   if this template should be used.   constructor(     template: TemplateRef<any>,     _differs: IterableDiffers,     @Inject(CDK_TABLE) @Optional() public _table?: any,   ) {     super(template, _differs);   } }  /** Context provided to the row cells when `multiTemplateDataRows` is false */ export interface CdkCellOutletRowContext<T> {   /** Data for the row that this cell is located within. */   $implicit?: T;    /** Index of the data object in the provided data array. */   index?: number;    /** Length of the number of total rows. */   count?: number;    /** True if this cell is contained in the first row. */   first?: boolean;    /** True if this cell is contained in the last row. */   last?: boolean;    /** True if this cell is contained in a row with an even-numbered index. */   even?: boolean;    /** True if this cell is contained in a row with an odd-numbered index. */   odd?: boolean; }  /**  * Context provided to the row cells when `multiTemplateDataRows` is true. This context is the same  * as CdkCellOutletRowContext except that the single `index` value is replaced by `dataIndex` and  * `renderIndex`.  */ export interface CdkCellOutletMultiRowContext<T> {   /** Data for the row that this cell is located within. */   $implicit?: T;    /** Index of the data object in the provided data array. */   dataIndex?: number;    /** Index location of the rendered row that this cell is located within. */   renderIndex?: number;    /** Length of the number of total rows. */   count?: number;    /** True if this cell is contained in the first row. */   first?: boolean;    /** True if this cell is contained in the last row. */   last?: boolean;    /** True if this cell is contained in a row with an even-numbered index. */   even?: boolean;    /** True if this cell is contained in a row with an odd-numbered index. */   odd?: boolean; }  /**  * Outlet for rendering cells inside of a row or header row.  * @docs-private  */ @Directive({selector: '[cdkCellOutlet]'}) export class CdkCellOutlet implements OnDestroy {   /** The ordered list of cells to render within this outlet's view container */   cells: CdkCellDef[];    /** The data context to be provided to each cell */   context: any;    /**    * Static property containing the latest constructed instance of this class.    * Used by the CDK table when each CdkHeaderRow and CdkRow component is created using    * createEmbeddedView. After one of these components are created, this property will provide    * a handle to provide that component's cells and context. After init, the CdkCellOutlet will    * construct the cells with the provided context.    */   static mostRecentCellOutlet: CdkCellOutlet | null = null;    constructor(public _viewContainer: ViewContainerRef) {     CdkCellOutlet.mostRecentCellOutlet = this;   }    ngOnDestroy() {     // If this was the last outlet being rendered in the view, remove the reference     // from the static property after it has been destroyed to avoid leaking memory.     if (CdkCellOutlet.mostRecentCellOutlet === this) {       CdkCellOutlet.mostRecentCellOutlet = null;     }   } }  /** Header template container that contains the cell outlet. Adds the right class and role. */ @Component({   selector: 'cdk-header-row, tr[cdk-header-row]',   template: CDK_ROW_TEMPLATE,   host: {     'class': 'cdk-header-row',     'role': 'row',   },   // See note on CdkTable for explanation on why this uses the default change detection strategy.   // tslint:disable-next-line:validate-decorators   changeDetection: ChangeDetectionStrategy.Default,   encapsulation: ViewEncapsulation.None, }) export class CdkHeaderRow {}  /** Footer template container that contains the cell outlet. Adds the right class and role. */ @Component({   selector: 'cdk-footer-row, tr[cdk-footer-row]',   template: CDK_ROW_TEMPLATE,   host: {     'class': 'cdk-footer-row',     'role': 'row',   },   // See note on CdkTable for explanation on why this uses the default change detection strategy.   // tslint:disable-next-line:validate-decorators   changeDetection: ChangeDetectionStrategy.Default,   encapsulation: ViewEncapsulation.None, }) export class CdkFooterRow {}  /** Data row template container that contains the cell outlet. Adds the right class and role. */ @Component({   selector: 'cdk-row, tr[cdk-row]',   template: CDK_ROW_TEMPLATE,   host: {     'class': 'cdk-row',     'role': 'row',   },   // See note on CdkTable for explanation on why this uses the default change detection strategy.   // tslint:disable-next-line:validate-decorators   changeDetection: ChangeDetectionStrategy.Default,   encapsulation: ViewEncapsulation.None, }) export class CdkRow {}  /** Row that can be used to display a message when no data is shown in the table. */ @Directive({   selector: 'ng-template[cdkNoDataRow]', }) export class CdkNoDataRow {   _contentClassName = 'cdk-no-data-row';   constructor(public templateRef: TemplateRef<any>) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Directions that can be used when setting sticky positioning.  * @docs-private  */ import {Direction} from '@angular/cdk/bidi'; import {_CoalescedStyleScheduler} from './coalesced-style-scheduler'; import {StickyPositioningListener} from './sticky-position-listener';  export type StickyDirection = 'top' | 'bottom' | 'left' | 'right';  /**  * List of all possible directions that can be used for sticky positioning.  * @docs-private  */ export const STICKY_DIRECTIONS: StickyDirection[] = ['top', 'bottom', 'left', 'right'];  /**  * Applies and removes sticky positioning styles to the `CdkTable` rows and columns cells.  * @docs-private  */ export class StickyStyler {   private _cachedCellWidths: number[] = [];   private readonly _borderCellCss: Readonly<{[d in StickyDirection]: string}>;    /**    * @param _isNativeHtmlTable Whether the sticky logic should be based on a table    *     that uses the native `<table>` element.    * @param _stickCellCss The CSS class that will be applied to every row/cell that has    *     sticky positioning applied.    * @param direction The directionality context of the table (ltr/rtl); affects column positioning    *     by reversing left/right positions.    * @param _isBrowser Whether the table is currently being rendered on the server or the client.    * @param _needsPositionStickyOnElement Whether we need to specify position: sticky on cells    *     using inline styles. If false, it is assumed that position: sticky is included in    *     the component stylesheet for _stickCellCss.    * @param _positionListener A listener that is notified of changes to sticky rows/columns    *     and their dimensions.    */   constructor(     private _isNativeHtmlTable: boolean,     private _stickCellCss: string,     public direction: Direction,     private _coalescedStyleScheduler: _CoalescedStyleScheduler,     private _isBrowser = true,     private readonly _needsPositionStickyOnElement = true,     private readonly _positionListener?: StickyPositioningListener,   ) {     this._borderCellCss = {       'top': `${_stickCellCss}-border-elem-top`,       'bottom': `${_stickCellCss}-border-elem-bottom`,       'left': `${_stickCellCss}-border-elem-left`,       'right': `${_stickCellCss}-border-elem-right`,     };   }    /**    * Clears the sticky positioning styles from the row and its cells by resetting the `position`    * style, setting the zIndex to 0, and unsetting each provided sticky direction.    * @param rows The list of rows that should be cleared from sticking in the provided directions    * @param stickyDirections The directions that should no longer be set as sticky on the rows.    */   clearStickyPositioning(rows: HTMLElement[], stickyDirections: StickyDirection[]) {     const elementsToClear: HTMLElement[] = [];     for (const row of rows) {       // If the row isn't an element (e.g. if it's an `ng-container`),       // it won't have inline styles or `children` so we skip it.       if (row.nodeType !== row.ELEMENT_NODE) {         continue;       }        elementsToClear.push(row);       for (let i = 0; i < row.children.length; i++) {         elementsToClear.push(row.children[i] as HTMLElement);       }     }      // Coalesce with sticky row/column updates (and potentially other changes like column resize).     this._coalescedStyleScheduler.schedule(() => {       for (const element of elementsToClear) {         this._removeStickyStyle(element, stickyDirections);       }     });   }    /**    * Applies sticky left and right positions to the cells of each row according to the sticky    * states of the rendered column definitions.    * @param rows The rows that should have its set of cells stuck according to the sticky states.    * @param stickyStartStates A list of boolean states where each state represents whether the cell    *     in this index position should be stuck to the start of the row.    * @param stickyEndStates A list of boolean states where each state represents whether the cell    *     in this index position should be stuck to the end of the row.    * @param recalculateCellWidths Whether the sticky styler should recalculate the width of each    *     column cell. If `false` cached widths will be used instead.    */   updateStickyColumns(     rows: HTMLElement[],     stickyStartStates: boolean[],     stickyEndStates: boolean[],     recalculateCellWidths = true,   ) {     if (       !rows.length ||       !this._isBrowser ||       !(stickyStartStates.some(state => state) || stickyEndStates.some(state => state))     ) {       if (this._positionListener) {         this._positionListener.stickyColumnsUpdated({sizes: []});         this._positionListener.stickyEndColumnsUpdated({sizes: []});       }        return;     }      const firstRow = rows[0];     const numCells = firstRow.children.length;     const cellWidths: number[] = this._getCellWidths(firstRow, recalculateCellWidths);      const startPositions = this._getStickyStartColumnPositions(cellWidths, stickyStartStates);     const endPositions = this._getStickyEndColumnPositions(cellWidths, stickyEndStates);      const lastStickyStart = stickyStartStates.lastIndexOf(true);     const firstStickyEnd = stickyEndStates.indexOf(true);      // Coalesce with sticky row updates (and potentially other changes like column resize).     this._coalescedStyleScheduler.schedule(() => {       const isRtl = this.direction === 'rtl';       const start = isRtl ? 'right' : 'left';       const end = isRtl ? 'left' : 'right';        for (const row of rows) {         for (let i = 0; i < numCells; i++) {           const cell = row.children[i] as HTMLElement;           if (stickyStartStates[i]) {             this._addStickyStyle(cell, start, startPositions[i], i === lastStickyStart);           }            if (stickyEndStates[i]) {             this._addStickyStyle(cell, end, endPositions[i], i === firstStickyEnd);           }         }       }        if (this._positionListener) {         this._positionListener.stickyColumnsUpdated({           sizes:             lastStickyStart === -1               ? []               : cellWidths                   .slice(0, lastStickyStart + 1)                   .map((width, index) => (stickyStartStates[index] ? width : null)),         });         this._positionListener.stickyEndColumnsUpdated({           sizes:             firstStickyEnd === -1               ? []               : cellWidths                   .slice(firstStickyEnd)                   .map((width, index) => (stickyEndStates[index + firstStickyEnd] ? width : null))                   .reverse(),         });       }     });   }    /**    * Applies sticky positioning to the row's cells if using the native table layout, and to the    * row itself otherwise.    * @param rowsToStick The list of rows that should be stuck according to their corresponding    *     sticky state and to the provided top or bottom position.    * @param stickyStates A list of boolean states where each state represents whether the row    *     should be stuck in the particular top or bottom position.    * @param position The position direction in which the row should be stuck if that row should be    *     sticky.    *    */   stickRows(rowsToStick: HTMLElement[], stickyStates: boolean[], position: 'top' | 'bottom') {     // Since we can't measure the rows on the server, we can't stick the rows properly.     if (!this._isBrowser) {       return;     }      // If positioning the rows to the bottom, reverse their order when evaluating the sticky     // position such that the last row stuck will be \"bottom: 0px\" and so on. Note that the     // sticky states need to be reversed as well.     const rows = position === 'bottom' ? rowsToStick.slice().reverse() : rowsToStick;     const states = position === 'bottom' ? stickyStates.slice().reverse() : stickyStates;      // Measure row heights all at once before adding sticky styles to reduce layout thrashing.     const stickyOffsets: number[] = [];     const stickyCellHeights: (number | undefined)[] = [];     const elementsToStick: HTMLElement[][] = [];     for (let rowIndex = 0, stickyOffset = 0; rowIndex < rows.length; rowIndex++) {       if (!states[rowIndex]) {         continue;       }        stickyOffsets[rowIndex] = stickyOffset;       const row = rows[rowIndex];       elementsToStick[rowIndex] = this._isNativeHtmlTable         ? (Array.from(row.children) as HTMLElement[])         : [row];        const height = row.getBoundingClientRect().height;       stickyOffset += height;       stickyCellHeights[rowIndex] = height;     }      const borderedRowIndex = states.lastIndexOf(true);      // Coalesce with other sticky row updates (top/bottom), sticky columns updates     // (and potentially other changes like column resize).     this._coalescedStyleScheduler.schedule(() => {       for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {         if (!states[rowIndex]) {           continue;         }          const offset = stickyOffsets[rowIndex];         const isBorderedRowIndex = rowIndex === borderedRowIndex;         for (const element of elementsToStick[rowIndex]) {           this._addStickyStyle(element, position, offset, isBorderedRowIndex);         }       }        if (position === 'top') {         this._positionListener?.stickyHeaderRowsUpdated({           sizes: stickyCellHeights,           offsets: stickyOffsets,           elements: elementsToStick,         });       } else {         this._positionListener?.stickyFooterRowsUpdated({           sizes: stickyCellHeights,           offsets: stickyOffsets,           elements: elementsToStick,         });       }     });   }    /**    * When using the native table in Safari, sticky footer cells do not stick. The only way to stick    * footer rows is to apply sticky styling to the tfoot container. This should only be done if    * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from    * the tfoot element.    */   updateStickyFooterContainer(tableElement: Element, stickyStates: boolean[]) {     if (!this._isNativeHtmlTable) {       return;     }      const tfoot = tableElement.querySelector('tfoot')!;      // Coalesce with other sticky updates (and potentially other changes like column resize).     this._coalescedStyleScheduler.schedule(() => {       if (stickyStates.some(state => !state)) {         this._removeStickyStyle(tfoot, ['bottom']);       } else {         this._addStickyStyle(tfoot, 'bottom', 0, false);       }     });   }    /**    * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating    * the zIndex, removing each of the provided sticky directions, and removing the    * sticky position if there are no more directions.    */   _removeStickyStyle(element: HTMLElement, stickyDirections: StickyDirection[]) {     for (const dir of stickyDirections) {       element.style[dir] = '';       element.classList.remove(this._borderCellCss[dir]);     }      // If the element no longer has any more sticky directions, remove sticky positioning and     // the sticky CSS class.     // Short-circuit checking element.style[dir] for stickyDirections as they     // were already removed above.     const hasDirection = STICKY_DIRECTIONS.some(       dir => stickyDirections.indexOf(dir) === -1 && element.style[dir],     );     if (hasDirection) {       element.style.zIndex = this._getCalculatedZIndex(element);     } else {       // When not hasDirection, _getCalculatedZIndex will always return ''.       element.style.zIndex = '';       if (this._needsPositionStickyOnElement) {         element.style.position = '';       }       element.classList.remove(this._stickCellCss);     }   }    /**    * Adds the sticky styling to the element by adding the sticky style class, changing position    * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky    * direction and value.    */   _addStickyStyle(     element: HTMLElement,     dir: StickyDirection,     dirValue: number,     isBorderElement: boolean,   ) {     element.classList.add(this._stickCellCss);     if (isBorderElement) {       element.classList.add(this._borderCellCss[dir]);     }     element.style[dir] = `${dirValue}px`;     element.style.zIndex = this._getCalculatedZIndex(element);     if (this._needsPositionStickyOnElement) {       element.style.cssText += 'position: -webkit-sticky; position: sticky; ';     }   }    /**    * Calculate what the z-index should be for the element, depending on what directions (top,    * bottom, left, right) have been set. It should be true that elements with a top direction    * should have the highest index since these are elements like a table header. If any of those    * elements are also sticky in another direction, then they should appear above other elements    * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements    * (e.g. footer rows) should then be next in the ordering such that they are below the header    * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns)    * should minimally increment so that they are above non-sticky elements but below top and bottom    * elements.    */   _getCalculatedZIndex(element: HTMLElement): string {     const zIndexIncrements = {       top: 100,       bottom: 10,       left: 1,       right: 1,     };      let zIndex = 0;     // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,     // loses the array generic type in the `for of`. But we *also* have to use `Array` because     // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`     for (const dir of STICKY_DIRECTIONS as Iterable<StickyDirection> & StickyDirection[]) {       if (element.style[dir]) {         zIndex += zIndexIncrements[dir];       }     }      return zIndex ? `${zIndex}` : '';   }    /** Gets the widths for each cell in the provided row. */   _getCellWidths(row: HTMLElement, recalculateCellWidths = true): number[] {     if (!recalculateCellWidths && this._cachedCellWidths.length) {       return this._cachedCellWidths;     }      const cellWidths: number[] = [];     const firstRowCells = row.children;     for (let i = 0; i < firstRowCells.length; i++) {       let cell: HTMLElement = firstRowCells[i] as HTMLElement;       cellWidths.push(cell.getBoundingClientRect().width);     }      this._cachedCellWidths = cellWidths;     return cellWidths;   }    /**    * Determines the left and right positions of each sticky column cell, which will be the    * accumulation of all sticky column cell widths to the left and right, respectively.    * Non-sticky cells do not need to have a value set since their positions will not be applied.    */   _getStickyStartColumnPositions(widths: number[], stickyStates: boolean[]): number[] {     const positions: number[] = [];     let nextPosition = 0;      for (let i = 0; i < widths.length; i++) {       if (stickyStates[i]) {         positions[i] = nextPosition;         nextPosition += widths[i];       }     }      return positions;   }    /**    * Determines the left and right positions of each sticky column cell, which will be the    * accumulation of all sticky column cell widths to the left and right, respectively.    * Non-sticky cells do not need to have a value set since their positions will not be applied.    */   _getStickyEndColumnPositions(widths: number[], stickyStates: boolean[]): number[] {     const positions: number[] = [];     let nextPosition = 0;      for (let i = widths.length; i > 0; i--) {       if (stickyStates[i]) {         positions[i] = nextPosition;         nextPosition += widths[i];       }     }      return positions;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Returns an error to be thrown when attempting to find an nonexistent column.  * @param id Id whose lookup failed.  * @docs-private  */ export function getTableUnknownColumnError(id: string) {   return Error(`Could not find column with id \"${id}\".`); }  /**  * Returns an error to be thrown when two column definitions have the same name.  * @docs-private  */ export function getTableDuplicateColumnNameError(name: string) {   return Error(`Duplicate column definition name provided: \"${name}\".`); }  /**  * Returns an error to be thrown when there are multiple rows that are missing a when function.  * @docs-private  */ export function getTableMultipleDefaultRowDefsError() {   return Error(`There can only be one default row without a when predicate function.`); }  /**  * Returns an error to be thrown when there are no matching row defs for a particular set of data.  * @docs-private  */ export function getTableMissingMatchingRowDefError(data: any) {   return Error(     `Could not find a matching row definition for the` +       `provided row data: ${JSON.stringify(data)}`,   ); }  /**  * Returns an error to be thrown when there is no row definitions present in the content.  * @docs-private  */ export function getTableMissingRowDefsError() {   return Error(     'Missing definitions for header, footer, and row; ' +       'cannot determine which columns should be rendered.',   ); }  /**  * Returns an error to be thrown when the data source does not match the compatible types.  * @docs-private  */ export function getTableUnknownDataSourceError() {   return Error(`Provided data source did not match an array, Observable, or DataSource`); }  /**  * Returns an error to be thrown when the text column cannot find a parent table to inject.  * @docs-private  */ export function getTableTextColumnMissingParentTableError() {   return Error(`Text column could not find a parent table for registration.`); }  /**  * Returns an error to be thrown when a table text column doesn't have a name.  * @docs-private  */ export function getTableTextColumnMissingNameError() {   return Error(`Table text column must have a name.`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core';  /** The injection token used to specify the StickyPositioningListener. */ export const STICKY_POSITIONING_LISTENER = new InjectionToken<StickyPositioningListener>('CDK_SPL');  export type StickySize = number | null | undefined; export type StickyOffset = number | null | undefined;  export interface StickyUpdate {   elements?: readonly (HTMLElement[] | undefined)[];   offsets?: StickyOffset[];   sizes: StickySize[]; }  /**  * If provided, CdkTable will call the methods below when it updates the size/  * position/etc of its sticky rows and columns.  */ export interface StickyPositioningListener {   /** Called when CdkTable updates its sticky start columns. */   stickyColumnsUpdated(update: StickyUpdate): void;    /** Called when CdkTable updates its sticky end columns. */   stickyEndColumnsUpdated(update: StickyUpdate): void;    /** Called when CdkTable updates its sticky header rows. */   stickyHeaderRowsUpdated(update: StickyUpdate): void;    /** Called when CdkTable updates its sticky footer rows. */   stickyFooterRowsUpdated(update: StickyUpdate): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Direction, Directionality} from '@angular/cdk/bidi'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {   CollectionViewer,   DataSource,   _DisposeViewRepeaterStrategy,   _RecycleViewRepeaterStrategy,   isDataSource,   _VIEW_REPEATER_STRATEGY,   _ViewRepeater,   _ViewRepeaterItemChange,   _ViewRepeaterItemInsertArgs,   _ViewRepeaterOperation, } from '@angular/cdk/collections'; import {Platform} from '@angular/cdk/platform'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {DOCUMENT} from '@angular/common'; import {   AfterContentChecked,   Attribute,   ChangeDetectionStrategy,   ChangeDetectorRef,   Component,   ContentChild,   ContentChildren,   Directive,   ElementRef,   EmbeddedViewRef,   EventEmitter,   Inject,   Input,   IterableChangeRecord,   IterableDiffer,   IterableDiffers,   NgZone,   OnDestroy,   OnInit,   Optional,   Output,   QueryList,   SkipSelf,   TemplateRef,   TrackByFunction,   ViewChild,   ViewContainerRef,   ViewEncapsulation, } from '@angular/core'; import {   BehaviorSubject,   isObservable,   Observable,   of as observableOf,   Subject,   Subscription, } from 'rxjs'; import {take, takeUntil} from 'rxjs/operators'; import {CdkColumnDef} from './cell'; import {_CoalescedStyleScheduler, _COALESCED_STYLE_SCHEDULER} from './coalesced-style-scheduler'; import {   BaseRowDef,   CdkCellOutlet,   CdkCellOutletMultiRowContext,   CdkCellOutletRowContext,   CdkFooterRowDef,   CdkHeaderRowDef,   CdkNoDataRow,   CdkRowDef, } from './row'; import {StickyStyler} from './sticky-styler'; import {   getTableDuplicateColumnNameError,   getTableMissingMatchingRowDefError,   getTableMissingRowDefsError,   getTableMultipleDefaultRowDefsError,   getTableUnknownColumnError,   getTableUnknownDataSourceError, } from './table-errors'; import {STICKY_POSITIONING_LISTENER, StickyPositioningListener} from './sticky-position-listener'; import {CDK_TABLE} from './tokens';  /**  * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with  * tables that animate rows.  */ @Directive({   selector: 'cdk-table[recycleRows], table[cdk-table][recycleRows]',   providers: [{provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy}], }) export class CdkRecycleRows {}  /** Interface used to provide an outlet for rows to be inserted into. */ export interface RowOutlet {   viewContainer: ViewContainerRef; }  /** Possible types that can be set as the data source for a `CdkTable`. */ export type CdkTableDataSourceInput<T> = readonly T[] | DataSource<T> | Observable<readonly T[]>;  /**  * Provides a handle for the table to grab the view container's ng-container to insert data rows.  * @docs-private  */ @Directive({selector: '[rowOutlet]'}) export class DataRowOutlet implements RowOutlet {   constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {} }  /**  * Provides a handle for the table to grab the view container's ng-container to insert the header.  * @docs-private  */ @Directive({selector: '[headerRowOutlet]'}) export class HeaderRowOutlet implements RowOutlet {   constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {} }  /**  * Provides a handle for the table to grab the view container's ng-container to insert the footer.  * @docs-private  */ @Directive({selector: '[footerRowOutlet]'}) export class FooterRowOutlet implements RowOutlet {   constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {} }  /**  * Provides a handle for the table to grab the view  * container's ng-container to insert the no data row.  * @docs-private  */ @Directive({selector: '[noDataRowOutlet]'}) export class NoDataRowOutlet implements RowOutlet {   constructor(public viewContainer: ViewContainerRef, public elementRef: ElementRef) {} }  /**  * The table template that can be used by the mat-table. Should not be used outside of the  * material library.  * @docs-private  */ export const CDK_TABLE_TEMPLATE =   // Note that according to MDN, the `caption` element has to be projected as the **first**   // element in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption   `   <ng-content select=\"caption\"></ng-content>   <ng-content select=\"colgroup, col\"></ng-content>   <ng-container headerRowOutlet></ng-container>   <ng-container rowOutlet></ng-container>   <ng-container noDataRowOutlet></ng-container>   <ng-container footerRowOutlet></ng-container> `;  /**  * Interface used to conveniently type the possible context interfaces for the render row.  * @docs-private  */ export interface RowContext<T>   extends CdkCellOutletMultiRowContext<T>,     CdkCellOutletRowContext<T> {}  /**  * Class used to conveniently type the embedded view ref for rows with a context.  * @docs-private  */ abstract class RowViewRef<T> extends EmbeddedViewRef<RowContext<T>> {}  /**  * Set of properties that represents the identity of a single rendered row.  *  * When the table needs to determine the list of rows to render, it will do so by iterating through  * each data object and evaluating its list of row templates to display (when multiTemplateDataRows  * is false, there is only one template per data object). For each pair of data object and row  * template, a `RenderRow` is added to the list of rows to render. If the data object and row  * template pair has already been rendered, the previously used `RenderRow` is added; else a new  * `RenderRow` is * created. Once the list is complete and all data objects have been iterated  * through, a diff is performed to determine the changes that need to be made to the rendered rows.  *  * @docs-private  */ export interface RenderRow<T> {   data: T;   dataIndex: number;   rowDef: CdkRowDef<T>; }  /**  * A data table that can render a header row, data rows, and a footer row.  * Uses the dataSource input to determine the data to be rendered. The data can be provided either  * as a data array, an Observable stream that emits the data array to render, or a DataSource with a  * connect function that will return an Observable stream that emits the data array to render.  */ @Component({   selector: 'cdk-table, table[cdk-table]',   exportAs: 'cdkTable',   template: CDK_TABLE_TEMPLATE,   styleUrls: ['table.css'],   host: {     'class': 'cdk-table',     '[class.cdk-table-fixed-layout]': 'fixedLayout',   },   encapsulation: ViewEncapsulation.None,   // The \"OnPush\" status for the `MatTable` component is effectively a noop, so we are removing it.   // The view for `MatTable` consists entirely of templates declared in other views. As they are   // declared elsewhere, they are checked when their declaration points are checked.   // tslint:disable-next-line:validate-decorators   changeDetection: ChangeDetectionStrategy.Default,   providers: [     {provide: CDK_TABLE, useExisting: CdkTable},     {provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy},     {provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler},     // Prevent nested tables from seeing this table's StickyPositioningListener.     {provide: STICKY_POSITIONING_LISTENER, useValue: null},   ], }) export class CdkTable<T> implements AfterContentChecked, CollectionViewer, OnDestroy, OnInit {   private _document: Document;    /** Latest data provided by the data source. */   protected _data: readonly T[];    /** Subject that emits when the component has been destroyed. */   private readonly _onDestroy = new Subject<void>();    /** List of the rendered rows as identified by their `RenderRow` object. */   private _renderRows: RenderRow<T>[];    /** Subscription that listens for the data provided by the data source. */   private _renderChangeSubscription: Subscription | null;    /**    * Map of all the user's defined columns (header, data, and footer cell template) identified by    * name. Collection populated by the column definitions gathered by `ContentChildren` as well as    * any custom column definitions added to `_customColumnDefs`.    */   private _columnDefsByName = new Map<string, CdkColumnDef>();    /**    * Set of all row definitions that can be used by this table. Populated by the rows gathered by    * using `ContentChildren` as well as any custom row definitions added to `_customRowDefs`.    */   private _rowDefs: CdkRowDef<T>[];    /**    * Set of all header row definitions that can be used by this table. Populated by the rows    * gathered by using `ContentChildren` as well as any custom row definitions added to    * `_customHeaderRowDefs`.    */   private _headerRowDefs: CdkHeaderRowDef[];    /**    * Set of all row definitions that can be used by this table. Populated by the rows gathered by    * using `ContentChildren` as well as any custom row definitions added to    * `_customFooterRowDefs`.    */   private _footerRowDefs: CdkFooterRowDef[];    /** Differ used to find the changes in the data provided by the data source. */   private _dataDiffer: IterableDiffer<RenderRow<T>>;    /** Stores the row definition that does not have a when predicate. */   private _defaultRowDef: CdkRowDef<T> | null;    /**    * Column definitions that were defined outside of the direct content children of the table.    * These will be defined when, e.g., creating a wrapper around the cdkTable that has    * column definitions as *its* content child.    */   private _customColumnDefs = new Set<CdkColumnDef>();    /**    * Data row definitions that were defined outside of the direct content children of the table.    * These will be defined when, e.g., creating a wrapper around the cdkTable that has    * built-in data rows as *its* content child.    */   private _customRowDefs = new Set<CdkRowDef<T>>();    /**    * Header row definitions that were defined outside of the direct content children of the table.    * These will be defined when, e.g., creating a wrapper around the cdkTable that has    * built-in header rows as *its* content child.    */   private _customHeaderRowDefs = new Set<CdkHeaderRowDef>();    /**    * Footer row definitions that were defined outside of the direct content children of the table.    * These will be defined when, e.g., creating a wrapper around the cdkTable that has a    * built-in footer row as *its* content child.    */   private _customFooterRowDefs = new Set<CdkFooterRowDef>();    /** No data row that was defined outside of the direct content children of the table. */   private _customNoDataRow: CdkNoDataRow | null;    /**    * Whether the header row definition has been changed. Triggers an update to the header row after    * content is checked. Initialized as true so that the table renders the initial set of rows.    */   private _headerRowDefChanged = true;    /**    * Whether the footer row definition has been changed. Triggers an update to the footer row after    * content is checked. Initialized as true so that the table renders the initial set of rows.    */   private _footerRowDefChanged = true;    /**    * Whether the sticky column styles need to be updated. Set to `true` when the visible columns    * change.    */   private _stickyColumnStylesNeedReset = true;    /**    * Whether the sticky styler should recalculate cell widths when applying sticky styles. If    * `false`, cached values will be used instead. This is only applicable to tables with    * {@link fixedLayout} enabled. For other tables, cell widths will always be recalculated.    */   private _forceRecalculateCellWidths = true;    /**    * Cache of the latest rendered `RenderRow` objects as a map for easy retrieval when constructing    * a new list of `RenderRow` objects for rendering rows. Since the new list is constructed with    * the cached `RenderRow` objects when possible, the row identity is preserved when the data    * and row template matches, which allows the `IterableDiffer` to check rows by reference    * and understand which rows are added/moved/removed.    *    * Implemented as a map of maps where the first key is the `data: T` object and the second is the    * `CdkRowDef<T>` object. With the two keys, the cache points to a `RenderRow<T>` object that    * contains an array of created pairs. The array is necessary to handle cases where the data    * array contains multiple duplicate data objects and each instantiated `RenderRow` must be    * stored.    */   private _cachedRenderRowsMap = new Map<T, WeakMap<CdkRowDef<T>, RenderRow<T>[]>>();    /** Whether the table is applied to a native `<table>`. */   protected _isNativeHtmlTable: boolean;    /**    * Utility class that is responsible for applying the appropriate sticky positioning styles to    * the table's rows and cells.    */   private _stickyStyler: StickyStyler;    /**    * CSS class added to any row or cell that has sticky positioning applied. May be overridden by    * table subclasses.    */   protected stickyCssClass: string = 'cdk-table-sticky';    /**    * Whether to manually add position: sticky to all sticky cell elements. Not needed if    * the position is set in a selector associated with the value of stickyCssClass. May be    * overridden by table subclasses    */   protected needsPositionStickyOnElement = true;    /** Whether the no data row is currently showing anything. */   private _isShowingNoDataRow = false;    /**    * Tracking function that will be used to check the differences in data changes. Used similarly    * to `ngFor` `trackBy` function. Optimize row operations by identifying a row based on its data    * relative to the function to know if a row should be added/removed/moved.    * Accepts a function that takes two parameters, `index` and `item`.    */   @Input()   get trackBy(): TrackByFunction<T> {     return this._trackByFn;   }   set trackBy(fn: TrackByFunction<T>) {     if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {       console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}.`);     }     this._trackByFn = fn;   }   private _trackByFn: TrackByFunction<T>;    /**    * The table's source of data, which can be provided in three ways (in order of complexity):    *   - Simple data array (each object represents one table row)    *   - Stream that emits a data array each time the array changes    *   - `DataSource` object that implements the connect/disconnect interface.    *    * If a data array is provided, the table must be notified when the array's objects are    * added, removed, or moved. This can be done by calling the `renderRows()` function which will    * render the diff since the last table render. If the data array reference is changed, the table    * will automatically trigger an update to the rows.    *    * When providing an Observable stream, the table will trigger an update automatically when the    * stream emits a new array of data.    *    * Finally, when providing a `DataSource` object, the table will use the Observable stream    * provided by the connect function and trigger updates when that stream emits new data array    * values. During the table's ngOnDestroy or when the data source is removed from the table, the    * table will call the DataSource's `disconnect` function (may be useful for cleaning up any    * subscriptions registered during the connect process).    */   @Input()   get dataSource(): CdkTableDataSourceInput<T> {     return this._dataSource;   }   set dataSource(dataSource: CdkTableDataSourceInput<T>) {     if (this._dataSource !== dataSource) {       this._switchDataSource(dataSource);     }   }   private _dataSource: CdkTableDataSourceInput<T>;    /**    * Whether to allow multiple rows per data object by evaluating which rows evaluate their 'when'    * predicate to true. If `multiTemplateDataRows` is false, which is the default value, then each    * dataobject will render the first row that evaluates its when predicate to true, in the order    * defined in the table, or otherwise the default row which does not have a when predicate.    */   @Input()   get multiTemplateDataRows(): boolean {     return this._multiTemplateDataRows;   }   set multiTemplateDataRows(v: BooleanInput) {     this._multiTemplateDataRows = coerceBooleanProperty(v);      // In Ivy if this value is set via a static attribute (e.g. <table multiTemplateDataRows>),     // this setter will be invoked before the row outlet has been defined hence the null check.     if (this._rowOutlet && this._rowOutlet.viewContainer.length) {       this._forceRenderDataRows();       this.updateStickyColumnStyles();     }   }   _multiTemplateDataRows: boolean = false;    /**    * Whether to use a fixed table layout. Enabling this option will enforce consistent column widths    * and optimize rendering sticky styles for native tables. No-op for flex tables.    */   @Input()   get fixedLayout(): boolean {     return this._fixedLayout;   }   set fixedLayout(v: BooleanInput) {     this._fixedLayout = coerceBooleanProperty(v);      // Toggling `fixedLayout` may change column widths. Sticky column styles should be recalculated.     this._forceRecalculateCellWidths = true;     this._stickyColumnStylesNeedReset = true;   }   private _fixedLayout: boolean = false;    /**    * Emits when the table completes rendering a set of data rows based on the latest data from the    * data source, even if the set of rows is empty.    */   @Output()   readonly contentChanged = new EventEmitter<void>();    // TODO(andrewseguin): Remove max value as the end index   //   and instead calculate the view on init and scroll.   /**    * Stream containing the latest information on what rows are being displayed on screen.    * Can be used by the data source to as a heuristic of what data should be provided.    *    * @docs-private    */   readonly viewChange = new BehaviorSubject<{start: number; end: number}>({     start: 0,     end: Number.MAX_VALUE,   });    // Outlets in the table's template where the header, data rows, and footer will be inserted.   @ViewChild(DataRowOutlet, {static: true}) _rowOutlet: DataRowOutlet;   @ViewChild(HeaderRowOutlet, {static: true}) _headerRowOutlet: HeaderRowOutlet;   @ViewChild(FooterRowOutlet, {static: true}) _footerRowOutlet: FooterRowOutlet;   @ViewChild(NoDataRowOutlet, {static: true}) _noDataRowOutlet: NoDataRowOutlet;    /**    * The column definitions provided by the user that contain what the header, data, and footer    * cells should render for each column.    */   @ContentChildren(CdkColumnDef, {descendants: true}) _contentColumnDefs: QueryList<CdkColumnDef>;    /** Set of data row definitions that were provided to the table as content children. */   @ContentChildren(CdkRowDef, {descendants: true}) _contentRowDefs: QueryList<CdkRowDef<T>>;    /** Set of header row definitions that were provided to the table as content children. */   @ContentChildren(CdkHeaderRowDef, {     descendants: true,   })   _contentHeaderRowDefs: QueryList<CdkHeaderRowDef>;    /** Set of footer row definitions that were provided to the table as content children. */   @ContentChildren(CdkFooterRowDef, {     descendants: true,   })   _contentFooterRowDefs: QueryList<CdkFooterRowDef>;    /** Row definition that will only be rendered if there's no data in the table. */   @ContentChild(CdkNoDataRow) _noDataRow: CdkNoDataRow;    constructor(     protected readonly _differs: IterableDiffers,     protected readonly _changeDetectorRef: ChangeDetectorRef,     protected readonly _elementRef: ElementRef,     @Attribute('role') role: string,     @Optional() protected readonly _dir: Directionality,     @Inject(DOCUMENT) _document: any,     private _platform: Platform,     @Inject(_VIEW_REPEATER_STRATEGY)     protected readonly _viewRepeater: _ViewRepeater<T, RenderRow<T>, RowContext<T>>,     @Inject(_COALESCED_STYLE_SCHEDULER)     protected readonly _coalescedStyleScheduler: _CoalescedStyleScheduler,     private readonly _viewportRuler: ViewportRuler,     /**      * @deprecated `_stickyPositioningListener` parameter to become required.      * @breaking-change 13.0.0      */     @Optional()     @SkipSelf()     @Inject(STICKY_POSITIONING_LISTENER)     protected readonly _stickyPositioningListener: StickyPositioningListener,     /**      * @deprecated `_ngZone` parameter to become required.      * @breaking-change 14.0.0      */     @Optional()     protected readonly _ngZone?: NgZone,   ) {     if (!role) {       this._elementRef.nativeElement.setAttribute('role', 'table');     }      this._document = _document;     this._isNativeHtmlTable = this._elementRef.nativeElement.nodeName === 'TABLE';   }    ngOnInit() {     this._setupStickyStyler();      if (this._isNativeHtmlTable) {       this._applyNativeTableSections();     }      // Set up the trackBy function so that it uses the `RenderRow` as its identity by default. If     // the user has provided a custom trackBy, return the result of that function as evaluated     // with the values of the `RenderRow`'s data and index.     this._dataDiffer = this._differs.find([]).create((_i: number, dataRow: RenderRow<T>) => {       return this.trackBy ? this.trackBy(dataRow.dataIndex, dataRow.data) : dataRow;     });      this._viewportRuler       .change()       .pipe(takeUntil(this._onDestroy))       .subscribe(() => {         this._forceRecalculateCellWidths = true;       });   }    ngAfterContentChecked() {     // Cache the row and column definitions gathered by ContentChildren and programmatic injection.     this._cacheRowDefs();     this._cacheColumnDefs();      // Make sure that the user has at least added header, footer, or data row def.     if (       !this._headerRowDefs.length &&       !this._footerRowDefs.length &&       !this._rowDefs.length &&       (typeof ngDevMode === 'undefined' || ngDevMode)     ) {       throw getTableMissingRowDefsError();     }      // Render updates if the list of columns have been changed for the header, row, or footer defs.     const columnsChanged = this._renderUpdatedColumns();     const rowDefsChanged = columnsChanged || this._headerRowDefChanged || this._footerRowDefChanged;     // Ensure sticky column styles are reset if set to `true` elsewhere.     this._stickyColumnStylesNeedReset = this._stickyColumnStylesNeedReset || rowDefsChanged;     this._forceRecalculateCellWidths = rowDefsChanged;      // If the header row definition has been changed, trigger a render to the header row.     if (this._headerRowDefChanged) {       this._forceRenderHeaderRows();       this._headerRowDefChanged = false;     }      // If the footer row definition has been changed, trigger a render to the footer row.     if (this._footerRowDefChanged) {       this._forceRenderFooterRows();       this._footerRowDefChanged = false;     }      // If there is a data source and row definitions, connect to the data source unless a     // connection has already been made.     if (this.dataSource && this._rowDefs.length > 0 && !this._renderChangeSubscription) {       this._observeRenderChanges();     } else if (this._stickyColumnStylesNeedReset) {       // In the above case, _observeRenderChanges will result in updateStickyColumnStyles being       // called when it row data arrives. Otherwise, we need to call it proactively.       this.updateStickyColumnStyles();     }      this._checkStickyStates();   }    ngOnDestroy() {     [       this._rowOutlet.viewContainer,       this._headerRowOutlet.viewContainer,       this._footerRowOutlet.viewContainer,       this._cachedRenderRowsMap,       this._customColumnDefs,       this._customRowDefs,       this._customHeaderRowDefs,       this._customFooterRowDefs,       this._columnDefsByName,     ].forEach(def => {       def.clear();     });      this._headerRowDefs = [];     this._footerRowDefs = [];     this._defaultRowDef = null;     this._onDestroy.next();     this._onDestroy.complete();      if (isDataSource(this.dataSource)) {       this.dataSource.disconnect(this);     }   }    /**    * Renders rows based on the table's latest set of data, which was either provided directly as an    * input or retrieved through an Observable stream (directly or from a DataSource).    * Checks for differences in the data since the last diff to perform only the necessary    * changes (add/remove/move rows).    *    * If the table's data source is a DataSource or Observable, this will be invoked automatically    * each time the provided Observable stream emits a new data array. Otherwise if your data is    * an array, this function will need to be called to render any changes.    */   renderRows() {     this._renderRows = this._getAllRenderRows();     const changes = this._dataDiffer.diff(this._renderRows);     if (!changes) {       this._updateNoDataRow();       this.contentChanged.next();       return;     }     const viewContainer = this._rowOutlet.viewContainer;      this._viewRepeater.applyChanges(       changes,       viewContainer,       (         record: IterableChangeRecord<RenderRow<T>>,         _adjustedPreviousIndex: number | null,         currentIndex: number | null,       ) => this._getEmbeddedViewArgs(record.item, currentIndex!),       record => record.item.data,       (change: _ViewRepeaterItemChange<RenderRow<T>, RowContext<T>>) => {         if (change.operation === _ViewRepeaterOperation.INSERTED && change.context) {           this._renderCellTemplateForItem(change.record.item.rowDef, change.context);         }       },     );      // Update the meta context of a row's context data (index, count, first, last, ...)     this._updateRowIndexContext();      // Update rows that did not get added/removed/moved but may have had their identity changed,     // e.g. if trackBy matched data on some property but the actual data reference changed.     changes.forEachIdentityChange((record: IterableChangeRecord<RenderRow<T>>) => {       const rowView = <RowViewRef<T>>viewContainer.get(record.currentIndex!);       rowView.context.$implicit = record.item.data;     });      this._updateNoDataRow();      // Allow the new row data to render before measuring it.     // @breaking-change 14.0.0 Remove undefined check once _ngZone is required.     if (this._ngZone && NgZone.isInAngularZone()) {       this._ngZone.onStable.pipe(take(1), takeUntil(this._onDestroy)).subscribe(() => {         this.updateStickyColumnStyles();       });     } else {       this.updateStickyColumnStyles();     }      this.contentChanged.next();   }    /** Adds a column definition that was not included as part of the content children. */   addColumnDef(columnDef: CdkColumnDef) {     this._customColumnDefs.add(columnDef);   }    /** Removes a column definition that was not included as part of the content children. */   removeColumnDef(columnDef: CdkColumnDef) {     this._customColumnDefs.delete(columnDef);   }    /** Adds a row definition that was not included as part of the content children. */   addRowDef(rowDef: CdkRowDef<T>) {     this._customRowDefs.add(rowDef);   }    /** Removes a row definition that was not included as part of the content children. */   removeRowDef(rowDef: CdkRowDef<T>) {     this._customRowDefs.delete(rowDef);   }    /** Adds a header row definition that was not included as part of the content children. */   addHeaderRowDef(headerRowDef: CdkHeaderRowDef) {     this._customHeaderRowDefs.add(headerRowDef);     this._headerRowDefChanged = true;   }    /** Removes a header row definition that was not included as part of the content children. */   removeHeaderRowDef(headerRowDef: CdkHeaderRowDef) {     this._customHeaderRowDefs.delete(headerRowDef);     this._headerRowDefChanged = true;   }    /** Adds a footer row definition that was not included as part of the content children. */   addFooterRowDef(footerRowDef: CdkFooterRowDef) {     this._customFooterRowDefs.add(footerRowDef);     this._footerRowDefChanged = true;   }    /** Removes a footer row definition that was not included as part of the content children. */   removeFooterRowDef(footerRowDef: CdkFooterRowDef) {     this._customFooterRowDefs.delete(footerRowDef);     this._footerRowDefChanged = true;   }    /** Sets a no data row definition that was not included as a part of the content children. */   setNoDataRow(noDataRow: CdkNoDataRow | null) {     this._customNoDataRow = noDataRow;   }    /**    * Updates the header sticky styles. First resets all applied styles with respect to the cells    * sticking to the top. Then, evaluating which cells need to be stuck to the top. This is    * automatically called when the header row changes its displayed set of columns, or if its    * sticky input changes. May be called manually for cases where the cell content changes outside    * of these events.    */   updateStickyHeaderRowStyles(): void {     const headerRows = this._getRenderedRows(this._headerRowOutlet);     const tableElement = this._elementRef.nativeElement as HTMLElement;      // Hide the thead element if there are no header rows. This is necessary to satisfy     // overzealous a11y checkers that fail because the `rowgroup` element does not contain     // required child `row`.     const thead = tableElement.querySelector('thead');     if (thead) {       thead.style.display = headerRows.length ? '' : 'none';     }      const stickyStates = this._headerRowDefs.map(def => def.sticky);     this._stickyStyler.clearStickyPositioning(headerRows, ['top']);     this._stickyStyler.stickRows(headerRows, stickyStates, 'top');      // Reset the dirty state of the sticky input change since it has been used.     this._headerRowDefs.forEach(def => def.resetStickyChanged());   }    /**    * Updates the footer sticky styles. First resets all applied styles with respect to the cells    * sticking to the bottom. Then, evaluating which cells need to be stuck to the bottom. This is    * automatically called when the footer row changes its displayed set of columns, or if its    * sticky input changes. May be called manually for cases where the cell content changes outside    * of these events.    */   updateStickyFooterRowStyles(): void {     const footerRows = this._getRenderedRows(this._footerRowOutlet);     const tableElement = this._elementRef.nativeElement as HTMLElement;      // Hide the tfoot element if there are no footer rows. This is necessary to satisfy     // overzealous a11y checkers that fail because the `rowgroup` element does not contain     // required child `row`.     const tfoot = tableElement.querySelector('tfoot');     if (tfoot) {       tfoot.style.display = footerRows.length ? '' : 'none';     }      const stickyStates = this._footerRowDefs.map(def => def.sticky);     this._stickyStyler.clearStickyPositioning(footerRows, ['bottom']);     this._stickyStyler.stickRows(footerRows, stickyStates, 'bottom');     this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement, stickyStates);      // Reset the dirty state of the sticky input change since it has been used.     this._footerRowDefs.forEach(def => def.resetStickyChanged());   }    /**    * Updates the column sticky styles. First resets all applied styles with respect to the cells    * sticking to the left and right. Then sticky styles are added for the left and right according    * to the column definitions for each cell in each row. This is automatically called when    * the data source provides a new set of data or when a column definition changes its sticky    * input. May be called manually for cases where the cell content changes outside of these events.    */   updateStickyColumnStyles() {     const headerRows = this._getRenderedRows(this._headerRowOutlet);     const dataRows = this._getRenderedRows(this._rowOutlet);     const footerRows = this._getRenderedRows(this._footerRowOutlet);      // For tables not using a fixed layout, the column widths may change when new rows are rendered.     // In a table using a fixed layout, row content won't affect column width, so sticky styles     // don't need to be cleared unless either the sticky column config changes or one of the row     // defs change.     if ((this._isNativeHtmlTable && !this._fixedLayout) || this._stickyColumnStylesNeedReset) {       // Clear the left and right positioning from all columns in the table across all rows since       // sticky columns span across all table sections (header, data, footer)       this._stickyStyler.clearStickyPositioning(         [...headerRows, ...dataRows, ...footerRows],         ['left', 'right'],       );       this._stickyColumnStylesNeedReset = false;     }      // Update the sticky styles for each header row depending on the def's sticky state     headerRows.forEach((headerRow, i) => {       this._addStickyColumnStyles([headerRow], this._headerRowDefs[i]);     });      // Update the sticky styles for each data row depending on its def's sticky state     this._rowDefs.forEach(rowDef => {       // Collect all the rows rendered with this row definition.       const rows: HTMLElement[] = [];       for (let i = 0; i < dataRows.length; i++) {         if (this._renderRows[i].rowDef === rowDef) {           rows.push(dataRows[i]);         }       }        this._addStickyColumnStyles(rows, rowDef);     });      // Update the sticky styles for each footer row depending on the def's sticky state     footerRows.forEach((footerRow, i) => {       this._addStickyColumnStyles([footerRow], this._footerRowDefs[i]);     });      // Reset the dirty state of the sticky input change since it has been used.     Array.from(this._columnDefsByName.values()).forEach(def => def.resetStickyChanged());   }    /**    * Get the list of RenderRow objects to render according to the current list of data and defined    * row definitions. If the previous list already contained a particular pair, it should be reused    * so that the differ equates their references.    */   private _getAllRenderRows(): RenderRow<T>[] {     const renderRows: RenderRow<T>[] = [];      // Store the cache and create a new one. Any re-used RenderRow objects will be moved into the     // new cache while unused ones can be picked up by garbage collection.     const prevCachedRenderRows = this._cachedRenderRowsMap;     this._cachedRenderRowsMap = new Map();      // For each data object, get the list of rows that should be rendered, represented by the     // respective `RenderRow` object which is the pair of `data` and `CdkRowDef`.     for (let i = 0; i < this._data.length; i++) {       let data = this._data[i];       const renderRowsForData = this._getRenderRowsForData(data, i, prevCachedRenderRows.get(data));        if (!this._cachedRenderRowsMap.has(data)) {         this._cachedRenderRowsMap.set(data, new WeakMap());       }        for (let j = 0; j < renderRowsForData.length; j++) {         let renderRow = renderRowsForData[j];          const cache = this._cachedRenderRowsMap.get(renderRow.data)!;         if (cache.has(renderRow.rowDef)) {           cache.get(renderRow.rowDef)!.push(renderRow);         } else {           cache.set(renderRow.rowDef, [renderRow]);         }         renderRows.push(renderRow);       }     }      return renderRows;   }    /**    * Gets a list of `RenderRow<T>` for the provided data object and any `CdkRowDef` objects that    * should be rendered for this data. Reuses the cached RenderRow objects if they match the same    * `(T, CdkRowDef)` pair.    */   private _getRenderRowsForData(     data: T,     dataIndex: number,     cache?: WeakMap<CdkRowDef<T>, RenderRow<T>[]>,   ): RenderRow<T>[] {     const rowDefs = this._getRowDefs(data, dataIndex);      return rowDefs.map(rowDef => {       const cachedRenderRows = cache && cache.has(rowDef) ? cache.get(rowDef)! : [];       if (cachedRenderRows.length) {         const dataRow = cachedRenderRows.shift()!;         dataRow.dataIndex = dataIndex;         return dataRow;       } else {         return {data, rowDef, dataIndex};       }     });   }    /** Update the map containing the content's column definitions. */   private _cacheColumnDefs() {     this._columnDefsByName.clear();      const columnDefs = mergeArrayAndSet(       this._getOwnDefs(this._contentColumnDefs),       this._customColumnDefs,     );     columnDefs.forEach(columnDef => {       if (         this._columnDefsByName.has(columnDef.name) &&         (typeof ngDevMode === 'undefined' || ngDevMode)       ) {         throw getTableDuplicateColumnNameError(columnDef.name);       }       this._columnDefsByName.set(columnDef.name, columnDef);     });   }    /** Update the list of all available row definitions that can be used. */   private _cacheRowDefs() {     this._headerRowDefs = mergeArrayAndSet(       this._getOwnDefs(this._contentHeaderRowDefs),       this._customHeaderRowDefs,     );     this._footerRowDefs = mergeArrayAndSet(       this._getOwnDefs(this._contentFooterRowDefs),       this._customFooterRowDefs,     );     this._rowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentRowDefs), this._customRowDefs);      // After all row definitions are determined, find the row definition to be considered default.     const defaultRowDefs = this._rowDefs.filter(def => !def.when);     if (       !this.multiTemplateDataRows &&       defaultRowDefs.length > 1 &&       (typeof ngDevMode === 'undefined' || ngDevMode)     ) {       throw getTableMultipleDefaultRowDefsError();     }     this._defaultRowDef = defaultRowDefs[0];   }    /**    * Check if the header, data, or footer rows have changed what columns they want to display or    * whether the sticky states have changed for the header or footer. If there is a diff, then    * re-render that section.    */   private _renderUpdatedColumns(): boolean {     const columnsDiffReducer = (acc: boolean, def: BaseRowDef) => acc || !!def.getColumnsDiff();      // Force re-render data rows if the list of column definitions have changed.     const dataColumnsChanged = this._rowDefs.reduce(columnsDiffReducer, false);     if (dataColumnsChanged) {       this._forceRenderDataRows();     }      // Force re-render header/footer rows if the list of column definitions have changed.     const headerColumnsChanged = this._headerRowDefs.reduce(columnsDiffReducer, false);     if (headerColumnsChanged) {       this._forceRenderHeaderRows();     }      const footerColumnsChanged = this._footerRowDefs.reduce(columnsDiffReducer, false);     if (footerColumnsChanged) {       this._forceRenderFooterRows();     }      return dataColumnsChanged || headerColumnsChanged || footerColumnsChanged;   }    /**    * Switch to the provided data source by resetting the data and unsubscribing from the current    * render change subscription if one exists. If the data source is null, interpret this by    * clearing the row outlet. Otherwise start listening for new data.    */   private _switchDataSource(dataSource: CdkTableDataSourceInput<T>) {     this._data = [];      if (isDataSource(this.dataSource)) {       this.dataSource.disconnect(this);     }      // Stop listening for data from the previous data source.     if (this._renderChangeSubscription) {       this._renderChangeSubscription.unsubscribe();       this._renderChangeSubscription = null;     }      if (!dataSource) {       if (this._dataDiffer) {         this._dataDiffer.diff([]);       }       this._rowOutlet.viewContainer.clear();     }      this._dataSource = dataSource;   }    /** Set up a subscription for the data provided by the data source. */   private _observeRenderChanges() {     // If no data source has been set, there is nothing to observe for changes.     if (!this.dataSource) {       return;     }      let dataStream: Observable<readonly T[]> | undefined;      if (isDataSource(this.dataSource)) {       dataStream = this.dataSource.connect(this);     } else if (isObservable(this.dataSource)) {       dataStream = this.dataSource;     } else if (Array.isArray(this.dataSource)) {       dataStream = observableOf(this.dataSource);     }      if (dataStream === undefined && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getTableUnknownDataSourceError();     }      this._renderChangeSubscription = dataStream!       .pipe(takeUntil(this._onDestroy))       .subscribe(data => {         this._data = data || [];         this.renderRows();       });   }    /**    * Clears any existing content in the header row outlet and creates a new embedded view    * in the outlet using the header row definition.    */   private _forceRenderHeaderRows() {     // Clear the header row outlet if any content exists.     if (this._headerRowOutlet.viewContainer.length > 0) {       this._headerRowOutlet.viewContainer.clear();     }      this._headerRowDefs.forEach((def, i) => this._renderRow(this._headerRowOutlet, def, i));     this.updateStickyHeaderRowStyles();   }    /**    * Clears any existing content in the footer row outlet and creates a new embedded view    * in the outlet using the footer row definition.    */   private _forceRenderFooterRows() {     // Clear the footer row outlet if any content exists.     if (this._footerRowOutlet.viewContainer.length > 0) {       this._footerRowOutlet.viewContainer.clear();     }      this._footerRowDefs.forEach((def, i) => this._renderRow(this._footerRowOutlet, def, i));     this.updateStickyFooterRowStyles();   }    /** Adds the sticky column styles for the rows according to the columns' stick states. */   private _addStickyColumnStyles(rows: HTMLElement[], rowDef: BaseRowDef) {     const columnDefs = Array.from(rowDef.columns || []).map(columnName => {       const columnDef = this._columnDefsByName.get(columnName);       if (!columnDef && (typeof ngDevMode === 'undefined' || ngDevMode)) {         throw getTableUnknownColumnError(columnName);       }       return columnDef!;     });     const stickyStartStates = columnDefs.map(columnDef => columnDef.sticky);     const stickyEndStates = columnDefs.map(columnDef => columnDef.stickyEnd);     this._stickyStyler.updateStickyColumns(       rows,       stickyStartStates,       stickyEndStates,       !this._fixedLayout || this._forceRecalculateCellWidths,     );   }    /** Gets the list of rows that have been rendered in the row outlet. */   _getRenderedRows(rowOutlet: RowOutlet): HTMLElement[] {     const renderedRows: HTMLElement[] = [];      for (let i = 0; i < rowOutlet.viewContainer.length; i++) {       const viewRef = rowOutlet.viewContainer.get(i)! as EmbeddedViewRef<any>;       renderedRows.push(viewRef.rootNodes[0]);     }      return renderedRows;   }    /**    * Get the matching row definitions that should be used for this row data. If there is only    * one row definition, it is returned. Otherwise, find the row definitions that has a when    * predicate that returns true with the data. If none return true, return the default row    * definition.    */   _getRowDefs(data: T, dataIndex: number): CdkRowDef<T>[] {     if (this._rowDefs.length == 1) {       return [this._rowDefs[0]];     }      let rowDefs: CdkRowDef<T>[] = [];     if (this.multiTemplateDataRows) {       rowDefs = this._rowDefs.filter(def => !def.when || def.when(dataIndex, data));     } else {       let rowDef =         this._rowDefs.find(def => def.when && def.when(dataIndex, data)) || this._defaultRowDef;       if (rowDef) {         rowDefs.push(rowDef);       }     }      if (!rowDefs.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getTableMissingMatchingRowDefError(data);     }      return rowDefs;   }    private _getEmbeddedViewArgs(     renderRow: RenderRow<T>,     index: number,   ): _ViewRepeaterItemInsertArgs<RowContext<T>> {     const rowDef = renderRow.rowDef;     const context: RowContext<T> = {$implicit: renderRow.data};     return {       templateRef: rowDef.template,       context,       index,     };   }    /**    * Creates a new row template in the outlet and fills it with the set of cell templates.    * Optionally takes a context to provide to the row and cells, as well as an optional index    * of where to place the new row template in the outlet.    */   private _renderRow(     outlet: RowOutlet,     rowDef: BaseRowDef,     index: number,     context: RowContext<T> = {},   ): EmbeddedViewRef<RowContext<T>> {     // TODO(andrewseguin): enforce that one outlet was instantiated from createEmbeddedView     const view = outlet.viewContainer.createEmbeddedView(rowDef.template, context, index);     this._renderCellTemplateForItem(rowDef, context);     return view;   }    private _renderCellTemplateForItem(rowDef: BaseRowDef, context: RowContext<T>) {     for (let cellTemplate of this._getCellTemplates(rowDef)) {       if (CdkCellOutlet.mostRecentCellOutlet) {         CdkCellOutlet.mostRecentCellOutlet._viewContainer.createEmbeddedView(cellTemplate, context);       }     }      this._changeDetectorRef.markForCheck();   }    /**    * Updates the index-related context for each row to reflect any changes in the index of the rows,    * e.g. first/last/even/odd.    */   private _updateRowIndexContext() {     const viewContainer = this._rowOutlet.viewContainer;     for (let renderIndex = 0, count = viewContainer.length; renderIndex < count; renderIndex++) {       const viewRef = viewContainer.get(renderIndex) as RowViewRef<T>;       const context = viewRef.context as RowContext<T>;       context.count = count;       context.first = renderIndex === 0;       context.last = renderIndex === count - 1;       context.even = renderIndex % 2 === 0;       context.odd = !context.even;        if (this.multiTemplateDataRows) {         context.dataIndex = this._renderRows[renderIndex].dataIndex;         context.renderIndex = renderIndex;       } else {         context.index = this._renderRows[renderIndex].dataIndex;       }     }   }    /** Gets the column definitions for the provided row def. */   private _getCellTemplates(rowDef: BaseRowDef): TemplateRef<any>[] {     if (!rowDef || !rowDef.columns) {       return [];     }     return Array.from(rowDef.columns, columnId => {       const column = this._columnDefsByName.get(columnId);        if (!column && (typeof ngDevMode === 'undefined' || ngDevMode)) {         throw getTableUnknownColumnError(columnId);       }        return rowDef.extractCellTemplate(column!);     });   }    /** Adds native table sections (e.g. tbody) and moves the row outlets into them. */   private _applyNativeTableSections() {     const documentFragment = this._document.createDocumentFragment();     const sections = [       {tag: 'thead', outlets: [this._headerRowOutlet]},       {tag: 'tbody', outlets: [this._rowOutlet, this._noDataRowOutlet]},       {tag: 'tfoot', outlets: [this._footerRowOutlet]},     ];      for (const section of sections) {       const element = this._document.createElement(section.tag);       element.setAttribute('role', 'rowgroup');        for (const outlet of section.outlets) {         element.appendChild(outlet.elementRef.nativeElement);       }        documentFragment.appendChild(element);     }      // Use a DocumentFragment so we don't hit the DOM on each iteration.     this._elementRef.nativeElement.appendChild(documentFragment);   }    /**    * Forces a re-render of the data rows. Should be called in cases where there has been an input    * change that affects the evaluation of which rows should be rendered, e.g. toggling    * `multiTemplateDataRows` or adding/removing row definitions.    */   private _forceRenderDataRows() {     this._dataDiffer.diff([]);     this._rowOutlet.viewContainer.clear();     this.renderRows();   }    /**    * Checks if there has been a change in sticky states since last check and applies the correct    * sticky styles. Since checking resets the \"dirty\" state, this should only be performed once    * during a change detection and after the inputs are settled (after content check).    */   private _checkStickyStates() {     const stickyCheckReducer = (       acc: boolean,       d: CdkHeaderRowDef | CdkFooterRowDef | CdkColumnDef,     ) => {       return acc || d.hasStickyChanged();     };      // Note that the check needs to occur for every definition since it notifies the definition     // that it can reset its dirty state. Using another operator like `some` may short-circuit     // remaining definitions and leave them in an unchecked state.      if (this._headerRowDefs.reduce(stickyCheckReducer, false)) {       this.updateStickyHeaderRowStyles();     }      if (this._footerRowDefs.reduce(stickyCheckReducer, false)) {       this.updateStickyFooterRowStyles();     }      if (Array.from(this._columnDefsByName.values()).reduce(stickyCheckReducer, false)) {       this._stickyColumnStylesNeedReset = true;       this.updateStickyColumnStyles();     }   }    /**    * Creates the sticky styler that will be used for sticky rows and columns. Listens    * for directionality changes and provides the latest direction to the styler. Re-applies column    * stickiness when directionality changes.    */   private _setupStickyStyler() {     const direction: Direction = this._dir ? this._dir.value : 'ltr';     this._stickyStyler = new StickyStyler(       this._isNativeHtmlTable,       this.stickyCssClass,       direction,       this._coalescedStyleScheduler,       this._platform.isBrowser,       this.needsPositionStickyOnElement,       this._stickyPositioningListener,     );     (this._dir ? this._dir.change : observableOf<Direction>())       .pipe(takeUntil(this._onDestroy))       .subscribe(value => {         this._stickyStyler.direction = value;         this.updateStickyColumnStyles();       });   }    /** Filters definitions that belong to this table from a QueryList. */   private _getOwnDefs<I extends {_table?: any}>(items: QueryList<I>): I[] {     return items.filter(item => !item._table || item._table === this);   }    /** Creates or removes the no data row, depending on whether any data is being shown. */   private _updateNoDataRow() {     const noDataRow = this._customNoDataRow || this._noDataRow;      if (!noDataRow) {       return;     }      const shouldShow = this._rowOutlet.viewContainer.length === 0;      if (shouldShow === this._isShowingNoDataRow) {       return;     }      const container = this._noDataRowOutlet.viewContainer;      if (shouldShow) {       const view = container.createEmbeddedView(noDataRow.templateRef);       const rootNode: HTMLElement | undefined = view.rootNodes[0];        // Only add the attributes if we have a single root node since it's hard       // to figure out which one to add it to when there are multiple.       if (view.rootNodes.length === 1 && rootNode?.nodeType === this._document.ELEMENT_NODE) {         rootNode.setAttribute('role', 'row');         rootNode.classList.add(noDataRow._contentClassName);       }     } else {       container.clear();     }      this._isShowingNoDataRow = shouldShow;   } }  /** Utility function that gets a merged list of the entries in an array and values of a Set. */ function mergeArrayAndSet<T>(array: T[], set: Set<T>): T[] {   return array.concat(Array.from(set)); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   ChangeDetectionStrategy,   Component,   Inject,   Input,   OnDestroy,   OnInit,   Optional,   ViewChild,   ViewEncapsulation, } from '@angular/core'; import {CdkCellDef, CdkColumnDef, CdkHeaderCellDef} from './cell'; import {CdkTable} from './table'; import {   getTableTextColumnMissingParentTableError,   getTableTextColumnMissingNameError, } from './table-errors'; import {TEXT_COLUMN_OPTIONS, TextColumnOptions} from './tokens';  /**  * Column that simply shows text content for the header and row cells. Assumes that the table  * is using the native table implementation (`<table>`).  *  * By default, the name of this column will be the header text and data property accessor.  * The header text can be overridden with the `headerText` input. Cell values can be overridden with  * the `dataAccessor` input. Change the text justification to the start or end using the `justify`  * input.  */ @Component({   selector: 'cdk-text-column',   template: `     <ng-container cdkColumnDef>       <th cdk-header-cell *cdkHeaderCellDef [style.text-align]=\"justify\">         {{headerText}}       </th>       <td cdk-cell *cdkCellDef=\"let data\" [style.text-align]=\"justify\">         {{dataAccessor(data, name)}}       </td>     </ng-container>   `,   encapsulation: ViewEncapsulation.None,   // Change detection is intentionally not set to OnPush. This component's template will be provided   // to the table to be inserted into its view. This is problematic when change detection runs since   // the bindings in this template will be evaluated _after_ the table's view is evaluated, which   // mean's the template in the table's view will not have the updated value (and in fact will cause   // an ExpressionChangedAfterItHasBeenCheckedError).   // tslint:disable-next-line:validate-decorators   changeDetection: ChangeDetectionStrategy.Default, }) export class CdkTextColumn<T> implements OnDestroy, OnInit {   /** Column name that should be used to reference this column. */   @Input()   get name(): string {     return this._name;   }   set name(name: string) {     this._name = name;      // With Ivy, inputs can be initialized before static query results are     // available. In that case, we defer the synchronization until \"ngOnInit\" fires.     this._syncColumnDefName();   }   _name: string;    /**    * Text label that should be used for the column header. If this property is not    * set, the header text will default to the column name with its first letter capitalized.    */   @Input() headerText: string;    /**    * Accessor function to retrieve the data rendered for each cell. If this    * property is not set, the data cells will render the value found in the data's property matching    * the column's name. For example, if the column is named `id`, then the rendered value will be    * value defined by the data's `id` property.    */   @Input() dataAccessor: (data: T, name: string) => string;    /** Alignment of the cell values. */   @Input() justify: 'start' | 'end' | 'center' = 'start';    /** @docs-private */   @ViewChild(CdkColumnDef, {static: true}) columnDef: CdkColumnDef;    /**    * The column cell is provided to the column during `ngOnInit` with a static query.    * Normally, this will be retrieved by the column using `ContentChild`, but that assumes the    * column definition was provided in the same view as the table, which is not the case with this    * component.    * @docs-private    */   @ViewChild(CdkCellDef, {static: true}) cell: CdkCellDef;    /**    * The column headerCell is provided to the column during `ngOnInit` with a static query.    * Normally, this will be retrieved by the column using `ContentChild`, but that assumes the    * column definition was provided in the same view as the table, which is not the case with this    * component.    * @docs-private    */   @ViewChild(CdkHeaderCellDef, {static: true}) headerCell: CdkHeaderCellDef;    constructor(     // `CdkTextColumn` is always requiring a table, but we just assert it manually     // for better error reporting.     // tslint:disable-next-line: lightweight-tokens     @Optional() private _table: CdkTable<T>,     @Optional() @Inject(TEXT_COLUMN_OPTIONS) private _options: TextColumnOptions<T>,   ) {     this._options = _options || {};   }    ngOnInit() {     this._syncColumnDefName();      if (this.headerText === undefined) {       this.headerText = this._createDefaultHeaderText();     }      if (!this.dataAccessor) {       this.dataAccessor =         this._options.defaultDataAccessor || ((data: T, name: string) => (data as any)[name]);     }      if (this._table) {       // Provide the cell and headerCell directly to the table with the static `ViewChild` query,       // since the columnDef will not pick up its content by the time the table finishes checking       // its content and initializing the rows.       this.columnDef.cell = this.cell;       this.columnDef.headerCell = this.headerCell;       this._table.addColumnDef(this.columnDef);     } else if (typeof ngDevMode === 'undefined' || ngDevMode) {       throw getTableTextColumnMissingParentTableError();     }   }    ngOnDestroy() {     if (this._table) {       this._table.removeColumnDef(this.columnDef);     }   }    /**    * Creates a default header text. Use the options' header text transformation function if one    * has been provided. Otherwise simply capitalize the column name.    */   _createDefaultHeaderText() {     const name = this.name;      if (!name && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getTableTextColumnMissingNameError();     }      if (this._options && this._options.defaultHeaderTextTransform) {       return this._options.defaultHeaderTextTransform(name);     }      return name[0].toUpperCase() + name.slice(1);   }    /** Synchronizes the column definition name with the text column name. */   private _syncColumnDefName() {     if (this.columnDef) {       this.columnDef.name = this.name;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {   HeaderRowOutlet,   DataRowOutlet,   CdkTable,   CdkRecycleRows,   FooterRowOutlet,   NoDataRowOutlet, } from './table'; import {   CdkCellOutlet,   CdkFooterRow,   CdkFooterRowDef,   CdkHeaderRow,   CdkHeaderRowDef,   CdkRow,   CdkRowDef,   CdkNoDataRow, } from './row'; import {   CdkColumnDef,   CdkHeaderCellDef,   CdkHeaderCell,   CdkCell,   CdkCellDef,   CdkFooterCellDef,   CdkFooterCell, } from './cell'; import {CdkTextColumn} from './text-column'; import {ScrollingModule} from '@angular/cdk/scrolling';  const EXPORTED_DECLARATIONS = [   CdkTable,   CdkRowDef,   CdkCellDef,   CdkCellOutlet,   CdkHeaderCellDef,   CdkFooterCellDef,   CdkColumnDef,   CdkCell,   CdkRow,   CdkHeaderCell,   CdkFooterCell,   CdkHeaderRow,   CdkHeaderRowDef,   CdkFooterRow,   CdkFooterRowDef,   DataRowOutlet,   HeaderRowOutlet,   FooterRowOutlet,   CdkTextColumn,   CdkNoDataRow,   CdkRecycleRows,   NoDataRowOutlet, ];  @NgModule({   exports: EXPORTED_DECLARATIONS,   declarations: EXPORTED_DECLARATIONS,   imports: [ScrollingModule], }) export class CdkTableModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './table'; export * from './cell'; export * from './coalesced-style-scheduler'; export * from './row'; export * from './table-module'; export * from './sticky-styler'; export * from './sticky-position-listener'; export * from './can-stick'; export * from './text-column'; export * from './tokens';  /** Re-export DataSource for a more intuitive experience for users of just the table. */ export {DataSource} from '@angular/cdk/collections'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["observableOf","i2.CdkCellDef","i2.CdkHeaderCellDef","i2.CdkColumnDef","i2.CdkCell","i2.CdkHeaderCell"],"mappings":"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"}
-------------------- SECTION 214 --------------------
{"version":3,"file":"layout.mjs","sources":["../../../../../../src/cdk/layout/layout-module.ts","../../../../../../src/cdk/layout/media-matcher.ts","../../../../../../src/cdk/layout/breakpoints-observer.ts","../../../../../../src/cdk/layout/breakpoints.ts","../../../../../../src/cdk/layout/public-api.ts","../../../../../../src/cdk/layout/index.ts","../../../../../../src/cdk/layout/layout_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {NgModule} from '@angular/core';  @NgModule({}) export class LayoutModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {Injectable} from '@angular/core'; import {Platform} from '@angular/cdk/platform';  /** Global registry for all dynamically-created, injected media queries. */ const mediaQueriesForWebkitCompatibility: Set<string> = new Set<string>();  /** Style tag that holds all of the dynamically-created media queries. */ let mediaQueryStyleNode: HTMLStyleElement | undefined;  /** A utility for calling matchMedia queries. */ @Injectable({providedIn: 'root'}) export class MediaMatcher {   /** The internal matchMedia method to return back a MediaQueryList like object. */   private _matchMedia: (query: string) => MediaQueryList;    constructor(private _platform: Platform) {     this._matchMedia =       this._platform.isBrowser && window.matchMedia         ? // matchMedia is bound to the window scope intentionally as it is an illegal invocation to           // call it from a different scope.           window.matchMedia.bind(window)         : noopMatchMedia;   }    /**    * Evaluates the given media query and returns the native MediaQueryList from which results    * can be retrieved.    * Confirms the layout engine will trigger for the selector query provided and returns the    * MediaQueryList for the query provided.    */   matchMedia(query: string): MediaQueryList {     if (this._platform.WEBKIT || this._platform.BLINK) {       createEmptyStyleRule(query);     }     return this._matchMedia(query);   } }  /**  * Creates an empty stylesheet that is used to work around browser inconsistencies related to  * `matchMedia`. At the time of writing, it handles the following cases:  * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`  * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.  * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules  * inside the `@media` match existing elements on the page. We work around it by having one rule  * targeting the `body`. See https://github.com/angular/components/issues/23546.  */ function createEmptyStyleRule(query: string) {   if (mediaQueriesForWebkitCompatibility.has(query)) {     return;   }    try {     if (!mediaQueryStyleNode) {       mediaQueryStyleNode = document.createElement('style');       mediaQueryStyleNode.setAttribute('type', 'text/css');       document.head!.appendChild(mediaQueryStyleNode);     }      if (mediaQueryStyleNode.sheet) {       mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);       mediaQueriesForWebkitCompatibility.add(query);     }   } catch (e) {     console.error(e);   } }  /** No-op matchMedia replacement for non-browser platforms. */ function noopMatchMedia(query: string): MediaQueryList {   // Use `as any` here to avoid adding additional necessary properties for   // the noop matcher.   return {     matches: query === 'all' || query === '',     media: query,     addListener: () => {},     removeListener: () => {},   } as any; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {coerceArray} from '@angular/cdk/coercion'; import {Injectable, NgZone, OnDestroy} from '@angular/core'; import {combineLatest, concat, Observable, Observer, Subject} from 'rxjs'; import {debounceTime, map, skip, startWith, take, takeUntil} from 'rxjs/operators'; import {MediaMatcher} from './media-matcher';  /** The current state of a layout breakpoint. */ export interface BreakpointState {   /** Whether the breakpoint is currently matching. */   matches: boolean;   /**    * A key boolean pair for each query provided to the observe method,    * with its current matched state.    */   breakpoints: {     [key: string]: boolean;   }; }  /** The current state of a layout breakpoint. */ interface InternalBreakpointState {   /** Whether the breakpoint is currently matching. */   matches: boolean;   /** The media query being to be matched */   query: string; }  interface Query {   observable: Observable<InternalBreakpointState>;   mql: MediaQueryList; }  /** Utility for checking the matching state of @media queries. */ @Injectable({providedIn: 'root'}) export class BreakpointObserver implements OnDestroy {   /**  A map of all media queries currently being listened for. */   private _queries = new Map<string, Query>();   /** A subject for all other observables to takeUntil based on. */   private readonly _destroySubject = new Subject<void>();    constructor(private _mediaMatcher: MediaMatcher, private _zone: NgZone) {}    /** Completes the active subject, signalling to all other observables to complete. */   ngOnDestroy() {     this._destroySubject.next();     this._destroySubject.complete();   }    /**    * Whether one or more media queries match the current viewport size.    * @param value One or more media queries to check.    * @returns Whether any of the media queries match.    */   isMatched(value: string | readonly string[]): boolean {     const queries = splitQueries(coerceArray(value));     return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);   }    /**    * Gets an observable of results for the given queries that will emit new results for any changes    * in matching of the given queries.    * @param value One or more media queries to check.    * @returns A stream of matches for the given queries.    */   observe(value: string | readonly string[]): Observable<BreakpointState> {     const queries = splitQueries(coerceArray(value));     const observables = queries.map(query => this._registerQuery(query).observable);      let stateObservable = combineLatest(observables);     // Emit the first state immediately, and then debounce the subsequent emissions.     stateObservable = concat(       stateObservable.pipe(take(1)),       stateObservable.pipe(skip(1), debounceTime(0)),     );     return stateObservable.pipe(       map(breakpointStates => {         const response: BreakpointState = {           matches: false,           breakpoints: {},         };         breakpointStates.forEach(({matches, query}) => {           response.matches = response.matches || matches;           response.breakpoints[query] = matches;         });         return response;       }),     );   }    /** Registers a specific query to be listened for. */   private _registerQuery(query: string): Query {     // Only set up a new MediaQueryList if it is not already being listened for.     if (this._queries.has(query)) {       return this._queries.get(query)!;     }      const mql = this._mediaMatcher.matchMedia(query);      // Create callback for match changes and add it is as a listener.     const queryObservable = new Observable((observer: Observer<MediaQueryListEvent>) => {       // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed       // back into the zone because matchMedia is only included in Zone.js by loading the       // webapis-media-query.js file alongside the zone.js file.  Additionally, some browsers do not       // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js       // patches it.       const handler = (e: MediaQueryListEvent): void => this._zone.run(() => observer.next(e));       mql.addListener(handler);        return () => {         mql.removeListener(handler);       };     }).pipe(       startWith(mql),       map(({matches}) => ({query, matches})),       takeUntil(this._destroySubject),     );      // Add the MediaQueryList to the set of queries.     const output = {observable: queryObservable, mql};     this._queries.set(query, output);     return output;   } }  /**  * Split each query string into separate query strings if two queries are provided as comma  * separated.  */ function splitQueries(queries: readonly string[]): readonly string[] {   return queries     .map(query => query.split(','))     .reduce((a1, a2) => a1.concat(a2))     .map(query => query.trim()); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ // PascalCase is being used as Breakpoints is used like an enum. // tslint:disable-next-line:variable-name export const Breakpoints = {   XSmall: '(max-width: 599.98px)',   Small: '(min-width: 600px) and (max-width: 959.98px)',   Medium: '(min-width: 960px) and (max-width: 1279.98px)',   Large: '(min-width: 1280px) and (max-width: 1919.98px)',   XLarge: '(min-width: 1920px)',    Handset:     '(max-width: 599.98px) and (orientation: portrait), ' +     '(max-width: 959.98px) and (orientation: landscape)',   Tablet:     '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), ' +     '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',   Web:     '(min-width: 840px) and (orientation: portrait), ' +     '(min-width: 1280px) and (orientation: landscape)',    HandsetPortrait: '(max-width: 599.98px) and (orientation: portrait)',   TabletPortrait: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)',   WebPortrait: '(min-width: 840px) and (orientation: portrait)',    HandsetLandscape: '(max-width: 959.98px) and (orientation: landscape)',   TabletLandscape: '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',   WebLandscape: '(min-width: 1280px) and (orientation: landscape)', }; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export {LayoutModule} from './layout-module'; export {BreakpointObserver, BreakpointState} from './breakpoints-observer'; export {Breakpoints} from './breakpoints'; export {MediaMatcher} from './media-matcher'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["i1.MediaMatcher"],"mappings":"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"}
-------------------- SECTION 215 --------------------
{"version":3,"file":"platform.mjs","sources":["../../../../../../src/cdk/platform/platform.ts","../../../../../../src/cdk/platform/platform-module.ts","../../../../../../src/cdk/platform/features/input-types.ts","../../../../../../src/cdk/platform/features/passive-listeners.ts","../../../../../../src/cdk/platform/features/scrolling.ts","../../../../../../src/cdk/platform/features/shadow-dom.ts","../../../../../../src/cdk/platform/features/test-environment.ts","../../../../../../src/cdk/platform/public-api.ts","../../../../../../src/cdk/platform/index.ts","../../../../../../src/cdk/platform/platform_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, Injectable, PLATFORM_ID} from '@angular/core'; import {isPlatformBrowser} from '@angular/common';  // Whether the current platform supports the V8 Break Iterator. The V8 check // is necessary to detect all Blink based browsers. let hasV8BreakIterator: boolean;  // We need a try/catch around the reference to `Intl`, because accessing it in some cases can // cause IE to throw. These cases are tied to particular versions of Windows and can happen if // the consumer is providing a polyfilled `Map`. See: // https://github.com/Microsoft/ChakraCore/issues/3189 // https://github.com/angular/components/issues/15687 try {   hasV8BreakIterator = typeof Intl !== 'undefined' && (Intl as any).v8BreakIterator; } catch {   hasV8BreakIterator = false; }  /**  * Service to detect the current platform by comparing the userAgent strings and  * checking browser-specific global properties.  */ @Injectable({providedIn: 'root'}) export class Platform {   // We want to use the Angular platform check because if the Document is shimmed   // without the navigator, the following checks will fail. This is preferred because   // sometimes the Document may be shimmed without the user's knowledge or intention   /** Whether the Angular application is being rendered in the browser. */   isBrowser: boolean = this._platformId     ? isPlatformBrowser(this._platformId)     : typeof document === 'object' && !!document;    /** Whether the current browser is Microsoft Edge. */   EDGE: boolean = this.isBrowser && /(edge)/i.test(navigator.userAgent);    /** Whether the current rendering engine is Microsoft Trident. */   TRIDENT: boolean = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);    // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.   /** Whether the current rendering engine is Blink. */   BLINK: boolean =     this.isBrowser &&     !!((window as any).chrome || hasV8BreakIterator) &&     typeof CSS !== 'undefined' &&     !this.EDGE &&     !this.TRIDENT;    // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to   // ensure that Webkit runs standalone and is not used as another engine's base.   /** Whether the current rendering engine is WebKit. */   WEBKIT: boolean =     this.isBrowser &&     /AppleWebKit/i.test(navigator.userAgent) &&     !this.BLINK &&     !this.EDGE &&     !this.TRIDENT;    /** Whether the current platform is Apple iOS. */   IOS: boolean =     this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);    // It's difficult to detect the plain Gecko engine, because most of the browsers identify   // them self as Gecko-like browsers and modify the userAgent's according to that.   // Since we only cover one explicit Firefox case, we can simply check for Firefox   // instead of having an unstable check for Gecko.   /** Whether the current browser is Firefox. */   FIREFOX: boolean = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);    /** Whether the current platform is Android. */   // Trident on mobile adds the android platform to the userAgent to trick detections.   ANDROID: boolean = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;    // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake   // this and just place the Safari keyword in the userAgent. To be more safe about Safari every   // Safari browser should also use Webkit as its layout engine.   /** Whether the current browser is Safari. */   SAFARI: boolean = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;    constructor(@Inject(PLATFORM_ID) private _platformId: Object) {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core';  @NgModule({}) export class PlatformModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Cached result Set of input types support by the current browser. */ let supportedInputTypes: Set<string>;  /** Types of `<input>` that *might* be supported. */ const candidateInputTypes = [   // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after   // first changing it to something else:   // The specified value \"\" does not conform to the required format.   // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.   'color',   'button',   'checkbox',   'date',   'datetime-local',   'email',   'file',   'hidden',   'image',   'month',   'number',   'password',   'radio',   'range',   'reset',   'search',   'submit',   'tel',   'text',   'time',   'url',   'week', ];  /** @returns The input types supported by this browser. */ export function getSupportedInputTypes(): Set<string> {   // Result is cached.   if (supportedInputTypes) {     return supportedInputTypes;   }    // We can't check if an input type is not supported until we're on the browser, so say that   // everything is supported when not on the browser. We don't use `Platform` here since it's   // just a helper function and can't inject it.   if (typeof document !== 'object' || !document) {     supportedInputTypes = new Set(candidateInputTypes);     return supportedInputTypes;   }    let featureTestInput = document.createElement('input');   supportedInputTypes = new Set(     candidateInputTypes.filter(value => {       featureTestInput.setAttribute('type', value);       return featureTestInput.type === value;     }),   );    return supportedInputTypes; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Cached result of whether the user's browser supports passive event listeners. */ let supportsPassiveEvents: boolean;  /**  * Checks whether the user's browser supports passive event listeners.  * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md  */ export function supportsPassiveEventListeners(): boolean {   if (supportsPassiveEvents == null && typeof window !== 'undefined') {     try {       window.addEventListener(         'test',         null!,         Object.defineProperty({}, 'passive', {           get: () => (supportsPassiveEvents = true),         }),       );     } finally {       supportsPassiveEvents = supportsPassiveEvents || false;     }   }    return supportsPassiveEvents; }  /**  * Normalizes an `AddEventListener` object to something that can be passed  * to `addEventListener` on any browser, no matter whether it supports the  * `options` parameter.  * @param options Object to be normalized.  */ export function normalizePassiveListenerOptions(   options: AddEventListenerOptions, ): AddEventListenerOptions | boolean {   return supportsPassiveEventListeners() ? options : !!options.capture; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** The possible ways the browser may handle the horizontal scroll axis in RTL languages. */ export const enum RtlScrollAxisType {   /**    * scrollLeft is 0 when scrolled all the way left and (scrollWidth - clientWidth) when scrolled    * all the way right.    */   NORMAL,   /**    * scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled    * all the way right.    */   NEGATED,   /**    * scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled    * all the way right.    */   INVERTED, }  /** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */ let rtlScrollAxisType: RtlScrollAxisType | undefined;  /** Cached result of the check that indicates whether the browser supports scroll behaviors. */ let scrollBehaviorSupported: boolean | undefined;  /** Check whether the browser supports scroll behaviors. */ export function supportsScrollBehavior(): boolean {   if (scrollBehaviorSupported == null) {     // If we're not in the browser, it can't be supported. Also check for `Element`, because     // some projects stub out the global `document` during SSR which can throw us off.     if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {       scrollBehaviorSupported = false;       return scrollBehaviorSupported;     }      // If the element can have a `scrollBehavior` style, we can be sure that it's supported.     if ('scrollBehavior' in document.documentElement!.style) {       scrollBehaviorSupported = true;     } else {       // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's       // supported but it doesn't handle scroll behavior, or it has been polyfilled.       const scrollToFunction: Function | undefined = Element.prototype.scrollTo;        if (scrollToFunction) {         // We can detect if the function has been polyfilled by calling `toString` on it. Native         // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get         // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider         // polyfilled functions as supporting scroll behavior.         scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());       } else {         scrollBehaviorSupported = false;       }     }   }    return scrollBehaviorSupported; }  /**  * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,  * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.  */ export function getRtlScrollAxisType(): RtlScrollAxisType {   // We can't check unless we're on the browser. Just assume 'normal' if we're not.   if (typeof document !== 'object' || !document) {     return RtlScrollAxisType.NORMAL;   }    if (rtlScrollAxisType == null) {     // Create a 1px wide scrolling container and a 2px wide content element.     const scrollContainer = document.createElement('div');     const containerStyle = scrollContainer.style;     scrollContainer.dir = 'rtl';     containerStyle.width = '1px';     containerStyle.overflow = 'auto';     containerStyle.visibility = 'hidden';     containerStyle.pointerEvents = 'none';     containerStyle.position = 'absolute';      const content = document.createElement('div');     const contentStyle = content.style;     contentStyle.width = '2px';     contentStyle.height = '1px';      scrollContainer.appendChild(content);     document.body.appendChild(scrollContainer);      rtlScrollAxisType = RtlScrollAxisType.NORMAL;      // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL     // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're     // dealing with one of the other two types of browsers.     if (scrollContainer.scrollLeft === 0) {       // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an       // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by       // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will       // return 0 when we read it again.       scrollContainer.scrollLeft = 1;       rtlScrollAxisType =         scrollContainer.scrollLeft === 0 ? RtlScrollAxisType.NEGATED : RtlScrollAxisType.INVERTED;     }      scrollContainer.remove();   }   return rtlScrollAxisType; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  let shadowDomIsSupported: boolean;  /** Checks whether the user's browser support Shadow DOM. */ export function _supportsShadowDom(): boolean {   if (shadowDomIsSupported == null) {     const head = typeof document !== 'undefined' ? document.head : null;     shadowDomIsSupported = !!(head && ((head as any).createShadowRoot || head.attachShadow));   }    return shadowDomIsSupported; }  /** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */ export function _getShadowRoot(element: HTMLElement): ShadowRoot | null {   if (_supportsShadowDom()) {     const rootNode = element.getRootNode ? element.getRootNode() : null;      // Note that this should be caught by `_supportsShadowDom`, but some     // teams have been able to hit this code path on unsupported browsers.     if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {       return rootNode;     }   }    return null; }  /**  * Gets the currently-focused element on the page while  * also piercing through Shadow DOM boundaries.  */ export function _getFocusedElementPierceShadowDom(): HTMLElement | null {   let activeElement =     typeof document !== 'undefined' && document       ? (document.activeElement as HTMLElement | null)       : null;    while (activeElement && activeElement.shadowRoot) {     const newActiveElement = activeElement.shadowRoot.activeElement as HTMLElement | null;     if (newActiveElement === activeElement) {       break;     } else {       activeElement = newActiveElement;     }   }    return activeElement; }  /** Gets the target of an event while accounting for Shadow DOM. */ export function _getEventTarget<T extends EventTarget>(event: Event): T | null {   // If an event is bound outside the Shadow DOM, the `event.target` will   // point to the shadow root so we have to use `composedPath` instead.   return (event.composedPath ? event.composedPath()[0] : event.target) as T | null; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Gets whether the code is currently running in a test environment. */ export function _isTestEnvironment(): boolean {   // We can't use `declare const` because it causes conflicts inside Google with the real typings   // for these symbols and we can't read them off the global object, because they don't appear to   // be attached there for some runners like Jest.   // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)   return (     // @ts-ignore     (typeof __karma__ !== 'undefined' && !!__karma__) ||     // @ts-ignore     (typeof jasmine !== 'undefined' && !!jasmine) ||     // @ts-ignore     (typeof jest !== 'undefined' && !!jest) ||     // @ts-ignore     (typeof Mocha !== 'undefined' && !!Mocha)   ); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './platform'; export * from './platform-module'; export * from './features/input-types'; export * from './features/passive-listeners'; export * from './features/scrolling'; export * from './features/shadow-dom'; export * from './features/test-environment'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 216 --------------------
{"version":3,"file":"bidi.mjs","sources":["../../../../../../src/cdk/bidi/dir-document-token.ts","../../../../../../src/cdk/bidi/directionality.ts","../../../../../../src/cdk/bidi/dir.ts","../../../../../../src/cdk/bidi/bidi-module.ts","../../../../../../src/cdk/bidi/public-api.ts","../../../../../../src/cdk/bidi/index.ts","../../../../../../src/cdk/bidi/bidi_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {inject, InjectionToken} from '@angular/core';  /**  * Injection token used to inject the document into Directionality.  * This is used so that the value can be faked in tests.  *  * We can't use the real document in tests because changing the real `dir` causes geometry-based  * tests in Safari to fail.  *  * We also can't re-provide the DOCUMENT token from platform-browser because the unit tests  * themselves use things like `querySelector` in test code.  *  * This token is defined in a separate file from Directionality as a workaround for  * https://github.com/angular/angular/issues/22559  *  * @docs-private  */ export const DIR_DOCUMENT = new InjectionToken<Document>('cdk-dir-doc', {   providedIn: 'root',   factory: DIR_DOCUMENT_FACTORY, });  /** @docs-private */ export function DIR_DOCUMENT_FACTORY(): Document {   return inject(DOCUMENT); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EventEmitter, Inject, Injectable, Optional, OnDestroy} from '@angular/core'; import {DIR_DOCUMENT} from './dir-document-token';  export type Direction = 'ltr' | 'rtl';  /** Regex that matches locales with an RTL script. Taken from `goog.i18n.bidi.isRtlLanguage`. */ const RTL_LOCALE_PATTERN =   /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;  /** Resolves a string value to a specific direction. */ export function _resolveDirectionality(rawValue: string): Direction {   const value = rawValue?.toLowerCase() || '';    if (value === 'auto' && typeof navigator !== 'undefined' && navigator?.language) {     return RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr';   }    return value === 'rtl' ? 'rtl' : 'ltr'; }  /**  * The directionality (LTR / RTL) context for the application (or a subtree of it).  * Exposes the current direction and a stream of direction changes.  */ @Injectable({providedIn: 'root'}) export class Directionality implements OnDestroy {   /** The current 'ltr' or 'rtl' value. */   readonly value: Direction = 'ltr';    /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */   readonly change = new EventEmitter<Direction>();    constructor(@Optional() @Inject(DIR_DOCUMENT) _document?: any) {     if (_document) {       const bodyDir = _document.body ? _document.body.dir : null;       const htmlDir = _document.documentElement ? _document.documentElement.dir : null;       this.value = _resolveDirectionality(bodyDir || htmlDir || 'ltr');     }   }    ngOnDestroy() {     this.change.complete();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, Output, Input, EventEmitter, AfterContentInit, OnDestroy} from '@angular/core';  import {Direction, Directionality, _resolveDirectionality} from './directionality';  /**  * Directive to listen for changes of direction of part of the DOM.  *  * Provides itself as Directionality such that descendant directives only need to ever inject  * Directionality to get the closest direction.  */ @Directive({   selector: '[dir]',   providers: [{provide: Directionality, useExisting: Dir}],   host: {'[attr.dir]': '_rawDir'},   exportAs: 'dir', }) export class Dir implements Directionality, AfterContentInit, OnDestroy {   /** Normalized direction that accounts for invalid/unsupported values. */   private _dir: Direction = 'ltr';    /** Whether the `value` has been set to its initial value. */   private _isInitialized: boolean = false;    /** Direction as passed in by the consumer. */   _rawDir: string;    /** Event emitted when the direction changes. */   @Output('dirChange') readonly change = new EventEmitter<Direction>();    /** @docs-private */   @Input()   get dir(): Direction {     return this._dir;   }   set dir(value: Direction | 'auto') {     const previousValue = this._dir;      // Note: `_resolveDirectionality` resolves the language based on the browser's language,     // whereas the browser does it based on the content of the element. Since doing so based     // on the content can be expensive, for now we're doing the simpler matching.     this._dir = _resolveDirectionality(value);     this._rawDir = value;      if (previousValue !== this._dir && this._isInitialized) {       this.change.emit(this._dir);     }   }    /** Current layout direction of the element. */   get value(): Direction {     return this.dir;   }    /** Initialize once default value has been set. */   ngAfterContentInit() {     this._isInitialized = true;   }    ngOnDestroy() {     this.change.complete();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {Dir} from './dir';  @NgModule({   exports: [Dir],   declarations: [Dir], }) export class BidiModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export {Directionality, Direction} from './directionality'; export {DIR_DOCUMENT} from './dir-document-token'; export {Dir} from './dir'; export * from './bidi-module'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 217 --------------------
{"version":3,"file":"dialog.mjs","sources":["../../../../../../src/cdk/dialog/dialog-config.ts","../../../../../../src/cdk/dialog/dialog-container.ts","../../../../../../src/cdk/dialog/dialog-container.html","../../../../../../src/cdk/dialog/dialog-ref.ts","../../../../../../src/cdk/dialog/dialog-injectors.ts","../../../../../../src/cdk/dialog/dialog.ts","../../../../../../src/cdk/dialog/dialog-module.ts","../../../../../../src/cdk/dialog/public-api.ts","../../../../../../src/cdk/dialog/index.ts","../../../../../../src/cdk/dialog/dialog_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   ViewContainerRef,   ComponentFactoryResolver,   Injector,   StaticProvider,   Type, } from '@angular/core'; import {Direction} from '@angular/cdk/bidi'; import {PositionStrategy, ScrollStrategy} from '@angular/cdk/overlay'; import {BasePortalOutlet} from '@angular/cdk/portal';  /** Options for where to set focus to automatically on dialog open */ export type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';  /** Valid ARIA roles for a dialog. */ export type DialogRole = 'dialog' | 'alertdialog';  /** Configuration for opening a modal dialog. */ export class DialogConfig<D = unknown, R = unknown, C extends BasePortalOutlet = BasePortalOutlet> {   /**    * Where the attached component should live in Angular's *logical* component tree.    * This affects what is available for injection and the change detection order for the    * component instantiated inside of the dialog. This does not affect where the dialog    * content will be rendered.    */   viewContainerRef?: ViewContainerRef;    /**    * Injector used for the instantiation of the component to be attached. If provided,    * takes precedence over the injector indirectly provided by `ViewContainerRef`.    */   injector?: Injector;    /** ID for the dialog. If omitted, a unique one will be generated. */   id?: string;    /** The ARIA role of the dialog element. */   role?: DialogRole = 'dialog';    /** Optional CSS class or classes applied to the overlay panel. */   panelClass?: string | string[] = '';    /** Whether the dialog has a backdrop. */   hasBackdrop?: boolean = true;    /** Optional CSS class or classes applied to the overlay backdrop. */   backdropClass?: string | string[] = '';    /** Whether the dialog closes with the escape key or pointer events outside the panel element. */   disableClose?: boolean = false;    /** Width of the dialog. */   width?: string = '';    /** Height of the dialog. */   height?: string = '';    /** Min-width of the dialog. If a number is provided, assumes pixel units. */   minWidth?: number | string;    /** Min-height of the dialog. If a number is provided, assumes pixel units. */   minHeight?: number | string;    /** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */   maxWidth?: number | string;    /** Max-height of the dialog. If a number is provided, assumes pixel units. */   maxHeight?: number | string;    /** Strategy to use when positioning the dialog. Defaults to centering it on the page. */   positionStrategy?: PositionStrategy;    /** Data being injected into the child component. */   data?: D | null = null;    /** Layout direction for the dialog's content. */   direction?: Direction;    /** ID of the element that describes the dialog. */   ariaDescribedBy?: string | null = null;    /** ID of the element that labels the dialog. */   ariaLabelledBy?: string | null = null;    /** Dialog label applied via `aria-label` */   ariaLabel?: string | null = null;    /** Whether this is a modal dialog. Used to set the `aria-modal` attribute. */   ariaModal?: boolean = true;    /**    * Where the dialog should focus on open.    * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or    * AutoFocusTarget instead.    */   autoFocus?: AutoFocusTarget | string | boolean = 'first-tabbable';    /**    * Whether the dialog should restore focus to the previously-focused element upon closing.    * Has the following behavior based on the type that is passed in:    * - `boolean` - when true, will return focus to the element that was focused before the dialog    *    was opened, otherwise won't restore focus at all.    * - `string` - focus will be restored to the first element that matches the CSS selector.    * - `HTMLElement` - focus will be restored to the specific element.    */   restoreFocus?: boolean | string | HTMLElement = true;    /**    * Scroll strategy to be used for the dialog. This determines how    * the dialog responds to scrolling underneath the panel element.    */   scrollStrategy?: ScrollStrategy;    /**    * Whether the dialog should close when the user navigates backwards or forwards through browser    * history. This does not apply to navigation via anchor element unless using URL-hash based    * routing (`HashLocationStrategy` in the Angular router).    */   closeOnNavigation?: boolean = true;    /**    * Whether the dialog should close when the dialog service is destroyed. This is useful if    * another service is wrapping the dialog and is managing the destruction instead.    */   closeOnDestroy?: boolean = true;    /**    * Whether the dialog should close when the underlying overlay is detached. This is useful if    * another service is wrapping the dialog and is managing the destruction instead. E.g. an    * external detachment can happen as a result of a scroll strategy triggering it or when the    * browser location changes.    */   closeOnOverlayDetachments?: boolean = true;    /** Alternate `ComponentFactoryResolver` to use when resolving the associated component. */   componentFactoryResolver?: ComponentFactoryResolver;    /**    * Providers that will be exposed to the contents of the dialog. Can also    * be provided as a function in order to generate the providers lazily.    */   providers?:     | StaticProvider[]     | ((dialogRef: R, config: DialogConfig<D, R, C>, container: C) => StaticProvider[]);    /**    * Component into which the dialog content will be rendered. Defaults to `CdkDialogContainer`.    * A configuration object can be passed in to customize the providers that will be exposed    * to the dialog container.    */   container?:     | Type<C>     | {         type: Type<C>;         providers: (config: DialogConfig<D, R, C>) => StaticProvider[];       };    /**    * Context that will be passed to template-based dialogs.    * A function can be passed in to resolve the context lazily.    */   templateContext?: Record<string, any> | (() => Record<string, any>); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   FocusMonitor,   FocusOrigin,   FocusTrap,   FocusTrapFactory,   InteractivityChecker, } from '@angular/cdk/a11y'; import {OverlayRef} from '@angular/cdk/overlay'; import {_getFocusedElementPierceShadowDom} from '@angular/cdk/platform'; import {   BasePortalOutlet,   CdkPortalOutlet,   ComponentPortal,   DomPortal,   TemplatePortal, } from '@angular/cdk/portal'; import {DOCUMENT} from '@angular/common'; import {   ChangeDetectionStrategy,   Component,   ComponentRef,   ElementRef,   EmbeddedViewRef,   Inject,   NgZone,   OnDestroy,   Optional,   ViewChild,   ViewEncapsulation, } from '@angular/core'; import {DialogConfig} from './dialog-config';  export function throwDialogContentAlreadyAttachedError() {   throw Error('Attempting to attach dialog content after content is already attached'); }  /**  * Internal component that wraps user-provided dialog content.  * @docs-private  */ @Component({   selector: 'cdk-dialog-container',   templateUrl: './dialog-container.html',   styleUrls: ['dialog-container.css'],   encapsulation: ViewEncapsulation.None,   // Using OnPush for dialogs caused some G3 sync issues. Disabled until we can track them down.   // tslint:disable-next-line:validate-decorators   changeDetection: ChangeDetectionStrategy.Default,   host: {     'class': 'cdk-dialog-container',     'tabindex': '-1',     '[attr.id]': '_config.id || null',     '[attr.role]': '_config.role',     '[attr.aria-modal]': '_config.ariaModal',     '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',     '[attr.aria-label]': '_config.ariaLabel',     '[attr.aria-describedby]': '_config.ariaDescribedBy || null',   }, }) export class CdkDialogContainer<C extends DialogConfig = DialogConfig>   extends BasePortalOutlet   implements OnDestroy {   protected _document: Document;    /** The portal outlet inside of this container into which the dialog content will be loaded. */   @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;    /** The class that traps and manages focus within the dialog. */   private _focusTrap: FocusTrap;    /** Element that was focused before the dialog was opened. Save this to restore upon close. */   private _elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;    /**    * Type of interaction that led to the dialog being closed. This is used to determine    * whether the focus style will be applied when returning focus to its original location    * after the dialog is closed.    */   _closeInteractionType: FocusOrigin | null = null;    /** ID of the element that should be considered as the dialog's label. */   _ariaLabelledBy: string | null;    constructor(     protected _elementRef: ElementRef,     protected _focusTrapFactory: FocusTrapFactory,     @Optional() @Inject(DOCUMENT) _document: any,     @Inject(DialogConfig) readonly _config: C,     private _interactivityChecker: InteractivityChecker,     private _ngZone: NgZone,     private _overlayRef: OverlayRef,     private _focusMonitor?: FocusMonitor,   ) {     super();     this._ariaLabelledBy = this._config.ariaLabelledBy || null;     this._document = _document;   }    protected _contentAttached() {     this._initializeFocusTrap();     this._handleBackdropClicks();     this._captureInitialFocus();   }    /**    * Can be used by child classes to customize the initial focus    * capturing behavior (e.g. if it's tied to an animation).    */   protected _captureInitialFocus() {     this._trapFocus();   }    ngOnDestroy() {     this._restoreFocus();   }    /**    * Attach a ComponentPortal as content to this dialog container.    * @param portal Portal to be attached as the dialog content.    */   attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {     if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throwDialogContentAlreadyAttachedError();     }      const result = this._portalOutlet.attachComponentPortal(portal);     this._contentAttached();     return result;   }    /**    * Attach a TemplatePortal as content to this dialog container.    * @param portal Portal to be attached as the dialog content.    */   attachTemplatePortal<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T> {     if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throwDialogContentAlreadyAttachedError();     }      const result = this._portalOutlet.attachTemplatePortal(portal);     this._contentAttached();     return result;   }    /**    * Attaches a DOM portal to the dialog container.    * @param portal Portal to be attached.    * @deprecated To be turned into a method.    * @breaking-change 10.0.0    */   override attachDomPortal = (portal: DomPortal) => {     if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throwDialogContentAlreadyAttachedError();     }      const result = this._portalOutlet.attachDomPortal(portal);     this._contentAttached();     return result;   };    // TODO(crisbeto): this shouldn't be exposed, but there are internal references to it.   /** Captures focus if it isn't already inside the dialog. */   _recaptureFocus() {     if (!this._containsFocus()) {       this._trapFocus();     }   }    /**    * Focuses the provided element. If the element is not focusable, it will add a tabIndex    * attribute to forcefully focus it. The attribute is removed after focus is moved.    * @param element The element to focus.    */   private _forceFocus(element: HTMLElement, options?: FocusOptions) {     if (!this._interactivityChecker.isFocusable(element)) {       element.tabIndex = -1;       // The tabindex attribute should be removed to avoid navigating to that element again       this._ngZone.runOutsideAngular(() => {         const callback = () => {           element.removeEventListener('blur', callback);           element.removeEventListener('mousedown', callback);           element.removeAttribute('tabindex');         };          element.addEventListener('blur', callback);         element.addEventListener('mousedown', callback);       });     }     element.focus(options);   }    /**    * Focuses the first element that matches the given selector within the focus trap.    * @param selector The CSS selector for the element to set focus to.    */   private _focusByCssSelector(selector: string, options?: FocusOptions) {     let elementToFocus = this._elementRef.nativeElement.querySelector(       selector,     ) as HTMLElement | null;     if (elementToFocus) {       this._forceFocus(elementToFocus, options);     }   }    /**    * Moves the focus inside the focus trap. When autoFocus is not set to 'dialog', if focus    * cannot be moved then focus will go to the dialog container.    */   protected _trapFocus() {     const element = this._elementRef.nativeElement;     // If were to attempt to focus immediately, then the content of the dialog would not yet be     // ready in instances where change detection has to run first. To deal with this, we simply     // wait for the microtask queue to be empty when setting focus when autoFocus isn't set to     // dialog. If the element inside the dialog can't be focused, then the container is focused     // so the user can't tab into other elements behind it.     switch (this._config.autoFocus) {       case false:       case 'dialog':         // Ensure that focus is on the dialog container. It's possible that a different         // component tried to move focus while the open animation was running. See:         // https://github.com/angular/components/issues/16215. Note that we only want to do this         // if the focus isn't inside the dialog already, because it's possible that the consumer         // turned off `autoFocus` in order to move focus themselves.         if (!this._containsFocus()) {           element.focus();         }         break;       case true:       case 'first-tabbable':         this._focusTrap.focusInitialElementWhenReady().then(focusedSuccessfully => {           // If we weren't able to find a focusable element in the dialog, then focus the dialog           // container instead.           if (!focusedSuccessfully) {             this._focusDialogContainer();           }         });         break;       case 'first-heading':         this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role=\"heading\"]');         break;       default:         this._focusByCssSelector(this._config.autoFocus!);         break;     }   }    /** Restores focus to the element that was focused before the dialog opened. */   private _restoreFocus() {     const focusConfig = this._config.restoreFocus;     let focusTargetElement: HTMLElement | null = null;      if (typeof focusConfig === 'string') {       focusTargetElement = this._document.querySelector(focusConfig);     } else if (typeof focusConfig === 'boolean') {       focusTargetElement = focusConfig ? this._elementFocusedBeforeDialogWasOpened : null;     } else if (focusConfig) {       focusTargetElement = focusConfig;     }      // We need the extra check, because IE can set the `activeElement` to null in some cases.     if (       this._config.restoreFocus &&       focusTargetElement &&       typeof focusTargetElement.focus === 'function'     ) {       const activeElement = _getFocusedElementPierceShadowDom();       const element = this._elementRef.nativeElement;        // Make sure that focus is still inside the dialog or is on the body (usually because a       // non-focusable element like the backdrop was clicked) before moving it. It's possible that       // the consumer moved it themselves before the animation was done, in which case we shouldn't       // do anything.       if (         !activeElement ||         activeElement === this._document.body ||         activeElement === element ||         element.contains(activeElement)       ) {         if (this._focusMonitor) {           this._focusMonitor.focusVia(focusTargetElement, this._closeInteractionType);           this._closeInteractionType = null;         } else {           focusTargetElement.focus();         }       }     }      if (this._focusTrap) {       this._focusTrap.destroy();     }   }    /** Focuses the dialog container. */   private _focusDialogContainer() {     // Note that there is no focus method when rendering on the server.     if (this._elementRef.nativeElement.focus) {       this._elementRef.nativeElement.focus();     }   }    /** Returns whether focus is inside the dialog. */   private _containsFocus() {     const element = this._elementRef.nativeElement;     const activeElement = _getFocusedElementPierceShadowDom();     return element === activeElement || element.contains(activeElement);   }    /** Sets up the focus trap. */   private _initializeFocusTrap() {     this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);      // Save the previously focused element. This element will be re-focused     // when the dialog closes.     if (this._document) {       this._elementFocusedBeforeDialogWasOpened = _getFocusedElementPierceShadowDom();     }   }    /** Sets up the listener that handles clicks on the dialog backdrop. */   private _handleBackdropClicks() {     // Clicking on the backdrop will move focus out of dialog.     // Recapture it if closing via the backdrop is disabled.     this._overlayRef.backdropClick().subscribe(() => {       if (this._config.disableClose) {         this._recaptureFocus();       }     });   } } ","<ng-template cdkPortalOutlet></ng-template> ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {OverlayRef} from '@angular/cdk/overlay'; import {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes'; import {Observable, Subject, Subscription} from 'rxjs'; import {DialogConfig} from './dialog-config'; import {FocusOrigin} from '@angular/cdk/a11y'; import {BasePortalOutlet} from '@angular/cdk/portal';  /** Additional options that can be passed in when closing a dialog. */ export interface DialogCloseOptions {   /** Focus original to use when restoring focus. */   focusOrigin?: FocusOrigin; }  /**  * Reference to a dialog opened via the Dialog service.  */ export class DialogRef<R = unknown, C = unknown> {   /**    * Instance of component opened into the dialog. Will be    * null when the dialog is opened using a `TemplateRef`.    */   readonly componentInstance: C | null;    /** Instance of the container that is rendering out the dialog content. */   readonly containerInstance: BasePortalOutlet & {_closeInteractionType?: FocusOrigin};    /** Whether the user is allowed to close the dialog. */   disableClose: boolean | undefined;    /** Emits when the dialog has been closed. */   readonly closed: Observable<R | undefined> = new Subject<R | undefined>();    /** Emits when the backdrop of the dialog is clicked. */   readonly backdropClick: Observable<MouseEvent>;    /** Emits when on keyboard events within the dialog. */   readonly keydownEvents: Observable<KeyboardEvent>;    /** Emits on pointer events that happen outside of the dialog. */   readonly outsidePointerEvents: Observable<MouseEvent>;    /** Unique ID for the dialog. */   readonly id: string;    /** Subscription to external detachments of the dialog. */   private _detachSubscription: Subscription;    constructor(     readonly overlayRef: OverlayRef,     readonly config: DialogConfig<any, DialogRef<R, C>, BasePortalOutlet>,   ) {     this.disableClose = config.disableClose;     this.backdropClick = overlayRef.backdropClick();     this.keydownEvents = overlayRef.keydownEvents();     this.outsidePointerEvents = overlayRef.outsidePointerEvents();     this.id = config.id!; // By the time the dialog is created we are guaranteed to have an ID.      this.keydownEvents.subscribe(event => {       if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {         event.preventDefault();         this.close(undefined, {focusOrigin: 'keyboard'});       }     });      this.backdropClick.subscribe(() => {       if (!this.disableClose) {         this.close(undefined, {focusOrigin: 'mouse'});       }     });      this._detachSubscription = overlayRef.detachments().subscribe(() => {       // Check specifically for `false`, because we want `undefined` to be treated like `true`.       if (config.closeOnOverlayDetachments !== false) {         this.close();       }     });   }    /**    * Close the dialog.    * @param result Optional result to return to the dialog opener.    * @param options Additional options to customize the closing behavior.    */   close(result?: R, options?: DialogCloseOptions): void {     if (this.containerInstance) {       const closedSubject = this.closed as Subject<R | undefined>;       this.containerInstance._closeInteractionType = options?.focusOrigin || 'program';       // Drop the detach subscription first since it can be triggered by the       // `dispose` call and override the result of this closing sequence.       this._detachSubscription.unsubscribe();       this.overlayRef.dispose();       closedSubject.next(result);       closedSubject.complete();       (this as {componentInstance: C}).componentInstance = (         this as {containerInstance: BasePortalOutlet}       ).containerInstance = null!;     }   }    /** Updates the position of the dialog based on the current position strategy. */   updatePosition(): this {     this.overlayRef.updatePosition();     return this;   }    /**    * Updates the dialog's width and height.    * @param width New width of the dialog.    * @param height New height of the dialog.    */   updateSize(width: string | number = '', height: string | number = ''): this {     this.overlayRef.updateSize({width, height});     return this;   }    /** Add a CSS class or an array of classes to the overlay pane. */   addPanelClass(classes: string | string[]): this {     this.overlayRef.addPanelClass(classes);     return this;   }    /** Remove a CSS class or an array of classes from the overlay pane. */   removePanelClass(classes: string | string[]): this {     this.overlayRef.removePanelClass(classes);     return this;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core'; import {Overlay, ScrollStrategy} from '@angular/cdk/overlay'; import {DialogConfig} from './dialog-config';  /** Injection token for the Dialog's ScrollStrategy. */ export const DIALOG_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(   'DialogScrollStrategy', );  /** Injection token for the Dialog's Data. */ export const DIALOG_DATA = new InjectionToken<any>('DialogData');  /** Injection token that can be used to provide default options for the dialog module. */ export const DEFAULT_DIALOG_CONFIG = new InjectionToken<DialogConfig>('DefaultDialogConfig');  /** @docs-private */ export function DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay): () => ScrollStrategy {   return () => overlay.scrollStrategies.block(); }  /** @docs-private */ export const DIALOG_SCROLL_STRATEGY_PROVIDER = {   provide: DIALOG_SCROLL_STRATEGY,   deps: [Overlay],   useFactory: DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, }; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   TemplateRef,   Injectable,   Injector,   OnDestroy,   Type,   StaticProvider,   Inject,   Optional,   SkipSelf, } from '@angular/core'; import {BasePortalOutlet, ComponentPortal, TemplatePortal} from '@angular/cdk/portal'; import {of as observableOf, Observable, Subject, defer} from 'rxjs'; import {DialogRef} from './dialog-ref'; import {DialogConfig} from './dialog-config'; import {Directionality} from '@angular/cdk/bidi'; import {   ComponentType,   Overlay,   OverlayRef,   OverlayConfig,   ScrollStrategy,   OverlayContainer, } from '@angular/cdk/overlay'; import {startWith} from 'rxjs/operators';  import {DEFAULT_DIALOG_CONFIG, DIALOG_DATA, DIALOG_SCROLL_STRATEGY} from './dialog-injectors'; import {CdkDialogContainer} from './dialog-container';  /** Unique id for the created dialog. */ let uniqueId = 0;  @Injectable() export class Dialog implements OnDestroy {   private _openDialogsAtThisLevel: DialogRef<any, any>[] = [];   private readonly _afterAllClosedAtThisLevel = new Subject<void>();   private readonly _afterOpenedAtThisLevel = new Subject<DialogRef>();   private _ariaHiddenElements = new Map<Element, string | null>();   private _scrollStrategy: () => ScrollStrategy;    /** Keeps track of the currently-open dialogs. */   get openDialogs(): readonly DialogRef<any, any>[] {     return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;   }    /** Stream that emits when a dialog has been opened. */   get afterOpened(): Subject<DialogRef<any, any>> {     return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;   }    /**    * Stream that emits when all open dialog have finished closing.    * Will emit on subscribe if there are no open dialogs to begin with.    */   readonly afterAllClosed: Observable<void> = defer(() =>     this.openDialogs.length       ? this._getAfterAllClosed()       : this._getAfterAllClosed().pipe(startWith(undefined)),   );    constructor(     private _overlay: Overlay,     private _injector: Injector,     @Optional() @Inject(DEFAULT_DIALOG_CONFIG) private _defaultOptions: DialogConfig,     @Optional() @SkipSelf() private _parentDialog: Dialog,     private _overlayContainer: OverlayContainer,     @Inject(DIALOG_SCROLL_STRATEGY) scrollStrategy: any,   ) {     this._scrollStrategy = scrollStrategy;   }    /**    * Opens a modal dialog containing the given component.    * @param component Type of the component to load into the dialog.    * @param config Extra configuration options.    * @returns Reference to the newly-opened dialog.    */   open<R = unknown, D = unknown, C = unknown>(     component: ComponentType<C>,     config?: DialogConfig<D, DialogRef<R, C>>,   ): DialogRef<R, C>;    /**    * Opens a modal dialog containing the given template.    * @param template TemplateRef to instantiate as the dialog content.    * @param config Extra configuration options.    * @returns Reference to the newly-opened dialog.    */   open<R = unknown, D = unknown, C = unknown>(     template: TemplateRef<C>,     config?: DialogConfig<D, DialogRef<R, C>>,   ): DialogRef<R, C>;    open<R = unknown, D = unknown, C = unknown>(     componentOrTemplateRef: ComponentType<C> | TemplateRef<C>,     config?: DialogConfig<D, DialogRef<R, C>>,   ): DialogRef<R, C>;    open<R = unknown, D = unknown, C = unknown>(     componentOrTemplateRef: ComponentType<C> | TemplateRef<C>,     config?: DialogConfig<D, DialogRef<R, C>>,   ): DialogRef<R, C> {     const defaults = (this._defaultOptions || new DialogConfig()) as DialogConfig<       D,       DialogRef<R, C>     >;     config = {...defaults, ...config};     config.id = config.id || `cdk-dialog-${uniqueId++}`;      if (       config.id &&       this.getDialogById(config.id) &&       (typeof ngDevMode === 'undefined' || ngDevMode)     ) {       throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`);     }      const overlayConfig = this._getOverlayConfig(config);     const overlayRef = this._overlay.create(overlayConfig);     const dialogRef = new DialogRef(overlayRef, config);     const dialogContainer = this._attachContainer(overlayRef, dialogRef, config);      (dialogRef as {containerInstance: BasePortalOutlet}).containerInstance = dialogContainer;     this._attachDialogContent(componentOrTemplateRef, dialogRef, dialogContainer, config);      // If this is the first dialog that we're opening, hide all the non-overlay content.     if (!this.openDialogs.length) {       this._hideNonDialogContentFromAssistiveTechnology();     }      (this.openDialogs as DialogRef<R, C>[]).push(dialogRef);     dialogRef.closed.subscribe(() => this._removeOpenDialog(dialogRef, true));     this.afterOpened.next(dialogRef);      return dialogRef;   }    /**    * Closes all of the currently-open dialogs.    */   closeAll(): void {     reverseForEach(this.openDialogs, dialog => dialog.close());   }    /**    * Finds an open dialog by its id.    * @param id ID to use when looking up the dialog.    */   getDialogById<R, C>(id: string): DialogRef<R, C> | undefined {     return this.openDialogs.find(dialog => dialog.id === id);   }    ngOnDestroy() {     // Make one pass over all the dialogs that need to be untracked, but should not be closed. We     // want to stop tracking the open dialog even if it hasn't been closed, because the tracking     // determines when `aria-hidden` is removed from elements outside the dialog.     reverseForEach(this._openDialogsAtThisLevel, dialog => {       // Check for `false` specifically since we want `undefined` to be interpreted as `true`.       if (dialog.config.closeOnDestroy === false) {         this._removeOpenDialog(dialog, false);       }     });      // Make a second pass and close the remaining dialogs. We do this second pass in order to     // correctly dispatch the `afterAllClosed` event in case we have a mixed array of dialogs     // that should be closed and dialogs that should not.     reverseForEach(this._openDialogsAtThisLevel, dialog => dialog.close());      this._afterAllClosedAtThisLevel.complete();     this._afterOpenedAtThisLevel.complete();     this._openDialogsAtThisLevel = [];   }    /**    * Creates an overlay config from a dialog config.    * @param config The dialog configuration.    * @returns The overlay configuration.    */   private _getOverlayConfig<D, R>(config: DialogConfig<D, R>): OverlayConfig {     const state = new OverlayConfig({       positionStrategy:         config.positionStrategy ||         this._overlay.position().global().centerHorizontally().centerVertically(),       scrollStrategy: config.scrollStrategy || this._scrollStrategy(),       panelClass: config.panelClass,       hasBackdrop: config.hasBackdrop,       direction: config.direction,       minWidth: config.minWidth,       minHeight: config.minHeight,       maxWidth: config.maxWidth,       maxHeight: config.maxHeight,       width: config.width,       height: config.height,       disposeOnNavigation: config.closeOnNavigation,     });      if (config.backdropClass) {       state.backdropClass = config.backdropClass;     }      return state;   }    /**    * Attaches a dialog container to a dialog's already-created overlay.    * @param overlay Reference to the dialog's underlying overlay.    * @param config The dialog configuration.    * @returns A promise resolving to a ComponentRef for the attached container.    */   private _attachContainer<R, D, C>(     overlay: OverlayRef,     dialogRef: DialogRef<R, C>,     config: DialogConfig<D, DialogRef<R, C>>,   ): BasePortalOutlet {     const userInjector = config.injector || config.viewContainerRef?.injector;     const providers: StaticProvider[] = [       {provide: DialogConfig, useValue: config},       {provide: DialogRef, useValue: dialogRef},       {provide: OverlayRef, useValue: overlay},     ];     let containerType: Type<BasePortalOutlet>;      if (config.container) {       if (typeof config.container === 'function') {         containerType = config.container;       } else {         containerType = config.container.type;         providers.push(...config.container.providers(config));       }     } else {       containerType = CdkDialogContainer;     }      const containerPortal = new ComponentPortal(       containerType,       config.viewContainerRef,       Injector.create({parent: userInjector || this._injector, providers}),       config.componentFactoryResolver,     );     const containerRef = overlay.attach(containerPortal);      return containerRef.instance;   }    /**    * Attaches the user-provided component to the already-created dialog container.    * @param componentOrTemplateRef The type of component being loaded into the dialog,    *     or a TemplateRef to instantiate as the content.    * @param dialogRef Reference to the dialog being opened.    * @param dialogContainer Component that is going to wrap the dialog content.    * @param config Configuration used to open the dialog.    */   private _attachDialogContent<R, D, C>(     componentOrTemplateRef: ComponentType<C> | TemplateRef<C>,     dialogRef: DialogRef<R, C>,     dialogContainer: BasePortalOutlet,     config: DialogConfig<D, DialogRef<R, C>>,   ) {     if (componentOrTemplateRef instanceof TemplateRef) {       const injector = this._createInjector(config, dialogRef, dialogContainer, undefined);       let context: any = {$implicit: config.data, dialogRef};        if (config.templateContext) {         context = {           ...context,           ...(typeof config.templateContext === 'function'             ? config.templateContext()             : config.templateContext),         };       }        dialogContainer.attachTemplatePortal(         new TemplatePortal<C>(componentOrTemplateRef, null!, context, injector),       );     } else {       const injector = this._createInjector(config, dialogRef, dialogContainer, this._injector);       const contentRef = dialogContainer.attachComponentPortal<C>(         new ComponentPortal(           componentOrTemplateRef,           config.viewContainerRef,           injector,           config.componentFactoryResolver,         ),       );       (dialogRef as {componentInstance: C}).componentInstance = contentRef.instance;     }   }    /**    * Creates a custom injector to be used inside the dialog. This allows a component loaded inside    * of a dialog to close itself and, optionally, to return a value.    * @param config Config object that is used to construct the dialog.    * @param dialogRef Reference to the dialog being opened.    * @param dialogContainer Component that is going to wrap the dialog content.    * @param fallbackInjector Injector to use as a fallback when a lookup fails in the custom    * dialog injector, if the user didn't provide a custom one.    * @returns The custom injector that can be used inside the dialog.    */   private _createInjector<R, D, C>(     config: DialogConfig<D, DialogRef<R, C>>,     dialogRef: DialogRef<R, C>,     dialogContainer: BasePortalOutlet,     fallbackInjector: Injector | undefined,   ): Injector {     const userInjector = config.injector || config.viewContainerRef?.injector;     const providers: StaticProvider[] = [       {provide: DIALOG_DATA, useValue: config.data},       {provide: DialogRef, useValue: dialogRef},     ];      if (config.providers) {       if (typeof config.providers === 'function') {         providers.push(...config.providers(dialogRef, config, dialogContainer));       } else {         providers.push(...config.providers);       }     }      if (       config.direction &&       (!userInjector ||         !userInjector.get<Directionality | null>(Directionality, null, {optional: true}))     ) {       providers.push({         provide: Directionality,         useValue: {value: config.direction, change: observableOf()},       });     }      return Injector.create({parent: userInjector || fallbackInjector, providers});   }    /**    * Removes a dialog from the array of open dialogs.    * @param dialogRef Dialog to be removed.    * @param emitEvent Whether to emit an event if this is the last dialog.    */   private _removeOpenDialog<R, C>(dialogRef: DialogRef<R, C>, emitEvent: boolean) {     const index = this.openDialogs.indexOf(dialogRef);      if (index > -1) {       (this.openDialogs as DialogRef<R, C>[]).splice(index, 1);        // If all the dialogs were closed, remove/restore the `aria-hidden`       // to a the siblings and emit to the `afterAllClosed` stream.       if (!this.openDialogs.length) {         this._ariaHiddenElements.forEach((previousValue, element) => {           if (previousValue) {             element.setAttribute('aria-hidden', previousValue);           } else {             element.removeAttribute('aria-hidden');           }         });          this._ariaHiddenElements.clear();          if (emitEvent) {           this._getAfterAllClosed().next();         }       }     }   }    /** Hides all of the content that isn't an overlay from assistive technology. */   private _hideNonDialogContentFromAssistiveTechnology() {     const overlayContainer = this._overlayContainer.getContainerElement();      // Ensure that the overlay container is attached to the DOM.     if (overlayContainer.parentElement) {       const siblings = overlayContainer.parentElement.children;        for (let i = siblings.length - 1; i > -1; i--) {         const sibling = siblings[i];          if (           sibling !== overlayContainer &&           sibling.nodeName !== 'SCRIPT' &&           sibling.nodeName !== 'STYLE' &&           !sibling.hasAttribute('aria-live')         ) {           this._ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));           sibling.setAttribute('aria-hidden', 'true');         }       }     }   }    private _getAfterAllClosed(): Subject<void> {     const parent = this._parentDialog;     return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;   } }  /**  * Executes a callback against all elements in an array while iterating in reverse.  * Useful if the array is being modified as it is being iterated.  */ function reverseForEach<T>(items: T[] | readonly T[], callback: (current: T) => void) {   let i = items.length;    while (i--) {     callback(items[i]);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {OverlayModule} from '@angular/cdk/overlay'; import {PortalModule} from '@angular/cdk/portal'; import {A11yModule} from '@angular/cdk/a11y'; import {Dialog} from './dialog'; import {CdkDialogContainer} from './dialog-container'; import {DIALOG_SCROLL_STRATEGY_PROVIDER} from './dialog-injectors';  @NgModule({   imports: [OverlayModule, PortalModule, A11yModule],   exports: [     // Re-export the PortalModule so that people extending the `CdkDialogContainer`     // don't have to remember to import it or be faced with an unhelpful error.     PortalModule,     CdkDialogContainer,   ],   declarations: [CdkDialogContainer],   providers: [Dialog, DIALOG_SCROLL_STRATEGY_PROVIDER], }) export class DialogModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './dialog-container'; export * from './dialog-config'; export * from './dialog-ref'; export * from './dialog'; export * from './dialog-module'; export * from './dialog-injectors'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["i2","observableOf","i1"],"mappings":"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"}
-------------------- SECTION 218 --------------------
{"version":3,"file":"scrolling.mjs","sources":["../../../../../../src/cdk/scrolling/virtual-scroll-strategy.ts","../../../../../../src/cdk/scrolling/fixed-size-virtual-scroll.ts","../../../../../../src/cdk/scrolling/scroll-dispatcher.ts","../../../../../../src/cdk/scrolling/scrollable.ts","../../../../../../src/cdk/scrolling/virtual-scrollable.ts","../../../../../../src/cdk/scrolling/viewport-ruler.ts","../../../../../../src/cdk/scrolling/virtual-scroll-viewport.ts","../../../../../../src/cdk/scrolling/virtual-scroll-viewport.html","../../../../../../src/cdk/scrolling/virtual-for-of.ts","../../../../../../src/cdk/scrolling/virtual-scrollable-element.ts","../../../../../../src/cdk/scrolling/virtual-scrollable-window.ts","../../../../../../src/cdk/scrolling/scrolling-module.ts","../../../../../../src/cdk/scrolling/public-api.ts","../../../../../../src/cdk/scrolling/index.ts","../../../../../../src/cdk/scrolling/scrolling_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core'; import {Observable} from 'rxjs'; import {CdkVirtualScrollViewport} from './virtual-scroll-viewport';  /** The injection token used to specify the virtual scrolling strategy. */ export const VIRTUAL_SCROLL_STRATEGY = new InjectionToken<VirtualScrollStrategy>(   'VIRTUAL_SCROLL_STRATEGY', );  /** A strategy that dictates which items should be rendered in the viewport. */ export interface VirtualScrollStrategy {   /** Emits when the index of the first element visible in the viewport changes. */   scrolledIndexChange: Observable<number>;    /**    * Attaches this scroll strategy to a viewport.    * @param viewport The viewport to attach this strategy to.    */   attach(viewport: CdkVirtualScrollViewport): void;    /** Detaches this scroll strategy from the currently attached viewport. */   detach(): void;    /** Called when the viewport is scrolled (debounced using requestAnimationFrame). */   onContentScrolled(): void;    /** Called when the length of the data changes. */   onDataLengthChanged(): void;    /** Called when the range of items rendered in the DOM has changed. */   onContentRendered(): void;    /** Called when the offset of the rendered items changed. */   onRenderedOffsetChanged(): void;    /**    * Scroll to the offset for the given index.    * @param index The index of the element to scroll to.    * @param behavior The ScrollBehavior to use when scrolling.    */   scrollToIndex(index: number, behavior: ScrollBehavior): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion'; import {Directive, forwardRef, Input, OnChanges} from '@angular/core'; import {Observable, Subject} from 'rxjs'; import {distinctUntilChanged} from 'rxjs/operators'; import {VIRTUAL_SCROLL_STRATEGY, VirtualScrollStrategy} from './virtual-scroll-strategy'; import {CdkVirtualScrollViewport} from './virtual-scroll-viewport';  /** Virtual scrolling strategy for lists with items of known fixed size. */ export class FixedSizeVirtualScrollStrategy implements VirtualScrollStrategy {   private readonly _scrolledIndexChange = new Subject<number>();    /** @docs-private Implemented as part of VirtualScrollStrategy. */   scrolledIndexChange: Observable<number> = this._scrolledIndexChange.pipe(distinctUntilChanged());    /** The attached viewport. */   private _viewport: CdkVirtualScrollViewport | null = null;    /** The size of the items in the virtually scrolling list. */   private _itemSize: number;    /** The minimum amount of buffer rendered beyond the viewport (in pixels). */   private _minBufferPx: number;    /** The number of buffer items to render beyond the edge of the viewport (in pixels). */   private _maxBufferPx: number;    /**    * @param itemSize The size of the items in the virtually scrolling list.    * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more    * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.    */   constructor(itemSize: number, minBufferPx: number, maxBufferPx: number) {     this._itemSize = itemSize;     this._minBufferPx = minBufferPx;     this._maxBufferPx = maxBufferPx;   }    /**    * Attaches this scroll strategy to a viewport.    * @param viewport The viewport to attach this strategy to.    */   attach(viewport: CdkVirtualScrollViewport) {     this._viewport = viewport;     this._updateTotalContentSize();     this._updateRenderedRange();   }    /** Detaches this scroll strategy from the currently attached viewport. */   detach() {     this._scrolledIndexChange.complete();     this._viewport = null;   }    /**    * Update the item size and buffer size.    * @param itemSize The size of the items in the virtually scrolling list.    * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more    * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.    */   updateItemAndBufferSize(itemSize: number, minBufferPx: number, maxBufferPx: number) {     if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');     }     this._itemSize = itemSize;     this._minBufferPx = minBufferPx;     this._maxBufferPx = maxBufferPx;     this._updateTotalContentSize();     this._updateRenderedRange();   }    /** @docs-private Implemented as part of VirtualScrollStrategy. */   onContentScrolled() {     this._updateRenderedRange();   }    /** @docs-private Implemented as part of VirtualScrollStrategy. */   onDataLengthChanged() {     this._updateTotalContentSize();     this._updateRenderedRange();   }    /** @docs-private Implemented as part of VirtualScrollStrategy. */   onContentRendered() {     /* no-op */   }    /** @docs-private Implemented as part of VirtualScrollStrategy. */   onRenderedOffsetChanged() {     /* no-op */   }    /**    * Scroll to the offset for the given index.    * @param index The index of the element to scroll to.    * @param behavior The ScrollBehavior to use when scrolling.    */   scrollToIndex(index: number, behavior: ScrollBehavior): void {     if (this._viewport) {       this._viewport.scrollToOffset(index * this._itemSize, behavior);     }   }    /** Update the viewport's total content size. */   private _updateTotalContentSize() {     if (!this._viewport) {       return;     }      this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);   }    /** Update the viewport's rendered range. */   private _updateRenderedRange() {     if (!this._viewport) {       return;     }      const renderedRange = this._viewport.getRenderedRange();     const newRange = {start: renderedRange.start, end: renderedRange.end};     const viewportSize = this._viewport.getViewportSize();     const dataLength = this._viewport.getDataLength();     let scrollOffset = this._viewport.measureScrollOffset();     // Prevent NaN as result when dividing by zero.     let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0;      // If user scrolls to the bottom of the list and data changes to a smaller list     if (newRange.end > dataLength) {       // We have to recalculate the first visible index based on new data length and viewport size.       const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);       const newVisibleIndex = Math.max(         0,         Math.min(firstVisibleIndex, dataLength - maxVisibleItems),       );        // If first visible index changed we must update scroll offset to handle start/end buffers       // Current range must also be adjusted to cover the new position (bottom of new list).       if (firstVisibleIndex != newVisibleIndex) {         firstVisibleIndex = newVisibleIndex;         scrollOffset = newVisibleIndex * this._itemSize;         newRange.start = Math.floor(firstVisibleIndex);       }        newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));     }      const startBuffer = scrollOffset - newRange.start * this._itemSize;     if (startBuffer < this._minBufferPx && newRange.start != 0) {       const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);       newRange.start = Math.max(0, newRange.start - expandStart);       newRange.end = Math.min(         dataLength,         Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize),       );     } else {       const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);       if (endBuffer < this._minBufferPx && newRange.end != dataLength) {         const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);         if (expandEnd > 0) {           newRange.end = Math.min(dataLength, newRange.end + expandEnd);           newRange.start = Math.max(             0,             Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize),           );         }       }     }      this._viewport.setRenderedRange(newRange);     this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);     this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));   } }  /**  * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created  * `FixedSizeVirtualScrollStrategy` from the given directive.  * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the  *     `FixedSizeVirtualScrollStrategy` from.  */ export function _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir: CdkFixedSizeVirtualScroll) {   return fixedSizeDir._scrollStrategy; }  /** A virtual scroll strategy that supports fixed-size items. */ @Directive({   selector: 'cdk-virtual-scroll-viewport[itemSize]',   standalone: true,   providers: [     {       provide: VIRTUAL_SCROLL_STRATEGY,       useFactory: _fixedSizeVirtualScrollStrategyFactory,       deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],     },   ], }) export class CdkFixedSizeVirtualScroll implements OnChanges {   /** The size of the items in the list (in pixels). */   @Input()   get itemSize(): number {     return this._itemSize;   }   set itemSize(value: NumberInput) {     this._itemSize = coerceNumberProperty(value);   }   _itemSize = 20;    /**    * The minimum amount of buffer rendered beyond the viewport (in pixels).    * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.    */   @Input()   get minBufferPx(): number {     return this._minBufferPx;   }   set minBufferPx(value: NumberInput) {     this._minBufferPx = coerceNumberProperty(value);   }   _minBufferPx = 100;    /**    * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.    */   @Input()   get maxBufferPx(): number {     return this._maxBufferPx;   }   set maxBufferPx(value: NumberInput) {     this._maxBufferPx = coerceNumberProperty(value);   }   _maxBufferPx = 200;    /** The scroll strategy used by this directive. */   _scrollStrategy = new FixedSizeVirtualScrollStrategy(     this.itemSize,     this.minBufferPx,     this.maxBufferPx,   );    ngOnChanges() {     this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {coerceElement} from '@angular/cdk/coercion'; import {Platform} from '@angular/cdk/platform'; import {ElementRef, Injectable, NgZone, OnDestroy, Optional, Inject} from '@angular/core'; import {fromEvent, of as observableOf, Subject, Subscription, Observable, Observer} from 'rxjs'; import {auditTime, filter} from 'rxjs/operators'; import {CdkScrollable} from './scrollable'; import {DOCUMENT} from '@angular/common';  /** Time in ms to throttle the scrolling events by default. */ export const DEFAULT_SCROLL_TIME = 20;  /**  * Service contained all registered Scrollable references and emits an event when any one of the  * Scrollable references emit a scrolled event.  */ @Injectable({providedIn: 'root'}) export class ScrollDispatcher implements OnDestroy {   /** Used to reference correct document/window */   protected _document: Document;    constructor(     private _ngZone: NgZone,     private _platform: Platform,     @Optional() @Inject(DOCUMENT) document: any,   ) {     this._document = document;   }    /** Subject for notifying that a registered scrollable reference element has been scrolled. */   private readonly _scrolled = new Subject<CdkScrollable | void>();    /** Keeps track of the global `scroll` and `resize` subscriptions. */   _globalSubscription: Subscription | null = null;    /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */   private _scrolledCount = 0;    /**    * Map of all the scrollable references that are registered with the service and their    * scroll event subscriptions.    */   scrollContainers: Map<CdkScrollable, Subscription> = new Map();    /**    * Registers a scrollable instance with the service and listens for its scrolled events. When the    * scrollable is scrolled, the service emits the event to its scrolled observable.    * @param scrollable Scrollable instance to be registered.    */   register(scrollable: CdkScrollable): void {     if (!this.scrollContainers.has(scrollable)) {       this.scrollContainers.set(         scrollable,         scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)),       );     }   }    /**    * De-registers a Scrollable reference and unsubscribes from its scroll event observable.    * @param scrollable Scrollable instance to be deregistered.    */   deregister(scrollable: CdkScrollable): void {     const scrollableReference = this.scrollContainers.get(scrollable);      if (scrollableReference) {       scrollableReference.unsubscribe();       this.scrollContainers.delete(scrollable);     }   }    /**    * Returns an observable that emits an event whenever any of the registered Scrollable    * references (or window, document, or body) fire a scrolled event. Can provide a time in ms    * to override the default \"throttle\" time.    *    * **Note:** in order to avoid hitting change detection for every scroll event,    * all of the events emitted from this stream will be run outside the Angular zone.    * If you need to update any data bindings as a result of a scroll event, you have    * to run the callback using `NgZone.run`.    */   scrolled(auditTimeInMs: number = DEFAULT_SCROLL_TIME): Observable<CdkScrollable | void> {     if (!this._platform.isBrowser) {       return observableOf<void>();     }      return new Observable((observer: Observer<CdkScrollable | void>) => {       if (!this._globalSubscription) {         this._addGlobalListener();       }        // In the case of a 0ms delay, use an observable without auditTime       // since it does add a perceptible delay in processing overhead.       const subscription =         auditTimeInMs > 0           ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer)           : this._scrolled.subscribe(observer);        this._scrolledCount++;        return () => {         subscription.unsubscribe();         this._scrolledCount--;          if (!this._scrolledCount) {           this._removeGlobalListener();         }       };     });   }    ngOnDestroy() {     this._removeGlobalListener();     this.scrollContainers.forEach((_, container) => this.deregister(container));     this._scrolled.complete();   }    /**    * Returns an observable that emits whenever any of the    * scrollable ancestors of an element are scrolled.    * @param elementOrElementRef Element whose ancestors to listen for.    * @param auditTimeInMs Time to throttle the scroll events.    */   ancestorScrolled(     elementOrElementRef: ElementRef | HTMLElement,     auditTimeInMs?: number,   ): Observable<CdkScrollable | void> {     const ancestors = this.getAncestorScrollContainers(elementOrElementRef);      return this.scrolled(auditTimeInMs).pipe(       filter(target => {         return !target || ancestors.indexOf(target) > -1;       }),     );   }    /** Returns all registered Scrollables that contain the provided element. */   getAncestorScrollContainers(elementOrElementRef: ElementRef | HTMLElement): CdkScrollable[] {     const scrollingContainers: CdkScrollable[] = [];      this.scrollContainers.forEach((_subscription: Subscription, scrollable: CdkScrollable) => {       if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {         scrollingContainers.push(scrollable);       }     });      return scrollingContainers;   }    /** Use defaultView of injected document if available or fallback to global window reference */   private _getWindow(): Window {     return this._document.defaultView || window;   }    /** Returns true if the element is contained within the provided Scrollable. */   private _scrollableContainsElement(     scrollable: CdkScrollable,     elementOrElementRef: ElementRef | HTMLElement,   ): boolean {     let element: HTMLElement | null = coerceElement(elementOrElementRef);     let scrollableElement = scrollable.getElementRef().nativeElement;      // Traverse through the element parents until we reach null, checking if any of the elements     // are the scrollable's element.     do {       if (element == scrollableElement) {         return true;       }     } while ((element = element!.parentElement));      return false;   }    /** Sets up the global scroll listeners. */   private _addGlobalListener() {     this._globalSubscription = this._ngZone.runOutsideAngular(() => {       const window = this._getWindow();       return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());     });   }    /** Cleans up the global scroll listener. */   private _removeGlobalListener() {     if (this._globalSubscription) {       this._globalSubscription.unsubscribe();       this._globalSubscription = null;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {   getRtlScrollAxisType,   RtlScrollAxisType,   supportsScrollBehavior, } from '@angular/cdk/platform'; import {Directive, ElementRef, NgZone, OnDestroy, OnInit, Optional} from '@angular/core'; import {fromEvent, Observable, Subject, Observer} from 'rxjs'; import {takeUntil} from 'rxjs/operators'; import {ScrollDispatcher} from './scroll-dispatcher';  export type _Without<T> = {[P in keyof T]?: never}; export type _XOR<T, U> = (_Without<T> & U) | (_Without<U> & T); export type _Top = {top?: number}; export type _Bottom = {bottom?: number}; export type _Left = {left?: number}; export type _Right = {right?: number}; export type _Start = {start?: number}; export type _End = {end?: number}; export type _XAxis = _XOR<_XOR<_Left, _Right>, _XOR<_Start, _End>>; export type _YAxis = _XOR<_Top, _Bottom>;  /**  * An extended version of ScrollToOptions that allows expressing scroll offsets relative to the  * top, bottom, left, right, start, or end of the viewport rather than just the top and left.  * Please note: the top and bottom properties are mutually exclusive, as are the left, right,  * start, and end properties.  */ export type ExtendedScrollToOptions = _XAxis & _YAxis & ScrollOptions;  /**  * Sends an event when the directive's element is scrolled. Registers itself with the  * ScrollDispatcher service to include itself as part of its collection of scrolling events that it  * can be listened to through the service.  */ @Directive({   selector: '[cdk-scrollable], [cdkScrollable]',   standalone: true, }) export class CdkScrollable implements OnInit, OnDestroy {   protected readonly _destroyed = new Subject<void>();    protected _elementScrolled: Observable<Event> = new Observable((observer: Observer<Event>) =>     this.ngZone.runOutsideAngular(() =>       fromEvent(this.elementRef.nativeElement, 'scroll')         .pipe(takeUntil(this._destroyed))         .subscribe(observer),     ),   );    constructor(     protected elementRef: ElementRef<HTMLElement>,     protected scrollDispatcher: ScrollDispatcher,     protected ngZone: NgZone,     @Optional() protected dir?: Directionality,   ) {}    ngOnInit() {     this.scrollDispatcher.register(this);   }    ngOnDestroy() {     this.scrollDispatcher.deregister(this);     this._destroyed.next();     this._destroyed.complete();   }    /** Returns observable that emits when a scroll event is fired on the host element. */   elementScrolled(): Observable<Event> {     return this._elementScrolled;   }    /** Gets the ElementRef for the viewport. */   getElementRef(): ElementRef<HTMLElement> {     return this.elementRef;   }    /**    * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo    * method, since browsers are not consistent about what scrollLeft means in RTL. For this method    * left and right always refer to the left and right side of the scrolling container irrespective    * of the layout direction. start and end refer to left and right in an LTR context and vice-versa    * in an RTL context.    * @param options specified the offsets to scroll to.    */   scrollTo(options: ExtendedScrollToOptions): void {     const el = this.elementRef.nativeElement;     const isRtl = this.dir && this.dir.value == 'rtl';      // Rewrite start & end offsets as right or left offsets.     if (options.left == null) {       options.left = isRtl ? options.end : options.start;     }      if (options.right == null) {       options.right = isRtl ? options.start : options.end;     }      // Rewrite the bottom offset as a top offset.     if (options.bottom != null) {       (options as _Without<_Bottom> & _Top).top =         el.scrollHeight - el.clientHeight - options.bottom;     }      // Rewrite the right offset as a left offset.     if (isRtl && getRtlScrollAxisType() != RtlScrollAxisType.NORMAL) {       if (options.left != null) {         (options as _Without<_Left> & _Right).right =           el.scrollWidth - el.clientWidth - options.left;       }        if (getRtlScrollAxisType() == RtlScrollAxisType.INVERTED) {         options.left = options.right;       } else if (getRtlScrollAxisType() == RtlScrollAxisType.NEGATED) {         options.left = options.right ? -options.right : options.right;       }     } else {       if (options.right != null) {         (options as _Without<_Right> & _Left).left =           el.scrollWidth - el.clientWidth - options.right;       }     }      this._applyScrollToOptions(options);   }    private _applyScrollToOptions(options: ScrollToOptions): void {     const el = this.elementRef.nativeElement;      if (supportsScrollBehavior()) {       el.scrollTo(options);     } else {       if (options.top != null) {         el.scrollTop = options.top;       }       if (options.left != null) {         el.scrollLeft = options.left;       }     }   }    /**    * Measures the scroll offset relative to the specified edge of the viewport. This method can be    * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent    * about what scrollLeft means in RTL. The values returned by this method are normalized such that    * left and right always refer to the left and right side of the scrolling container irrespective    * of the layout direction. start and end refer to left and right in an LTR context and vice-versa    * in an RTL context.    * @param from The edge to measure from.    */   measureScrollOffset(from: 'top' | 'left' | 'right' | 'bottom' | 'start' | 'end'): number {     const LEFT = 'left';     const RIGHT = 'right';     const el = this.elementRef.nativeElement;     if (from == 'top') {       return el.scrollTop;     }     if (from == 'bottom') {       return el.scrollHeight - el.clientHeight - el.scrollTop;     }      // Rewrite start & end as left or right offsets.     const isRtl = this.dir && this.dir.value == 'rtl';     if (from == 'start') {       from = isRtl ? RIGHT : LEFT;     } else if (from == 'end') {       from = isRtl ? LEFT : RIGHT;     }      if (isRtl && getRtlScrollAxisType() == RtlScrollAxisType.INVERTED) {       // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and       // 0 when scrolled all the way right.       if (from == LEFT) {         return el.scrollWidth - el.clientWidth - el.scrollLeft;       } else {         return el.scrollLeft;       }     } else if (isRtl && getRtlScrollAxisType() == RtlScrollAxisType.NEGATED) {       // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and       // 0 when scrolled all the way right.       if (from == LEFT) {         return el.scrollLeft + el.scrollWidth - el.clientWidth;       } else {         return -el.scrollLeft;       }     } else {       // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and       // (scrollWidth - clientWidth) when scrolled all the way right.       if (from == LEFT) {         return el.scrollLeft;       } else {         return el.scrollWidth - el.clientWidth - el.scrollLeft;       }     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {Directive, ElementRef, InjectionToken, NgZone, Optional} from '@angular/core'; import {ScrollDispatcher} from './scroll-dispatcher'; import {CdkScrollable} from './scrollable';  export const VIRTUAL_SCROLLABLE = new InjectionToken<CdkVirtualScrollable>('VIRTUAL_SCROLLABLE');  /**  * Extending the {@link CdkScrollable} to be used as scrolling container for virtual scrolling.  */ @Directive() export abstract class CdkVirtualScrollable extends CdkScrollable {   constructor(     elementRef: ElementRef<HTMLElement>,     scrollDispatcher: ScrollDispatcher,     ngZone: NgZone,     @Optional() dir?: Directionality,   ) {     super(elementRef, scrollDispatcher, ngZone, dir);   }    /**    * Measure the viewport size for the provided orientation.    *    * @param orientation The orientation to measure the size from.    */   measureViewportSize(orientation: 'horizontal' | 'vertical') {     const viewportEl = this.elementRef.nativeElement;     return orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;   }    /**    * Measure the bounding ClientRect size including the scroll offset.    *    * @param from The edge to measure from.    */   abstract measureBoundingClientRectWithScrollOffset(     from: 'left' | 'top' | 'right' | 'bottom',   ): number; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Platform} from '@angular/cdk/platform'; import {Injectable, NgZone, OnDestroy, Optional, Inject} from '@angular/core'; import {Observable, Subject} from 'rxjs'; import {auditTime} from 'rxjs/operators'; import {DOCUMENT} from '@angular/common';  /** Time in ms to throttle the resize events by default. */ export const DEFAULT_RESIZE_TIME = 20;  /** Object that holds the scroll position of the viewport in each direction. */ export interface ViewportScrollPosition {   top: number;   left: number; }  /**  * Simple utility for getting the bounds of the browser viewport.  * @docs-private  */ @Injectable({providedIn: 'root'}) export class ViewportRuler implements OnDestroy {   /** Cached viewport dimensions. */   private _viewportSize: {width: number; height: number} | null;    /** Stream of viewport change events. */   private readonly _change = new Subject<Event>();    /** Event listener that will be used to handle the viewport change events. */   private _changeListener = (event: Event) => {     this._change.next(event);   };    /** Used to reference correct document/window */   protected _document: Document;    constructor(     private _platform: Platform,     ngZone: NgZone,     @Optional() @Inject(DOCUMENT) document: any,   ) {     this._document = document;      ngZone.runOutsideAngular(() => {       if (_platform.isBrowser) {         const window = this._getWindow();          // Note that bind the events ourselves, rather than going through something like RxJS's         // `fromEvent` so that we can ensure that they're bound outside of the NgZone.         window.addEventListener('resize', this._changeListener);         window.addEventListener('orientationchange', this._changeListener);       }        // Clear the cached position so that the viewport is re-measured next time it is required.       // We don't need to keep track of the subscription, because it is completed on destroy.       this.change().subscribe(() => (this._viewportSize = null));     });   }    ngOnDestroy() {     if (this._platform.isBrowser) {       const window = this._getWindow();       window.removeEventListener('resize', this._changeListener);       window.removeEventListener('orientationchange', this._changeListener);     }      this._change.complete();   }    /** Returns the viewport's width and height. */   getViewportSize(): Readonly<{width: number; height: number}> {     if (!this._viewportSize) {       this._updateViewportSize();     }      const output = {width: this._viewportSize!.width, height: this._viewportSize!.height};      // If we're not on a browser, don't cache the size since it'll be mocked out anyway.     if (!this._platform.isBrowser) {       this._viewportSize = null!;     }      return output;   }    /** Gets a ClientRect for the viewport's bounds. */   getViewportRect() {     // Use the document element's bounding rect rather than the window scroll properties     // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll     // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different     // conceptual viewports. Under most circumstances these viewports are equivalent, but they     // can disagree when the page is pinch-zoomed (on devices that support touch).     // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4     // We use the documentElement instead of the body because, by default (without a css reset)     // browsers typically give the document body an 8px margin, which is not included in     // getBoundingClientRect().     const scrollPosition = this.getViewportScrollPosition();     const {width, height} = this.getViewportSize();      return {       top: scrollPosition.top,       left: scrollPosition.left,       bottom: scrollPosition.top + height,       right: scrollPosition.left + width,       height,       width,     };   }    /** Gets the (top, left) scroll position of the viewport. */   getViewportScrollPosition(): ViewportScrollPosition {     // While we can get a reference to the fake document     // during SSR, it doesn't have getBoundingClientRect.     if (!this._platform.isBrowser) {       return {top: 0, left: 0};     }      // The top-left-corner of the viewport is determined by the scroll position of the document     // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about     // whether `document.body` or `document.documentElement` is the scrolled element, so reading     // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of     // `document.documentElement` works consistently, where the `top` and `left` values will     // equal negative the scroll position.     const document = this._document;     const window = this._getWindow();     const documentElement = document.documentElement!;     const documentRect = documentElement.getBoundingClientRect();      const top =       -documentRect.top ||       document.body.scrollTop ||       window.scrollY ||       documentElement.scrollTop ||       0;      const left =       -documentRect.left ||       document.body.scrollLeft ||       window.scrollX ||       documentElement.scrollLeft ||       0;      return {top, left};   }    /**    * Returns a stream that emits whenever the size of the viewport changes.    * This stream emits outside of the Angular zone.    * @param throttleTime Time in milliseconds to throttle the stream.    */   change(throttleTime: number = DEFAULT_RESIZE_TIME): Observable<Event> {     return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;   }    /** Use defaultView of injected document if available or fallback to global window reference */   private _getWindow(): Window {     return this._document.defaultView || window;   }    /** Updates the cached viewport size. */   private _updateViewportSize() {     const window = this._getWindow();     this._viewportSize = this._platform.isBrowser       ? {width: window.innerWidth, height: window.innerHeight}       : {width: 0, height: 0};   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {ListRange} from '@angular/cdk/collections'; import {   ChangeDetectionStrategy,   ChangeDetectorRef,   Component,   ElementRef,   inject,   Inject,   Input,   NgZone,   OnDestroy,   OnInit,   Optional,   Output,   ViewChild,   ViewEncapsulation, } from '@angular/core'; import {Platform} from '@angular/cdk/platform'; import {   animationFrameScheduler,   asapScheduler,   Observable,   Subject,   Observer,   Subscription, } from 'rxjs'; import {auditTime, startWith, takeUntil} from 'rxjs/operators'; import {ScrollDispatcher} from './scroll-dispatcher'; import {CdkScrollable, ExtendedScrollToOptions} from './scrollable'; import {VIRTUAL_SCROLL_STRATEGY, VirtualScrollStrategy} from './virtual-scroll-strategy'; import {ViewportRuler} from './viewport-ruler'; import {CdkVirtualScrollRepeater} from './virtual-scroll-repeater'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {CdkVirtualScrollable, VIRTUAL_SCROLLABLE} from './virtual-scrollable';  /** Checks if the given ranges are equal. */ function rangesEqual(r1: ListRange, r2: ListRange): boolean {   return r1.start == r2.start && r1.end == r2.end; }  /**  * Scheduler to be used for scroll events. Needs to fall back to  * something that doesn't rely on requestAnimationFrame on environments  * that don't support it (e.g. server-side rendering).  */ const SCROLL_SCHEDULER =   typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;  /** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */ @Component({   selector: 'cdk-virtual-scroll-viewport',   templateUrl: 'virtual-scroll-viewport.html',   styleUrls: ['virtual-scroll-viewport.css'],   host: {     'class': 'cdk-virtual-scroll-viewport',     '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',     '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"',   },   encapsulation: ViewEncapsulation.None,   changeDetection: ChangeDetectionStrategy.OnPush,   standalone: true,   providers: [     {       provide: CdkScrollable,       useFactory: (         virtualScrollable: CdkVirtualScrollable | null,         viewport: CdkVirtualScrollViewport,       ) => virtualScrollable || viewport,       deps: [[new Optional(), new Inject(VIRTUAL_SCROLLABLE)], CdkVirtualScrollViewport],     },   ], }) export class CdkVirtualScrollViewport extends CdkVirtualScrollable implements OnInit, OnDestroy {   private _platform = inject(Platform);    /** Emits when the viewport is detached from a CdkVirtualForOf. */   private readonly _detachedSubject = new Subject<void>();    /** Emits when the rendered range changes. */   private readonly _renderedRangeSubject = new Subject<ListRange>();    /** The direction the viewport scrolls. */   @Input()   get orientation() {     return this._orientation;   }    set orientation(orientation: 'horizontal' | 'vertical') {     if (this._orientation !== orientation) {       this._orientation = orientation;       this._calculateSpacerSize();     }   }   private _orientation: 'horizontal' | 'vertical' = 'vertical';    /**    * Whether rendered items should persist in the DOM after scrolling out of view. By default, items    * will be removed.    */   @Input()   get appendOnly(): boolean {     return this._appendOnly;   }   set appendOnly(value: BooleanInput) {     this._appendOnly = coerceBooleanProperty(value);   }   private _appendOnly = false;    // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll   // strategy lazily (i.e. only if the user is actually listening to the events). We do this because   // depending on how the strategy calculates the scrolled index, it may come at a cost to   // performance.   /** Emits when the index of the first element visible in the viewport changes. */   @Output()   readonly scrolledIndexChange: Observable<number> = new Observable((observer: Observer<number>) =>     this._scrollStrategy.scrolledIndexChange.subscribe(index =>       Promise.resolve().then(() => this.ngZone.run(() => observer.next(index))),     ),   );    /** The element that wraps the rendered content. */   @ViewChild('contentWrapper', {static: true}) _contentWrapper: ElementRef<HTMLElement>;    /** A stream that emits whenever the rendered range changes. */   readonly renderedRangeStream: Observable<ListRange> = this._renderedRangeSubject;    /**    * The total size of all content (in pixels), including content that is not currently rendered.    */   private _totalContentSize = 0;    /** A string representing the `style.width` property value to be used for the spacer element. */   _totalContentWidth = '';    /** A string representing the `style.height` property value to be used for the spacer element. */   _totalContentHeight = '';    /**    * The CSS transform applied to the rendered subset of items so that they appear within the bounds    * of the visible viewport.    */   private _renderedContentTransform: string;    /** The currently rendered range of indices. */   private _renderedRange: ListRange = {start: 0, end: 0};    /** The length of the data bound to this viewport (in number of items). */   private _dataLength = 0;    /** The size of the viewport (in pixels). */   private _viewportSize = 0;    /** the currently attached CdkVirtualScrollRepeater. */   private _forOf: CdkVirtualScrollRepeater<any> | null;    /** The last rendered content offset that was set. */   private _renderedContentOffset = 0;    /**    * Whether the last rendered content offset was to the end of the content (and therefore needs to    * be rewritten as an offset to the start of the content).    */   private _renderedContentOffsetNeedsRewrite = false;    /** Whether there is a pending change detection cycle. */   private _isChangeDetectionPending = false;    /** A list of functions to run after the next change detection cycle. */   private _runAfterChangeDetection: Function[] = [];    /** Subscription to changes in the viewport size. */   private _viewportChanges = Subscription.EMPTY;    constructor(     public override elementRef: ElementRef<HTMLElement>,     private _changeDetectorRef: ChangeDetectorRef,     ngZone: NgZone,     @Optional()     @Inject(VIRTUAL_SCROLL_STRATEGY)     private _scrollStrategy: VirtualScrollStrategy,     @Optional() dir: Directionality,     scrollDispatcher: ScrollDispatcher,     viewportRuler: ViewportRuler,     @Optional() @Inject(VIRTUAL_SCROLLABLE) public scrollable: CdkVirtualScrollable,   ) {     super(elementRef, scrollDispatcher, ngZone, dir);      if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');     }      this._viewportChanges = viewportRuler.change().subscribe(() => {       this.checkViewportSize();     });      if (!this.scrollable) {       // No scrollable is provided, so the virtual-scroll-viewport needs to become a scrollable       this.elementRef.nativeElement.classList.add('cdk-virtual-scrollable');       this.scrollable = this;     }   }    override ngOnInit() {     // Scrolling depends on the element dimensions which we can't get during SSR.     if (!this._platform.isBrowser) {       return;     }      if (this.scrollable === this) {       super.ngOnInit();     }     // It's still too early to measure the viewport at this point. Deferring with a promise allows     // the Viewport to be rendered with the correct size before we measure. We run this outside the     // zone to avoid causing more change detection cycles. We handle the change detection loop     // ourselves instead.     this.ngZone.runOutsideAngular(() =>       Promise.resolve().then(() => {         this._measureViewportSize();         this._scrollStrategy.attach(this);          this.scrollable           .elementScrolled()           .pipe(             // Start off with a fake scroll event so we properly detect our initial position.             startWith(null),             // Collect multiple events into one until the next animation frame. This way if             // there are multiple scroll events in the same frame we only need to recheck             // our layout once.             auditTime(0, SCROLL_SCHEDULER),           )           .subscribe(() => this._scrollStrategy.onContentScrolled());          this._markChangeDetectionNeeded();       }),     );   }    override ngOnDestroy() {     this.detach();     this._scrollStrategy.detach();      // Complete all subjects     this._renderedRangeSubject.complete();     this._detachedSubject.complete();     this._viewportChanges.unsubscribe();      super.ngOnDestroy();   }    /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */   attach(forOf: CdkVirtualScrollRepeater<any>) {     if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw Error('CdkVirtualScrollViewport is already attached.');     }      // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length     // changes. Run outside the zone to avoid triggering change detection, since we're managing the     // change detection loop ourselves.     this.ngZone.runOutsideAngular(() => {       this._forOf = forOf;       this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {         const newLength = data.length;         if (newLength !== this._dataLength) {           this._dataLength = newLength;           this._scrollStrategy.onDataLengthChanged();         }         this._doChangeDetection();       });     });   }    /** Detaches the current `CdkVirtualForOf`. */   detach() {     this._forOf = null;     this._detachedSubject.next();   }    /** Gets the length of the data bound to this viewport (in number of items). */   getDataLength(): number {     return this._dataLength;   }    /** Gets the size of the viewport (in pixels). */   getViewportSize(): number {     return this._viewportSize;   }    // TODO(mmalerba): This is technically out of sync with what's really rendered until a render   // cycle happens. I'm being careful to only call it after the render cycle is complete and before   // setting it to something else, but its error prone and should probably be split into   // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.    /** Get the current rendered range of items. */   getRenderedRange(): ListRange {     return this._renderedRange;   }    measureBoundingClientRectWithScrollOffset(from: 'left' | 'top' | 'right' | 'bottom'): number {     return this.getElementRef().nativeElement.getBoundingClientRect()[from];   }    /**    * Sets the total size of all content (in pixels), including content that is not currently    * rendered.    */   setTotalContentSize(size: number) {     if (this._totalContentSize !== size) {       this._totalContentSize = size;       this._calculateSpacerSize();       this._markChangeDetectionNeeded();     }   }    /** Sets the currently rendered range of indices. */   setRenderedRange(range: ListRange) {     if (!rangesEqual(this._renderedRange, range)) {       if (this.appendOnly) {         range = {start: 0, end: Math.max(this._renderedRange.end, range.end)};       }       this._renderedRangeSubject.next((this._renderedRange = range));       this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());     }   }    /**    * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).    */   getOffsetToRenderedContentStart(): number | null {     return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;   }    /**    * Sets the offset from the start of the viewport to either the start or end of the rendered data    * (in pixels).    */   setRenderedContentOffset(offset: number, to: 'to-start' | 'to-end' = 'to-start') {     // In appendOnly, we always start from the top     offset = this.appendOnly && to === 'to-start' ? 0 : offset;      // For a horizontal viewport in a right-to-left language we need to translate along the x-axis     // in the negative direction.     const isRtl = this.dir && this.dir.value == 'rtl';     const isHorizontal = this.orientation == 'horizontal';     const axis = isHorizontal ? 'X' : 'Y';     const axisDirection = isHorizontal && isRtl ? -1 : 1;     let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;     this._renderedContentOffset = offset;     if (to === 'to-end') {       transform += ` translate${axis}(-100%)`;       // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise       // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would       // expand upward).       this._renderedContentOffsetNeedsRewrite = true;     }     if (this._renderedContentTransform != transform) {       // We know this value is safe because we parse `offset` with `Number()` before passing it       // into the string.       this._renderedContentTransform = transform;       this._markChangeDetectionNeeded(() => {         if (this._renderedContentOffsetNeedsRewrite) {           this._renderedContentOffset -= this.measureRenderedContentSize();           this._renderedContentOffsetNeedsRewrite = false;           this.setRenderedContentOffset(this._renderedContentOffset);         } else {           this._scrollStrategy.onRenderedOffsetChanged();         }       });     }   }    /**    * Scrolls to the given offset from the start of the viewport. Please note that this is not always    * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left    * direction, this would be the equivalent of setting a fictional `scrollRight` property.    * @param offset The offset to scroll to.    * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.    */   scrollToOffset(offset: number, behavior: ScrollBehavior = 'auto') {     const options: ExtendedScrollToOptions = {behavior};     if (this.orientation === 'horizontal') {       options.start = offset;     } else {       options.top = offset;     }     this.scrollable.scrollTo(options);   }    /**    * Scrolls to the offset for the given index.    * @param index The index of the element to scroll to.    * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.    */   scrollToIndex(index: number, behavior: ScrollBehavior = 'auto') {     this._scrollStrategy.scrollToIndex(index, behavior);   }    /**    * Gets the current scroll offset from the start of the scrollable (in pixels).    * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'    *     in horizontal mode.    */   override measureScrollOffset(     from?: 'top' | 'left' | 'right' | 'bottom' | 'start' | 'end',   ): number {     // This is to break the call cycle     let measureScrollOffset: InstanceType<typeof CdkVirtualScrollable>['measureScrollOffset'];     if (this.scrollable == this) {       measureScrollOffset = (_from: NonNullable<typeof from>) => super.measureScrollOffset(_from);     } else {       measureScrollOffset = (_from: NonNullable<typeof from>) =>         this.scrollable.measureScrollOffset(_from);     }      return Math.max(       0,       measureScrollOffset(from ?? (this.orientation === 'horizontal' ? 'start' : 'top')) -         this.measureViewportOffset(),     );   }    /**    * Measures the offset of the viewport from the scrolling container    * @param from The edge to measure from.    */   measureViewportOffset(from?: 'top' | 'left' | 'right' | 'bottom' | 'start' | 'end') {     let fromRect: 'left' | 'top' | 'right' | 'bottom';     const LEFT = 'left';     const RIGHT = 'right';     const isRtl = this.dir?.value == 'rtl';     if (from == 'start') {       fromRect = isRtl ? RIGHT : LEFT;     } else if (from == 'end') {       fromRect = isRtl ? LEFT : RIGHT;     } else if (from) {       fromRect = from;     } else {       fromRect = this.orientation === 'horizontal' ? 'left' : 'top';     }      const scrollerClientRect = this.scrollable.measureBoundingClientRectWithScrollOffset(fromRect);     const viewportClientRect = this.elementRef.nativeElement.getBoundingClientRect()[fromRect];      return viewportClientRect - scrollerClientRect;   }    /** Measure the combined size of all of the rendered items. */   measureRenderedContentSize(): number {     const contentEl = this._contentWrapper.nativeElement;     return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;   }    /**    * Measure the total combined size of the given range. Throws if the range includes items that are    * not rendered.    */   measureRangeSize(range: ListRange): number {     if (!this._forOf) {       return 0;     }     return this._forOf.measureRangeSize(range, this.orientation);   }    /** Update the viewport dimensions and re-render. */   checkViewportSize() {     // TODO: Cleanup later when add logic for handling content resize     this._measureViewportSize();     this._scrollStrategy.onDataLengthChanged();   }    /** Measure the viewport size. */   private _measureViewportSize() {     this._viewportSize = this.scrollable.measureViewportSize(this.orientation);   }    /** Queue up change detection to run. */   private _markChangeDetectionNeeded(runAfter?: Function) {     if (runAfter) {       this._runAfterChangeDetection.push(runAfter);     }      // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of     // properties sequentially we only have to run `_doChangeDetection` once at the end.     if (!this._isChangeDetectionPending) {       this._isChangeDetectionPending = true;       this.ngZone.runOutsideAngular(() =>         Promise.resolve().then(() => {           this._doChangeDetection();         }),       );     }   }    /** Run change detection. */   private _doChangeDetection() {     this._isChangeDetectionPending = false;      // Apply the content transform. The transform can't be set via an Angular binding because     // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of     // string literals, a variable that can only be 'X' or 'Y', and user input that is run through     // the `Number` function first to coerce it to a numeric value.     this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform;     // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection     // from the root, since the repeated items are content projected in. Calling `detectChanges`     // instead does not properly check the projected content.     this.ngZone.run(() => this._changeDetectorRef.markForCheck());      const runAfterChangeDetection = this._runAfterChangeDetection;     this._runAfterChangeDetection = [];     for (const fn of runAfterChangeDetection) {       fn();     }   }    /** Calculates the `style.width` and `style.height` for the spacer element. */   private _calculateSpacerSize() {     this._totalContentHeight =       this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;     this._totalContentWidth =       this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';   } } ","<!--   Wrap the rendered content in an element that will be used to offset it based on the scroll   position. --> <div #contentWrapper class=\"cdk-virtual-scroll-content-wrapper\">   <ng-content></ng-content> </div> <!--   Spacer used to force the scrolling container to the correct size for the *total* number of items   so that the scrollbar captures the size of the entire data set. --> <div class=\"cdk-virtual-scroll-spacer\"      [style.width]=\"_totalContentWidth\" [style.height]=\"_totalContentHeight\"></div> ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   ArrayDataSource,   CollectionViewer,   DataSource,   ListRange,   isDataSource,   _RecycleViewRepeaterStrategy,   _VIEW_REPEATER_STRATEGY,   _ViewRepeaterItemInsertArgs, } from '@angular/cdk/collections'; import {   Directive,   DoCheck,   EmbeddedViewRef,   Inject,   Input,   IterableChangeRecord,   IterableChanges,   IterableDiffer,   IterableDiffers,   NgIterable,   NgZone,   OnDestroy,   SkipSelf,   TemplateRef,   TrackByFunction,   ViewContainerRef, } from '@angular/core'; import {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion'; import {Observable, Subject, of as observableOf, isObservable} from 'rxjs'; import {pairwise, shareReplay, startWith, switchMap, takeUntil} from 'rxjs/operators'; import {CdkVirtualScrollRepeater} from './virtual-scroll-repeater'; import {CdkVirtualScrollViewport} from './virtual-scroll-viewport';  /** The context for an item rendered by `CdkVirtualForOf` */ export type CdkVirtualForOfContext<T> = {   /** The item value. */   $implicit: T;   /** The DataSource, Observable, or NgIterable that was passed to *cdkVirtualFor. */   cdkVirtualForOf: DataSource<T> | Observable<T[]> | NgIterable<T>;   /** The index of the item in the DataSource. */   index: number;   /** The number of items in the DataSource. */   count: number;   /** Whether this is the first item in the DataSource. */   first: boolean;   /** Whether this is the last item in the DataSource. */   last: boolean;   /** Whether the index is even. */   even: boolean;   /** Whether the index is odd. */   odd: boolean; };  /** Helper to extract the offset of a DOM Node in a certain direction. */ function getOffset(orientation: 'horizontal' | 'vertical', direction: 'start' | 'end', node: Node) {   const el = node as Element;   if (!el.getBoundingClientRect) {     return 0;   }   const rect = el.getBoundingClientRect();    if (orientation === 'horizontal') {     return direction === 'start' ? rect.left : rect.right;   }    return direction === 'start' ? rect.top : rect.bottom; }  /**  * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling  * container.  */ @Directive({   selector: '[cdkVirtualFor][cdkVirtualForOf]',   providers: [{provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy}],   standalone: true, }) export class CdkVirtualForOf<T>   implements CdkVirtualScrollRepeater<T>, CollectionViewer, DoCheck, OnDestroy {   /** Emits when the rendered view of the data changes. */   readonly viewChange = new Subject<ListRange>();    /** Subject that emits when a new DataSource instance is given. */   private readonly _dataSourceChanges = new Subject<DataSource<T>>();    /** The DataSource to display. */   @Input()   get cdkVirtualForOf(): DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined {     return this._cdkVirtualForOf;   }   set cdkVirtualForOf(value: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined) {     this._cdkVirtualForOf = value;     if (isDataSource(value)) {       this._dataSourceChanges.next(value);     } else {       // If value is an an NgIterable, convert it to an array.       this._dataSourceChanges.next(         new ArrayDataSource<T>(isObservable(value) ? value : Array.from(value || [])),       );     }   }    _cdkVirtualForOf: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined;    /**    * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and    * the item and produces a value to be used as the item's identity when tracking changes.    */   @Input()   get cdkVirtualForTrackBy(): TrackByFunction<T> | undefined {     return this._cdkVirtualForTrackBy;   }   set cdkVirtualForTrackBy(fn: TrackByFunction<T> | undefined) {     this._needsUpdate = true;     this._cdkVirtualForTrackBy = fn       ? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item)       : undefined;   }   private _cdkVirtualForTrackBy: TrackByFunction<T> | undefined;    /** The template used to stamp out new elements. */   @Input()   set cdkVirtualForTemplate(value: TemplateRef<CdkVirtualForOfContext<T>>) {     if (value) {       this._needsUpdate = true;       this._template = value;     }   }    /**    * The size of the cache used to store templates that are not being used for re-use later.    * Setting the cache size to `0` will disable caching. Defaults to 20 templates.    */   @Input()   get cdkVirtualForTemplateCacheSize(): number {     return this._viewRepeater.viewCacheSize;   }   set cdkVirtualForTemplateCacheSize(size: NumberInput) {     this._viewRepeater.viewCacheSize = coerceNumberProperty(size);   }    /** Emits whenever the data in the current DataSource changes. */   readonly dataStream: Observable<readonly T[]> = this._dataSourceChanges.pipe(     // Start off with null `DataSource`.     startWith(null),     // Bundle up the previous and current data sources so we can work with both.     pairwise(),     // Use `_changeDataSource` to disconnect from the previous data source and connect to the     // new one, passing back a stream of data changes which we run through `switchMap` to give     // us a data stream that emits the latest data from whatever the current `DataSource` is.     switchMap(([prev, cur]) => this._changeDataSource(prev, cur)),     // Replay the last emitted data when someone subscribes.     shareReplay(1),   );    /** The differ used to calculate changes to the data. */   private _differ: IterableDiffer<T> | null = null;    /** The most recent data emitted from the DataSource. */   private _data: readonly T[];    /** The currently rendered items. */   private _renderedItems: T[];    /** The currently rendered range of indices. */   private _renderedRange: ListRange;    /** Whether the rendered data should be updated during the next ngDoCheck cycle. */   private _needsUpdate = false;    private readonly _destroyed = new Subject<void>();    constructor(     /** The view container to add items to. */     private _viewContainerRef: ViewContainerRef,     /** The template to use when stamping out new items. */     private _template: TemplateRef<CdkVirtualForOfContext<T>>,     /** The set of available differs. */     private _differs: IterableDiffers,     /** The strategy used to render items in the virtual scroll viewport. */     @Inject(_VIEW_REPEATER_STRATEGY)     private _viewRepeater: _RecycleViewRepeaterStrategy<T, T, CdkVirtualForOfContext<T>>,     /** The virtual scrolling viewport that these items are being rendered in. */     @SkipSelf() private _viewport: CdkVirtualScrollViewport,     ngZone: NgZone,   ) {     this.dataStream.subscribe(data => {       this._data = data;       this._onRenderedDataChange();     });     this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {       this._renderedRange = range;       if (this.viewChange.observers.length) {         ngZone.run(() => this.viewChange.next(this._renderedRange));       }       this._onRenderedDataChange();     });     this._viewport.attach(this);   }    /**    * Measures the combined size (width for horizontal orientation, height for vertical) of all items    * in the specified range. Throws an error if the range includes items that are not currently    * rendered.    */   measureRangeSize(range: ListRange, orientation: 'horizontal' | 'vertical'): number {     if (range.start >= range.end) {       return 0;     }     if (       (range.start < this._renderedRange.start || range.end > this._renderedRange.end) &&       (typeof ngDevMode === 'undefined' || ngDevMode)     ) {       throw Error(`Error: attempted to measure an item that isn't rendered.`);     }      // The index into the list of rendered views for the first item in the range.     const renderedStartIndex = range.start - this._renderedRange.start;     // The length of the range we're measuring.     const rangeLen = range.end - range.start;      // Loop over all the views, find the first and land node and compute the size by subtracting     // the top of the first node from the bottom of the last one.     let firstNode: HTMLElement | undefined;     let lastNode: HTMLElement | undefined;      // Find the first node by starting from the beginning and going forwards.     for (let i = 0; i < rangeLen; i++) {       const view = this._viewContainerRef.get(i + renderedStartIndex) as EmbeddedViewRef<         CdkVirtualForOfContext<T>       > | null;       if (view && view.rootNodes.length) {         firstNode = lastNode = view.rootNodes[0];         break;       }     }      // Find the last node by starting from the end and going backwards.     for (let i = rangeLen - 1; i > -1; i--) {       const view = this._viewContainerRef.get(i + renderedStartIndex) as EmbeddedViewRef<         CdkVirtualForOfContext<T>       > | null;       if (view && view.rootNodes.length) {         lastNode = view.rootNodes[view.rootNodes.length - 1];         break;       }     }      return firstNode && lastNode       ? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode)       : 0;   }    ngDoCheck() {     if (this._differ && this._needsUpdate) {       // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of       // this list being rendered (can use simpler algorithm) vs needs update due to data actually       // changing (need to do this diff).       const changes = this._differ.diff(this._renderedItems);       if (!changes) {         this._updateContext();       } else {         this._applyChanges(changes);       }       this._needsUpdate = false;     }   }    ngOnDestroy() {     this._viewport.detach();      this._dataSourceChanges.next(undefined!);     this._dataSourceChanges.complete();     this.viewChange.complete();      this._destroyed.next();     this._destroyed.complete();     this._viewRepeater.detach();   }    /** React to scroll state changes in the viewport. */   private _onRenderedDataChange() {     if (!this._renderedRange) {       return;     }     this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);     if (!this._differ) {       // Use a wrapper function for the `trackBy` so any new values are       // picked up automatically without having to recreate the differ.       this._differ = this._differs.find(this._renderedItems).create((index, item) => {         return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;       });     }     this._needsUpdate = true;   }    /** Swap out one `DataSource` for another. */   private _changeDataSource(     oldDs: DataSource<T> | null,     newDs: DataSource<T> | null,   ): Observable<readonly T[]> {     if (oldDs) {       oldDs.disconnect(this);     }      this._needsUpdate = true;     return newDs ? newDs.connect(this) : observableOf();   }    /** Update the `CdkVirtualForOfContext` for all views. */   private _updateContext() {     const count = this._data.length;     let i = this._viewContainerRef.length;     while (i--) {       const view = this._viewContainerRef.get(i) as EmbeddedViewRef<CdkVirtualForOfContext<T>>;       view.context.index = this._renderedRange.start + i;       view.context.count = count;       this._updateComputedContextProperties(view.context);       view.detectChanges();     }   }    /** Apply changes to the DOM. */   private _applyChanges(changes: IterableChanges<T>) {     this._viewRepeater.applyChanges(       changes,       this._viewContainerRef,       (         record: IterableChangeRecord<T>,         _adjustedPreviousIndex: number | null,         currentIndex: number | null,       ) => this._getEmbeddedViewArgs(record, currentIndex!),       record => record.item,     );      // Update $implicit for any items that had an identity change.     changes.forEachIdentityChange((record: IterableChangeRecord<T>) => {       const view = this._viewContainerRef.get(record.currentIndex!) as EmbeddedViewRef<         CdkVirtualForOfContext<T>       >;       view.context.$implicit = record.item;     });      // Update the context variables on all items.     const count = this._data.length;     let i = this._viewContainerRef.length;     while (i--) {       const view = this._viewContainerRef.get(i) as EmbeddedViewRef<CdkVirtualForOfContext<T>>;       view.context.index = this._renderedRange.start + i;       view.context.count = count;       this._updateComputedContextProperties(view.context);     }   }    /** Update the computed properties on the `CdkVirtualForOfContext`. */   private _updateComputedContextProperties(context: CdkVirtualForOfContext<any>) {     context.first = context.index === 0;     context.last = context.index === context.count - 1;     context.even = context.index % 2 === 0;     context.odd = !context.even;   }    private _getEmbeddedViewArgs(     record: IterableChangeRecord<T>,     index: number,   ): _ViewRepeaterItemInsertArgs<CdkVirtualForOfContext<T>> {     // Note that it's important that we insert the item directly at the proper index,     // rather than inserting it and the moving it in place, because if there's a directive     // on the same node that injects the `ViewContainerRef`, Angular will insert another     // comment node which can throw off the move when it's being repeated for all items.     return {       templateRef: this._template,       context: {         $implicit: record.item,         // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only         // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.         cdkVirtualForOf: this._cdkVirtualForOf!,         index: -1,         count: -1,         first: false,         last: false,         odd: false,         even: false,       },       index,     };   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {Directive, ElementRef, NgZone, Optional} from '@angular/core'; import {ScrollDispatcher} from './scroll-dispatcher'; import {CdkVirtualScrollable, VIRTUAL_SCROLLABLE} from './virtual-scrollable';  /**  * Provides a virtual scrollable for the element it is attached to.  */ @Directive({   selector: '[cdkVirtualScrollingElement]',   providers: [{provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableElement}],   standalone: true,   host: {     'class': 'cdk-virtual-scrollable',   }, }) export class CdkVirtualScrollableElement extends CdkVirtualScrollable {   constructor(     elementRef: ElementRef,     scrollDispatcher: ScrollDispatcher,     ngZone: NgZone,     @Optional() dir: Directionality,   ) {     super(elementRef, scrollDispatcher, ngZone, dir);   }    override measureBoundingClientRectWithScrollOffset(     from: 'left' | 'top' | 'right' | 'bottom',   ): number {     return (       this.getElementRef().nativeElement.getBoundingClientRect()[from] -       this.measureScrollOffset(from)     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {Directive, ElementRef, NgZone, Optional} from '@angular/core'; import {fromEvent, Observable, Observer} from 'rxjs'; import {takeUntil} from 'rxjs/operators'; import {ScrollDispatcher} from './scroll-dispatcher'; import {CdkVirtualScrollable, VIRTUAL_SCROLLABLE} from './virtual-scrollable';  /**  * Provides as virtual scrollable for the global / window scrollbar.  */ @Directive({   selector: 'cdk-virtual-scroll-viewport[scrollWindow]',   providers: [{provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableWindow}],   standalone: true, }) export class CdkVirtualScrollableWindow extends CdkVirtualScrollable {   protected override _elementScrolled: Observable<Event> = new Observable(     (observer: Observer<Event>) =>       this.ngZone.runOutsideAngular(() =>         fromEvent(document, 'scroll').pipe(takeUntil(this._destroyed)).subscribe(observer),       ),   );    constructor(scrollDispatcher: ScrollDispatcher, ngZone: NgZone, @Optional() dir: Directionality) {     super(new ElementRef(document.documentElement), scrollDispatcher, ngZone, dir);   }    override measureBoundingClientRectWithScrollOffset(     from: 'left' | 'top' | 'right' | 'bottom',   ): number {     return this.getElementRef().nativeElement.getBoundingClientRect()[from];   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BidiModule} from '@angular/cdk/bidi'; import {NgModule} from '@angular/core'; import {CdkFixedSizeVirtualScroll} from './fixed-size-virtual-scroll'; import {CdkScrollable} from './scrollable'; import {CdkVirtualForOf} from './virtual-for-of'; import {CdkVirtualScrollViewport} from './virtual-scroll-viewport'; import {CdkVirtualScrollableElement} from './virtual-scrollable-element'; import {CdkVirtualScrollableWindow} from './virtual-scrollable-window';  @NgModule({   exports: [CdkScrollable],   imports: [CdkScrollable], }) export class CdkScrollableModule {}  /**  * @docs-primary-export  */ @NgModule({   imports: [     BidiModule,     CdkScrollableModule,     CdkVirtualScrollViewport,     CdkFixedSizeVirtualScroll,     CdkVirtualForOf,     CdkVirtualScrollableWindow,     CdkVirtualScrollableElement,   ],   exports: [     BidiModule,     CdkScrollableModule,     CdkFixedSizeVirtualScroll,     CdkVirtualForOf,     CdkVirtualScrollViewport,     CdkVirtualScrollableWindow,     CdkVirtualScrollableElement,   ], }) export class ScrollingModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './fixed-size-virtual-scroll'; export * from './scroll-dispatcher'; export * from './scrollable'; export * from './scrolling-module'; export * from './viewport-ruler'; export * from './virtual-for-of'; export * from './virtual-scroll-strategy'; export * from './virtual-scroll-viewport'; export * from './virtual-scroll-repeater'; export * from './virtual-scrollable'; export * from './virtual-scrollable-element'; export * from './virtual-scrollable-window'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["observableOf","i1.ScrollDispatcher","i1","i2.ScrollDispatcher","i3.ViewportRuler","i1.CdkVirtualScrollViewport"],"mappings":"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"}
-------------------- SECTION 219 --------------------
{"version":3,"file":"overlay.mjs","sources":["../../../../../../src/cdk/overlay/scroll/block-scroll-strategy.ts","../../../../../../src/cdk/overlay/scroll/scroll-strategy.ts","../../../../../../src/cdk/overlay/scroll/close-scroll-strategy.ts","../../../../../../src/cdk/overlay/scroll/noop-scroll-strategy.ts","../../../../../../src/cdk/overlay/position/scroll-clip.ts","../../../../../../src/cdk/overlay/scroll/reposition-scroll-strategy.ts","../../../../../../src/cdk/overlay/scroll/scroll-strategy-options.ts","../../../../../../src/cdk/overlay/scroll/index.ts","../../../../../../src/cdk/overlay/overlay-config.ts","../../../../../../src/cdk/overlay/position/connected-position.ts","../../../../../../src/cdk/overlay/overlay-ref.ts","../../../../../../src/cdk/overlay/overlay-container.ts","../../../../../../src/cdk/overlay/position/flexible-connected-position-strategy.ts","../../../../../../src/cdk/overlay/position/global-position-strategy.ts","../../../../../../src/cdk/overlay/position/overlay-position-builder.ts","../../../../../../src/cdk/overlay/dispatchers/base-overlay-dispatcher.ts","../../../../../../src/cdk/overlay/dispatchers/overlay-keyboard-dispatcher.ts","../../../../../../src/cdk/overlay/dispatchers/overlay-outside-click-dispatcher.ts","../../../../../../src/cdk/overlay/overlay.ts","../../../../../../src/cdk/overlay/overlay-directives.ts","../../../../../../src/cdk/overlay/overlay-module.ts","../../../../../../src/cdk/overlay/dispatchers/index.ts","../../../../../../src/cdk/overlay/fullscreen-overlay-container.ts","../../../../../../src/cdk/overlay/public-api.ts","../../../../../../src/cdk/overlay/index.ts","../../../../../../src/cdk/overlay/overlay_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ScrollStrategy} from './scroll-strategy'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {coerceCssPixelValue} from '@angular/cdk/coercion'; import {supportsScrollBehavior} from '@angular/cdk/platform';  const scrollBehaviorSupported = supportsScrollBehavior();  /**  * Strategy that will prevent the user from scrolling while the overlay is visible.  */ export class BlockScrollStrategy implements ScrollStrategy {   private _previousHTMLStyles = {top: '', left: ''};   private _previousScrollPosition: {top: number; left: number};   private _isEnabled = false;   private _document: Document;    constructor(private _viewportRuler: ViewportRuler, document: any) {     this._document = document;   }    /** Attaches this scroll strategy to an overlay. */   attach() {}    /** Blocks page-level scroll while the attached overlay is open. */   enable() {     if (this._canBeEnabled()) {       const root = this._document.documentElement!;        this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();        // Cache the previous inline styles in case the user had set them.       this._previousHTMLStyles.left = root.style.left || '';       this._previousHTMLStyles.top = root.style.top || '';        // Note: we're using the `html` node, instead of the `body`, because the `body` may       // have the user agent margin, whereas the `html` is guaranteed not to have one.       root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);       root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);       root.classList.add('cdk-global-scrollblock');       this._isEnabled = true;     }   }    /** Unblocks page-level scroll while the attached overlay is open. */   disable() {     if (this._isEnabled) {       const html = this._document.documentElement!;       const body = this._document.body!;       const htmlStyle = html.style;       const bodyStyle = body.style;       const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';       const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';        this._isEnabled = false;        htmlStyle.left = this._previousHTMLStyles.left;       htmlStyle.top = this._previousHTMLStyles.top;       html.classList.remove('cdk-global-scrollblock');        // Disable user-defined smooth scrolling temporarily while we restore the scroll position.       // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior       // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,       // because it can throw off feature detections in `supportsScrollBehavior` which       // checks for `'scrollBehavior' in documentElement.style`.       if (scrollBehaviorSupported) {         htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';       }        window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);        if (scrollBehaviorSupported) {         htmlStyle.scrollBehavior = previousHtmlScrollBehavior;         bodyStyle.scrollBehavior = previousBodyScrollBehavior;       }     }   }    private _canBeEnabled(): boolean {     // Since the scroll strategies can't be singletons, we have to use a global CSS class     // (`cdk-global-scrollblock`) to make sure that we don't try to disable global     // scrolling multiple times.     const html = this._document.documentElement!;      if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {       return false;     }      const body = this._document.body;     const viewport = this._viewportRuler.getViewportSize();     return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {OverlayReference} from '../overlay-reference';  /**  * Describes a strategy that will be used by an overlay to handle scroll events while it is open.  */ export interface ScrollStrategy {   /** Enable this scroll strategy (called when the attached overlay is attached to a portal). */   enable: () => void;    /** Disable this scroll strategy (called when the attached overlay is detached from a portal). */   disable: () => void;    /** Attaches this `ScrollStrategy` to an overlay. */   attach: (overlayRef: OverlayReference) => void;    /** Detaches the scroll strategy from the current overlay. */   detach?: () => void; }  /**  * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.  */ export function getMatScrollStrategyAlreadyAttachedError(): Error {   return Error(`Scroll strategy has already been attached.`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {NgZone} from '@angular/core'; import {ScrollStrategy, getMatScrollStrategyAlreadyAttachedError} from './scroll-strategy'; import {OverlayReference} from '../overlay-reference'; import {Subscription} from 'rxjs'; import {ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling';  /**  * Config options for the CloseScrollStrategy.  */ export interface CloseScrollStrategyConfig {   /** Amount of pixels the user has to scroll before the overlay is closed. */   threshold?: number; }  /**  * Strategy that will close the overlay as soon as the user starts scrolling.  */ export class CloseScrollStrategy implements ScrollStrategy {   private _scrollSubscription: Subscription | null = null;   private _overlayRef: OverlayReference;   private _initialScrollPosition: number;    constructor(     private _scrollDispatcher: ScrollDispatcher,     private _ngZone: NgZone,     private _viewportRuler: ViewportRuler,     private _config?: CloseScrollStrategyConfig,   ) {}    /** Attaches this scroll strategy to an overlay. */   attach(overlayRef: OverlayReference) {     if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getMatScrollStrategyAlreadyAttachedError();     }      this._overlayRef = overlayRef;   }    /** Enables the closing of the attached overlay on scroll. */   enable() {     if (this._scrollSubscription) {       return;     }      const stream = this._scrollDispatcher.scrolled(0);      if (this._config && this._config.threshold && this._config.threshold > 1) {       this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;        this._scrollSubscription = stream.subscribe(() => {         const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;          if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config!.threshold!) {           this._detach();         } else {           this._overlayRef.updatePosition();         }       });     } else {       this._scrollSubscription = stream.subscribe(this._detach);     }   }    /** Disables the closing the attached overlay on scroll. */   disable() {     if (this._scrollSubscription) {       this._scrollSubscription.unsubscribe();       this._scrollSubscription = null;     }   }    detach() {     this.disable();     this._overlayRef = null!;   }    /** Detaches the overlay ref and disables the scroll strategy. */   private _detach = () => {     this.disable();      if (this._overlayRef.hasAttached()) {       this._ngZone.run(() => this._overlayRef.detach());     }   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ScrollStrategy} from './scroll-strategy';  /** Scroll strategy that doesn't do anything. */ export class NoopScrollStrategy implements ScrollStrategy {   /** Does nothing, as this scroll strategy is a no-op. */   enable() {}   /** Does nothing, as this scroll strategy is a no-op. */   disable() {}   /** Does nothing, as this scroll strategy is a no-op. */   attach() {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // TODO(jelbourn): move this to live with the rest of the scrolling code // TODO(jelbourn): someday replace this with IntersectionObservers  /** Equivalent of `ClientRect` without some of the properties we don't care about. */ type Dimensions = Omit<ClientRect, 'x' | 'y' | 'toJSON'>;  /**  * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.  * @param element Dimensions of the element (from getBoundingClientRect)  * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)  * @returns Whether the element is scrolled out of view  * @docs-private  */ export function isElementScrolledOutsideView(element: Dimensions, scrollContainers: Dimensions[]) {   return scrollContainers.some(containerBounds => {     const outsideAbove = element.bottom < containerBounds.top;     const outsideBelow = element.top > containerBounds.bottom;     const outsideLeft = element.right < containerBounds.left;     const outsideRight = element.left > containerBounds.right;      return outsideAbove || outsideBelow || outsideLeft || outsideRight;   }); }  /**  * Gets whether an element is clipped by any of its scrolling containers.  * @param element Dimensions of the element (from getBoundingClientRect)  * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)  * @returns Whether the element is clipped  * @docs-private  */ export function isElementClippedByScrolling(element: Dimensions, scrollContainers: Dimensions[]) {   return scrollContainers.some(scrollContainerRect => {     const clippedAbove = element.top < scrollContainerRect.top;     const clippedBelow = element.bottom > scrollContainerRect.bottom;     const clippedLeft = element.left < scrollContainerRect.left;     const clippedRight = element.right > scrollContainerRect.right;      return clippedAbove || clippedBelow || clippedLeft || clippedRight;   }); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgZone} from '@angular/core'; import {Subscription} from 'rxjs'; import {ScrollStrategy, getMatScrollStrategyAlreadyAttachedError} from './scroll-strategy'; import {OverlayReference} from '../overlay-reference'; import {ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling'; import {isElementScrolledOutsideView} from '../position/scroll-clip';  /**  * Config options for the RepositionScrollStrategy.  */ export interface RepositionScrollStrategyConfig {   /** Time in milliseconds to throttle the scroll events. */   scrollThrottle?: number;    /** Whether to close the overlay once the user has scrolled away completely. */   autoClose?: boolean; }  /**  * Strategy that will update the element position as the user is scrolling.  */ export class RepositionScrollStrategy implements ScrollStrategy {   private _scrollSubscription: Subscription | null = null;   private _overlayRef: OverlayReference;    constructor(     private _scrollDispatcher: ScrollDispatcher,     private _viewportRuler: ViewportRuler,     private _ngZone: NgZone,     private _config?: RepositionScrollStrategyConfig,   ) {}    /** Attaches this scroll strategy to an overlay. */   attach(overlayRef: OverlayReference) {     if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getMatScrollStrategyAlreadyAttachedError();     }      this._overlayRef = overlayRef;   }    /** Enables repositioning of the attached overlay on scroll. */   enable() {     if (!this._scrollSubscription) {       const throttle = this._config ? this._config.scrollThrottle : 0;        this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {         this._overlayRef.updatePosition();          // TODO(crisbeto): make `close` on by default once all components can handle it.         if (this._config && this._config.autoClose) {           const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();           const {width, height} = this._viewportRuler.getViewportSize();            // TODO(crisbeto): include all ancestor scroll containers here once           // we have a way of exposing the trigger element to the scroll strategy.           const parentRects = [{width, height, bottom: height, right: width, top: 0, left: 0}];            if (isElementScrolledOutsideView(overlayRect, parentRects)) {             this.disable();             this._ngZone.run(() => this._overlayRef.detach());           }         }       });     }   }    /** Disables repositioning of the attached overlay on scroll. */   disable() {     if (this._scrollSubscription) {       this._scrollSubscription.unsubscribe();       this._scrollSubscription = null;     }   }    detach() {     this.disable();     this._overlayRef = null!;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling'; import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, NgZone} from '@angular/core'; import {BlockScrollStrategy} from './block-scroll-strategy'; import {CloseScrollStrategy, CloseScrollStrategyConfig} from './close-scroll-strategy'; import {NoopScrollStrategy} from './noop-scroll-strategy'; import {   RepositionScrollStrategy,   RepositionScrollStrategyConfig, } from './reposition-scroll-strategy';  /**  * Options for how an overlay will handle scrolling.  *  * Users can provide a custom value for `ScrollStrategyOptions` to replace the default  * behaviors. This class primarily acts as a factory for ScrollStrategy instances.  */ @Injectable({providedIn: 'root'}) export class ScrollStrategyOptions {   private _document: Document;    constructor(     private _scrollDispatcher: ScrollDispatcher,     private _viewportRuler: ViewportRuler,     private _ngZone: NgZone,     @Inject(DOCUMENT) document: any,   ) {     this._document = document;   }    /** Do nothing on scroll. */   noop = () => new NoopScrollStrategy();    /**    * Close the overlay as soon as the user scrolls.    * @param config Configuration to be used inside the scroll strategy.    */   close = (config?: CloseScrollStrategyConfig) =>     new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);    /** Block scrolling. */   block = () => new BlockScrollStrategy(this._viewportRuler, this._document);    /**    * Update the overlay's position on scroll.    * @param config Configuration to be used inside the scroll strategy.    * Allows debouncing the reposition calls.    */   reposition = (config?: RepositionScrollStrategyConfig) =>     new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export {CdkScrollable, ScrollDispatcher} from '@angular/cdk/scrolling';  // Export pre-defined scroll strategies and interface to build custom ones. export {ScrollStrategy} from './scroll-strategy'; export {ScrollStrategyOptions} from './scroll-strategy-options'; export {   RepositionScrollStrategy,   RepositionScrollStrategyConfig, } from './reposition-scroll-strategy'; export {CloseScrollStrategy} from './close-scroll-strategy'; export {NoopScrollStrategy} from './noop-scroll-strategy'; export {BlockScrollStrategy} from './block-scroll-strategy'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {PositionStrategy} from './position/position-strategy'; import {Direction, Directionality} from '@angular/cdk/bidi'; import {ScrollStrategy, NoopScrollStrategy} from './scroll/index';  /** Initial configuration used when creating an overlay. */ export class OverlayConfig {   /** Strategy with which to position the overlay. */   positionStrategy?: PositionStrategy;    /** Strategy to be used when handling scroll events while the overlay is open. */   scrollStrategy?: ScrollStrategy = new NoopScrollStrategy();    /** Custom class to add to the overlay pane. */   panelClass?: string | string[] = '';    /** Whether the overlay has a backdrop. */   hasBackdrop?: boolean = false;    /** Custom class to add to the backdrop */   backdropClass?: string | string[] = 'cdk-overlay-dark-backdrop';    /** The width of the overlay panel. If a number is provided, pixel units are assumed. */   width?: number | string;    /** The height of the overlay panel. If a number is provided, pixel units are assumed. */   height?: number | string;    /** The min-width of the overlay panel. If a number is provided, pixel units are assumed. */   minWidth?: number | string;    /** The min-height of the overlay panel. If a number is provided, pixel units are assumed. */   minHeight?: number | string;    /** The max-width of the overlay panel. If a number is provided, pixel units are assumed. */   maxWidth?: number | string;    /** The max-height of the overlay panel. If a number is provided, pixel units are assumed. */   maxHeight?: number | string;    /**    * Direction of the text in the overlay panel. If a `Directionality` instance    * is passed in, the overlay will handle changes to its value automatically.    */   direction?: Direction | Directionality;    /**    * Whether the overlay should be disposed of when the user goes backwards/forwards in history.    * Note that this usually doesn't include clicking on links (unless the user is using    * the `HashLocationStrategy`).    */   disposeOnNavigation?: boolean = false;    constructor(config?: OverlayConfig) {     if (config) {       // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,       // loses the array generic type in the `for of`. But we *also* have to use `Array` because       // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`       const configKeys = Object.keys(config) as Iterable<keyof OverlayConfig> &         (keyof OverlayConfig)[];       for (const key of configKeys) {         if (config[key] !== undefined) {           // TypeScript, as of version 3.5, sees the left-hand-side of this expression           // as \"I don't know *which* key this is, so the only valid value is the intersection           // of all the possible values.\" In this case, that happens to be `undefined`. TypeScript           // is not smart enough to see that the right-hand-side is actually an access of the same           // exact type with the same exact key, meaning that the value type must be identical.           // So we use `any` to work around this.           this[key] = config[key] as any;         }       }     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Horizontal dimension of a connection point on the perimeter of the origin or overlay element. */ export type HorizontalConnectionPos = 'start' | 'center' | 'end';  /** Vertical dimension of a connection point on the perimeter of the origin or overlay element. */ export type VerticalConnectionPos = 'top' | 'center' | 'bottom';  /** A connection point on the origin element. */ export interface OriginConnectionPosition {   originX: HorizontalConnectionPos;   originY: VerticalConnectionPos; }  /** A connection point on the overlay element. */ export interface OverlayConnectionPosition {   overlayX: HorizontalConnectionPos;   overlayY: VerticalConnectionPos; }  /** The points of the origin element and the overlay element to connect. */ export class ConnectionPositionPair {   /** X-axis attachment point for connected overlay origin. Can be 'start', 'end', or 'center'. */   originX: HorizontalConnectionPos;   /** Y-axis attachment point for connected overlay origin. Can be 'top', 'bottom', or 'center'. */   originY: VerticalConnectionPos;   /** X-axis attachment point for connected overlay. Can be 'start', 'end', or 'center'. */   overlayX: HorizontalConnectionPos;   /** Y-axis attachment point for connected overlay. Can be 'top', 'bottom', or 'center'. */   overlayY: VerticalConnectionPos;    constructor(     origin: OriginConnectionPosition,     overlay: OverlayConnectionPosition,     /** Offset along the X axis. */     public offsetX?: number,     /** Offset along the Y axis. */     public offsetY?: number,     /** Class(es) to be applied to the panel while this position is active. */     public panelClass?: string | string[],   ) {     this.originX = origin.originX;     this.originY = origin.originY;     this.overlayX = overlay.overlayX;     this.overlayY = overlay.overlayY;   } }  /**  * Set of properties regarding the position of the origin and overlay relative to the viewport  * with respect to the containing Scrollable elements.  *  * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the  * bounds of any one of the strategy's Scrollable's bounding client rectangle.  *  * The overlay and origin are outside view if there is no overlap between their bounding client  * rectangle and any one of the strategy's Scrollable's bounding client rectangle.  *  *       -----------                    -----------  *       | outside |                    | clipped |  *       |  view   |              --------------------------  *       |         |              |     |         |        |  *       ----------               |     -----------        |  *  --------------------------    |                        |  *  |                        |    |      Scrollable        |  *  |                        |    |                        |  *  |                        |     --------------------------  *  |      Scrollable        |  *  |                        |  *  --------------------------  *  *  @docs-private  */ export class ScrollingVisibility {   isOriginClipped: boolean;   isOriginOutsideView: boolean;   isOverlayClipped: boolean;   isOverlayOutsideView: boolean; }  /** The change event emitted by the strategy when a fallback position is used. */ export class ConnectedOverlayPositionChange {   constructor(     /** The position used as a result of this change. */     public connectionPair: ConnectionPositionPair,     /** @docs-private */     public scrollableViewProperties: ScrollingVisibility,   ) {} }  /**  * Validates whether a vertical position property matches the expected values.  * @param property Name of the property being validated.  * @param value Value of the property being validated.  * @docs-private  */ export function validateVerticalPosition(property: string, value: VerticalConnectionPos) {   if (value !== 'top' && value !== 'bottom' && value !== 'center') {     throw Error(       `ConnectedPosition: Invalid ${property} \"${value}\". ` +         `Expected \"top\", \"bottom\" or \"center\".`,     );   } }  /**  * Validates whether a horizontal position property matches the expected values.  * @param property Name of the property being validated.  * @param value Value of the property being validated.  * @docs-private  */ export function validateHorizontalPosition(property: string, value: HorizontalConnectionPos) {   if (value !== 'start' && value !== 'end' && value !== 'center') {     throw Error(       `ConnectedPosition: Invalid ${property} \"${value}\". ` +         `Expected \"start\", \"end\" or \"center\".`,     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Direction, Directionality} from '@angular/cdk/bidi'; import {ComponentPortal, Portal, PortalOutlet, TemplatePortal} from '@angular/cdk/portal'; import {ComponentRef, EmbeddedViewRef, NgZone} from '@angular/core'; import {Location} from '@angular/common'; import {Observable, Subject, merge, SubscriptionLike, Subscription} from 'rxjs'; import {take, takeUntil} from 'rxjs/operators'; import {OverlayKeyboardDispatcher} from './dispatchers/overlay-keyboard-dispatcher'; import {OverlayOutsideClickDispatcher} from './dispatchers/overlay-outside-click-dispatcher'; import {OverlayConfig} from './overlay-config'; import {coerceCssPixelValue, coerceArray} from '@angular/cdk/coercion'; import {OverlayReference} from './overlay-reference'; import {PositionStrategy} from './position/position-strategy'; import {ScrollStrategy} from './scroll';  /** An object where all of its properties cannot be written. */ export type ImmutableObject<T> = {   readonly [P in keyof T]: T[P]; };  /**  * Reference to an overlay that has been created with the Overlay service.  * Used to manipulate or dispose of said overlay.  */ export class OverlayRef implements PortalOutlet, OverlayReference {   private _backdropElement: HTMLElement | null = null;   private _backdropTimeout: number | undefined;   private readonly _backdropClick = new Subject<MouseEvent>();   private readonly _attachments = new Subject<void>();   private readonly _detachments = new Subject<void>();   private _positionStrategy: PositionStrategy | undefined;   private _scrollStrategy: ScrollStrategy | undefined;   private _locationChanges: SubscriptionLike = Subscription.EMPTY;   private _backdropClickHandler = (event: MouseEvent) => this._backdropClick.next(event);   private _backdropTransitionendHandler = (event: TransitionEvent) => {     this._disposeBackdrop(event.target as HTMLElement | null);   };    /**    * Reference to the parent of the `_host` at the time it was detached. Used to restore    * the `_host` to its original position in the DOM when it gets re-attached.    */   private _previousHostParent: HTMLElement;    /** Stream of keydown events dispatched to this overlay. */   readonly _keydownEvents = new Subject<KeyboardEvent>();    /** Stream of mouse outside events dispatched to this overlay. */   readonly _outsidePointerEvents = new Subject<MouseEvent>();    constructor(     private _portalOutlet: PortalOutlet,     private _host: HTMLElement,     private _pane: HTMLElement,     private _config: ImmutableObject<OverlayConfig>,     private _ngZone: NgZone,     private _keyboardDispatcher: OverlayKeyboardDispatcher,     private _document: Document,     private _location: Location,     private _outsideClickDispatcher: OverlayOutsideClickDispatcher,     private _animationsDisabled = false,   ) {     if (_config.scrollStrategy) {       this._scrollStrategy = _config.scrollStrategy;       this._scrollStrategy.attach(this);     }      this._positionStrategy = _config.positionStrategy;   }    /** The overlay's HTML element */   get overlayElement(): HTMLElement {     return this._pane;   }    /** The overlay's backdrop HTML element. */   get backdropElement(): HTMLElement | null {     return this._backdropElement;   }    /**    * Wrapper around the panel element. Can be used for advanced    * positioning where a wrapper with specific styling is    * required around the overlay pane.    */   get hostElement(): HTMLElement {     return this._host;   }    attach<T>(portal: ComponentPortal<T>): ComponentRef<T>;   attach<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T>;   attach(portal: any): any;    /**    * Attaches content, given via a Portal, to the overlay.    * If the overlay is configured to have a backdrop, it will be created.    *    * @param portal Portal instance to which to attach the overlay.    * @returns The portal attachment result.    */   attach(portal: Portal<any>): any {     // Insert the host into the DOM before attaching the portal, otherwise     // the animations module will skip animations on repeat attachments.     if (!this._host.parentElement && this._previousHostParent) {       this._previousHostParent.appendChild(this._host);     }      const attachResult = this._portalOutlet.attach(portal);      if (this._positionStrategy) {       this._positionStrategy.attach(this);     }      this._updateStackingOrder();     this._updateElementSize();     this._updateElementDirection();      if (this._scrollStrategy) {       this._scrollStrategy.enable();     }      // Update the position once the zone is stable so that the overlay will be fully rendered     // before attempting to position it, as the position may depend on the size of the rendered     // content.     this._ngZone.onStable.pipe(take(1)).subscribe(() => {       // The overlay could've been detached before the zone has stabilized.       if (this.hasAttached()) {         this.updatePosition();       }     });      // Enable pointer events for the overlay pane element.     this._togglePointerEvents(true);      if (this._config.hasBackdrop) {       this._attachBackdrop();     }      if (this._config.panelClass) {       this._toggleClasses(this._pane, this._config.panelClass, true);     }      // Only emit the `attachments` event once all other setup is done.     this._attachments.next();      // Track this overlay by the keyboard dispatcher     this._keyboardDispatcher.add(this);      if (this._config.disposeOnNavigation) {       this._locationChanges = this._location.subscribe(() => this.dispose());     }      this._outsideClickDispatcher.add(this);      // TODO(crisbeto): the null check is here, because the portal outlet returns `any`.     // We should be guaranteed for the result to be `ComponentRef | EmbeddedViewRef`, but     // `instanceof EmbeddedViewRef` doesn't appear to work at the moment.     if (typeof attachResult?.onDestroy === 'function') {       // In most cases we control the portal and we know when it is being detached so that       // we can finish the disposal process. The exception is if the user passes in a custom       // `ViewContainerRef` that isn't destroyed through the overlay API. Note that we use       // `detach` here instead of `dispose`, because we don't know if the user intends to       // reattach the overlay at a later point. It also has the advantage of waiting for animations.       attachResult.onDestroy(() => {         if (this.hasAttached()) {           // We have to delay the `detach` call, because detaching immediately prevents           // other destroy hooks from running. This is likely a framework bug similar to           // https://github.com/angular/angular/issues/46119           this._ngZone.runOutsideAngular(() => Promise.resolve().then(() => this.detach()));         }       });     }      return attachResult;   }    /**    * Detaches an overlay from a portal.    * @returns The portal detachment result.    */   detach(): any {     if (!this.hasAttached()) {       return;     }      this.detachBackdrop();      // When the overlay is detached, the pane element should disable pointer events.     // This is necessary because otherwise the pane element will cover the page and disable     // pointer events therefore. Depends on the position strategy and the applied pane boundaries.     this._togglePointerEvents(false);      if (this._positionStrategy && this._positionStrategy.detach) {       this._positionStrategy.detach();     }      if (this._scrollStrategy) {       this._scrollStrategy.disable();     }      const detachmentResult = this._portalOutlet.detach();      // Only emit after everything is detached.     this._detachments.next();      // Remove this overlay from keyboard dispatcher tracking.     this._keyboardDispatcher.remove(this);      // Keeping the host element in the DOM can cause scroll jank, because it still gets     // rendered, even though it's transparent and unclickable which is why we remove it.     this._detachContentWhenStable();     this._locationChanges.unsubscribe();     this._outsideClickDispatcher.remove(this);     return detachmentResult;   }    /** Cleans up the overlay from the DOM. */   dispose(): void {     const isAttached = this.hasAttached();      if (this._positionStrategy) {       this._positionStrategy.dispose();     }      this._disposeScrollStrategy();     this._disposeBackdrop(this._backdropElement);     this._locationChanges.unsubscribe();     this._keyboardDispatcher.remove(this);     this._portalOutlet.dispose();     this._attachments.complete();     this._backdropClick.complete();     this._keydownEvents.complete();     this._outsidePointerEvents.complete();     this._outsideClickDispatcher.remove(this);     this._host?.remove();      this._previousHostParent = this._pane = this._host = null!;      if (isAttached) {       this._detachments.next();     }      this._detachments.complete();   }    /** Whether the overlay has attached content. */   hasAttached(): boolean {     return this._portalOutlet.hasAttached();   }    /** Gets an observable that emits when the backdrop has been clicked. */   backdropClick(): Observable<MouseEvent> {     return this._backdropClick;   }    /** Gets an observable that emits when the overlay has been attached. */   attachments(): Observable<void> {     return this._attachments;   }    /** Gets an observable that emits when the overlay has been detached. */   detachments(): Observable<void> {     return this._detachments;   }    /** Gets an observable of keydown events targeted to this overlay. */   keydownEvents(): Observable<KeyboardEvent> {     return this._keydownEvents;   }    /** Gets an observable of pointer events targeted outside this overlay. */   outsidePointerEvents(): Observable<MouseEvent> {     return this._outsidePointerEvents;   }    /** Gets the current overlay configuration, which is immutable. */   getConfig(): OverlayConfig {     return this._config;   }    /** Updates the position of the overlay based on the position strategy. */   updatePosition(): void {     if (this._positionStrategy) {       this._positionStrategy.apply();     }   }    /** Switches to a new position strategy and updates the overlay position. */   updatePositionStrategy(strategy: PositionStrategy): void {     if (strategy === this._positionStrategy) {       return;     }      if (this._positionStrategy) {       this._positionStrategy.dispose();     }      this._positionStrategy = strategy;      if (this.hasAttached()) {       strategy.attach(this);       this.updatePosition();     }   }    /** Update the size properties of the overlay. */   updateSize(sizeConfig: OverlaySizeConfig): void {     this._config = {...this._config, ...sizeConfig};     this._updateElementSize();   }    /** Sets the LTR/RTL direction for the overlay. */   setDirection(dir: Direction | Directionality): void {     this._config = {...this._config, direction: dir};     this._updateElementDirection();   }    /** Add a CSS class or an array of classes to the overlay pane. */   addPanelClass(classes: string | string[]): void {     if (this._pane) {       this._toggleClasses(this._pane, classes, true);     }   }    /** Remove a CSS class or an array of classes from the overlay pane. */   removePanelClass(classes: string | string[]): void {     if (this._pane) {       this._toggleClasses(this._pane, classes, false);     }   }    /**    * Returns the layout direction of the overlay panel.    */   getDirection(): Direction {     const direction = this._config.direction;      if (!direction) {       return 'ltr';     }      return typeof direction === 'string' ? direction : direction.value;   }    /** Switches to a new scroll strategy. */   updateScrollStrategy(strategy: ScrollStrategy): void {     if (strategy === this._scrollStrategy) {       return;     }      this._disposeScrollStrategy();     this._scrollStrategy = strategy;      if (this.hasAttached()) {       strategy.attach(this);       strategy.enable();     }   }    /** Updates the text direction of the overlay panel. */   private _updateElementDirection() {     this._host.setAttribute('dir', this.getDirection());   }    /** Updates the size of the overlay element based on the overlay config. */   private _updateElementSize() {     if (!this._pane) {       return;     }      const style = this._pane.style;      style.width = coerceCssPixelValue(this._config.width);     style.height = coerceCssPixelValue(this._config.height);     style.minWidth = coerceCssPixelValue(this._config.minWidth);     style.minHeight = coerceCssPixelValue(this._config.minHeight);     style.maxWidth = coerceCssPixelValue(this._config.maxWidth);     style.maxHeight = coerceCssPixelValue(this._config.maxHeight);   }    /** Toggles the pointer events for the overlay pane element. */   private _togglePointerEvents(enablePointer: boolean) {     this._pane.style.pointerEvents = enablePointer ? '' : 'none';   }    /** Attaches a backdrop for this overlay. */   private _attachBackdrop() {     const showingClass = 'cdk-overlay-backdrop-showing';      this._backdropElement = this._document.createElement('div');     this._backdropElement.classList.add('cdk-overlay-backdrop');      if (this._animationsDisabled) {       this._backdropElement.classList.add('cdk-overlay-backdrop-noop-animation');     }      if (this._config.backdropClass) {       this._toggleClasses(this._backdropElement, this._config.backdropClass, true);     }      // Insert the backdrop before the pane in the DOM order,     // in order to handle stacked overlays properly.     this._host.parentElement!.insertBefore(this._backdropElement, this._host);      // Forward backdrop clicks such that the consumer of the overlay can perform whatever     // action desired when such a click occurs (usually closing the overlay).     this._backdropElement.addEventListener('click', this._backdropClickHandler);      // Add class to fade-in the backdrop after one frame.     if (!this._animationsDisabled && typeof requestAnimationFrame !== 'undefined') {       this._ngZone.runOutsideAngular(() => {         requestAnimationFrame(() => {           if (this._backdropElement) {             this._backdropElement.classList.add(showingClass);           }         });       });     } else {       this._backdropElement.classList.add(showingClass);     }   }    /**    * Updates the stacking order of the element, moving it to the top if necessary.    * This is required in cases where one overlay was detached, while another one,    * that should be behind it, was destroyed. The next time both of them are opened,    * the stacking will be wrong, because the detached element's pane will still be    * in its original DOM position.    */   private _updateStackingOrder() {     if (this._host.nextSibling) {       this._host.parentNode!.appendChild(this._host);     }   }    /** Detaches the backdrop (if any) associated with the overlay. */   detachBackdrop(): void {     const backdropToDetach = this._backdropElement;      if (!backdropToDetach) {       return;     }      if (this._animationsDisabled) {       this._disposeBackdrop(backdropToDetach);       return;     }      backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');      this._ngZone.runOutsideAngular(() => {       backdropToDetach!.addEventListener('transitionend', this._backdropTransitionendHandler);     });      // If the backdrop doesn't have a transition, the `transitionend` event won't fire.     // In this case we make it unclickable and we try to remove it after a delay.     backdropToDetach.style.pointerEvents = 'none';      // Run this outside the Angular zone because there's nothing that Angular cares about.     // If it were to run inside the Angular zone, every test that used Overlay would have to be     // either async or fakeAsync.     this._backdropTimeout = this._ngZone.runOutsideAngular(() =>       setTimeout(() => {         this._disposeBackdrop(backdropToDetach);       }, 500),     );   }    /** Toggles a single CSS class or an array of classes on an element. */   private _toggleClasses(element: HTMLElement, cssClasses: string | string[], isAdd: boolean) {     const classes = coerceArray(cssClasses || []).filter(c => !!c);      if (classes.length) {       isAdd ? element.classList.add(...classes) : element.classList.remove(...classes);     }   }    /** Detaches the overlay content next time the zone stabilizes. */   private _detachContentWhenStable() {     // Normally we wouldn't have to explicitly run this outside the `NgZone`, however     // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will     // be patched to run inside the zone, which will throw us into an infinite loop.     this._ngZone.runOutsideAngular(() => {       // We can't remove the host here immediately, because the overlay pane's content       // might still be animating. This stream helps us avoid interrupting the animation       // by waiting for the pane to become empty.       const subscription = this._ngZone.onStable         .pipe(takeUntil(merge(this._attachments, this._detachments)))         .subscribe(() => {           // Needs a couple of checks for the pane and host, because           // they may have been removed by the time the zone stabilizes.           if (!this._pane || !this._host || this._pane.children.length === 0) {             if (this._pane && this._config.panelClass) {               this._toggleClasses(this._pane, this._config.panelClass, false);             }              if (this._host && this._host.parentElement) {               this._previousHostParent = this._host.parentElement;               this._host.remove();             }              subscription.unsubscribe();           }         });     });   }    /** Disposes of a scroll strategy. */   private _disposeScrollStrategy() {     const scrollStrategy = this._scrollStrategy;      if (scrollStrategy) {       scrollStrategy.disable();        if (scrollStrategy.detach) {         scrollStrategy.detach();       }     }   }    /** Removes a backdrop element from the DOM. */   private _disposeBackdrop(backdrop: HTMLElement | null) {     if (backdrop) {       backdrop.removeEventListener('click', this._backdropClickHandler);       backdrop.removeEventListener('transitionend', this._backdropTransitionendHandler);       backdrop.remove();        // It is possible that a new portal has been attached to this overlay since we started       // removing the backdrop. If that is the case, only clear the backdrop reference if it       // is still the same instance that we started to remove.       if (this._backdropElement === backdrop) {         this._backdropElement = null;       }     }      if (this._backdropTimeout) {       clearTimeout(this._backdropTimeout);       this._backdropTimeout = undefined;     }   } }  /** Size properties for an overlay. */ export interface OverlaySizeConfig {   width?: number | string;   height?: number | string;   minWidth?: number | string;   minHeight?: number | string;   maxWidth?: number | string;   maxHeight?: number | string; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, OnDestroy} from '@angular/core'; import {Platform, _isTestEnvironment} from '@angular/cdk/platform';  /** Container inside which all overlays will render. */ @Injectable({providedIn: 'root'}) export class OverlayContainer implements OnDestroy {   protected _containerElement: HTMLElement;   protected _document: Document;    constructor(@Inject(DOCUMENT) document: any, protected _platform: Platform) {     this._document = document;   }    ngOnDestroy() {     this._containerElement?.remove();   }    /**    * This method returns the overlay container element. It will lazily    * create the element the first time it is called to facilitate using    * the container in non-browser environments.    * @returns the container element    */   getContainerElement(): HTMLElement {     if (!this._containerElement) {       this._createContainer();     }      return this._containerElement;   }    /**    * Create the overlay container element, which is simply a div    * with the 'cdk-overlay-container' class on the document body.    */   protected _createContainer(): void {     const containerClass = 'cdk-overlay-container';      // TODO(crisbeto): remove the testing check once we have an overlay testing     // module or Angular starts tearing down the testing `NgModule`. See:     // https://github.com/angular/angular/issues/18831     if (this._platform.isBrowser || _isTestEnvironment()) {       const oppositePlatformContainers = this._document.querySelectorAll(         `.${containerClass}[platform=\"server\"], ` + `.${containerClass}[platform=\"test\"]`,       );        // Remove any old containers from the opposite platform.       // This can happen when transitioning from the server to the client.       for (let i = 0; i < oppositePlatformContainers.length; i++) {         oppositePlatformContainers[i].remove();       }     }      const container = this._document.createElement('div');     container.classList.add(containerClass);      // A long time ago we kept adding new overlay containers whenever a new app was instantiated,     // but at some point we added logic which clears the duplicate ones in order to avoid leaks.     // The new logic was a little too aggressive since it was breaking some legitimate use cases.     // To mitigate the problem we made it so that only containers from a different platform are     // cleared, but the side-effect was that people started depending on the overly-aggressive     // logic to clean up their tests for them. Until we can introduce an overlay-specific testing     // module which does the cleanup, we try to detect that we're in a test environment and we     // always clear the container. See #17006.     // TODO(crisbeto): remove the test environment check once we have an overlay testing module.     if (_isTestEnvironment()) {       container.setAttribute('platform', 'test');     } else if (!this._platform.isBrowser) {       container.setAttribute('platform', 'server');     }      this._document.body.appendChild(container);     this._containerElement = container;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {PositionStrategy} from './position-strategy'; import {ElementRef} from '@angular/core'; import {ViewportRuler, CdkScrollable, ViewportScrollPosition} from '@angular/cdk/scrolling'; import {   ConnectedOverlayPositionChange,   ConnectionPositionPair,   ScrollingVisibility,   validateHorizontalPosition,   validateVerticalPosition, } from './connected-position'; import {Observable, Subscription, Subject} from 'rxjs'; import {OverlayReference} from '../overlay-reference'; import {isElementScrolledOutsideView, isElementClippedByScrolling} from './scroll-clip'; import {coerceCssPixelValue, coerceArray} from '@angular/cdk/coercion'; import {Platform} from '@angular/cdk/platform'; import {OverlayContainer} from '../overlay-container';  // TODO: refactor clipping detection into a separate thing (part of scrolling module) // TODO: doesn't handle both flexible width and height when it has to scroll along both axis.  /** Class to be added to the overlay bounding box. */ const boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';  /** Regex used to split a string on its CSS units. */ const cssUnitPattern = /([A-Za-z%]+)$/;  /** Possible values that can be set as the origin of a FlexibleConnectedPositionStrategy. */ export type FlexibleConnectedPositionStrategyOrigin =   | ElementRef   | Element   | (Point & {       width?: number;       height?: number;     });  /** Equivalent of `ClientRect` without some of the properties we don't care about. */ type Dimensions = Omit<ClientRect, 'x' | 'y' | 'toJSON'>;  /**  * A strategy for positioning overlays. Using this strategy, an overlay is given an  * implicit position relative some origin element. The relative position is defined in terms of  * a point on the origin element that is connected to a point on the overlay element. For example,  * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner  * of the overlay.  */ export class FlexibleConnectedPositionStrategy implements PositionStrategy {   /** The overlay to which this strategy is attached. */   private _overlayRef: OverlayReference;    /** Whether we're performing the very first positioning of the overlay. */   private _isInitialRender: boolean;    /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */   private _lastBoundingBoxSize = {width: 0, height: 0};    /** Whether the overlay was pushed in a previous positioning. */   private _isPushed = false;    /** Whether the overlay can be pushed on-screen on the initial open. */   private _canPush = true;    /** Whether the overlay can grow via flexible width/height after the initial open. */   private _growAfterOpen = false;    /** Whether the overlay's width and height can be constrained to fit within the viewport. */   private _hasFlexibleDimensions = true;    /** Whether the overlay position is locked. */   private _positionLocked = false;    /** Cached origin dimensions */   private _originRect: Dimensions;    /** Cached overlay dimensions */   private _overlayRect: Dimensions;    /** Cached viewport dimensions */   private _viewportRect: Dimensions;    /** Cached container dimensions */   private _containerRect: Dimensions;    /** Amount of space that must be maintained between the overlay and the edge of the viewport. */   private _viewportMargin = 0;    /** The Scrollable containers used to check scrollable view properties on position change. */   private _scrollables: CdkScrollable[] = [];    /** Ordered list of preferred positions, from most to least desirable. */   _preferredPositions: ConnectionPositionPair[] = [];    /** The origin element against which the overlay will be positioned. */   _origin: FlexibleConnectedPositionStrategyOrigin;    /** The overlay pane element. */   private _pane: HTMLElement;    /** Whether the strategy has been disposed of already. */   private _isDisposed: boolean;    /**    * Parent element for the overlay panel used to constrain the overlay panel's size to fit    * within the viewport.    */   private _boundingBox: HTMLElement | null;    /** The last position to have been calculated as the best fit position. */   private _lastPosition: ConnectedPosition | null;    /** Subject that emits whenever the position changes. */   private readonly _positionChanges = new Subject<ConnectedOverlayPositionChange>();    /** Subscription to viewport size changes. */   private _resizeSubscription = Subscription.EMPTY;    /** Default offset for the overlay along the x axis. */   private _offsetX = 0;    /** Default offset for the overlay along the y axis. */   private _offsetY = 0;    /** Selector to be used when finding the elements on which to set the transform origin. */   private _transformOriginSelector: string;    /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */   private _appliedPanelClasses: string[] = [];    /** Amount by which the overlay was pushed in each axis during the last time it was positioned. */   private _previousPushAmount: {x: number; y: number} | null;    /** Observable sequence of position changes. */   positionChanges: Observable<ConnectedOverlayPositionChange> = this._positionChanges;    /** Ordered list of preferred positions, from most to least desirable. */   get positions(): ConnectionPositionPair[] {     return this._preferredPositions;   }    constructor(     connectedTo: FlexibleConnectedPositionStrategyOrigin,     private _viewportRuler: ViewportRuler,     private _document: Document,     private _platform: Platform,     private _overlayContainer: OverlayContainer,   ) {     this.setOrigin(connectedTo);   }    /** Attaches this position strategy to an overlay. */   attach(overlayRef: OverlayReference): void {     if (       this._overlayRef &&       overlayRef !== this._overlayRef &&       (typeof ngDevMode === 'undefined' || ngDevMode)     ) {       throw Error('This position strategy is already attached to an overlay');     }      this._validatePositions();      overlayRef.hostElement.classList.add(boundingBoxClass);      this._overlayRef = overlayRef;     this._boundingBox = overlayRef.hostElement;     this._pane = overlayRef.overlayElement;     this._isDisposed = false;     this._isInitialRender = true;     this._lastPosition = null;     this._resizeSubscription.unsubscribe();     this._resizeSubscription = this._viewportRuler.change().subscribe(() => {       // When the window is resized, we want to trigger the next reposition as if it       // was an initial render, in order for the strategy to pick a new optimal position,       // otherwise position locking will cause it to stay at the old one.       this._isInitialRender = true;       this.apply();     });   }    /**    * Updates the position of the overlay element, using whichever preferred position relative    * to the origin best fits on-screen.    *    * The selection of a position goes as follows:    *  - If any positions fit completely within the viewport as-is,    *      choose the first position that does so.    *  - If flexible dimensions are enabled and at least one satisfies the given minimum width/height,    *      choose the position with the greatest available size modified by the positions' weight.    *  - If pushing is enabled, take the position that went off-screen the least and push it    *      on-screen.    *  - If none of the previous criteria were met, use the position that goes off-screen the least.    * @docs-private    */   apply(): void {     // We shouldn't do anything if the strategy was disposed or we're on the server.     if (this._isDisposed || !this._platform.isBrowser) {       return;     }      // If the position has been applied already (e.g. when the overlay was opened) and the     // consumer opted into locking in the position, re-use the old position, in order to     // prevent the overlay from jumping around.     if (!this._isInitialRender && this._positionLocked && this._lastPosition) {       this.reapplyLastPosition();       return;     }      this._clearPanelClasses();     this._resetOverlayElementStyles();     this._resetBoundingBoxStyles();      // We need the bounding rects for the origin, the overlay and the container to determine how to position     // the overlay relative to the origin.     // We use the viewport rect to determine whether a position would go off-screen.     this._viewportRect = this._getNarrowedViewportRect();     this._originRect = this._getOriginRect();     this._overlayRect = this._pane.getBoundingClientRect();     this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();      const originRect = this._originRect;     const overlayRect = this._overlayRect;     const viewportRect = this._viewportRect;     const containerRect = this._containerRect;      // Positions where the overlay will fit with flexible dimensions.     const flexibleFits: FlexibleFit[] = [];      // Fallback if none of the preferred positions fit within the viewport.     let fallback: FallbackPosition | undefined;      // Go through each of the preferred positions looking for a good fit.     // If a good fit is found, it will be applied immediately.     for (let pos of this._preferredPositions) {       // Get the exact (x, y) coordinate for the point-of-origin on the origin element.       let originPoint = this._getOriginPoint(originRect, containerRect, pos);        // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the       // overlay in this position. We use the top-left corner for calculations and later translate       // this into an appropriate (top, left, bottom, right) style.       let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos);        // Calculate how well the overlay would fit into the viewport with this point.       let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos);        // If the overlay, without any further work, fits into the viewport, use this position.       if (overlayFit.isCompletelyWithinViewport) {         this._isPushed = false;         this._applyPosition(pos, originPoint);         return;       }        // If the overlay has flexible dimensions, we can use this position       // so long as there's enough space for the minimum dimensions.       if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {         // Save positions where the overlay will fit with flexible dimensions. We will use these         // if none of the positions fit *without* flexible dimensions.         flexibleFits.push({           position: pos,           origin: originPoint,           overlayRect,           boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos),         });          continue;       }        // If the current preferred position does not fit on the screen, remember the position       // if it has more visible area on-screen than we've seen and move onto the next preferred       // position.       if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {         fallback = {overlayFit, overlayPoint, originPoint, position: pos, overlayRect};       }     }      // If there are any positions where the overlay would fit with flexible dimensions, choose the     // one that has the greatest area available modified by the position's weight     if (flexibleFits.length) {       let bestFit: FlexibleFit | null = null;       let bestScore = -1;       for (const fit of flexibleFits) {         const score =           fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);         if (score > bestScore) {           bestScore = score;           bestFit = fit;         }       }        this._isPushed = false;       this._applyPosition(bestFit!.position, bestFit!.origin);       return;     }      // When none of the preferred positions fit within the viewport, take the position     // that went off-screen the least and attempt to push it on-screen.     if (this._canPush) {       // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.       this._isPushed = true;       this._applyPosition(fallback!.position, fallback!.originPoint);       return;     }      // All options for getting the overlay within the viewport have been exhausted, so go with the     // position that went off-screen the least.     this._applyPosition(fallback!.position, fallback!.originPoint);   }    detach(): void {     this._clearPanelClasses();     this._lastPosition = null;     this._previousPushAmount = null;     this._resizeSubscription.unsubscribe();   }    /** Cleanup after the element gets destroyed. */   dispose(): void {     if (this._isDisposed) {       return;     }      // We can't use `_resetBoundingBoxStyles` here, because it resets     // some properties to zero, rather than removing them.     if (this._boundingBox) {       extendStyles(this._boundingBox.style, {         top: '',         left: '',         right: '',         bottom: '',         height: '',         width: '',         alignItems: '',         justifyContent: '',       } as CSSStyleDeclaration);     }      if (this._pane) {       this._resetOverlayElementStyles();     }      if (this._overlayRef) {       this._overlayRef.hostElement.classList.remove(boundingBoxClass);     }      this.detach();     this._positionChanges.complete();     this._overlayRef = this._boundingBox = null!;     this._isDisposed = true;   }    /**    * This re-aligns the overlay element with the trigger in its last calculated position,    * even if a position higher in the \"preferred positions\" list would now fit. This    * allows one to re-align the panel without changing the orientation of the panel.    */   reapplyLastPosition(): void {     if (this._isDisposed || !this._platform.isBrowser) {       return;     }      const lastPosition = this._lastPosition;      if (lastPosition) {       this._originRect = this._getOriginRect();       this._overlayRect = this._pane.getBoundingClientRect();       this._viewportRect = this._getNarrowedViewportRect();       this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();        const originPoint = this._getOriginPoint(this._originRect, this._containerRect, lastPosition);       this._applyPosition(lastPosition, originPoint);     } else {       this.apply();     }   }    /**    * Sets the list of Scrollable containers that host the origin element so that    * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every    * Scrollable must be an ancestor element of the strategy's origin element.    */   withScrollableContainers(scrollables: CdkScrollable[]): this {     this._scrollables = scrollables;     return this;   }    /**    * Adds new preferred positions.    * @param positions List of positions options for this overlay.    */   withPositions(positions: ConnectedPosition[]): this {     this._preferredPositions = positions;      // If the last calculated position object isn't part of the positions anymore, clear     // it in order to avoid it being picked up if the consumer tries to re-apply.     if (positions.indexOf(this._lastPosition!) === -1) {       this._lastPosition = null;     }      this._validatePositions();      return this;   }    /**    * Sets a minimum distance the overlay may be positioned to the edge of the viewport.    * @param margin Required margin between the overlay and the viewport edge in pixels.    */   withViewportMargin(margin: number): this {     this._viewportMargin = margin;     return this;   }    /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */   withFlexibleDimensions(flexibleDimensions = true): this {     this._hasFlexibleDimensions = flexibleDimensions;     return this;   }    /** Sets whether the overlay can grow after the initial open via flexible width/height. */   withGrowAfterOpen(growAfterOpen = true): this {     this._growAfterOpen = growAfterOpen;     return this;   }    /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */   withPush(canPush = true): this {     this._canPush = canPush;     return this;   }    /**    * Sets whether the overlay's position should be locked in after it is positioned    * initially. When an overlay is locked in, it won't attempt to reposition itself    * when the position is re-applied (e.g. when the user scrolls away).    * @param isLocked Whether the overlay should locked in.    */   withLockedPosition(isLocked = true): this {     this._positionLocked = isLocked;     return this;   }    /**    * Sets the origin, relative to which to position the overlay.    * Using an element origin is useful for building components that need to be positioned    * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be    * used for cases like contextual menus which open relative to the user's pointer.    * @param origin Reference to the new origin.    */   setOrigin(origin: FlexibleConnectedPositionStrategyOrigin): this {     this._origin = origin;     return this;   }    /**    * Sets the default offset for the overlay's connection point on the x-axis.    * @param offset New offset in the X axis.    */   withDefaultOffsetX(offset: number): this {     this._offsetX = offset;     return this;   }    /**    * Sets the default offset for the overlay's connection point on the y-axis.    * @param offset New offset in the Y axis.    */   withDefaultOffsetY(offset: number): this {     this._offsetY = offset;     return this;   }    /**    * Configures that the position strategy should set a `transform-origin` on some elements    * inside the overlay, depending on the current position that is being applied. This is    * useful for the cases where the origin of an animation can change depending on the    * alignment of the overlay.    * @param selector CSS selector that will be used to find the target    *    elements onto which to set the transform origin.    */   withTransformOriginOn(selector: string): this {     this._transformOriginSelector = selector;     return this;   }    /**    * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.    */   private _getOriginPoint(     originRect: Dimensions,     containerRect: Dimensions,     pos: ConnectedPosition,   ): Point {     let x: number;     if (pos.originX == 'center') {       // Note: when centering we should always use the `left`       // offset, otherwise the position will be wrong in RTL.       x = originRect.left + originRect.width / 2;     } else {       const startX = this._isRtl() ? originRect.right : originRect.left;       const endX = this._isRtl() ? originRect.left : originRect.right;       x = pos.originX == 'start' ? startX : endX;     }      // When zooming in Safari the container rectangle contains negative values for the position     // and we need to re-add them to the calculated coordinates.     if (containerRect.left < 0) {       x -= containerRect.left;     }      let y: number;     if (pos.originY == 'center') {       y = originRect.top + originRect.height / 2;     } else {       y = pos.originY == 'top' ? originRect.top : originRect.bottom;     }      // Normally the containerRect's top value would be zero, however when the overlay is attached to an input     // (e.g. in an autocomplete), mobile browsers will shift everything in order to put the input in the middle     // of the screen and to make space for the virtual keyboard. We need to account for this offset,     // otherwise our positioning will be thrown off.     // Additionally, when zooming in Safari this fixes the vertical position.     if (containerRect.top < 0) {       y -= containerRect.top;     }      return {x, y};   }    /**    * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and    * origin point to which the overlay should be connected.    */   private _getOverlayPoint(     originPoint: Point,     overlayRect: Dimensions,     pos: ConnectedPosition,   ): Point {     // Calculate the (overlayStartX, overlayStartY), the start of the     // potential overlay position relative to the origin point.     let overlayStartX: number;     if (pos.overlayX == 'center') {       overlayStartX = -overlayRect.width / 2;     } else if (pos.overlayX === 'start') {       overlayStartX = this._isRtl() ? -overlayRect.width : 0;     } else {       overlayStartX = this._isRtl() ? 0 : -overlayRect.width;     }      let overlayStartY: number;     if (pos.overlayY == 'center') {       overlayStartY = -overlayRect.height / 2;     } else {       overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;     }      // The (x, y) coordinates of the overlay.     return {       x: originPoint.x + overlayStartX,       y: originPoint.y + overlayStartY,     };   }    /** Gets how well an overlay at the given point will fit within the viewport. */   private _getOverlayFit(     point: Point,     rawOverlayRect: Dimensions,     viewport: Dimensions,     position: ConnectedPosition,   ): OverlayFit {     // Round the overlay rect when comparing against the     // viewport, because the viewport is always rounded.     const overlay = getRoundedBoundingClientRect(rawOverlayRect);     let {x, y} = point;     let offsetX = this._getOffset(position, 'x');     let offsetY = this._getOffset(position, 'y');      // Account for the offsets since they could push the overlay out of the viewport.     if (offsetX) {       x += offsetX;     }      if (offsetY) {       y += offsetY;     }      // How much the overlay would overflow at this position, on each side.     let leftOverflow = 0 - x;     let rightOverflow = x + overlay.width - viewport.width;     let topOverflow = 0 - y;     let bottomOverflow = y + overlay.height - viewport.height;      // Visible parts of the element on each axis.     let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);     let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);     let visibleArea = visibleWidth * visibleHeight;      return {       visibleArea,       isCompletelyWithinViewport: overlay.width * overlay.height === visibleArea,       fitsInViewportVertically: visibleHeight === overlay.height,       fitsInViewportHorizontally: visibleWidth == overlay.width,     };   }    /**    * Whether the overlay can fit within the viewport when it may resize either its width or height.    * @param fit How well the overlay fits in the viewport at some position.    * @param point The (x, y) coordinates of the overlay at some position.    * @param viewport The geometry of the viewport.    */   private _canFitWithFlexibleDimensions(fit: OverlayFit, point: Point, viewport: Dimensions) {     if (this._hasFlexibleDimensions) {       const availableHeight = viewport.bottom - point.y;       const availableWidth = viewport.right - point.x;       const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);       const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);        const verticalFit =         fit.fitsInViewportVertically || (minHeight != null && minHeight <= availableHeight);       const horizontalFit =         fit.fitsInViewportHorizontally || (minWidth != null && minWidth <= availableWidth);        return verticalFit && horizontalFit;     }     return false;   }    /**    * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than    * the viewport, the top-left corner will be pushed on-screen (with overflow occurring on the    * right and bottom).    *    * @param start Starting point from which the overlay is pushed.    * @param rawOverlayRect Dimensions of the overlay.    * @param scrollPosition Current viewport scroll position.    * @returns The point at which to position the overlay after pushing. This is effectively a new    *     originPoint.    */   private _pushOverlayOnScreen(     start: Point,     rawOverlayRect: Dimensions,     scrollPosition: ViewportScrollPosition,   ): Point {     // If the position is locked and we've pushed the overlay already, reuse the previous push     // amount, rather than pushing it again. If we were to continue pushing, the element would     // remain in the viewport, which goes against the expectations when position locking is enabled.     if (this._previousPushAmount && this._positionLocked) {       return {         x: start.x + this._previousPushAmount.x,         y: start.y + this._previousPushAmount.y,       };     }      // Round the overlay rect when comparing against the     // viewport, because the viewport is always rounded.     const overlay = getRoundedBoundingClientRect(rawOverlayRect);     const viewport = this._viewportRect;      // Determine how much the overlay goes outside the viewport on each     // side, which we'll use to decide which direction to push it.     const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);     const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);     const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);     const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0);      // Amount by which to push the overlay in each axis such that it remains on-screen.     let pushX = 0;     let pushY = 0;      // If the overlay fits completely within the bounds of the viewport, push it from whichever     // direction is goes off-screen. Otherwise, push the top-left corner such that its in the     // viewport and allow for the trailing end of the overlay to go out of bounds.     if (overlay.width <= viewport.width) {       pushX = overflowLeft || -overflowRight;     } else {       pushX = start.x < this._viewportMargin ? viewport.left - scrollPosition.left - start.x : 0;     }      if (overlay.height <= viewport.height) {       pushY = overflowTop || -overflowBottom;     } else {       pushY = start.y < this._viewportMargin ? viewport.top - scrollPosition.top - start.y : 0;     }      this._previousPushAmount = {x: pushX, y: pushY};      return {       x: start.x + pushX,       y: start.y + pushY,     };   }    /**    * Applies a computed position to the overlay and emits a position change.    * @param position The position preference    * @param originPoint The point on the origin element where the overlay is connected.    */   private _applyPosition(position: ConnectedPosition, originPoint: Point) {     this._setTransformOrigin(position);     this._setOverlayElementStyles(originPoint, position);     this._setBoundingBoxStyles(originPoint, position);      if (position.panelClass) {       this._addPanelClasses(position.panelClass);     }      // Save the last connected position in case the position needs to be re-calculated.     this._lastPosition = position;      // Notify that the position has been changed along with its change properties.     // We only emit if we've got any subscriptions, because the scroll visibility     // calculations can be somewhat expensive.     if (this._positionChanges.observers.length) {       const scrollableViewProperties = this._getScrollVisibility();       const changeEvent = new ConnectedOverlayPositionChange(position, scrollableViewProperties);       this._positionChanges.next(changeEvent);     }      this._isInitialRender = false;   }    /** Sets the transform origin based on the configured selector and the passed-in position.  */   private _setTransformOrigin(position: ConnectedPosition) {     if (!this._transformOriginSelector) {       return;     }      const elements: NodeListOf<HTMLElement> = this._boundingBox!.querySelectorAll(       this._transformOriginSelector,     );     let xOrigin: 'left' | 'right' | 'center';     let yOrigin: 'top' | 'bottom' | 'center' = position.overlayY;      if (position.overlayX === 'center') {       xOrigin = 'center';     } else if (this._isRtl()) {       xOrigin = position.overlayX === 'start' ? 'right' : 'left';     } else {       xOrigin = position.overlayX === 'start' ? 'left' : 'right';     }      for (let i = 0; i < elements.length; i++) {       elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;     }   }    /**    * Gets the position and size of the overlay's sizing container.    *    * This method does no measuring and applies no styles so that we can cheaply compute the    * bounds for all positions and choose the best fit based on these results.    */   private _calculateBoundingBoxRect(origin: Point, position: ConnectedPosition): BoundingBoxRect {     const viewport = this._viewportRect;     const isRtl = this._isRtl();     let height: number, top: number, bottom: number;      if (position.overlayY === 'top') {       // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.       top = origin.y;       height = viewport.height - top + this._viewportMargin;     } else if (position.overlayY === 'bottom') {       // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add       // the viewport margin back in, because the viewport rect is narrowed down to remove the       // margin, whereas the `origin` position is calculated based on its `ClientRect`.       bottom = viewport.height - origin.y + this._viewportMargin * 2;       height = viewport.height - bottom + this._viewportMargin;     } else {       // If neither top nor bottom, it means that the overlay is vertically centered on the       // origin point. Note that we want the position relative to the viewport, rather than       // the page, which is why we don't use something like `viewport.bottom - origin.y` and       // `origin.y - viewport.top`.       const smallestDistanceToViewportEdge = Math.min(         viewport.bottom - origin.y + viewport.top,         origin.y,       );        const previousHeight = this._lastBoundingBoxSize.height;        height = smallestDistanceToViewportEdge * 2;       top = origin.y - smallestDistanceToViewportEdge;        if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {         top = origin.y - previousHeight / 2;       }     }      // The overlay is opening 'right-ward' (the content flows to the right).     const isBoundedByRightViewportEdge =       (position.overlayX === 'start' && !isRtl) || (position.overlayX === 'end' && isRtl);      // The overlay is opening 'left-ward' (the content flows to the left).     const isBoundedByLeftViewportEdge =       (position.overlayX === 'end' && !isRtl) || (position.overlayX === 'start' && isRtl);      let width: number, left: number, right: number;      if (isBoundedByLeftViewportEdge) {       right = viewport.width - origin.x + this._viewportMargin;       width = origin.x - this._viewportMargin;     } else if (isBoundedByRightViewportEdge) {       left = origin.x;       width = viewport.right - origin.x;     } else {       // If neither start nor end, it means that the overlay is horizontally centered on the       // origin point. Note that we want the position relative to the viewport, rather than       // the page, which is why we don't use something like `viewport.right - origin.x` and       // `origin.x - viewport.left`.       const smallestDistanceToViewportEdge = Math.min(         viewport.right - origin.x + viewport.left,         origin.x,       );       const previousWidth = this._lastBoundingBoxSize.width;        width = smallestDistanceToViewportEdge * 2;       left = origin.x - smallestDistanceToViewportEdge;        if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {         left = origin.x - previousWidth / 2;       }     }      return {top: top!, left: left!, bottom: bottom!, right: right!, width, height};   }    /**    * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the    * origin's connection point and stretches to the bounds of the viewport.    *    * @param origin The point on the origin element where the overlay is connected.    * @param position The position preference    */   private _setBoundingBoxStyles(origin: Point, position: ConnectedPosition): void {     const boundingBoxRect = this._calculateBoundingBoxRect(origin, position);      // It's weird if the overlay *grows* while scrolling, so we take the last size into account     // when applying a new size.     if (!this._isInitialRender && !this._growAfterOpen) {       boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);       boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);     }      const styles = {} as CSSStyleDeclaration;      if (this._hasExactPosition()) {       styles.top = styles.left = '0';       styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';       styles.width = styles.height = '100%';     } else {       const maxHeight = this._overlayRef.getConfig().maxHeight;       const maxWidth = this._overlayRef.getConfig().maxWidth;        styles.height = coerceCssPixelValue(boundingBoxRect.height);       styles.top = coerceCssPixelValue(boundingBoxRect.top);       styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);       styles.width = coerceCssPixelValue(boundingBoxRect.width);       styles.left = coerceCssPixelValue(boundingBoxRect.left);       styles.right = coerceCssPixelValue(boundingBoxRect.right);        // Push the pane content towards the proper direction.       if (position.overlayX === 'center') {         styles.alignItems = 'center';       } else {         styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';       }        if (position.overlayY === 'center') {         styles.justifyContent = 'center';       } else {         styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';       }        if (maxHeight) {         styles.maxHeight = coerceCssPixelValue(maxHeight);       }        if (maxWidth) {         styles.maxWidth = coerceCssPixelValue(maxWidth);       }     }      this._lastBoundingBoxSize = boundingBoxRect;      extendStyles(this._boundingBox!.style, styles);   }    /** Resets the styles for the bounding box so that a new positioning can be computed. */   private _resetBoundingBoxStyles() {     extendStyles(this._boundingBox!.style, {       top: '0',       left: '0',       right: '0',       bottom: '0',       height: '',       width: '',       alignItems: '',       justifyContent: '',     } as CSSStyleDeclaration);   }    /** Resets the styles for the overlay pane so that a new positioning can be computed. */   private _resetOverlayElementStyles() {     extendStyles(this._pane.style, {       top: '',       left: '',       bottom: '',       right: '',       position: '',       transform: '',     } as CSSStyleDeclaration);   }    /** Sets positioning styles to the overlay element. */   private _setOverlayElementStyles(originPoint: Point, position: ConnectedPosition): void {     const styles = {} as CSSStyleDeclaration;     const hasExactPosition = this._hasExactPosition();     const hasFlexibleDimensions = this._hasFlexibleDimensions;     const config = this._overlayRef.getConfig();      if (hasExactPosition) {       const scrollPosition = this._viewportRuler.getViewportScrollPosition();       extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));       extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));     } else {       styles.position = 'static';     }      // Use a transform to apply the offsets. We do this because the `center` positions rely on     // being in the normal flex flow and setting a `top` / `left` at all will completely throw     // off the position. We also can't use margins, because they won't have an effect in some     // cases where the element doesn't have anything to \"push off of\". Finally, this works     // better both with flexible and non-flexible positioning.     let transformString = '';     let offsetX = this._getOffset(position, 'x');     let offsetY = this._getOffset(position, 'y');      if (offsetX) {       transformString += `translateX(${offsetX}px) `;     }      if (offsetY) {       transformString += `translateY(${offsetY}px)`;     }      styles.transform = transformString.trim();      // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because     // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.     // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.     // Note that this doesn't apply when we have an exact position, in which case we do want to     // apply them because they'll be cleared from the bounding box.     if (config.maxHeight) {       if (hasExactPosition) {         styles.maxHeight = coerceCssPixelValue(config.maxHeight);       } else if (hasFlexibleDimensions) {         styles.maxHeight = '';       }     }      if (config.maxWidth) {       if (hasExactPosition) {         styles.maxWidth = coerceCssPixelValue(config.maxWidth);       } else if (hasFlexibleDimensions) {         styles.maxWidth = '';       }     }      extendStyles(this._pane.style, styles);   }    /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */   private _getExactOverlayY(     position: ConnectedPosition,     originPoint: Point,     scrollPosition: ViewportScrollPosition,   ) {     // Reset any existing styles. This is necessary in case the     // preferred position has changed since the last `apply`.     let styles = {top: '', bottom: ''} as CSSStyleDeclaration;     let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);      if (this._isPushed) {       overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);     }      // We want to set either `top` or `bottom` based on whether the overlay wants to appear     // above or below the origin and the direction in which the element will expand.     if (position.overlayY === 'bottom') {       // When using `bottom`, we adjust the y position such that it is the distance       // from the bottom of the viewport rather than the top.       const documentHeight = this._document.documentElement!.clientHeight;       styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;     } else {       styles.top = coerceCssPixelValue(overlayPoint.y);     }      return styles;   }    /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */   private _getExactOverlayX(     position: ConnectedPosition,     originPoint: Point,     scrollPosition: ViewportScrollPosition,   ) {     // Reset any existing styles. This is necessary in case the preferred position has     // changed since the last `apply`.     let styles = {left: '', right: ''} as CSSStyleDeclaration;     let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);      if (this._isPushed) {       overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);     }      // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"     // or \"after\" the origin, which determines the direction in which the element will expand.     // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the     // page is in RTL or LTR.     let horizontalStyleProperty: 'left' | 'right';      if (this._isRtl()) {       horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';     } else {       horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';     }      // When we're setting `right`, we adjust the x position such that it is the distance     // from the right edge of the viewport rather than the left edge.     if (horizontalStyleProperty === 'right') {       const documentWidth = this._document.documentElement!.clientWidth;       styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;     } else {       styles.left = coerceCssPixelValue(overlayPoint.x);     }      return styles;   }    /**    * Gets the view properties of the trigger and overlay, including whether they are clipped    * or completely outside the view of any of the strategy's scrollables.    */   private _getScrollVisibility(): ScrollingVisibility {     // Note: needs fresh rects since the position could've changed.     const originBounds = this._getOriginRect();     const overlayBounds = this._pane.getBoundingClientRect();      // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers     // every time, we should be able to use the scrollTop of the containers if the size of those     // containers hasn't changed.     const scrollContainerBounds = this._scrollables.map(scrollable => {       return scrollable.getElementRef().nativeElement.getBoundingClientRect();     });      return {       isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),       isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),       isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),       isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds),     };   }    /** Subtracts the amount that an element is overflowing on an axis from its length. */   private _subtractOverflows(length: number, ...overflows: number[]): number {     return overflows.reduce((currentValue: number, currentOverflow: number) => {       return currentValue - Math.max(currentOverflow, 0);     }, length);   }    /** Narrows the given viewport rect by the current _viewportMargin. */   private _getNarrowedViewportRect(): Dimensions {     // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,     // because we want to use the `clientWidth` and `clientHeight` as the base. The difference     // being that the client properties don't include the scrollbar, as opposed to `innerWidth`     // and `innerHeight` that do. This is necessary, because the overlay container uses     // 100% `width` and `height` which don't include the scrollbar either.     const width = this._document.documentElement!.clientWidth;     const height = this._document.documentElement!.clientHeight;     const scrollPosition = this._viewportRuler.getViewportScrollPosition();      return {       top: scrollPosition.top + this._viewportMargin,       left: scrollPosition.left + this._viewportMargin,       right: scrollPosition.left + width - this._viewportMargin,       bottom: scrollPosition.top + height - this._viewportMargin,       width: width - 2 * this._viewportMargin,       height: height - 2 * this._viewportMargin,     };   }    /** Whether the we're dealing with an RTL context */   private _isRtl() {     return this._overlayRef.getDirection() === 'rtl';   }    /** Determines whether the overlay uses exact or flexible positioning. */   private _hasExactPosition() {     return !this._hasFlexibleDimensions || this._isPushed;   }    /** Retrieves the offset of a position along the x or y axis. */   private _getOffset(position: ConnectedPosition, axis: 'x' | 'y') {     if (axis === 'x') {       // We don't do something like `position['offset' + axis]` in       // order to avoid breaking minifiers that rename properties.       return position.offsetX == null ? this._offsetX : position.offsetX;     }      return position.offsetY == null ? this._offsetY : position.offsetY;   }    /** Validates that the current position match the expected values. */   private _validatePositions(): void {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       if (!this._preferredPositions.length) {         throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');       }        // TODO(crisbeto): remove these once Angular's template type       // checking is advanced enough to catch these cases.       this._preferredPositions.forEach(pair => {         validateHorizontalPosition('originX', pair.originX);         validateVerticalPosition('originY', pair.originY);         validateHorizontalPosition('overlayX', pair.overlayX);         validateVerticalPosition('overlayY', pair.overlayY);       });     }   }    /** Adds a single CSS class or an array of classes on the overlay panel. */   private _addPanelClasses(cssClasses: string | string[]) {     if (this._pane) {       coerceArray(cssClasses).forEach(cssClass => {         if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {           this._appliedPanelClasses.push(cssClass);           this._pane.classList.add(cssClass);         }       });     }   }    /** Clears the classes that the position strategy has applied from the overlay panel. */   private _clearPanelClasses() {     if (this._pane) {       this._appliedPanelClasses.forEach(cssClass => {         this._pane.classList.remove(cssClass);       });       this._appliedPanelClasses = [];     }   }    /** Returns the ClientRect of the current origin. */   private _getOriginRect(): Dimensions {     const origin = this._origin;      if (origin instanceof ElementRef) {       return origin.nativeElement.getBoundingClientRect();     }      // Check for Element so SVG elements are also supported.     if (origin instanceof Element) {       return origin.getBoundingClientRect();     }      const width = origin.width || 0;     const height = origin.height || 0;      // If the origin is a point, return a client rect as if it was a 0x0 element at the point.     return {       top: origin.y,       bottom: origin.y + height,       left: origin.x,       right: origin.x + width,       height,       width,     };   } }  /** A simple (x, y) coordinate. */ interface Point {   x: number;   y: number; }  /** Record of measurements for how an overlay (at a given position) fits into the viewport. */ interface OverlayFit {   /** Whether the overlay fits completely in the viewport. */   isCompletelyWithinViewport: boolean;    /** Whether the overlay fits in the viewport on the y-axis. */   fitsInViewportVertically: boolean;    /** Whether the overlay fits in the viewport on the x-axis. */   fitsInViewportHorizontally: boolean;    /** The total visible area (in px^2) of the overlay inside the viewport. */   visibleArea: number; }  /** Record of the measurements determining whether an overlay will fit in a specific position. */ interface FallbackPosition {   position: ConnectedPosition;   originPoint: Point;   overlayPoint: Point;   overlayFit: OverlayFit;   overlayRect: Dimensions; }  /** Position and size of the overlay sizing wrapper for a specific position. */ interface BoundingBoxRect {   top: number;   left: number;   bottom: number;   right: number;   height: number;   width: number; }  /** Record of measures determining how well a given position will fit with flexible dimensions. */ interface FlexibleFit {   position: ConnectedPosition;   origin: Point;   overlayRect: Dimensions;   boundingBoxRect: BoundingBoxRect; }  /** A connected position as specified by the user. */ export interface ConnectedPosition {   originX: 'start' | 'center' | 'end';   originY: 'top' | 'center' | 'bottom';    overlayX: 'start' | 'center' | 'end';   overlayY: 'top' | 'center' | 'bottom';    weight?: number;   offsetX?: number;   offsetY?: number;   panelClass?: string | string[]; }  /** Shallow-extends a stylesheet object with another stylesheet object. */ function extendStyles(   destination: CSSStyleDeclaration,   source: CSSStyleDeclaration, ): CSSStyleDeclaration {   for (let key in source) {     if (source.hasOwnProperty(key)) {       destination[key] = source[key];     }   }    return destination; }  /**  * Extracts the pixel value as a number from a value, if it's a number  * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.  */ function getPixelValue(input: number | string | null | undefined): number | null {   if (typeof input !== 'number' && input != null) {     const [value, units] = input.split(cssUnitPattern);     return !units || units === 'px' ? parseFloat(value) : null;   }    return input || null; }  /**  * Gets a version of an element's bounding `ClientRect` where all the values are rounded down to  * the nearest pixel. This allows us to account for the cases where there may be sub-pixel  * deviations in the `ClientRect` returned by the browser (e.g. when zoomed in with a percentage  * size, see #21350).  */ function getRoundedBoundingClientRect(clientRect: Dimensions): Dimensions {   return {     top: Math.floor(clientRect.top),     right: Math.floor(clientRect.right),     bottom: Math.floor(clientRect.bottom),     left: Math.floor(clientRect.left),     width: Math.floor(clientRect.width),     height: Math.floor(clientRect.height),   }; }  export const STANDARD_DROPDOWN_BELOW_POSITIONS: ConnectedPosition[] = [   {originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top'},   {originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom'},   {originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top'},   {originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom'}, ];  export const STANDARD_DROPDOWN_ADJACENT_POSITIONS: ConnectedPosition[] = [   {originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top'},   {originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom'},   {originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top'},   {originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom'}, ]; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {PositionStrategy} from './position-strategy'; import {OverlayReference} from '../overlay-reference';  /** Class to be added to the overlay pane wrapper. */ const wrapperClass = 'cdk-global-overlay-wrapper';  /**  * A strategy for positioning overlays. Using this strategy, an overlay is given an  * explicit position relative to the browser's viewport. We use flexbox, instead of  * transforms, in order to avoid issues with subpixel rendering which can cause the  * element to become blurry.  */ export class GlobalPositionStrategy implements PositionStrategy {   /** The overlay to which this strategy is attached. */   private _overlayRef: OverlayReference;   private _cssPosition = 'static';   private _topOffset = '';   private _bottomOffset = '';   private _alignItems = '';   private _xPosition = '';   private _xOffset = '';   private _width = '';   private _height = '';   private _isDisposed = false;    attach(overlayRef: OverlayReference): void {     const config = overlayRef.getConfig();      this._overlayRef = overlayRef;      if (this._width && !config.width) {       overlayRef.updateSize({width: this._width});     }      if (this._height && !config.height) {       overlayRef.updateSize({height: this._height});     }      overlayRef.hostElement.classList.add(wrapperClass);     this._isDisposed = false;   }    /**    * Sets the top position of the overlay. Clears any previously set vertical position.    * @param value New top offset.    */   top(value: string = ''): this {     this._bottomOffset = '';     this._topOffset = value;     this._alignItems = 'flex-start';     return this;   }    /**    * Sets the left position of the overlay. Clears any previously set horizontal position.    * @param value New left offset.    */   left(value: string = ''): this {     this._xOffset = value;     this._xPosition = 'left';     return this;   }    /**    * Sets the bottom position of the overlay. Clears any previously set vertical position.    * @param value New bottom offset.    */   bottom(value: string = ''): this {     this._topOffset = '';     this._bottomOffset = value;     this._alignItems = 'flex-end';     return this;   }    /**    * Sets the right position of the overlay. Clears any previously set horizontal position.    * @param value New right offset.    */   right(value: string = ''): this {     this._xOffset = value;     this._xPosition = 'right';     return this;   }    /**    * Sets the overlay to the start of the viewport, depending on the overlay direction.    * This will be to the left in LTR layouts and to the right in RTL.    * @param offset Offset from the edge of the screen.    */   start(value: string = ''): this {     this._xOffset = value;     this._xPosition = 'start';     return this;   }    /**    * Sets the overlay to the end of the viewport, depending on the overlay direction.    * This will be to the right in LTR layouts and to the left in RTL.    * @param offset Offset from the edge of the screen.    */   end(value: string = ''): this {     this._xOffset = value;     this._xPosition = 'end';     return this;   }    /**    * Sets the overlay width and clears any previously set width.    * @param value New width for the overlay    * @deprecated Pass the `width` through the `OverlayConfig`.    * @breaking-change 8.0.0    */   width(value: string = ''): this {     if (this._overlayRef) {       this._overlayRef.updateSize({width: value});     } else {       this._width = value;     }      return this;   }    /**    * Sets the overlay height and clears any previously set height.    * @param value New height for the overlay    * @deprecated Pass the `height` through the `OverlayConfig`.    * @breaking-change 8.0.0    */   height(value: string = ''): this {     if (this._overlayRef) {       this._overlayRef.updateSize({height: value});     } else {       this._height = value;     }      return this;   }    /**    * Centers the overlay horizontally with an optional offset.    * Clears any previously set horizontal position.    *    * @param offset Overlay offset from the horizontal center.    */   centerHorizontally(offset: string = ''): this {     this.left(offset);     this._xPosition = 'center';     return this;   }    /**    * Centers the overlay vertically with an optional offset.    * Clears any previously set vertical position.    *    * @param offset Overlay offset from the vertical center.    */   centerVertically(offset: string = ''): this {     this.top(offset);     this._alignItems = 'center';     return this;   }    /**    * Apply the position to the element.    * @docs-private    */   apply(): void {     // Since the overlay ref applies the strategy asynchronously, it could     // have been disposed before it ends up being applied. If that is the     // case, we shouldn't do anything.     if (!this._overlayRef || !this._overlayRef.hasAttached()) {       return;     }      const styles = this._overlayRef.overlayElement.style;     const parentStyles = this._overlayRef.hostElement.style;     const config = this._overlayRef.getConfig();     const {width, height, maxWidth, maxHeight} = config;     const shouldBeFlushHorizontally =       (width === '100%' || width === '100vw') &&       (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');     const shouldBeFlushVertically =       (height === '100%' || height === '100vh') &&       (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');     const xPosition = this._xPosition;     const xOffset = this._xOffset;     const isRtl = this._overlayRef.getConfig().direction === 'rtl';     let marginLeft = '';     let marginRight = '';     let justifyContent = '';      if (shouldBeFlushHorizontally) {       justifyContent = 'flex-start';     } else if (xPosition === 'center') {       justifyContent = 'center';        if (isRtl) {         marginRight = xOffset;       } else {         marginLeft = xOffset;       }     } else if (isRtl) {       if (xPosition === 'left' || xPosition === 'end') {         justifyContent = 'flex-end';         marginLeft = xOffset;       } else if (xPosition === 'right' || xPosition === 'start') {         justifyContent = 'flex-start';         marginRight = xOffset;       }     } else if (xPosition === 'left' || xPosition === 'start') {       justifyContent = 'flex-start';       marginLeft = xOffset;     } else if (xPosition === 'right' || xPosition === 'end') {       justifyContent = 'flex-end';       marginRight = xOffset;     }      styles.position = this._cssPosition;     styles.marginLeft = shouldBeFlushHorizontally ? '0' : marginLeft;     styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;     styles.marginBottom = this._bottomOffset;     styles.marginRight = shouldBeFlushHorizontally ? '0' : marginRight;     parentStyles.justifyContent = justifyContent;     parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;   }    /**    * Cleans up the DOM changes from the position strategy.    * @docs-private    */   dispose(): void {     if (this._isDisposed || !this._overlayRef) {       return;     }      const styles = this._overlayRef.overlayElement.style;     const parent = this._overlayRef.hostElement;     const parentStyles = parent.style;      parent.classList.remove(wrapperClass);     parentStyles.justifyContent =       parentStyles.alignItems =       styles.marginTop =       styles.marginBottom =       styles.marginLeft =       styles.marginRight =       styles.position =         '';      this._overlayRef = null!;     this._isDisposed = true;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Platform} from '@angular/cdk/platform'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {DOCUMENT} from '@angular/common'; import {Inject, Injectable} from '@angular/core'; import {OverlayContainer} from '../overlay-container'; import {   FlexibleConnectedPositionStrategy,   FlexibleConnectedPositionStrategyOrigin, } from './flexible-connected-position-strategy'; import {GlobalPositionStrategy} from './global-position-strategy';  /** Builder for overlay position strategy. */ @Injectable({providedIn: 'root'}) export class OverlayPositionBuilder {   constructor(     private _viewportRuler: ViewportRuler,     @Inject(DOCUMENT) private _document: any,     private _platform: Platform,     private _overlayContainer: OverlayContainer,   ) {}    /**    * Creates a global position strategy.    */   global(): GlobalPositionStrategy {     return new GlobalPositionStrategy();   }    /**    * Creates a flexible position strategy.    * @param origin Origin relative to which to position the overlay.    */   flexibleConnectedTo(     origin: FlexibleConnectedPositionStrategyOrigin,   ): FlexibleConnectedPositionStrategy {     return new FlexibleConnectedPositionStrategy(       origin,       this._viewportRuler,       this._document,       this._platform,       this._overlayContainer,     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, OnDestroy} from '@angular/core'; import {OverlayReference} from '../overlay-reference';  /**  * Service for dispatching events that land on the body to appropriate overlay ref,  * if any. It maintains a list of attached overlays to determine best suited overlay based  * on event target and order of overlay opens.  */ @Injectable({providedIn: 'root'}) export abstract class BaseOverlayDispatcher implements OnDestroy {   /** Currently attached overlays in the order they were attached. */   _attachedOverlays: OverlayReference[] = [];    protected _document: Document;   protected _isAttached: boolean;    constructor(@Inject(DOCUMENT) document: any) {     this._document = document;   }    ngOnDestroy(): void {     this.detach();   }    /** Add a new overlay to the list of attached overlay refs. */   add(overlayRef: OverlayReference): void {     // Ensure that we don't get the same overlay multiple times.     this.remove(overlayRef);     this._attachedOverlays.push(overlayRef);   }    /** Remove an overlay from the list of attached overlay refs. */   remove(overlayRef: OverlayReference): void {     const index = this._attachedOverlays.indexOf(overlayRef);      if (index > -1) {       this._attachedOverlays.splice(index, 1);     }      // Remove the global listener once there are no more overlays.     if (this._attachedOverlays.length === 0) {       this.detach();     }   }    /** Detaches the global event listener. */   protected abstract detach(): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, NgZone, Optional} from '@angular/core'; import {OverlayReference} from '../overlay-reference'; import {BaseOverlayDispatcher} from './base-overlay-dispatcher';  /**  * Service for dispatching keyboard events that land on the body to appropriate overlay ref,  * if any. It maintains a list of attached overlays to determine best suited overlay based  * on event target and order of overlay opens.  */ @Injectable({providedIn: 'root'}) export class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {   constructor(     @Inject(DOCUMENT) document: any,     /** @breaking-change 14.0.0 _ngZone will be required. */     @Optional() private _ngZone?: NgZone,   ) {     super(document);   }    /** Add a new overlay to the list of attached overlay refs. */   override add(overlayRef: OverlayReference): void {     super.add(overlayRef);      // Lazily start dispatcher once first overlay is added     if (!this._isAttached) {       /** @breaking-change 14.0.0 _ngZone will be required. */       if (this._ngZone) {         this._ngZone.runOutsideAngular(() =>           this._document.body.addEventListener('keydown', this._keydownListener),         );       } else {         this._document.body.addEventListener('keydown', this._keydownListener);       }       this._isAttached = true;     }   }    /** Detaches the global keyboard event listener. */   protected detach() {     if (this._isAttached) {       this._document.body.removeEventListener('keydown', this._keydownListener);       this._isAttached = false;     }   }    /** Keyboard event listener that will be attached to the body. */   private _keydownListener = (event: KeyboardEvent) => {     const overlays = this._attachedOverlays;      for (let i = overlays.length - 1; i > -1; i--) {       // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.       // We want to target the most recent overlay, rather than trying to match where the event came       // from, because some components might open an overlay, but keep focus on a trigger element       // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,       // because we don't want overlays that don't handle keyboard events to block the ones below       // them that do.       if (overlays[i]._keydownEvents.observers.length > 0) {         const keydownEvents = overlays[i]._keydownEvents;         /** @breaking-change 14.0.0 _ngZone will be required. */         if (this._ngZone) {           this._ngZone.run(() => keydownEvents.next(event));         } else {           keydownEvents.next(event);         }         break;       }     }   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, NgZone, Optional} from '@angular/core'; import {OverlayReference} from '../overlay-reference'; import {Platform, _getEventTarget} from '@angular/cdk/platform'; import {BaseOverlayDispatcher} from './base-overlay-dispatcher';  /**  * Service for dispatching mouse click events that land on the body to appropriate overlay ref,  * if any. It maintains a list of attached overlays to determine best suited overlay based  * on event target and order of overlay opens.  */ @Injectable({providedIn: 'root'}) export class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {   private _cursorOriginalValue: string;   private _cursorStyleIsSet = false;   private _pointerDownEventTarget: EventTarget | null;    constructor(     @Inject(DOCUMENT) document: any,     private _platform: Platform,     /** @breaking-change 14.0.0 _ngZone will be required. */     @Optional() private _ngZone?: NgZone,   ) {     super(document);   }    /** Add a new overlay to the list of attached overlay refs. */   override add(overlayRef: OverlayReference): void {     super.add(overlayRef);      // Safari on iOS does not generate click events for non-interactive     // elements. However, we want to receive a click for any element outside     // the overlay. We can force a \"clickable\" state by setting     // `cursor: pointer` on the document body. See:     // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile     // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html     if (!this._isAttached) {       const body = this._document.body;        /** @breaking-change 14.0.0 _ngZone will be required. */       if (this._ngZone) {         this._ngZone.runOutsideAngular(() => this._addEventListeners(body));       } else {         this._addEventListeners(body);       }        // click event is not fired on iOS. To make element \"clickable\" we are       // setting the cursor to pointer       if (this._platform.IOS && !this._cursorStyleIsSet) {         this._cursorOriginalValue = body.style.cursor;         body.style.cursor = 'pointer';         this._cursorStyleIsSet = true;       }        this._isAttached = true;     }   }    /** Detaches the global keyboard event listener. */   protected detach() {     if (this._isAttached) {       const body = this._document.body;       body.removeEventListener('pointerdown', this._pointerDownListener, true);       body.removeEventListener('click', this._clickListener, true);       body.removeEventListener('auxclick', this._clickListener, true);       body.removeEventListener('contextmenu', this._clickListener, true);       if (this._platform.IOS && this._cursorStyleIsSet) {         body.style.cursor = this._cursorOriginalValue;         this._cursorStyleIsSet = false;       }       this._isAttached = false;     }   }    private _addEventListeners(body: HTMLElement): void {     body.addEventListener('pointerdown', this._pointerDownListener, true);     body.addEventListener('click', this._clickListener, true);     body.addEventListener('auxclick', this._clickListener, true);     body.addEventListener('contextmenu', this._clickListener, true);   }    /** Store pointerdown event target to track origin of click. */   private _pointerDownListener = (event: PointerEvent) => {     this._pointerDownEventTarget = _getEventTarget(event);   };    /** Click event listener that will be attached to the body propagate phase. */   private _clickListener = (event: MouseEvent) => {     const target = _getEventTarget(event);     // In case of a click event, we want to check the origin of the click     // (e.g. in case where a user starts a click inside the overlay and     // releases the click outside of it).     // This is done by using the event target of the preceding pointerdown event.     // Every click event caused by a pointer device has a preceding pointerdown     // event, unless the click was programmatically triggered (e.g. in a unit test).     const origin =       event.type === 'click' && this._pointerDownEventTarget         ? this._pointerDownEventTarget         : target;     // Reset the stored pointerdown event target, to avoid having it interfere     // in subsequent events.     this._pointerDownEventTarget = null;      // We copy the array because the original may be modified asynchronously if the     // outsidePointerEvents listener decides to detach overlays resulting in index errors inside     // the for loop.     const overlays = this._attachedOverlays.slice();      // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.     // We want to target all overlays for which the click could be considered as outside click.     // As soon as we reach an overlay for which the click is not outside click we break off     // the loop.     for (let i = overlays.length - 1; i > -1; i--) {       const overlayRef = overlays[i];       if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {         continue;       }        // If it's a click inside the overlay, just break - we should do nothing       // If it's an outside click (both origin and target of the click) dispatch the mouse event,       // and proceed with the next overlay       if (         overlayRef.overlayElement.contains(target as Node) ||         overlayRef.overlayElement.contains(origin as Node)       ) {         break;       }        const outsidePointerEvents = overlayRef._outsidePointerEvents;       /** @breaking-change 14.0.0 _ngZone will be required. */       if (this._ngZone) {         this._ngZone.run(() => outsidePointerEvents.next(event));       } else {         outsidePointerEvents.next(event);       }     }   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {DomPortalOutlet} from '@angular/cdk/portal'; import {DOCUMENT, Location} from '@angular/common'; import {   ApplicationRef,   ComponentFactoryResolver,   Inject,   Injectable,   Injector,   NgZone,   ANIMATION_MODULE_TYPE,   Optional, } from '@angular/core'; import {OverlayKeyboardDispatcher} from './dispatchers/overlay-keyboard-dispatcher'; import {OverlayOutsideClickDispatcher} from './dispatchers/overlay-outside-click-dispatcher'; import {OverlayConfig} from './overlay-config'; import {OverlayContainer} from './overlay-container'; import {OverlayRef} from './overlay-ref'; import {OverlayPositionBuilder} from './position/overlay-position-builder'; import {ScrollStrategyOptions} from './scroll/index';  /** Next overlay unique ID. */ let nextUniqueId = 0;  // Note that Overlay is *not* scoped to the app root because of the ComponentFactoryResolver // which needs to be different depending on where OverlayModule is imported.  /**  * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be  * used as a low-level building block for other components. Dialogs, tooltips, menus,  * selects, etc. can all be built using overlays. The service should primarily be used by authors  * of re-usable components rather than developers building end-user applications.  *  * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.  */ @Injectable({providedIn: 'root'}) export class Overlay {   private _appRef: ApplicationRef;    constructor(     /** Scrolling strategies that can be used when creating an overlay. */     public scrollStrategies: ScrollStrategyOptions,     private _overlayContainer: OverlayContainer,     private _componentFactoryResolver: ComponentFactoryResolver,     private _positionBuilder: OverlayPositionBuilder,     private _keyboardDispatcher: OverlayKeyboardDispatcher,     private _injector: Injector,     private _ngZone: NgZone,     @Inject(DOCUMENT) private _document: any,     private _directionality: Directionality,     private _location: Location,     private _outsideClickDispatcher: OverlayOutsideClickDispatcher,     @Inject(ANIMATION_MODULE_TYPE) @Optional() private _animationsModuleType?: string,   ) {}    /**    * Creates an overlay.    * @param config Configuration applied to the overlay.    * @returns Reference to the created overlay.    */   create(config?: OverlayConfig): OverlayRef {     const host = this._createHostElement();     const pane = this._createPaneElement(host);     const portalOutlet = this._createPortalOutlet(pane);     const overlayConfig = new OverlayConfig(config);      overlayConfig.direction = overlayConfig.direction || this._directionality.value;      return new OverlayRef(       portalOutlet,       host,       pane,       overlayConfig,       this._ngZone,       this._keyboardDispatcher,       this._document,       this._location,       this._outsideClickDispatcher,       this._animationsModuleType === 'NoopAnimations',     );   }    /**    * Gets a position builder that can be used, via fluent API,    * to construct and configure a position strategy.    * @returns An overlay position builder.    */   position(): OverlayPositionBuilder {     return this._positionBuilder;   }    /**    * Creates the DOM element for an overlay and appends it to the overlay container.    * @returns Newly-created pane element    */   private _createPaneElement(host: HTMLElement): HTMLElement {     const pane = this._document.createElement('div');      pane.id = `cdk-overlay-${nextUniqueId++}`;     pane.classList.add('cdk-overlay-pane');     host.appendChild(pane);      return pane;   }    /**    * Creates the host element that wraps around an overlay    * and can be used for advanced positioning.    * @returns Newly-create host element.    */   private _createHostElement(): HTMLElement {     const host = this._document.createElement('div');     this._overlayContainer.getContainerElement().appendChild(host);     return host;   }    /**    * Create a DomPortalOutlet into which the overlay content can be loaded.    * @param pane The DOM element to turn into a portal outlet.    * @returns A portal outlet for the given DOM element.    */   private _createPortalOutlet(pane: HTMLElement): DomPortalOutlet {     // We have to resolve the ApplicationRef later in order to allow people     // to use overlay-based providers during app initialization.     if (!this._appRef) {       this._appRef = this._injector.get<ApplicationRef>(ApplicationRef);     }      return new DomPortalOutlet(       pane,       this._componentFactoryResolver,       this._appRef,       this._injector,       this._document,     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Direction, Directionality} from '@angular/cdk/bidi'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes'; import {TemplatePortal} from '@angular/cdk/portal'; import {   Directive,   ElementRef,   EventEmitter,   Inject,   InjectionToken,   Input,   OnChanges,   OnDestroy,   Optional,   Output,   SimpleChanges,   TemplateRef,   ViewContainerRef, } from '@angular/core'; import {Subscription} from 'rxjs'; import {takeWhile} from 'rxjs/operators'; import {Overlay} from './overlay'; import {OverlayConfig} from './overlay-config'; import {OverlayRef} from './overlay-ref'; import {ConnectedOverlayPositionChange} from './position/connected-position'; import {   ConnectedPosition,   FlexibleConnectedPositionStrategy,   FlexibleConnectedPositionStrategyOrigin, } from './position/flexible-connected-position-strategy'; import {RepositionScrollStrategy, ScrollStrategy} from './scroll/index';  /** Default set of positions for the overlay. Follows the behavior of a dropdown. */ const defaultPositionList: ConnectedPosition[] = [   {     originX: 'start',     originY: 'bottom',     overlayX: 'start',     overlayY: 'top',   },   {     originX: 'start',     originY: 'top',     overlayX: 'start',     overlayY: 'bottom',   },   {     originX: 'end',     originY: 'top',     overlayX: 'end',     overlayY: 'bottom',   },   {     originX: 'end',     originY: 'bottom',     overlayX: 'end',     overlayY: 'top',   }, ];  /** Injection token that determines the scroll handling while the connected overlay is open. */ export const CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(   'cdk-connected-overlay-scroll-strategy', );  /**  * Directive applied to an element to make it usable as an origin for an Overlay using a  * ConnectedPositionStrategy.  */ @Directive({   selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',   exportAs: 'cdkOverlayOrigin',   standalone: true, }) export class CdkOverlayOrigin {   constructor(     /** Reference to the element on which the directive is applied. */     public elementRef: ElementRef,   ) {} }  /**  * Directive to facilitate declarative creation of an  * Overlay using a FlexibleConnectedPositionStrategy.  */ @Directive({   selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',   exportAs: 'cdkConnectedOverlay',   standalone: true, }) export class CdkConnectedOverlay implements OnDestroy, OnChanges {   private _overlayRef: OverlayRef;   private _templatePortal: TemplatePortal;   private _hasBackdrop = false;   private _lockPosition = false;   private _growAfterOpen = false;   private _flexibleDimensions = false;   private _push = false;   private _backdropSubscription = Subscription.EMPTY;   private _attachSubscription = Subscription.EMPTY;   private _detachSubscription = Subscription.EMPTY;   private _positionSubscription = Subscription.EMPTY;   private _offsetX: number;   private _offsetY: number;   private _position: FlexibleConnectedPositionStrategy;   private _scrollStrategyFactory: () => ScrollStrategy;    /** Origin for the connected overlay. */   @Input('cdkConnectedOverlayOrigin')   origin: CdkOverlayOrigin | FlexibleConnectedPositionStrategyOrigin;    /** Registered connected position pairs. */   @Input('cdkConnectedOverlayPositions') positions: ConnectedPosition[];    /**    * This input overrides the positions input if specified. It lets users pass    * in arbitrary positioning strategies.    */   @Input('cdkConnectedOverlayPositionStrategy') positionStrategy: FlexibleConnectedPositionStrategy;    /** The offset in pixels for the overlay connection point on the x-axis */   @Input('cdkConnectedOverlayOffsetX')   get offsetX(): number {     return this._offsetX;   }   set offsetX(offsetX: number) {     this._offsetX = offsetX;      if (this._position) {       this._updatePositionStrategy(this._position);     }   }    /** The offset in pixels for the overlay connection point on the y-axis */   @Input('cdkConnectedOverlayOffsetY')   get offsetY() {     return this._offsetY;   }   set offsetY(offsetY: number) {     this._offsetY = offsetY;      if (this._position) {       this._updatePositionStrategy(this._position);     }   }    /** The width of the overlay panel. */   @Input('cdkConnectedOverlayWidth') width: number | string;    /** The height of the overlay panel. */   @Input('cdkConnectedOverlayHeight') height: number | string;    /** The min width of the overlay panel. */   @Input('cdkConnectedOverlayMinWidth') minWidth: number | string;    /** The min height of the overlay panel. */   @Input('cdkConnectedOverlayMinHeight') minHeight: number | string;    /** The custom class to be set on the backdrop element. */   @Input('cdkConnectedOverlayBackdropClass') backdropClass: string | string[];    /** The custom class to add to the overlay pane element. */   @Input('cdkConnectedOverlayPanelClass') panelClass: string | string[];    /** Margin between the overlay and the viewport edges. */   @Input('cdkConnectedOverlayViewportMargin') viewportMargin: number = 0;    /** Strategy to be used when handling scroll events while the overlay is open. */   @Input('cdkConnectedOverlayScrollStrategy') scrollStrategy: ScrollStrategy;    /** Whether the overlay is open. */   @Input('cdkConnectedOverlayOpen') open: boolean = false;    /** Whether the overlay can be closed by user interaction. */   @Input('cdkConnectedOverlayDisableClose') disableClose: boolean = false;    /** CSS selector which to set the transform origin. */   @Input('cdkConnectedOverlayTransformOriginOn') transformOriginSelector: string;    /** Whether or not the overlay should attach a backdrop. */   @Input('cdkConnectedOverlayHasBackdrop')   get hasBackdrop(): boolean {     return this._hasBackdrop;   }   set hasBackdrop(value: BooleanInput) {     this._hasBackdrop = coerceBooleanProperty(value);   }    /** Whether or not the overlay should be locked when scrolling. */   @Input('cdkConnectedOverlayLockPosition')   get lockPosition(): boolean {     return this._lockPosition;   }   set lockPosition(value: BooleanInput) {     this._lockPosition = coerceBooleanProperty(value);   }    /** Whether the overlay's width and height can be constrained to fit within the viewport. */   @Input('cdkConnectedOverlayFlexibleDimensions')   get flexibleDimensions(): boolean {     return this._flexibleDimensions;   }   set flexibleDimensions(value: BooleanInput) {     this._flexibleDimensions = coerceBooleanProperty(value);   }    /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */   @Input('cdkConnectedOverlayGrowAfterOpen')   get growAfterOpen(): boolean {     return this._growAfterOpen;   }   set growAfterOpen(value: BooleanInput) {     this._growAfterOpen = coerceBooleanProperty(value);   }    /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */   @Input('cdkConnectedOverlayPush')   get push(): boolean {     return this._push;   }   set push(value: BooleanInput) {     this._push = coerceBooleanProperty(value);   }    /** Event emitted when the backdrop is clicked. */   @Output() readonly backdropClick = new EventEmitter<MouseEvent>();    /** Event emitted when the position has changed. */   @Output() readonly positionChange = new EventEmitter<ConnectedOverlayPositionChange>();    /** Event emitted when the overlay has been attached. */   @Output() readonly attach = new EventEmitter<void>();    /** Event emitted when the overlay has been detached. */   @Output() readonly detach = new EventEmitter<void>();    /** Emits when there are keyboard events that are targeted at the overlay. */   @Output() readonly overlayKeydown = new EventEmitter<KeyboardEvent>();    /** Emits when there are mouse outside click events that are targeted at the overlay. */   @Output() readonly overlayOutsideClick = new EventEmitter<MouseEvent>();    // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.    constructor(     private _overlay: Overlay,     templateRef: TemplateRef<any>,     viewContainerRef: ViewContainerRef,     @Inject(CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY) scrollStrategyFactory: any,     @Optional() private _dir: Directionality,   ) {     this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);     this._scrollStrategyFactory = scrollStrategyFactory;     this.scrollStrategy = this._scrollStrategyFactory();   }    /** The associated overlay reference. */   get overlayRef(): OverlayRef {     return this._overlayRef;   }    /** The element's layout direction. */   get dir(): Direction {     return this._dir ? this._dir.value : 'ltr';   }    ngOnDestroy() {     this._attachSubscription.unsubscribe();     this._detachSubscription.unsubscribe();     this._backdropSubscription.unsubscribe();     this._positionSubscription.unsubscribe();      if (this._overlayRef) {       this._overlayRef.dispose();     }   }    ngOnChanges(changes: SimpleChanges) {     if (this._position) {       this._updatePositionStrategy(this._position);       this._overlayRef.updateSize({         width: this.width,         minWidth: this.minWidth,         height: this.height,         minHeight: this.minHeight,       });        if (changes['origin'] && this.open) {         this._position.apply();       }     }      if (changes['open']) {       this.open ? this._attachOverlay() : this._detachOverlay();     }   }    /** Creates an overlay */   private _createOverlay() {     if (!this.positions || !this.positions.length) {       this.positions = defaultPositionList;     }      const overlayRef = (this._overlayRef = this._overlay.create(this._buildConfig()));     this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());     this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());     overlayRef.keydownEvents().subscribe((event: KeyboardEvent) => {       this.overlayKeydown.next(event);        if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {         event.preventDefault();         this._detachOverlay();       }     });      this._overlayRef.outsidePointerEvents().subscribe((event: MouseEvent) => {       this.overlayOutsideClick.next(event);     });   }    /** Builds the overlay config based on the directive's inputs */   private _buildConfig(): OverlayConfig {     const positionStrategy = (this._position =       this.positionStrategy || this._createPositionStrategy());     const overlayConfig = new OverlayConfig({       direction: this._dir,       positionStrategy,       scrollStrategy: this.scrollStrategy,       hasBackdrop: this.hasBackdrop,     });      if (this.width || this.width === 0) {       overlayConfig.width = this.width;     }      if (this.height || this.height === 0) {       overlayConfig.height = this.height;     }      if (this.minWidth || this.minWidth === 0) {       overlayConfig.minWidth = this.minWidth;     }      if (this.minHeight || this.minHeight === 0) {       overlayConfig.minHeight = this.minHeight;     }      if (this.backdropClass) {       overlayConfig.backdropClass = this.backdropClass;     }      if (this.panelClass) {       overlayConfig.panelClass = this.panelClass;     }      return overlayConfig;   }    /** Updates the state of a position strategy, based on the values of the directive inputs. */   private _updatePositionStrategy(positionStrategy: FlexibleConnectedPositionStrategy) {     const positions: ConnectedPosition[] = this.positions.map(currentPosition => ({       originX: currentPosition.originX,       originY: currentPosition.originY,       overlayX: currentPosition.overlayX,       overlayY: currentPosition.overlayY,       offsetX: currentPosition.offsetX || this.offsetX,       offsetY: currentPosition.offsetY || this.offsetY,       panelClass: currentPosition.panelClass || undefined,     }));      return positionStrategy       .setOrigin(this._getFlexibleConnectedPositionStrategyOrigin())       .withPositions(positions)       .withFlexibleDimensions(this.flexibleDimensions)       .withPush(this.push)       .withGrowAfterOpen(this.growAfterOpen)       .withViewportMargin(this.viewportMargin)       .withLockedPosition(this.lockPosition)       .withTransformOriginOn(this.transformOriginSelector);   }    /** Returns the position strategy of the overlay to be set on the overlay config */   private _createPositionStrategy(): FlexibleConnectedPositionStrategy {     const strategy = this._overlay       .position()       .flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());     this._updatePositionStrategy(strategy);     return strategy;   }    private _getFlexibleConnectedPositionStrategyOrigin(): FlexibleConnectedPositionStrategyOrigin {     if (this.origin instanceof CdkOverlayOrigin) {       return this.origin.elementRef;     } else {       return this.origin;     }   }    /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */   private _attachOverlay() {     if (!this._overlayRef) {       this._createOverlay();     } else {       // Update the overlay size, in case the directive's inputs have changed       this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;     }      if (!this._overlayRef.hasAttached()) {       this._overlayRef.attach(this._templatePortal);     }      if (this.hasBackdrop) {       this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {         this.backdropClick.emit(event);       });     } else {       this._backdropSubscription.unsubscribe();     }      this._positionSubscription.unsubscribe();      // Only subscribe to `positionChanges` if requested, because putting     // together all the information for it can be expensive.     if (this.positionChange.observers.length > 0) {       this._positionSubscription = this._position.positionChanges         .pipe(takeWhile(() => this.positionChange.observers.length > 0))         .subscribe(position => {           this.positionChange.emit(position);            if (this.positionChange.observers.length === 0) {             this._positionSubscription.unsubscribe();           }         });     }   }    /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */   private _detachOverlay() {     if (this._overlayRef) {       this._overlayRef.detach();     }      this._backdropSubscription.unsubscribe();     this._positionSubscription.unsubscribe();   } }  /** @docs-private */ export function CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(   overlay: Overlay, ): () => RepositionScrollStrategy {   return () => overlay.scrollStrategies.reposition(); }  /** @docs-private */ export const CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {   provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,   deps: [Overlay],   useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY, }; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BidiModule} from '@angular/cdk/bidi'; import {PortalModule} from '@angular/cdk/portal'; import {ScrollingModule} from '@angular/cdk/scrolling'; import {NgModule} from '@angular/core'; import {Overlay} from './overlay'; import {   CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER,   CdkConnectedOverlay,   CdkOverlayOrigin, } from './overlay-directives';  @NgModule({   imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin],   exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],   providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER], }) export class OverlayModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export {OverlayOutsideClickDispatcher} from './overlay-outside-click-dispatcher'; export {OverlayKeyboardDispatcher} from './overlay-keyboard-dispatcher'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable, Inject, OnDestroy} from '@angular/core'; import {OverlayContainer} from './overlay-container'; import {DOCUMENT} from '@angular/common'; import {Platform} from '@angular/cdk/platform';  /**  * Alternative to OverlayContainer that supports correct displaying of overlay elements in  * Fullscreen mode  * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen  *  * Should be provided in the root component.  */ @Injectable({providedIn: 'root'}) export class FullscreenOverlayContainer extends OverlayContainer implements OnDestroy {   private _fullScreenEventName: string | undefined;   private _fullScreenListener: () => void;    constructor(@Inject(DOCUMENT) _document: any, platform: Platform) {     super(_document, platform);   }    override ngOnDestroy() {     super.ngOnDestroy();      if (this._fullScreenEventName && this._fullScreenListener) {       this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);     }   }    protected override _createContainer(): void {     super._createContainer();     this._adjustParentForFullscreenChange();     this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());   }    private _adjustParentForFullscreenChange(): void {     if (!this._containerElement) {       return;     }      const fullscreenElement = this.getFullscreenElement();     const parent = fullscreenElement || this._document.body;     parent.appendChild(this._containerElement);   }    private _addFullscreenChangeListener(fn: () => void) {     const eventName = this._getEventName();      if (eventName) {       if (this._fullScreenListener) {         this._document.removeEventListener(eventName, this._fullScreenListener);       }        this._document.addEventListener(eventName, fn);       this._fullScreenListener = fn;     }   }    private _getEventName(): string | undefined {     if (!this._fullScreenEventName) {       const _document = this._document as any;        if (_document.fullscreenEnabled) {         this._fullScreenEventName = 'fullscreenchange';       } else if (_document.webkitFullscreenEnabled) {         this._fullScreenEventName = 'webkitfullscreenchange';       } else if (_document.mozFullScreenEnabled) {         this._fullScreenEventName = 'mozfullscreenchange';       } else if (_document.msFullscreenEnabled) {         this._fullScreenEventName = 'MSFullscreenChange';       }     }      return this._fullScreenEventName;   }    /**    * When the page is put into fullscreen mode, a specific element is specified.    * Only that element and its children are visible when in fullscreen mode.    */   getFullscreenElement(): Element {     const _document = this._document as any;      return (       _document.fullscreenElement ||       _document.webkitFullscreenElement ||       _document.mozFullScreenElement ||       _document.msFullscreenElement ||       null     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './overlay-config'; export * from './position/connected-position'; export * from './scroll/index'; export * from './overlay-module'; export * from './dispatchers/index'; export {Overlay} from './overlay'; export {OverlayContainer} from './overlay-container'; export {CdkOverlayOrigin, CdkConnectedOverlay} from './overlay-directives'; export {FullscreenOverlayContainer} from './fullscreen-overlay-container'; export {OverlayRef, OverlaySizeConfig} from './overlay-ref'; export {ViewportRuler} from '@angular/cdk/scrolling'; export {ComponentType} from '@angular/cdk/portal'; export {OverlayPositionBuilder} from './position/overlay-position-builder';  // Export pre-defined position strategies and interface to build custom ones. export {PositionStrategy} from './position/position-strategy'; export {GlobalPositionStrategy} from './position/global-position-strategy'; export {   ConnectedPosition,   FlexibleConnectedPositionStrategy,   FlexibleConnectedPositionStrategyOrigin,   STANDARD_DROPDOWN_ADJACENT_POSITIONS,   STANDARD_DROPDOWN_BELOW_POSITIONS, } from './position/flexible-connected-position-strategy'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["i1","i2","i3.OverlayContainer","i1.ScrollStrategyOptions","i2.OverlayContainer","i3.OverlayPositionBuilder","i4.OverlayKeyboardDispatcher","i7.OverlayOutsideClickDispatcher"],"mappings":"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"}
-------------------- SECTION 220 --------------------
{"version":3,"file":"menu.mjs","sources":["../../../../../../src/cdk/menu/menu-group.ts","../../../../../../src/cdk/menu/menu-interface.ts","../../../../../../src/cdk/menu/menu-stack.ts","../../../../../../src/cdk/menu/menu-trigger-base.ts","../../../../../../src/cdk/menu/menu-errors.ts","../../../../../../src/cdk/menu/menu-aim.ts","../../../../../../src/cdk/menu/menu-trigger.ts","../../../../../../src/cdk/menu/menu-item.ts","../../../../../../src/cdk/menu/pointer-focus-tracker.ts","../../../../../../src/cdk/menu/menu-base.ts","../../../../../../src/cdk/menu/menu.ts","../../../../../../src/cdk/menu/menu-bar.ts","../../../../../../src/cdk/menu/menu-item-selectable.ts","../../../../../../src/cdk/menu/menu-item-radio.ts","../../../../../../src/cdk/menu/menu-item-checkbox.ts","../../../../../../src/cdk/menu/context-menu-trigger.ts","../../../../../../src/cdk/menu/menu-module.ts","../../../../../../src/cdk/menu/public-api.ts","../../../../../../src/cdk/menu/index.ts","../../../../../../src/cdk/menu/menu_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive} from '@angular/core'; import {UniqueSelectionDispatcher} from '@angular/cdk/collections';  /**  * A grouping container for `CdkMenuItemRadio` instances, similar to a `role=\"radiogroup\"` element.  */ @Directive({   selector: '[cdkMenuGroup]',   exportAs: 'cdkMenuGroup',   standalone: true,   host: {     'role': 'group',     'class': 'cdk-menu-group',   },   providers: [{provide: UniqueSelectionDispatcher, useClass: UniqueSelectionDispatcher}], }) export class CdkMenuGroup {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core'; import {MenuStackItem} from './menu-stack'; import {FocusOrigin} from '@angular/cdk/a11y';  /** Injection token used to return classes implementing the Menu interface */ export const CDK_MENU = new InjectionToken<Menu>('cdk-menu');  /** Interface which specifies Menu operations and used to break circular dependency issues */ export interface Menu extends MenuStackItem {   /** The id of the menu's host element. */   id: string;    /** The menu's native DOM host element. */   nativeElement: HTMLElement;    /** The direction items in the menu flow. */   readonly orientation: 'horizontal' | 'vertical';    /** Place focus on the first MenuItem in the menu. */   focusFirstItem(focusOrigin: FocusOrigin): void;    /** Place focus on the last MenuItem in the menu. */   focusLastItem(focusOrigin: FocusOrigin): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, Injectable, InjectionToken, Optional, SkipSelf} from '@angular/core'; import {Observable, Subject} from 'rxjs'; import {debounceTime, distinctUntilChanged, startWith} from 'rxjs/operators';  /** The relative item in the inline menu to focus after closing all popup menus. */ export const enum FocusNext {   nextItem,   previousItem,   currentItem, }  /** A single item (menu) in the menu stack. */ export interface MenuStackItem {   /** A reference to the menu stack this menu stack item belongs to. */   menuStack?: MenuStack; }  /** Injection token used for an implementation of MenuStack. */ export const MENU_STACK = new InjectionToken<MenuStack>('cdk-menu-stack');  /** Provider that provides the parent menu stack, or a new menu stack if there is no parent one. */ export const PARENT_OR_NEW_MENU_STACK_PROVIDER = {   provide: MENU_STACK,   deps: [[new Optional(), new SkipSelf(), new Inject(MENU_STACK)]],   useFactory: (parentMenuStack?: MenuStack) => parentMenuStack || new MenuStack(), };  /** Provider that provides the parent menu stack, or a new inline menu stack if there is no parent one. */ export const PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER = (   orientation: 'vertical' | 'horizontal', ) => ({   provide: MENU_STACK,   deps: [[new Optional(), new SkipSelf(), new Inject(MENU_STACK)]],   useFactory: (parentMenuStack?: MenuStack) => parentMenuStack || MenuStack.inline(orientation), });  /** Options that can be provided to the close or closeAll methods. */ export interface CloseOptions {   /** The element to focus next if the close operation causes the menu stack to become empty. */   focusNextOnEmpty?: FocusNext;   /** Whether to focus the parent trigger after closing the menu. */   focusParentTrigger?: boolean; }  /** Event dispatched when a menu is closed. */ export interface MenuStackCloseEvent {   /** The menu being closed. */   item: MenuStackItem;   /** Whether to focus the parent trigger after closing the menu. */   focusParentTrigger?: boolean; }  /** The next available menu stack ID. */ let nextId = 0;  /**  * MenuStack allows subscribers to listen for close events (when a MenuStackItem is popped off  * of the stack) in order to perform closing actions. Upon the MenuStack being empty it emits  * from the `empty` observable specifying the next focus action which the listener should perform  * as requested by the closer.  */ @Injectable() export class MenuStack {   /** The ID of this menu stack. */   readonly id = `${nextId++}`;    /** All MenuStackItems tracked by this MenuStack. */   private readonly _elements: MenuStackItem[] = [];    /** Emits the element which was popped off of the stack when requested by a closer. */   private readonly _close = new Subject<MenuStackCloseEvent>();    /** Emits once the MenuStack has become empty after popping off elements. */   private readonly _empty = new Subject<FocusNext | undefined>();    /** Emits whether any menu in the menu stack has focus. */   private readonly _hasFocus = new Subject<boolean>();    /** Observable which emits the MenuStackItem which has been requested to close. */   readonly closed: Observable<MenuStackCloseEvent> = this._close;    /** Observable which emits whether any menu in the menu stack has focus. */   readonly hasFocus: Observable<boolean> = this._hasFocus.pipe(     startWith(false),     debounceTime(0),     distinctUntilChanged(),   );    /**    * Observable which emits when the MenuStack is empty after popping off the last element. It    * emits a FocusNext event which specifies the action the closer has requested the listener    * perform.    */   readonly emptied: Observable<FocusNext | undefined> = this._empty;    /**    * Whether the inline menu associated with this menu stack is vertical or horizontal.    * `null` indicates there is no inline menu associated with this menu stack.    */   private _inlineMenuOrientation: 'vertical' | 'horizontal' | null = null;    /** Creates a menu stack that originates from an inline menu. */   static inline(orientation: 'vertical' | 'horizontal') {     const stack = new MenuStack();     stack._inlineMenuOrientation = orientation;     return stack;   }    /**    * Adds an item to the menu stack.    * @param menu the MenuStackItem to put on the stack.    */   push(menu: MenuStackItem) {     this._elements.push(menu);   }    /**    * Pop items off of the stack up to and including `lastItem` and emit each on the close    * observable. If the stack is empty or `lastItem` is not on the stack it does nothing.    * @param lastItem the last item to pop off the stack.    * @param options Options that configure behavior on close.    */   close(lastItem: MenuStackItem, options?: CloseOptions) {     const {focusNextOnEmpty, focusParentTrigger} = {...options};     if (this._elements.indexOf(lastItem) >= 0) {       let poppedElement;       do {         poppedElement = this._elements.pop()!;         this._close.next({item: poppedElement, focusParentTrigger});       } while (poppedElement !== lastItem);        if (this.isEmpty()) {         this._empty.next(focusNextOnEmpty);       }     }   }    /**    * Pop items off of the stack up to but excluding `lastItem` and emit each on the close    * observable. If the stack is empty or `lastItem` is not on the stack it does nothing.    * @param lastItem the element which should be left on the stack    * @return whether or not an item was removed from the stack    */   closeSubMenuOf(lastItem: MenuStackItem) {     let removed = false;     if (this._elements.indexOf(lastItem) >= 0) {       removed = this.peek() !== lastItem;       while (this.peek() !== lastItem) {         this._close.next({item: this._elements.pop()!});       }     }     return removed;   }    /**    * Pop off all MenuStackItems and emit each one on the `close` observable one by one.    * @param options Options that configure behavior on close.    */   closeAll(options?: CloseOptions) {     const {focusNextOnEmpty, focusParentTrigger} = {...options};     if (!this.isEmpty()) {       while (!this.isEmpty()) {         const menuStackItem = this._elements.pop();         if (menuStackItem) {           this._close.next({item: menuStackItem, focusParentTrigger});         }       }       this._empty.next(focusNextOnEmpty);     }   }    /** Return true if this stack is empty. */   isEmpty() {     return !this._elements.length;   }    /** Return the length of the stack. */   length() {     return this._elements.length;   }    /** Get the top most element on the stack. */   peek(): MenuStackItem | undefined {     return this._elements[this._elements.length - 1];   }    /** Whether the menu stack is associated with an inline menu. */   hasInlineMenu() {     return this._inlineMenuOrientation != null;   }    /** The orientation of the associated inline menu. */   inlineMenuOrientation() {     return this._inlineMenuOrientation;   }    /** Sets whether the menu stack contains the focused element. */   setHasFocus(hasFocus: boolean) {     this._hasFocus.next(hasFocus);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   Directive,   EventEmitter,   inject,   InjectionToken,   Injector,   OnDestroy,   TemplateRef,   ViewContainerRef, } from '@angular/core'; import {Menu} from './menu-interface'; import {MENU_STACK, MenuStack} from './menu-stack'; import {ConnectedPosition, OverlayRef} from '@angular/cdk/overlay'; import {TemplatePortal} from '@angular/cdk/portal'; import {merge, Subject} from 'rxjs';  /** Injection token used for an implementation of MenuStack. */ export const MENU_TRIGGER = new InjectionToken<CdkMenuTriggerBase>('cdk-menu-trigger');  /**  * Abstract directive that implements shared logic common to all menu triggers.  * This class can be extended to create custom menu trigger types.  */ @Directive({   host: {     '[attr.aria-controls]': 'childMenu?.id',     '[attr.data-cdk-menu-stack-id]': 'menuStack.id',   }, }) export abstract class CdkMenuTriggerBase implements OnDestroy {   /** The DI injector for this component. */   readonly injector = inject(Injector);    /** The view container ref for this component */   protected readonly viewContainerRef = inject(ViewContainerRef);    /** The menu stack in which this menu resides. */   protected readonly menuStack: MenuStack = inject(MENU_STACK);    /**    * A list of preferred menu positions to be used when constructing the    * `FlexibleConnectedPositionStrategy` for this trigger's menu.    */   menuPosition: ConnectedPosition[];    /** Emits when the attached menu is requested to open */   readonly opened: EventEmitter<void> = new EventEmitter();    /** Emits when the attached menu is requested to close */   readonly closed: EventEmitter<void> = new EventEmitter();    /** Template reference variable to the menu this trigger opens */   menuTemplateRef: TemplateRef<unknown> | null;    /** Context data to be passed along to the menu template */   menuData: unknown;    /** A reference to the overlay which manages the triggered menu */   protected overlayRef: OverlayRef | null = null;    /** Emits when this trigger is destroyed. */   protected readonly destroyed: Subject<void> = new Subject();    /** Emits when the outside pointer events listener on the overlay should be stopped. */   protected readonly stopOutsideClicksListener = merge(this.closed, this.destroyed);    /** The child menu opened by this trigger. */   protected childMenu?: Menu;    /** The content of the menu panel opened by this trigger. */   private _menuPortal: TemplatePortal;    /** The injector to use for the child menu opened by this trigger. */   private _childMenuInjector?: Injector;    ngOnDestroy() {     this._destroyOverlay();      this.destroyed.next();     this.destroyed.complete();   }    /** Whether the attached menu is open. */   isOpen() {     return !!this.overlayRef?.hasAttached();   }    /** Registers a child menu as having been opened by this trigger. */   registerChildMenu(child: Menu) {     this.childMenu = child;   }    /**    * Get the portal to be attached to the overlay which contains the menu. Allows for the menu    * content to change dynamically and be reflected in the application.    */   protected getMenuContentPortal() {     const hasMenuContentChanged = this.menuTemplateRef !== this._menuPortal?.templateRef;     if (this.menuTemplateRef && (!this._menuPortal || hasMenuContentChanged)) {       this._menuPortal = new TemplatePortal(         this.menuTemplateRef,         this.viewContainerRef,         this.menuData,         this._getChildMenuInjector(),       );     }      return this._menuPortal;   }    /**    * Whether the given element is inside the scope of this trigger's menu stack.    * @param element The element to check.    * @return Whether the element is inside the scope of this trigger's menu stack.    */   protected isElementInsideMenuStack(element: Element) {     for (let el: Element | null = element; el; el = el?.parentElement ?? null) {       if (el.getAttribute('data-cdk-menu-stack-id') === this.menuStack.id) {         return true;       }     }     return false;   }    /** Destroy and unset the overlay reference it if exists */   private _destroyOverlay() {     if (this.overlayRef) {       this.overlayRef.dispose();       this.overlayRef = null;     }   }    /** Gets the injector to use when creating a child menu. */   private _getChildMenuInjector() {     this._childMenuInjector =       this._childMenuInjector ||       Injector.create({         providers: [           {provide: MENU_TRIGGER, useValue: this},           {provide: MENU_STACK, useValue: this.menuStack},         ],         parent: this.injector,       });     return this._childMenuInjector;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Throws an exception when an instance of the PointerFocusTracker is not provided.  * @docs-private  */ export function throwMissingPointerFocusTracker() {   throw Error('expected an instance of PointerFocusTracker to be provided'); }  /**  * Throws an exception when a reference to the parent menu is not provided.  * @docs-private  */ export function throwMissingMenuReference() {   throw Error('expected a reference to the parent menu'); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, inject, Injectable, InjectionToken, NgZone, OnDestroy} from '@angular/core'; import {fromEvent, Subject} from 'rxjs'; import {filter, takeUntil} from 'rxjs/operators'; import {FocusableElement, PointerFocusTracker} from './pointer-focus-tracker'; import {Menu} from './menu-interface'; import {throwMissingMenuReference, throwMissingPointerFocusTracker} from './menu-errors';  /**  * MenuAim is responsible for determining if a sibling menuitem's menu should be closed when a  * Toggler item is hovered into. It is up to the hovered in item to call the MenuAim service in  * order to determine if it may perform its close actions.  */ export interface MenuAim {   /**    * Set the Menu and its PointerFocusTracker.    * @param menu The menu that this menu aim service controls.    * @param pointerTracker The `PointerFocusTracker` for the given menu.    */   initialize(menu: Menu, pointerTracker: PointerFocusTracker<FocusableElement & Toggler>): void;    /**    * Calls the `doToggle` callback when it is deemed that the user is not moving towards    * the submenu.    * @param doToggle the function called when the user is not moving towards the submenu.    */   toggle(doToggle: () => void): void; }  /** Injection token used for an implementation of MenuAim. */ export const MENU_AIM = new InjectionToken<MenuAim>('cdk-menu-aim');  /** Capture every nth mouse move event. */ const MOUSE_MOVE_SAMPLE_FREQUENCY = 3;  /** The number of mouse move events to track. */ const NUM_POINTS = 5;  /**  * How long to wait before closing a sibling menu if a user stops short of the submenu they were  * predicted to go into.  */ const CLOSE_DELAY = 300;  /** An element which when hovered over may open or close a menu. */ export interface Toggler {   /** Gets the open menu, or undefined if no menu is open. */   getMenu(): Menu | undefined; }  /** Calculate the slope between point a and b. */ function getSlope(a: Point, b: Point) {   return (b.y - a.y) / (b.x - a.x); }  /** Calculate the y intercept for the given point and slope. */ function getYIntercept(point: Point, slope: number) {   return point.y - slope * point.x; }  /** Represents a coordinate of mouse travel. */ type Point = {x: number; y: number};  /**  * Whether the given mouse trajectory line defined by the slope and y intercept falls within the  * submenu as defined by `submenuPoints`  * @param submenuPoints the submenu DOMRect points.  * @param m the slope of the trajectory line.  * @param b the y intercept of the trajectory line.  * @return true if any point on the line falls within the submenu.  */ function isWithinSubmenu(submenuPoints: DOMRect, m: number, b: number) {   const {left, right, top, bottom} = submenuPoints;    // Check for intersection with each edge of the submenu (left, right, top, bottom)   // by fixing one coordinate to that edge's coordinate (either x or y) and checking if the   // other coordinate is within bounds.   return (     (m * left + b >= top && m * left + b <= bottom) ||     (m * right + b >= top && m * right + b <= bottom) ||     ((top - b) / m >= left && (top - b) / m <= right) ||     ((bottom - b) / m >= left && (bottom - b) / m <= right)   ); }  /**  * TargetMenuAim predicts if a user is moving into a submenu. It calculates the  * trajectory of the user's mouse movement in the current menu to determine if the  * mouse is moving towards an open submenu.  *  * The determination is made by calculating the slope of the users last NUM_POINTS moves where each  * pair of points determines if the trajectory line points into the submenu. It uses consensus  * approach by checking if at least NUM_POINTS / 2 pairs determine that the user is moving towards  * to submenu.  */ @Injectable() export class TargetMenuAim implements MenuAim, OnDestroy {   /** The Angular zone. */   private readonly _ngZone = inject(NgZone);    /** The last NUM_POINTS mouse move events. */   private readonly _points: Point[] = [];    /** Reference to the root menu in which we are tracking mouse moves. */   private _menu: Menu;    /** Reference to the root menu's mouse manager. */   private _pointerTracker: PointerFocusTracker<Toggler & FocusableElement>;    /** The id associated with the current timeout call waiting to resolve. */   private _timeoutId: number | null;    /** Emits when this service is destroyed. */   private readonly _destroyed: Subject<void> = new Subject();    ngOnDestroy() {     this._destroyed.next();     this._destroyed.complete();   }    /**    * Set the Menu and its PointerFocusTracker.    * @param menu The menu that this menu aim service controls.    * @param pointerTracker The `PointerFocusTracker` for the given menu.    */   initialize(menu: Menu, pointerTracker: PointerFocusTracker<FocusableElement & Toggler>) {     this._menu = menu;     this._pointerTracker = pointerTracker;     this._subscribeToMouseMoves();   }    /**    * Calls the `doToggle` callback when it is deemed that the user is not moving towards    * the submenu.    * @param doToggle the function called when the user is not moving towards the submenu.    */   toggle(doToggle: () => void) {     // If the menu is horizontal the sub-menus open below and there is no risk of premature     // closing of any sub-menus therefore we automatically resolve the callback.     if (this._menu.orientation === 'horizontal') {       doToggle();     }      this._checkConfigured();      const siblingItemIsWaiting = !!this._timeoutId;     const hasPoints = this._points.length > 1;      if (hasPoints && !siblingItemIsWaiting) {       if (this._isMovingToSubmenu()) {         this._startTimeout(doToggle);       } else {         doToggle();       }     } else if (!siblingItemIsWaiting) {       doToggle();     }   }    /**    * Start the delayed toggle handler if one isn't running already.    *    * The delayed toggle handler executes the `doToggle` callback after some period of time iff the    * users mouse is on an item in the current menu.    *    * @param doToggle the function called when the user is not moving towards the submenu.    */   private _startTimeout(doToggle: () => void) {     // If the users mouse is moving towards a submenu we don't want to immediately resolve.     // Wait for some period of time before determining if the previous menu should close in     // cases where the user may have moved towards the submenu but stopped on a sibling menu     // item intentionally.     const timeoutId = setTimeout(() => {       // Resolve if the user is currently moused over some element in the root menu       if (this._pointerTracker!.activeElement && timeoutId === this._timeoutId) {         doToggle();       }       this._timeoutId = null;     }, CLOSE_DELAY) as any as number;      this._timeoutId = timeoutId;   }    /** Whether the user is heading towards the open submenu. */   private _isMovingToSubmenu() {     const submenuPoints = this._getSubmenuBounds();     if (!submenuPoints) {       return false;     }      let numMoving = 0;     const currPoint = this._points[this._points.length - 1];     // start from the second last point and calculate the slope between each point and the last     // point.     for (let i = this._points.length - 2; i >= 0; i--) {       const previous = this._points[i];       const slope = getSlope(currPoint, previous);       if (isWithinSubmenu(submenuPoints, slope, getYIntercept(currPoint, slope))) {         numMoving++;       }     }     return numMoving >= Math.floor(NUM_POINTS / 2);   }    /** Get the bounding DOMRect for the open submenu. */   private _getSubmenuBounds(): DOMRect | undefined {     return this._pointerTracker?.previousElement?.getMenu()?.nativeElement.getBoundingClientRect();   }    /**    * Check if a reference to the PointerFocusTracker and menu element is provided.    * @throws an error if neither reference is provided.    */   private _checkConfigured() {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       if (!this._pointerTracker) {         throwMissingPointerFocusTracker();       }       if (!this._menu) {         throwMissingMenuReference();       }     }   }    /** Subscribe to the root menus mouse move events and update the tracked mouse points. */   private _subscribeToMouseMoves() {     this._ngZone.runOutsideAngular(() => {       fromEvent<MouseEvent>(this._menu.nativeElement, 'mousemove')         .pipe(           filter((_: MouseEvent, index: number) => index % MOUSE_MOVE_SAMPLE_FREQUENCY === 0),           takeUntil(this._destroyed),         )         .subscribe((event: MouseEvent) => {           this._points.push({x: event.clientX, y: event.clientY});           if (this._points.length > NUM_POINTS) {             this._points.shift();           }         });     });   } }  /**  * CdkTargetMenuAim is a provider for the TargetMenuAim service. It can be added to an  * element with either the `cdkMenu` or `cdkMenuBar` directive and child menu items.  */ @Directive({   selector: '[cdkTargetMenuAim]',   exportAs: 'cdkTargetMenuAim',   standalone: true,   providers: [{provide: MENU_AIM, useClass: TargetMenuAim}], }) export class CdkTargetMenuAim {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef, inject, NgZone, OnDestroy} from '@angular/core'; import {Directionality} from '@angular/cdk/bidi'; import {   ConnectedPosition,   FlexibleConnectedPositionStrategy,   Overlay,   OverlayConfig,   STANDARD_DROPDOWN_ADJACENT_POSITIONS,   STANDARD_DROPDOWN_BELOW_POSITIONS, } from '@angular/cdk/overlay'; import {   DOWN_ARROW,   ENTER,   hasModifierKey,   LEFT_ARROW,   RIGHT_ARROW,   SPACE,   UP_ARROW, } from '@angular/cdk/keycodes'; import {_getEventTarget} from '@angular/cdk/platform'; import {InputModalityDetector} from '@angular/cdk/a11y'; import {fromEvent} from 'rxjs'; import {filter, takeUntil} from 'rxjs/operators'; import {CDK_MENU, Menu} from './menu-interface'; import {PARENT_OR_NEW_MENU_STACK_PROVIDER} from './menu-stack'; import {MENU_AIM} from './menu-aim'; import {CdkMenuTriggerBase, MENU_TRIGGER} from './menu-trigger-base';  /**  * A directive that turns its host element into a trigger for a popup menu.  * It can be combined with cdkMenuItem to create sub-menus. If the element is in a top level  * MenuBar it will open the menu on click, or if a sibling is already opened it will open on hover.  * If it is inside of a Menu it will open the attached Submenu on hover regardless of its sibling  * state.  */ @Directive({   selector: '[cdkMenuTriggerFor]',   exportAs: 'cdkMenuTriggerFor',   standalone: true,   host: {     'class': 'cdk-menu-trigger',     '[attr.aria-haspopup]': 'menuTemplateRef ? \"menu\" : null',     '[attr.aria-expanded]': 'menuTemplateRef == null ? null : isOpen()',     '(focusin)': '_setHasFocus(true)',     '(focusout)': '_setHasFocus(false)',     '(keydown)': '_toggleOnKeydown($event)',     '(click)': '_handleClick()',   },   inputs: [     'menuTemplateRef: cdkMenuTriggerFor',     'menuPosition: cdkMenuPosition',     'menuData: cdkMenuTriggerData',   ],   outputs: ['opened: cdkMenuOpened', 'closed: cdkMenuClosed'],   providers: [     {provide: MENU_TRIGGER, useExisting: CdkMenuTrigger},     PARENT_OR_NEW_MENU_STACK_PROVIDER,   ], }) export class CdkMenuTrigger extends CdkMenuTriggerBase implements OnDestroy {   private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);   private readonly _overlay = inject(Overlay);   private readonly _ngZone = inject(NgZone);   private readonly _directionality = inject(Directionality, {optional: true});   private readonly _inputModalityDetector = inject(InputModalityDetector);    /** The parent menu this trigger belongs to. */   private readonly _parentMenu = inject(CDK_MENU, {optional: true});    /** The menu aim service used by this menu. */   private readonly _menuAim = inject(MENU_AIM, {optional: true});    constructor() {     super();     this._setRole();     this._registerCloseHandler();     this._subscribeToMenuStackClosed();     this._subscribeToMouseEnter();     this._subscribeToMenuStackHasFocus();     this._setType();   }    /** Toggle the attached menu. */   toggle() {     this.isOpen() ? this.close() : this.open();   }    /** Open the attached menu. */   open() {     if (!this.isOpen() && this.menuTemplateRef != null) {       this.opened.next();        this.overlayRef = this.overlayRef || this._overlay.create(this._getOverlayConfig());       this.overlayRef.attach(this.getMenuContentPortal());       this._subscribeToOutsideClicks();     }   }    /** Close the opened menu. */   close() {     if (this.isOpen()) {       this.closed.next();        this.overlayRef!.detach();     }     this._closeSiblingTriggers();   }    /**    * Get a reference to the rendered Menu if the Menu is open and rendered in the DOM.    */   getMenu(): Menu | undefined {     return this.childMenu;   }    /**    * Handles keyboard events for the menu item.    * @param event The keyboard event to handle    */   _toggleOnKeydown(event: KeyboardEvent) {     const isParentVertical = this._parentMenu?.orientation === 'vertical';     switch (event.keyCode) {       case SPACE:       case ENTER:         if (!hasModifierKey(event)) {           this.toggle();           this.childMenu?.focusFirstItem('keyboard');         }         break;        case RIGHT_ARROW:         if (!hasModifierKey(event)) {           if (this._parentMenu && isParentVertical && this._directionality?.value !== 'rtl') {             event.preventDefault();             this.open();             this.childMenu?.focusFirstItem('keyboard');           }         }         break;        case LEFT_ARROW:         if (!hasModifierKey(event)) {           if (this._parentMenu && isParentVertical && this._directionality?.value === 'rtl') {             event.preventDefault();             this.open();             this.childMenu?.focusFirstItem('keyboard');           }         }         break;        case DOWN_ARROW:       case UP_ARROW:         if (!hasModifierKey(event)) {           if (!isParentVertical) {             event.preventDefault();             this.open();             event.keyCode === DOWN_ARROW               ? this.childMenu?.focusFirstItem('keyboard')               : this.childMenu?.focusLastItem('keyboard');           }         }         break;     }   }    /** Handles clicks on the menu trigger. */   _handleClick() {     // Don't handle clicks originating from the keyboard since we     // already do the same on `keydown` events for enter and space.     if (this._inputModalityDetector.mostRecentModality !== 'keyboard') {       this.toggle();     }   }    /**    * Sets whether the trigger's menu stack has focus.    * @param hasFocus Whether the menu stack has focus.    */   _setHasFocus(hasFocus: boolean) {     if (!this._parentMenu) {       this.menuStack.setHasFocus(hasFocus);     }   }    /**    * Subscribe to the mouseenter events and close any sibling menu items if this element is moused    * into.    */   private _subscribeToMouseEnter() {     this._ngZone.runOutsideAngular(() => {       fromEvent(this._elementRef.nativeElement, 'mouseenter')         .pipe(           filter(() => !this.menuStack.isEmpty() && !this.isOpen()),           takeUntil(this.destroyed),         )         .subscribe(() => {           // Closes any sibling menu items and opens the menu associated with this trigger.           const toggleMenus = () =>             this._ngZone.run(() => {               this._closeSiblingTriggers();               this.open();             });            if (this._menuAim) {             this._menuAim.toggle(toggleMenus);           } else {             toggleMenus();           }         });     });   }    /** Close out any sibling menu trigger menus. */   private _closeSiblingTriggers() {     if (this._parentMenu) {       // If nothing was removed from the stack and the last element is not the parent item       // that means that the parent menu is a menu bar since we don't put the menu bar on the       // stack       const isParentMenuBar =         !this.menuStack.closeSubMenuOf(this._parentMenu) &&         this.menuStack.peek() !== this._parentMenu;        if (isParentMenuBar) {         this.menuStack.closeAll();       }     } else {       this.menuStack.closeAll();     }   }    /** Get the configuration object used to create the overlay. */   private _getOverlayConfig() {     return new OverlayConfig({       positionStrategy: this._getOverlayPositionStrategy(),       scrollStrategy: this._overlay.scrollStrategies.reposition(),       direction: this._directionality || undefined,     });   }    /** Build the position strategy for the overlay which specifies where to place the menu. */   private _getOverlayPositionStrategy(): FlexibleConnectedPositionStrategy {     return this._overlay       .position()       .flexibleConnectedTo(this._elementRef)       .withLockedPosition()       .withGrowAfterOpen()       .withPositions(this._getOverlayPositions());   }    /** Get the preferred positions for the opened menu relative to the menu item. */   private _getOverlayPositions(): ConnectedPosition[] {     return (       this.menuPosition ??       (!this._parentMenu || this._parentMenu.orientation === 'horizontal'         ? STANDARD_DROPDOWN_BELOW_POSITIONS         : STANDARD_DROPDOWN_ADJACENT_POSITIONS)     );   }    /**    * Subscribe to the MenuStack close events if this is a standalone trigger and close out the menu    * this triggers when requested.    */   private _registerCloseHandler() {     if (!this._parentMenu) {       this.menuStack.closed.pipe(takeUntil(this.destroyed)).subscribe(({item}) => {         if (item === this.childMenu) {           this.close();         }       });     }   }    /**    * Subscribe to the overlays outside pointer events stream and handle closing out the stack if a    * click occurs outside the menus.    */   private _subscribeToOutsideClicks() {     if (this.overlayRef) {       this.overlayRef         .outsidePointerEvents()         .pipe(takeUntil(this.stopOutsideClicksListener))         .subscribe(event => {           const target = _getEventTarget(event) as Element;           const element = this._elementRef.nativeElement;            if (target !== element && !element.contains(target)) {             if (!this.isElementInsideMenuStack(target)) {               this.menuStack.closeAll();             } else {               this._closeSiblingTriggers();             }           }         });     }   }    /** Subscribe to the MenuStack hasFocus events. */   private _subscribeToMenuStackHasFocus() {     if (!this._parentMenu) {       this.menuStack.hasFocus.pipe(takeUntil(this.destroyed)).subscribe(hasFocus => {         if (!hasFocus) {           this.menuStack.closeAll();         }       });     }   }    /** Subscribe to the MenuStack closed events. */   private _subscribeToMenuStackClosed() {     if (!this._parentMenu) {       this.menuStack.closed.subscribe(({focusParentTrigger}) => {         if (focusParentTrigger && !this.menuStack.length()) {           this._elementRef.nativeElement.focus();         }       });     }   }    /** Sets the role attribute for this trigger if needed. */   private _setRole() {     // If this trigger is part of another menu, the cdkMenuItem directive will handle setting the     // role, otherwise this is a standalone trigger, and we should ensure it has role=\"button\".     if (!this._parentMenu) {       this._elementRef.nativeElement.setAttribute('role', 'button');     }   }    /** Sets thte `type` attribute of the trigger. */   private _setType() {     const element = this._elementRef.nativeElement;      if (element.nodeName === 'BUTTON' && !element.getAttribute('type')) {       // Prevents form submissions.       element.setAttribute('type', 'button');     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   Directive,   ElementRef,   EventEmitter,   inject,   Input,   NgZone,   OnDestroy,   Output, } from '@angular/core'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {FocusableOption, InputModalityDetector} from '@angular/cdk/a11y'; import {ENTER, hasModifierKey, LEFT_ARROW, RIGHT_ARROW, SPACE} from '@angular/cdk/keycodes'; import {Directionality} from '@angular/cdk/bidi'; import {fromEvent, Subject} from 'rxjs'; import {filter, takeUntil} from 'rxjs/operators'; import {CdkMenuTrigger} from './menu-trigger'; import {CDK_MENU, Menu} from './menu-interface'; import {FocusNext, MENU_STACK} from './menu-stack'; import {FocusableElement} from './pointer-focus-tracker'; import {MENU_AIM, Toggler} from './menu-aim';  /**  * Directive which provides the ability for an element to be focused and navigated to using the  * keyboard when residing in a CdkMenu, CdkMenuBar, or CdkMenuGroup. It performs user defined  * behavior when clicked.  */ @Directive({   selector: '[cdkMenuItem]',   exportAs: 'cdkMenuItem',   standalone: true,   host: {     'role': 'menuitem',     'class': 'cdk-menu-item',     '[tabindex]': '_tabindex',     '[attr.aria-disabled]': 'disabled || null',     '(blur)': '_resetTabIndex()',     '(focus)': '_setTabIndex()',     '(click)': '_handleClick()',     '(keydown)': '_onKeydown($event)',   }, }) export class CdkMenuItem implements FocusableOption, FocusableElement, Toggler, OnDestroy {   protected readonly _dir = inject(Directionality, {optional: true});   private readonly _inputModalityDetector = inject(InputModalityDetector);   readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);   protected _ngZone = inject(NgZone);    /** The menu aim service used by this menu. */   private readonly _menuAim = inject(MENU_AIM, {optional: true});    /** The stack of menus this menu belongs to. */   private readonly _menuStack = inject(MENU_STACK);    /** The parent menu in which this menuitem resides. */   private readonly _parentMenu = inject(CDK_MENU, {optional: true});    /** Reference to the CdkMenuItemTrigger directive if one is added to the same element */   private readonly _menuTrigger = inject(CdkMenuTrigger, {optional: true, self: true});    /**  Whether the CdkMenuItem is disabled - defaults to false */   @Input('cdkMenuItemDisabled')   get disabled(): boolean {     return this._disabled;   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);   }   private _disabled = false;    /**    * The text used to locate this item during menu typeahead. If not specified,    * the `textContent` of the item will be used.    */   @Input('cdkMenuitemTypeaheadLabel') typeaheadLabel: string | null;    /**    * If this MenuItem is a regular MenuItem, outputs when it is triggered by a keyboard or mouse    * event.    */   @Output('cdkMenuItemTriggered') readonly triggered: EventEmitter<void> = new EventEmitter();    /** Whether the menu item opens a menu. */   get hasMenu() {     return this._menuTrigger?.menuTemplateRef != null;   }    /**    * The tabindex for this menu item managed internally and used for implementing roving a    * tab index.    */   _tabindex: 0 | -1 = -1;    /** Whether the item should close the menu if triggered by the spacebar. */   protected closeOnSpacebarTrigger = true;    /** Emits when the menu item is destroyed. */   protected readonly destroyed = new Subject<void>();    constructor() {     this._setupMouseEnter();     this._setType();      if (this._isStandaloneItem()) {       this._tabindex = 0;     }   }    ngOnDestroy() {     this.destroyed.next();     this.destroyed.complete();   }    /** Place focus on the element. */   focus() {     this._elementRef.nativeElement.focus();   }    /**    * If the menu item is not disabled and the element does not have a menu trigger attached, emit    * on the cdkMenuItemTriggered emitter and close all open menus.    * @param options Options the configure how the item is triggered    *   - keepOpen: specifies that the menu should be kept open after triggering the item.    */   trigger(options?: {keepOpen: boolean}) {     const {keepOpen} = {...options};     if (!this.disabled && !this.hasMenu) {       this.triggered.next();       if (!keepOpen) {         this._menuStack.closeAll({focusParentTrigger: true});       }     }   }    /** Return true if this MenuItem has an attached menu and it is open. */   isMenuOpen() {     return !!this._menuTrigger?.isOpen();   }    /**    * Get a reference to the rendered Menu if the Menu is open and it is visible in the DOM.    * @return the menu if it is open, otherwise undefined.    */   getMenu(): Menu | undefined {     return this._menuTrigger?.getMenu();   }    /** Get the CdkMenuTrigger associated with this element. */   getMenuTrigger(): CdkMenuTrigger | null {     return this._menuTrigger;   }    /** Get the label for this element which is required by the FocusableOption interface. */   getLabel(): string {     return this.typeaheadLabel || this._elementRef.nativeElement.textContent?.trim() || '';   }    /** Reset the tabindex to -1. */   _resetTabIndex() {     if (!this._isStandaloneItem()) {       this._tabindex = -1;     }   }    /**    * Set the tab index to 0 if not disabled and it's a focus event, or a mouse enter if this element    * is not in a menu bar.    */   _setTabIndex(event?: MouseEvent) {     if (this.disabled) {       return;     }      // don't set the tabindex if there are no open sibling or parent menus     if (!event || !this._menuStack.isEmpty()) {       this._tabindex = 0;     }   }    /**    * Handles keyboard events for the menu item, specifically either triggering the user defined    * callback or opening/closing the current menu based on whether the left or right arrow key was    * pressed.    * @param event the keyboard event to handle    */   _onKeydown(event: KeyboardEvent) {     switch (event.keyCode) {       case SPACE:       case ENTER:         if (!hasModifierKey(event)) {           this.trigger({keepOpen: event.keyCode === SPACE && !this.closeOnSpacebarTrigger});         }         break;        case RIGHT_ARROW:         if (!hasModifierKey(event)) {           if (this._parentMenu && this._isParentVertical()) {             if (this._dir?.value !== 'rtl') {               this._forwardArrowPressed(event);             } else {               this._backArrowPressed(event);             }           }         }         break;        case LEFT_ARROW:         if (!hasModifierKey(event)) {           if (this._parentMenu && this._isParentVertical()) {             if (this._dir?.value !== 'rtl') {               this._backArrowPressed(event);             } else {               this._forwardArrowPressed(event);             }           }         }         break;     }   }    /** Handles clicks on the menu item. */   _handleClick() {     // Don't handle clicks originating from the keyboard since we     // already do the same on `keydown` events for enter and space.     if (this._inputModalityDetector.mostRecentModality !== 'keyboard') {       this.trigger();     }   }    /** Whether this menu item is standalone or within a menu or menu bar. */   private _isStandaloneItem() {     return !this._parentMenu;   }    /**    * Handles the user pressing the back arrow key.    * @param event The keyboard event.    */   private _backArrowPressed(event: KeyboardEvent) {     const parentMenu = this._parentMenu!;     if (this._menuStack.hasInlineMenu() || this._menuStack.length() > 1) {       event.preventDefault();       this._menuStack.close(parentMenu, {         focusNextOnEmpty:           this._menuStack.inlineMenuOrientation() === 'horizontal'             ? FocusNext.previousItem             : FocusNext.currentItem,         focusParentTrigger: true,       });     }   }    /**    * Handles the user pressing the forward arrow key.    * @param event The keyboard event.    */   private _forwardArrowPressed(event: KeyboardEvent) {     if (!this.hasMenu && this._menuStack.inlineMenuOrientation() === 'horizontal') {       event.preventDefault();       this._menuStack.closeAll({         focusNextOnEmpty: FocusNext.nextItem,         focusParentTrigger: true,       });     }   }    /**    * Subscribe to the mouseenter events and close any sibling menu items if this element is moused    * into.    */   private _setupMouseEnter() {     if (!this._isStandaloneItem()) {       const closeOpenSiblings = () =>         this._ngZone.run(() => this._menuStack.closeSubMenuOf(this._parentMenu!));        this._ngZone.runOutsideAngular(() =>         fromEvent(this._elementRef.nativeElement, 'mouseenter')           .pipe(             filter(() => !this._menuStack.isEmpty() && !this.hasMenu),             takeUntil(this.destroyed),           )           .subscribe(() => {             if (this._menuAim) {               this._menuAim.toggle(closeOpenSiblings);             } else {               closeOpenSiblings();             }           }),       );     }   }    /**    * Return true if the enclosing parent menu is configured in a horizontal orientation, false    * otherwise or if no parent.    */   private _isParentVertical() {     return this._parentMenu?.orientation === 'vertical';   }    /** Sets the `type` attribute of the menu item. */   private _setType() {     const element = this._elementRef.nativeElement;      if (element.nodeName === 'BUTTON' && !element.getAttribute('type')) {       // Prevent form submissions.       element.setAttribute('type', 'button');     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ElementRef, QueryList} from '@angular/core'; import {defer, fromEvent, Observable, Subject} from 'rxjs'; import {mapTo, mergeAll, mergeMap, startWith, takeUntil} from 'rxjs/operators';  /** Item to track for mouse focus events. */ export interface FocusableElement {   /** A reference to the element to be tracked. */   _elementRef: ElementRef<HTMLElement>; }  /**  * PointerFocusTracker keeps track of the currently active item under mouse focus. It also has  * observables which emit when the users mouse enters and leaves a tracked element.  */ export class PointerFocusTracker<T extends FocusableElement> {   /** Emits when an element is moused into. */   readonly entered: Observable<T> = this._getItemPointerEntries();    /** Emits when an element is moused out. */   readonly exited: Observable<T> = this._getItemPointerExits();    /** The element currently under mouse focus. */   activeElement?: T;    /** The element previously under mouse focus. */   previousElement?: T;    /** Emits when this is destroyed. */   private readonly _destroyed: Subject<void> = new Subject();    constructor(     /** The list of items being tracked. */     private readonly _items: QueryList<T>,   ) {     this.entered.subscribe(element => (this.activeElement = element));     this.exited.subscribe(() => {       this.previousElement = this.activeElement;       this.activeElement = undefined;     });   }    /** Stop the managers listeners. */   destroy() {     this._destroyed.next();     this._destroyed.complete();   }    /**    * Gets a stream of pointer (mouse) entries into the given items.    * This should typically run outside the Angular zone.    */   private _getItemPointerEntries(): Observable<T> {     return defer(() =>       this._items.changes.pipe(         startWith(this._items),         mergeMap((list: QueryList<T>) =>           list.map(element =>             fromEvent(element._elementRef.nativeElement, 'mouseenter').pipe(               mapTo(element),               takeUntil(this._items.changes),             ),           ),         ),         mergeAll(),       ),     );   }    /**    * Gets a stream of pointer (mouse) exits out of the given items.    * This should typically run outside the Angular zone.    */   private _getItemPointerExits() {     return defer(() =>       this._items.changes.pipe(         startWith(this._items),         mergeMap((list: QueryList<T>) =>           list.map(element =>             fromEvent(element._elementRef.nativeElement, 'mouseout').pipe(               mapTo(element),               takeUntil(this._items.changes),             ),           ),         ),         mergeAll(),       ),     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {CdkMenuGroup} from './menu-group'; import {   AfterContentInit,   ContentChildren,   Directive,   ElementRef,   inject,   Input,   NgZone,   OnDestroy,   QueryList, } from '@angular/core'; import {FocusKeyManager, FocusOrigin} from '@angular/cdk/a11y'; import {CdkMenuItem} from './menu-item'; import {merge, Subject} from 'rxjs'; import {Directionality} from '@angular/cdk/bidi'; import {mapTo, mergeAll, mergeMap, startWith, switchMap, takeUntil} from 'rxjs/operators'; import {MENU_STACK, MenuStack, MenuStackItem} from './menu-stack'; import {Menu} from './menu-interface'; import {PointerFocusTracker} from './pointer-focus-tracker'; import {MENU_AIM} from './menu-aim';  /** Counter used to create unique IDs for menus. */ let nextId = 0;  /**  * Abstract directive that implements shared logic common to all menus.  * This class can be extended to create custom menu types.  */ @Directive({   host: {     'role': 'menu',     'class': '', // reset the css class added by the super-class     '[tabindex]': '_getTabIndex()',     '[id]': 'id',     '[attr.aria-orientation]': 'orientation',     '[attr.data-cdk-menu-stack-id]': 'menuStack.id',     '(focus)': 'focusFirstItem()',     '(focusin)': 'menuStack.setHasFocus(true)',     '(focusout)': 'menuStack.setHasFocus(false)',   }, }) export abstract class CdkMenuBase   extends CdkMenuGroup   implements Menu, AfterContentInit, OnDestroy {   /** The menu's native DOM host element. */   readonly nativeElement: HTMLElement = inject(ElementRef).nativeElement;    /** The Angular zone. */   protected ngZone = inject(NgZone);    /** The stack of menus this menu belongs to. */   readonly menuStack: MenuStack = inject(MENU_STACK);    /** The menu aim service used by this menu. */   protected readonly menuAim = inject(MENU_AIM, {optional: true, self: true});    /** The directionality (text direction) of the current page. */   protected readonly dir = inject(Directionality, {optional: true});    /** The id of the menu's host element. */   @Input() id = `cdk-menu-${nextId++}`;    /** All child MenuItem elements nested in this Menu. */   @ContentChildren(CdkMenuItem, {descendants: true})   readonly items: QueryList<CdkMenuItem>;    /** The direction items in the menu flow. */   orientation: 'horizontal' | 'vertical' = 'vertical';    /**    * Whether the menu is displayed inline (i.e. always present vs a conditional popup that the    * user triggers with a trigger element).    */   isInline = false;    /** Handles keyboard events for the menu. */   protected keyManager: FocusKeyManager<CdkMenuItem>;    /** Emits when the MenuBar is destroyed. */   protected readonly destroyed: Subject<void> = new Subject();    /** The Menu Item which triggered the open submenu. */   protected triggerItem?: CdkMenuItem;    /** Tracks the users mouse movements over the menu. */   protected pointerTracker?: PointerFocusTracker<CdkMenuItem>;    /** Whether this menu's menu stack has focus. */   private _menuStackHasFocus = false;    ngAfterContentInit() {     if (!this.isInline) {       this.menuStack.push(this);     }     this._setKeyManager();     this._subscribeToMenuStackHasFocus();     this._subscribeToMenuOpen();     this._subscribeToMenuStackClosed();     this._setUpPointerTracker();   }    ngOnDestroy() {     this.keyManager?.destroy();     this.destroyed.next();     this.destroyed.complete();     this.pointerTracker?.destroy();   }    /**    * Place focus on the first MenuItem in the menu and set the focus origin.    * @param focusOrigin The origin input mode of the focus event.    */   focusFirstItem(focusOrigin: FocusOrigin = 'program') {     this.keyManager.setFocusOrigin(focusOrigin);     this.keyManager.setFirstItemActive();   }    /**    * Place focus on the last MenuItem in the menu and set the focus origin.    * @param focusOrigin The origin input mode of the focus event.    */   focusLastItem(focusOrigin: FocusOrigin = 'program') {     this.keyManager.setFocusOrigin(focusOrigin);     this.keyManager.setLastItemActive();   }    /** Gets the tabindex for this menu. */   _getTabIndex() {     const tabindexIfInline = this._menuStackHasFocus ? -1 : 0;     return this.isInline ? tabindexIfInline : null;   }    /**    * Close the open menu if the current active item opened the requested MenuStackItem.    * @param menu The menu requested to be closed.    * @param options Options to configure the behavior on close.    *   - `focusParentTrigger` Whether to focus the parent trigger after closing the menu.    */   protected closeOpenMenu(menu: MenuStackItem, options?: {focusParentTrigger?: boolean}) {     const {focusParentTrigger} = {...options};     const keyManager = this.keyManager;     const trigger = this.triggerItem;     if (menu === trigger?.getMenuTrigger()?.getMenu()) {       trigger?.getMenuTrigger()?.close();       // If the user has moused over a sibling item we want to focus the element under mouse focus       // not the trigger which previously opened the now closed menu.       if (focusParentTrigger) {         if (trigger) {           keyManager.setActiveItem(trigger);         } else {           keyManager.setFirstItemActive();         }       }     }   }    /** Setup the FocusKeyManager with the correct orientation for the menu. */   private _setKeyManager() {     this.keyManager = new FocusKeyManager(this.items).withWrap().withTypeAhead().withHomeAndEnd();      if (this.orientation === 'horizontal') {       this.keyManager.withHorizontalOrientation(this.dir?.value || 'ltr');     } else {       this.keyManager.withVerticalOrientation();     }   }    /**    * Subscribe to the menu trigger's open events in order to track the trigger which opened the menu    * and stop tracking it when the menu is closed.    */   private _subscribeToMenuOpen() {     const exitCondition = merge(this.items.changes, this.destroyed);     this.items.changes       .pipe(         startWith(this.items),         mergeMap((list: QueryList<CdkMenuItem>) =>           list             .filter(item => item.hasMenu)             .map(item => item.getMenuTrigger()!.opened.pipe(mapTo(item), takeUntil(exitCondition))),         ),         mergeAll(),         switchMap((item: CdkMenuItem) => {           this.triggerItem = item;           return item.getMenuTrigger()!.closed;         }),         takeUntil(this.destroyed),       )       .subscribe(() => (this.triggerItem = undefined));   }    /** Subscribe to the MenuStack close events. */   private _subscribeToMenuStackClosed() {     this.menuStack.closed       .pipe(takeUntil(this.destroyed))       .subscribe(({item, focusParentTrigger}) => this.closeOpenMenu(item, {focusParentTrigger}));   }    /** Subscribe to the MenuStack hasFocus events. */   private _subscribeToMenuStackHasFocus() {     if (this.isInline) {       this.menuStack.hasFocus.pipe(takeUntil(this.destroyed)).subscribe(hasFocus => {         this._menuStackHasFocus = hasFocus;       });     }   }    /**    * Set the PointerFocusTracker and ensure that when mouse focus changes the key manager is updated    * with the latest menu item under mouse focus.    */   private _setUpPointerTracker() {     if (this.menuAim) {       this.ngZone.runOutsideAngular(() => {         this.pointerTracker = new PointerFocusTracker(this.items);       });       this.menuAim.initialize(this, this.pointerTracker!);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AfterContentInit, Directive, EventEmitter, inject, OnDestroy, Output} from '@angular/core'; import {ESCAPE, hasModifierKey, LEFT_ARROW, RIGHT_ARROW, TAB} from '@angular/cdk/keycodes'; import {takeUntil} from 'rxjs/operators'; import {CdkMenuGroup} from './menu-group'; import {CDK_MENU} from './menu-interface'; import {FocusNext, PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER} from './menu-stack'; import {MENU_TRIGGER} from './menu-trigger-base'; import {CdkMenuBase} from './menu-base';  /**  * Directive which configures the element as a Menu which should contain child elements marked as  * CdkMenuItem or CdkMenuGroup. Sets the appropriate role and aria-attributes for a menu and  * contains accessible keyboard and mouse handling logic.  *  * It also acts as a RadioGroup for elements marked with role `menuitemradio`.  */ @Directive({   selector: '[cdkMenu]',   exportAs: 'cdkMenu',   standalone: true,   host: {     'role': 'menu',     'class': 'cdk-menu',     '[class.cdk-menu-inline]': 'isInline',     '(keydown)': '_handleKeyEvent($event)',   },   providers: [     {provide: CdkMenuGroup, useExisting: CdkMenu},     {provide: CDK_MENU, useExisting: CdkMenu},     PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER('vertical'),   ], }) export class CdkMenu extends CdkMenuBase implements AfterContentInit, OnDestroy {   private _parentTrigger = inject(MENU_TRIGGER, {optional: true});    /** Event emitted when the menu is closed. */   @Output() readonly closed: EventEmitter<void> = new EventEmitter();    /** The direction items in the menu flow. */   override readonly orientation = 'vertical';    /** Whether the menu is displayed inline (i.e. always present vs a conditional popup that the user triggers with a trigger element). */   override readonly isInline = !this._parentTrigger;    constructor() {     super();     this.destroyed.subscribe(this.closed);     this._parentTrigger?.registerChildMenu(this);   }    override ngAfterContentInit() {     super.ngAfterContentInit();     this._subscribeToMenuStackEmptied();   }    override ngOnDestroy() {     super.ngOnDestroy();     this.closed.complete();   }    /**    * Handle keyboard events for the Menu.    * @param event The keyboard event to be handled.    */   _handleKeyEvent(event: KeyboardEvent) {     const keyManager = this.keyManager;     switch (event.keyCode) {       case LEFT_ARROW:       case RIGHT_ARROW:         if (!hasModifierKey(event)) {           event.preventDefault();           keyManager.setFocusOrigin('keyboard');           keyManager.onKeydown(event);         }         break;        case ESCAPE:         if (!hasModifierKey(event)) {           event.preventDefault();           this.menuStack.close(this, {             focusNextOnEmpty: FocusNext.currentItem,             focusParentTrigger: true,           });         }         break;        case TAB:         if (!hasModifierKey(event, 'altKey', 'metaKey', 'ctrlKey')) {           this.menuStack.closeAll({focusParentTrigger: true});         }         break;        default:         keyManager.onKeydown(event);     }   }    /**    * Set focus the either the current, previous or next item based on the FocusNext event.    * @param focusNext The element to focus.    */   private _toggleMenuFocus(focusNext: FocusNext | undefined) {     const keyManager = this.keyManager;     switch (focusNext) {       case FocusNext.nextItem:         keyManager.setFocusOrigin('keyboard');         keyManager.setNextItemActive();         break;        case FocusNext.previousItem:         keyManager.setFocusOrigin('keyboard');         keyManager.setPreviousItemActive();         break;        case FocusNext.currentItem:         if (keyManager.activeItem) {           keyManager.setFocusOrigin('keyboard');           keyManager.setActiveItem(keyManager.activeItem);         }         break;     }   }    /** Subscribe to the MenuStack emptied events. */   private _subscribeToMenuStackEmptied() {     this.menuStack.emptied       .pipe(takeUntil(this.destroyed))       .subscribe(event => this._toggleMenuFocus(event));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AfterContentInit, Directive} from '@angular/core'; import {   DOWN_ARROW,   ESCAPE,   hasModifierKey,   LEFT_ARROW,   RIGHT_ARROW,   TAB,   UP_ARROW, } from '@angular/cdk/keycodes'; import {takeUntil} from 'rxjs/operators'; import {CdkMenuGroup} from './menu-group'; import {CDK_MENU} from './menu-interface'; import {FocusNext, MENU_STACK, MenuStack} from './menu-stack'; import {CdkMenuBase} from './menu-base';  /**  * Directive applied to an element which configures it as a MenuBar by setting the appropriate  * role, aria attributes, and accessible keyboard and mouse handling logic. The component that  * this directive is applied to should contain components marked with CdkMenuItem.  *  */ @Directive({   selector: '[cdkMenuBar]',   exportAs: 'cdkMenuBar',   standalone: true,   host: {     'role': 'menubar',     'class': 'cdk-menu-bar',     '(keydown)': '_handleKeyEvent($event)',   },   providers: [     {provide: CdkMenuGroup, useExisting: CdkMenuBar},     {provide: CDK_MENU, useExisting: CdkMenuBar},     {provide: MENU_STACK, useFactory: () => MenuStack.inline('horizontal')},   ], }) export class CdkMenuBar extends CdkMenuBase implements AfterContentInit {   /** The direction items in the menu flow. */   override readonly orientation = 'horizontal';    /** Whether the menu is displayed inline (i.e. always present vs a conditional popup that the user triggers with a trigger element). */   override readonly isInline = true;    override ngAfterContentInit() {     super.ngAfterContentInit();     this._subscribeToMenuStackEmptied();   }    /**    * Handle keyboard events for the Menu.    * @param event The keyboard event to be handled.    */   _handleKeyEvent(event: KeyboardEvent) {     const keyManager = this.keyManager;     switch (event.keyCode) {       case UP_ARROW:       case DOWN_ARROW:       case LEFT_ARROW:       case RIGHT_ARROW:         if (!hasModifierKey(event)) {           const horizontalArrows = event.keyCode === LEFT_ARROW || event.keyCode === RIGHT_ARROW;           // For a horizontal menu if the left/right keys were clicked, or a vertical menu if the           // up/down keys were clicked: if the current menu is open, close it then focus and open the           // next  menu.           if (horizontalArrows) {             event.preventDefault();              const prevIsOpen = keyManager.activeItem?.isMenuOpen();             keyManager.activeItem?.getMenuTrigger()?.close();              keyManager.setFocusOrigin('keyboard');             keyManager.onKeydown(event);             if (prevIsOpen) {               keyManager.activeItem?.getMenuTrigger()?.open();             }           }         }         break;        case ESCAPE:         if (!hasModifierKey(event)) {           event.preventDefault();           keyManager.activeItem?.getMenuTrigger()?.close();         }         break;        case TAB:         if (!hasModifierKey(event, 'altKey', 'metaKey', 'ctrlKey')) {           keyManager.activeItem?.getMenuTrigger()?.close();         }         break;        default:         keyManager.onKeydown(event);     }   }    /**    * Set focus to either the current, previous or next item based on the FocusNext event, then    * open the previous or next item.    * @param focusNext The element to focus.    */   private _toggleOpenMenu(focusNext: FocusNext | undefined) {     const keyManager = this.keyManager;     switch (focusNext) {       case FocusNext.nextItem:         keyManager.setFocusOrigin('keyboard');         keyManager.setNextItemActive();         keyManager.activeItem?.getMenuTrigger()?.open();         break;        case FocusNext.previousItem:         keyManager.setFocusOrigin('keyboard');         keyManager.setPreviousItemActive();         keyManager.activeItem?.getMenuTrigger()?.open();         break;        case FocusNext.currentItem:         if (keyManager.activeItem) {           keyManager.setFocusOrigin('keyboard');           keyManager.setActiveItem(keyManager.activeItem);         }         break;     }   }    /** Subscribe to the MenuStack emptied events. */   private _subscribeToMenuStackEmptied() {     this.menuStack?.emptied       .pipe(takeUntil(this.destroyed))       .subscribe(event => this._toggleOpenMenu(event));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {Directive, Input} from '@angular/core'; import {CdkMenuItem} from './menu-item';  /** Base class providing checked state for selectable MenuItems. */ @Directive({   host: {     '[attr.aria-checked]': '!!checked',     '[attr.aria-disabled]': 'disabled || null',   }, }) export abstract class CdkMenuItemSelectable extends CdkMenuItem {   /** Whether the element is checked */   @Input('cdkMenuItemChecked')   get checked(): boolean {     return this._checked;   }   set checked(value: BooleanInput) {     this._checked = coerceBooleanProperty(value);   }   private _checked = false;    /** Whether the item should close the menu if triggered by the spacebar. */   protected override closeOnSpacebarTrigger = false; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {UniqueSelectionDispatcher} from '@angular/cdk/collections'; import {Directive, inject, OnDestroy} from '@angular/core'; import {CdkMenuItemSelectable} from './menu-item-selectable'; import {CdkMenuItem} from './menu-item';  /** Counter used to set a unique id and name for a selectable item */ let nextId = 0;  /**  * A directive providing behavior for the \"menuitemradio\" ARIA role, which behaves similarly to  * a conventional radio-button. Any sibling `CdkMenuItemRadio` instances within the same `CdkMenu`  * or `CdkMenuGroup` comprise a radio group with unique selection enforced.  */ @Directive({   selector: '[cdkMenuItemRadio]',   exportAs: 'cdkMenuItemRadio',   standalone: true,   host: {     'role': 'menuitemradio',     '[class.cdk-menu-item-radio]': 'true',   },   providers: [     {provide: CdkMenuItemSelectable, useExisting: CdkMenuItemRadio},     {provide: CdkMenuItem, useExisting: CdkMenuItemSelectable},   ], }) export class CdkMenuItemRadio extends CdkMenuItemSelectable implements OnDestroy {   /** The unique selection dispatcher for this radio's `CdkMenuGroup`. */   private readonly _selectionDispatcher = inject(UniqueSelectionDispatcher);    /** An ID to identify this radio item to the `UniqueSelectionDispatcher`. */   private _id = `${nextId++}`;    /** Function to unregister the selection dispatcher */   private _removeDispatcherListener: () => void;    constructor() {     super();     this._registerDispatcherListener();   }    override ngOnDestroy() {     super.ngOnDestroy();      this._removeDispatcherListener();   }    /**    * Toggles the checked state of the radio-button.    * @param options Options the configure how the item is triggered    *   - keepOpen: specifies that the menu should be kept open after triggering the item.    */   override trigger(options?: {keepOpen: boolean}) {     super.trigger(options);      if (!this.disabled) {       this._selectionDispatcher.notify(this._id, '');     }   }    /** Configure the unique selection dispatcher listener in order to toggle the checked state  */   private _registerDispatcherListener() {     this._removeDispatcherListener = this._selectionDispatcher.listen((id: string) => {       this.checked = this._id === id;     });   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive} from '@angular/core'; import {CdkMenuItemSelectable} from './menu-item-selectable'; import {CdkMenuItem} from './menu-item';  /**  * A directive providing behavior for the \"menuitemcheckbox\" ARIA role, which behaves similarly to a  * conventional checkbox.  */ @Directive({   selector: '[cdkMenuItemCheckbox]',   exportAs: 'cdkMenuItemCheckbox',   standalone: true,   host: {     'role': 'menuitemcheckbox',     '[class.cdk-menu-item-checkbox]': 'true',   },   providers: [     {provide: CdkMenuItemSelectable, useExisting: CdkMenuItemCheckbox},     {provide: CdkMenuItem, useExisting: CdkMenuItemSelectable},   ], }) export class CdkMenuItemCheckbox extends CdkMenuItemSelectable {   /**    * Toggle the checked state of the checkbox.    * @param options Options the configure how the item is triggered    *   - keepOpen: specifies that the menu should be kept open after triggering the item.    */   override trigger(options?: {keepOpen: boolean}) {     super.trigger(options);      if (!this.disabled) {       this.checked = !this.checked;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, inject, Injectable, Input, OnDestroy} from '@angular/core'; import {Directionality} from '@angular/cdk/bidi'; import {   FlexibleConnectedPositionStrategy,   Overlay,   OverlayConfig,   STANDARD_DROPDOWN_BELOW_POSITIONS, } from '@angular/cdk/overlay'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {_getEventTarget} from '@angular/cdk/platform'; import {merge, partition} from 'rxjs'; import {skip, takeUntil} from 'rxjs/operators'; import {MENU_STACK, MenuStack} from './menu-stack'; import {CdkMenuTriggerBase, MENU_TRIGGER} from './menu-trigger-base';  /** The preferred menu positions for the context menu. */ const CONTEXT_MENU_POSITIONS = STANDARD_DROPDOWN_BELOW_POSITIONS.map(position => {   // In cases where the first menu item in the context menu is a trigger the submenu opens on a   // hover event. We offset the context menu 2px by default to prevent this from occurring.   const offsetX = position.overlayX === 'start' ? 2 : -2;   const offsetY = position.overlayY === 'top' ? 2 : -2;   return {...position, offsetX, offsetY}; });  /** Tracks the last open context menu trigger across the entire application. */ @Injectable({providedIn: 'root'}) export class ContextMenuTracker {   /** The last open context menu trigger. */   private static _openContextMenuTrigger?: CdkContextMenuTrigger;    /**    * Close the previous open context menu and set the given one as being open.    * @param trigger The trigger for the currently open Context Menu.    */   update(trigger: CdkContextMenuTrigger) {     if (ContextMenuTracker._openContextMenuTrigger !== trigger) {       ContextMenuTracker._openContextMenuTrigger?.close();       ContextMenuTracker._openContextMenuTrigger = trigger;     }   } }  /** The coordinates where the context menu should open. */ export type ContextMenuCoordinates = {x: number; y: number};  /**  * A directive that opens a menu when a user right-clicks within its host element.  * It is aware of nested context menus and will trigger only the lowest level non-disabled context menu.  */ @Directive({   selector: '[cdkContextMenuTriggerFor]',   exportAs: 'cdkContextMenuTriggerFor',   standalone: true,   host: {     '[attr.data-cdk-menu-stack-id]': 'null',     '(contextmenu)': '_openOnContextMenu($event)',   },   inputs: [     'menuTemplateRef: cdkContextMenuTriggerFor',     'menuPosition: cdkContextMenuPosition',     'menuData: cdkContextMenuTriggerData',   ],   outputs: ['opened: cdkContextMenuOpened', 'closed: cdkContextMenuClosed'],   providers: [     {provide: MENU_TRIGGER, useExisting: CdkContextMenuTrigger},     {provide: MENU_STACK, useClass: MenuStack},   ], }) export class CdkContextMenuTrigger extends CdkMenuTriggerBase implements OnDestroy {   /** The CDK overlay service. */   private readonly _overlay = inject(Overlay);    /** The directionality of the page. */   private readonly _directionality = inject(Directionality, {optional: true});    /** The app's context menu tracking registry */   private readonly _contextMenuTracker = inject(ContextMenuTracker);    /** Whether the context menu is disabled. */   @Input('cdkContextMenuDisabled')   get disabled(): boolean {     return this._disabled;   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);   }   private _disabled = false;    constructor() {     super();     this._setMenuStackCloseListener();   }    /**    * Open the attached menu at the specified location.    * @param coordinates where to open the context menu    */   open(coordinates: ContextMenuCoordinates) {     this._open(coordinates, false);   }    /** Close the currently opened context menu. */   close() {     this.menuStack.closeAll();   }    /**    * Open the context menu and closes any previously open menus.    * @param event the mouse event which opens the context menu.    */   _openOnContextMenu(event: MouseEvent) {     if (!this.disabled) {       // Prevent the native context menu from opening because we're opening a custom one.       event.preventDefault();        // Stop event propagation to ensure that only the closest enabled context menu opens.       // Otherwise, any context menus attached to containing elements would *also* open,       // resulting in multiple stacked context menus being displayed.       event.stopPropagation();        this._contextMenuTracker.update(this);       this._open({x: event.clientX, y: event.clientY}, true);        // A context menu can be triggered via a mouse right click or a keyboard shortcut.       if (event.button === 2) {         this.childMenu?.focusFirstItem('mouse');       } else if (event.button === 0) {         this.childMenu?.focusFirstItem('keyboard');       } else {         this.childMenu?.focusFirstItem('program');       }     }   }    /**    * Get the configuration object used to create the overlay.    * @param coordinates the location to place the opened menu    */   private _getOverlayConfig(coordinates: ContextMenuCoordinates) {     return new OverlayConfig({       positionStrategy: this._getOverlayPositionStrategy(coordinates),       scrollStrategy: this._overlay.scrollStrategies.reposition(),       direction: this._directionality || undefined,     });   }    /**    * Get the position strategy for the overlay which specifies where to place the menu.    * @param coordinates the location to place the opened menu    */   private _getOverlayPositionStrategy(     coordinates: ContextMenuCoordinates,   ): FlexibleConnectedPositionStrategy {     return this._overlay       .position()       .flexibleConnectedTo(coordinates)       .withLockedPosition()       .withGrowAfterOpen()       .withPositions(this.menuPosition ?? CONTEXT_MENU_POSITIONS);   }    /** Subscribe to the menu stack close events and close this menu when requested. */   private _setMenuStackCloseListener() {     this.menuStack.closed.pipe(takeUntil(this.destroyed)).subscribe(({item}) => {       if (item === this.childMenu && this.isOpen()) {         this.closed.next();         this.overlayRef!.detach();       }     });   }    /**    * Subscribe to the overlays outside pointer events stream and handle closing out the stack if a    * click occurs outside the menus.    * @param ignoreFirstAuxClick Whether to ignore the first auxclick event outside the menu.    */   private _subscribeToOutsideClicks(ignoreFirstAuxClick: boolean) {     if (this.overlayRef) {       let outsideClicks = this.overlayRef.outsidePointerEvents();       // If the menu was triggered by the `contextmenu` event, skip the first `auxclick` event       // because it fires when the mouse is released on the same click that opened the menu.       if (ignoreFirstAuxClick) {         const [auxClicks, nonAuxClicks] = partition(outsideClicks, ({type}) => type === 'auxclick');         outsideClicks = merge(nonAuxClicks, auxClicks.pipe(skip(1)));       }       outsideClicks.pipe(takeUntil(this.stopOutsideClicksListener)).subscribe(event => {         if (!this.isElementInsideMenuStack(_getEventTarget(event)!)) {           this.menuStack.closeAll();         }       });     }   }    /**    * Open the attached menu at the specified location.    * @param coordinates where to open the context menu    * @param ignoreFirstOutsideAuxClick Whether to ignore the first auxclick outside the menu after opening.    */   private _open(coordinates: ContextMenuCoordinates, ignoreFirstOutsideAuxClick: boolean) {     if (this.disabled) {       return;     }     if (this.isOpen()) {       // since we're moving this menu we need to close any submenus first otherwise they end up       // disconnected from this one.       this.menuStack.closeSubMenuOf(this.childMenu!);        (         this.overlayRef!.getConfig().positionStrategy as FlexibleConnectedPositionStrategy       ).setOrigin(coordinates);       this.overlayRef!.updatePosition();     } else {       this.opened.next();        if (this.overlayRef) {         (           this.overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy         ).setOrigin(coordinates);         this.overlayRef.updatePosition();       } else {         this.overlayRef = this._overlay.create(this._getOverlayConfig(coordinates));       }        this.overlayRef.attach(this.getMenuContentPortal());       this._subscribeToOutsideClicks(ignoreFirstOutsideAuxClick);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {OverlayModule} from '@angular/cdk/overlay'; import {CdkMenu} from './menu'; import {CdkMenuBar} from './menu-bar'; import {CdkMenuItem} from './menu-item'; import {CdkMenuGroup} from './menu-group'; import {CdkMenuItemRadio} from './menu-item-radio'; import {CdkMenuItemCheckbox} from './menu-item-checkbox'; import {CdkMenuTrigger} from './menu-trigger'; import {CdkContextMenuTrigger} from './context-menu-trigger'; import {CdkTargetMenuAim} from './menu-aim';  const MENU_DIRECTIVES = [   CdkMenuBar,   CdkMenu,   CdkMenuItem,   CdkMenuItemRadio,   CdkMenuItemCheckbox,   CdkMenuTrigger,   CdkMenuGroup,   CdkContextMenuTrigger,   CdkTargetMenuAim, ];  /** Module that declares components and directives for the CDK menu. */ @NgModule({   imports: [OverlayModule, ...MENU_DIRECTIVES],   exports: MENU_DIRECTIVES, }) export class CdkMenuModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './menu-module'; export * from './menu-bar'; export * from './menu'; export * from './menu-base'; export * from './menu-item'; export * from './menu-item-checkbox'; export * from './menu-item-radio'; export * from './menu-trigger'; export * from './menu-group'; export * from './menu-item-selectable'; export * from './context-menu-trigger'; export * from './menu-trigger-base'; export * from './pointer-focus-tracker'; export * from './menu-stack'; export * from './menu-interface'; export * from './menu-aim'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["nextId"],"mappings":";;;;;;;;;;;;;AAAA;;;;;;AAMG;AAKH;;AAEG;MAWU,YAAY,CAAA;;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAFZ,CAAC,EAAC,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,yBAAyB,EAAC,CAAC,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAE3E,YAAY,EAAA,UAAA,EAAA,CAAA;kBAVxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,OAAO;AACf,wBAAA,OAAO,EAAE,gBAAgB;AAC1B,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,yBAAyB,EAAC,CAAC;iBACvF,CAAA;;;ACvBD;;;;;;AAMG;AAMH;MACa,QAAQ,GAAG,IAAI,cAAc,CAAO,UAAU;;ACb3D;;;;;;AAMG;AAmBH;MACa,UAAU,GAAG,IAAI,cAAc,CAAY,gBAAgB,EAAE;AAE1E;AACa,MAAA,iCAAiC,GAAG;AAC/C,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAChE,UAAU,EAAE,CAAC,eAA2B,KAAK,eAAe,IAAI,IAAI,SAAS,EAAE;EAC/E;AAEF;MACa,wCAAwC,GAAG,CACtD,WAAsC,MAClC;AACJ,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AAChE,IAAA,UAAU,EAAE,CAAC,eAA2B,KAAK,eAAe,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;AAC9F,CAAA,EAAE;AAkBH;AACA,IAAIA,QAAM,GAAG,CAAC,CAAC;AAEf;;;;;AAKG;MAEU,SAAS,CAAA;AADtB,IAAA,WAAA,GAAA;;AAGW,QAAA,IAAA,CAAA,EAAE,GAAG,GAAGA,QAAM,EAAE,EAAE,CAAC;;AAGX,QAAA,IAAS,CAAA,SAAA,GAAoB,EAAE,CAAC;;AAGhC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAAuB,CAAC;;AAG5C,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAAyB,CAAC;;AAG9C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAW,CAAC;;AAG3C,QAAA,IAAA,CAAA,MAAM,GAAoC,IAAI,CAAC,MAAM,CAAC;;QAGtD,IAAQ,CAAA,QAAA,GAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,CAC1D,SAAS,CAAC,KAAK,CAAC,EAChB,YAAY,CAAC,CAAC,CAAC,EACf,oBAAoB,EAAE,CACvB,CAAC;AAEF;;;;AAIG;AACM,QAAA,IAAA,CAAA,OAAO,GAAsC,IAAI,CAAC,MAAM,CAAC;AAElE;;;AAGG;AACK,QAAA,IAAsB,CAAA,sBAAA,GAAqC,IAAI,CAAC;KAqGzE;;IAlGC,OAAO,MAAM,CAAC,WAAsC,EAAA;AAClD,QAAA,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;AAC9B,QAAA,KAAK,CAAC,sBAAsB,GAAG,WAAW,CAAC;AAC3C,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;AAGG;AACH,IAAA,IAAI,CAAC,IAAmB,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;AAED;;;;;AAKG;IACH,KAAK,CAAC,QAAuB,EAAE,OAAsB,EAAA;QACnD,MAAM,EAAC,gBAAgB,EAAE,kBAAkB,EAAC,GAAO,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACzC,YAAA,IAAI,aAAa,CAAC;YAClB,GAAG;AACD,gBAAA,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAG,CAAC;AACtC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,aAAa,EAAE,kBAAkB,EAAC,CAAC,CAAC;aAC7D,QAAQ,aAAa,KAAK,QAAQ,EAAE;AAErC,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACpC,aAAA;AACF,SAAA;KACF;AAED;;;;;AAKG;AACH,IAAA,cAAc,CAAC,QAAuB,EAAA;QACpC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACzC,YAAA,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC;AACnC,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE;AAC/B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAG,EAAC,CAAC,CAAC;AACjD,aAAA;AACF,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;AAED;;;AAGG;AACH,IAAA,QAAQ,CAAC,OAAsB,EAAA;QAC7B,MAAM,EAAC,gBAAgB,EAAE,kBAAkB,EAAC,GAAO,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACnB,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;gBACtB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AAC3C,gBAAA,IAAI,aAAa,EAAE;AACjB,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,aAAa,EAAE,kBAAkB,EAAC,CAAC,CAAC;AAC7D,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACpC,SAAA;KACF;;IAGD,OAAO,GAAA;AACL,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;KAC/B;;IAGD,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;KAC9B;;IAGD,IAAI,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAClD;;IAGD,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC;KAC5C;;IAGD,qBAAqB,GAAA;QACnB,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACpC;;AAGD,IAAA,WAAW,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC/B;;2GAzIU,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAT,SAAS,EAAA,CAAA,CAAA;gGAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;;;ACrEX;;;;;;AAMG;AAkBH;MACa,YAAY,GAAG,IAAI,cAAc,CAAqB,kBAAkB,EAAE;AAEvF;;;AAGG;MAOmB,kBAAkB,CAAA;AANxC,IAAA,WAAA,GAAA;;AAQW,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;;AAGlB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;;AAG5C,QAAA,IAAA,CAAA,SAAS,GAAc,MAAM,CAAC,UAAU,CAAC,CAAC;;AASpD,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAE,CAAC;;AAGhD,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAE,CAAC;;AAS/C,QAAA,IAAU,CAAA,UAAA,GAAsB,IAAI,CAAC;;AAG5B,QAAA,IAAA,CAAA,SAAS,GAAkB,IAAI,OAAO,EAAE,CAAC;;AAGzC,QAAA,IAAyB,CAAA,yBAAA,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KAiFnF;IAtEC,WAAW,GAAA;QACT,IAAI,CAAC,eAAe,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;;IAGD,MAAM,GAAA;;QACJ,OAAO,CAAC,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAA,CAAC;KACzC;;AAGD,IAAA,iBAAiB,CAAC,KAAW,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;AAED;;;AAGG;IACO,oBAAoB,GAAA;;AAC5B,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe,MAAK,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAA,CAAC;AACrF,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,qBAAqB,CAAC,EAAE;YACxE,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CACnC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,qBAAqB,EAAE,CAC7B,CAAC;AACH,SAAA;QAED,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;AAED;;;;AAIG;AACO,IAAA,wBAAwB,CAAC,OAAgB,EAAA;;AACjD,QAAA,KAAK,IAAI,EAAE,GAAmB,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,MAAA,EAAE,KAAA,IAAA,IAAF,EAAE,KAAF,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAE,CAAE,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,EAAE;AACzE,YAAA,IAAI,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;AACnE,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;;IAGO,eAAe,GAAA;QACrB,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,SAAA;KACF;;IAGO,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,kBAAkB;AACrB,YAAA,IAAI,CAAC,kBAAkB;gBACvB,QAAQ,CAAC,MAAM,CAAC;AACd,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAC;wBACvC,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAC;AAChD,qBAAA;oBACD,MAAM,EAAE,IAAI,CAAC,QAAQ;AACtB,iBAAA,CAAC,CAAC;QACL,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAChC;;oHAnHmB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,6BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,IAAI,EAAE;AACJ,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,+BAA+B,EAAE,cAAc;AAChD,qBAAA;iBACF,CAAA;;;ACpCD;;;;;;AAMG;AAEH;;;AAGG;SACa,+BAA+B,GAAA;AAC7C,IAAA,MAAM,KAAK,CAAC,4DAA4D,CAAC,CAAC;AAC5E,CAAC;AAED;;;AAGG;SACa,yBAAyB,GAAA;AACvC,IAAA,MAAM,KAAK,CAAC,yCAAyC,CAAC,CAAC;AACzD;;ACtBA;;;;;;AAMG;AA8BH;MACa,QAAQ,GAAG,IAAI,cAAc,CAAU,cAAc,EAAE;AAEpE;AACA,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAEtC;AACA,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB;;;AAGG;AACH,MAAM,WAAW,GAAG,GAAG,CAAC;AAQxB;AACA,SAAS,QAAQ,CAAC,CAAQ,EAAE,CAAQ,EAAA;AAClC,IAAA,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;AACA,SAAS,aAAa,CAAC,KAAY,EAAE,KAAa,EAAA;IAChD,OAAO,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AACnC,CAAC;AAKD;;;;;;;AAOG;AACH,SAAS,eAAe,CAAC,aAAsB,EAAE,CAAS,EAAE,CAAS,EAAA;IACnE,MAAM,EAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAC,GAAG,aAAa,CAAC;;;;AAKjD,IAAA,QACE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,MAAM;AAC9C,SAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC;AACjD,SAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;SAChD,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EACvD;AACJ,CAAC;AAED;;;;;;;;;AASG;MAEU,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;;AAGmB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;;AAGzB,QAAA,IAAO,CAAA,OAAA,GAAY,EAAE,CAAC;;AAYtB,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAE,CAAC;KA+H5D;IA7HC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;AAED;;;;AAIG;IACH,UAAU,CAAC,IAAU,EAAE,cAA+D,EAAA;AACpF,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;AAED;;;;AAIG;AACH,IAAA,MAAM,CAAC,QAAoB,EAAA;;;AAGzB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,YAAY,EAAE;AAC3C,YAAA,QAAQ,EAAE,CAAC;AACZ,SAAA;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAExB,QAAA,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAE1C,QAAA,IAAI,SAAS,IAAI,CAAC,oBAAoB,EAAE;AACtC,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAC7B,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC9B,aAAA;AAAM,iBAAA;AACL,gBAAA,QAAQ,EAAE,CAAC;AACZ,aAAA;AACF,SAAA;aAAM,IAAI,CAAC,oBAAoB,EAAE;AAChC,YAAA,QAAQ,EAAE,CAAC;AACZ,SAAA;KACF;AAED;;;;;;;AAOG;AACK,IAAA,aAAa,CAAC,QAAoB,EAAA;;;;;AAKxC,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,MAAK;;YAEhC,IAAI,IAAI,CAAC,eAAgB,CAAC,aAAa,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU,EAAE;AACxE,gBAAA,QAAQ,EAAE,CAAC;AACZ,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB,EAAE,WAAW,CAAkB,CAAC;AAEjC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KAC7B;;IAGO,kBAAkB,GAAA;AACxB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/C,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QAED,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;;AAGxD,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC5C,YAAA,IAAI,eAAe,CAAC,aAAa,EAAE,KAAK,EAAE,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE;AAC1E,gBAAA,SAAS,EAAE,CAAC;AACb,aAAA;AACF,SAAA;QACD,OAAO,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;KAChD;;IAGO,iBAAiB,GAAA;;AACvB,QAAA,OAAO,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,CAAC,qBAAqB,EAAE,CAAC;KAChG;AAED;;;AAGG;IACK,gBAAgB,GAAA;AACtB,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,gBAAA,+BAA+B,EAAE,CAAC;AACnC,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,gBAAA,yBAAyB,EAAE,CAAC;AAC7B,aAAA;AACF,SAAA;KACF;;IAGO,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;YAClC,SAAS,CAAa,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC;iBACzD,IAAI,CACH,MAAM,CAAC,CAAC,CAAa,EAAE,KAAa,KAAK,KAAK,GAAG,2BAA2B,KAAK,CAAC,CAAC,EACnF,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;AACA,iBAAA,SAAS,CAAC,CAAC,KAAiB,KAAI;AAC/B,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAC,CAAC,CAAC;AACxD,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,EAAE;AACpC,oBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACtB,iBAAA;AACH,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACJ;;+GA/IU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAb,aAAa,EAAA,CAAA,CAAA;gGAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;AAmJX;;;AAGG;MAOU,gBAAgB,CAAA;;kHAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,SAAA,EAFhB,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAC,CAAC,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAE9C,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAC,CAAC;iBAC1D,CAAA;;;AClQD;;;;;;AAMG;AA8BH;;;;;;AAMG;AAyBG,MAAO,cAAe,SAAQ,kBAAkB,CAAA;AAapD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;AAbO,QAAA,IAAA,CAAA,WAAW,GAA4B,MAAM,CAAC,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACzB,QAAA,IAAe,CAAA,eAAA,GAAG,MAAM,CAAC,cAAc,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAC3D,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;;AAGvD,QAAA,IAAW,CAAA,WAAA,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;;AAGjD,QAAA,IAAQ,CAAA,QAAA,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QAI7D,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;;IAGD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;KAC5C;;IAGD,IAAI,GAAA;QACF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;AAClD,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAEnB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;YACpF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAClC,SAAA;KACF;;IAGD,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAEnB,YAAA,IAAI,CAAC,UAAW,CAAC,MAAM,EAAE,CAAC;AAC3B,SAAA;QACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;AAED;;AAEG;IACH,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,KAAoB,EAAA;;QACnC,MAAM,gBAAgB,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,MAAK,UAAU,CAAC;QACtE,QAAQ,KAAK,CAAC,OAAO;AACnB,YAAA,KAAK,KAAK,CAAC;AACX,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;oBACd,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC,UAAU,CAAC,CAAC;AAC5C,iBAAA;gBACD,MAAM;AAER,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAC1B,oBAAA,IAAI,IAAI,CAAC,WAAW,IAAI,gBAAgB,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,MAAK,KAAK,EAAE;wBACjF,KAAK,CAAC,cAAc,EAAE,CAAC;wBACvB,IAAI,CAAC,IAAI,EAAE,CAAC;wBACZ,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC,UAAU,CAAC,CAAC;AAC5C,qBAAA;AACF,iBAAA;gBACD,MAAM;AAER,YAAA,KAAK,UAAU;AACb,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAC1B,oBAAA,IAAI,IAAI,CAAC,WAAW,IAAI,gBAAgB,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,MAAK,KAAK,EAAE;wBACjF,KAAK,CAAC,cAAc,EAAE,CAAC;wBACvB,IAAI,CAAC,IAAI,EAAE,CAAC;wBACZ,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC,UAAU,CAAC,CAAC;AAC5C,qBAAA;AACF,iBAAA;gBACD,MAAM;AAER,YAAA,KAAK,UAAU,CAAC;AAChB,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBAC1B,IAAI,CAAC,gBAAgB,EAAE;wBACrB,KAAK,CAAC,cAAc,EAAE,CAAC;wBACvB,IAAI,CAAC,IAAI,EAAE,CAAC;wBACZ,KAAK,CAAC,OAAO,KAAK,UAAU;8BACxB,MAAA,IAAI,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,cAAc,CAAC,UAAU,CAAC;8BAC1C,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,aAAa,CAAC,UAAU,CAAC,CAAC;AAC/C,qBAAA;AACF,iBAAA;gBACD,MAAM;AACT,SAAA;KACF;;IAGD,YAAY,GAAA;;;AAGV,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,KAAK,UAAU,EAAE;YACjE,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACtC,SAAA;KACF;AAED;;;AAGG;IACK,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;YAClC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC;iBACpD,IAAI,CACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EACzD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;iBACA,SAAS,CAAC,MAAK;;AAEd,gBAAA,MAAM,WAAW,GAAG,MAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAK;oBACpB,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;AACd,iBAAC,CAAC,CAAC;gBAEL,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,oBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACnC,iBAAA;AAAM,qBAAA;AACL,oBAAA,WAAW,EAAE,CAAC;AACf,iBAAA;AACH,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACJ;;IAGO,qBAAqB,GAAA;QAC3B,IAAI,IAAI,CAAC,WAAW,EAAE;;;;AAIpB,YAAA,MAAM,eAAe,GACnB,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;gBAChD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC;AAE7C,YAAA,IAAI,eAAe,EAAE;AACnB,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC3B,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC3B,SAAA;KACF;;IAGO,iBAAiB,GAAA;QACvB,OAAO,IAAI,aAAa,CAAC;AACvB,YAAA,gBAAgB,EAAE,IAAI,CAAC,2BAA2B,EAAE;YACpD,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC3D,YAAA,SAAS,EAAE,IAAI,CAAC,eAAe,IAAI,SAAS;AAC7C,SAAA,CAAC,CAAC;KACJ;;IAGO,2BAA2B,GAAA;QACjC,OAAO,IAAI,CAAC,QAAQ;AACjB,aAAA,QAAQ,EAAE;AACV,aAAA,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,aAAA,kBAAkB,EAAE;AACpB,aAAA,iBAAiB,EAAE;AACnB,aAAA,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;KAC/C;;IAGO,oBAAoB,GAAA;;AAC1B,QAAA,QACE,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,IAChB,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,KAAK,YAAY;AACjE,cAAE,iCAAiC;AACnC,cAAE,oCAAoC,CAAC,EACzC;KACH;AAED;;;AAGG;IACK,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,IAAI,EAAC,KAAI;AACzE,gBAAA,IAAI,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE;oBAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;;AAGG;IACK,yBAAyB,GAAA;QAC/B,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU;AACZ,iBAAA,oBAAoB,EAAE;AACtB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;iBAC/C,SAAS,CAAC,KAAK,IAAG;AACjB,gBAAA,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAY,CAAC;AACjD,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;gBAE/C,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACnD,oBAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE;AAC1C,wBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC3B,qBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC9B,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;AACN,SAAA;KACF;;IAGO,6BAA6B,GAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;gBAC3E,IAAI,CAAC,QAAQ,EAAE;AACb,oBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC3B,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;;IAGO,2BAA2B,GAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAC,kBAAkB,EAAC,KAAI;gBACvD,IAAI,kBAAkB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE;AAClD,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACxC,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;;IAGO,QAAQ,GAAA;;;AAGd,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/D,SAAA;KACF;;IAGO,QAAQ,GAAA;AACd,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AAE/C,QAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;;AAElE,YAAA,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACxC,SAAA;KACF;;gHArRU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,IAAA,EAAA,cAAc,EALd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,eAAA,EAAA,MAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,mCAAA,EAAA,oBAAA,EAAA,2CAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAC;QACpD,iCAAiC;AAClC,KAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAEU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAxB1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,sBAAsB,EAAE,iCAAiC;AACzD,wBAAA,sBAAsB,EAAE,2CAA2C;AACnE,wBAAA,WAAW,EAAE,oBAAoB;AACjC,wBAAA,YAAY,EAAE,qBAAqB;AACnC,wBAAA,WAAW,EAAE,0BAA0B;AACvC,wBAAA,SAAS,EAAE,gBAAgB;AAC5B,qBAAA;AACD,oBAAA,MAAM,EAAE;wBACN,oCAAoC;wBACpC,+BAA+B;wBAC/B,8BAA8B;AAC/B,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;AAC3D,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,gBAAgB,EAAC;wBACpD,iCAAiC;AAClC,qBAAA;iBACF,CAAA;;;AClED;;;;;;AAMG;AAwBH;;;;AAIG;MAgBU,WAAW,CAAA;;AAmBtB,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC/C;;AAgBD,IAAA,IAAI,OAAO,GAAA;;QACT,OAAO,CAAA,MAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,KAAI,IAAI,CAAC;KACnD;AAcD,IAAA,WAAA,GAAA;AAxDmB,QAAA,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC,cAAc,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAC/D,QAAA,IAAA,CAAA,WAAW,GAA4B,MAAM,CAAC,UAAU,CAAC,CAAC;AACzD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;;AAGlB,QAAA,IAAQ,CAAA,QAAA,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;;AAG9C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;;AAGhC,QAAA,IAAW,CAAA,WAAA,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;;AAGjD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;AAU7E,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAQ1B;;;AAGG;AACsC,QAAA,IAAA,CAAA,SAAS,GAAuB,IAAI,YAAY,EAAE,CAAC;AAO5F;;;AAGG;AACH,QAAA,IAAS,CAAA,SAAA,GAAW,CAAC,CAAC,CAAC;;AAGb,QAAA,IAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC;;AAGrB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;QAGjD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;AAEhB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACpB,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;;IAGD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KACxC;AAED;;;;;AAKG;AACH,IAAA,OAAO,CAAC,OAA6B,EAAA;AACnC,QAAA,MAAM,EAAC,QAAQ,EAAC,GAAO,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACnC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,EAAE;gBACb,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAC,kBAAkB,EAAE,IAAI,EAAC,CAAC,CAAC;AACtD,aAAA;AACF,SAAA;KACF;;IAGD,UAAU,GAAA;;QACR,OAAO,CAAC,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,CAAA,CAAC;KACtC;AAED;;;AAGG;IACH,OAAO,GAAA;;AACL,QAAA,OAAO,MAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,CAAC;KACrC;;IAGD,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;;IAGD,QAAQ,GAAA;;AACN,QAAA,OAAO,IAAI,CAAC,cAAc,KAAI,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,EAAE,CAAA,IAAI,EAAE,CAAC;KACxF;;IAGD,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AACrB,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAkB,EAAA;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;AACR,SAAA;;QAGD,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE;AACxC,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACpB,SAAA;KACF;AAED;;;;;AAKG;AACH,IAAA,UAAU,CAAC,KAAoB,EAAA;;QAC7B,QAAQ,KAAK,CAAC,OAAO;AACnB,YAAA,KAAK,KAAK,CAAC;AACX,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAC1B,oBAAA,IAAI,CAAC,OAAO,CAAC,EAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAC,CAAC,CAAC;AACnF,iBAAA;gBACD,MAAM;AAER,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBAC1B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;wBAChD,IAAI,CAAA,MAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,MAAK,KAAK,EAAE;AAC9B,4BAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClC,yBAAA;AAAM,6BAAA;AACL,4BAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC/B,yBAAA;AACF,qBAAA;AACF,iBAAA;gBACD,MAAM;AAER,YAAA,KAAK,UAAU;AACb,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBAC1B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;wBAChD,IAAI,CAAA,MAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,MAAK,KAAK,EAAE;AAC9B,4BAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC/B,yBAAA;AAAM,6BAAA;AACL,4BAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClC,yBAAA;AACF,qBAAA;AACF,iBAAA;gBACD,MAAM;AACT,SAAA;KACF;;IAGD,YAAY,GAAA;;;AAGV,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,KAAK,UAAU,EAAE;YACjE,IAAI,CAAC,OAAO,EAAE,CAAC;AAChB,SAAA;KACF;;IAGO,iBAAiB,GAAA;AACvB,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;KAC1B;AAED;;;AAGG;AACK,IAAA,iBAAiB,CAAC,KAAoB,EAAA;AAC5C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAY,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;YACnE,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE;gBAChC,gBAAgB,EACd,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,KAAK,YAAY;sBACrD,CAAA;sBACsB,CAAA;AAC3B,gBAAA,kBAAkB,EAAE,IAAI;AACzB,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;;AAGG;AACK,IAAA,oBAAoB,CAAC,KAAoB,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,KAAK,YAAY,EAAE;YAC7E,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACvB,gBAAgB,EAAoB,CAAA;AACpC,gBAAA,kBAAkB,EAAE,IAAI;AACzB,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;;AAGG;IACK,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC7B,MAAM,iBAAiB,GAAG,MACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,WAAY,CAAC,CAAC,CAAC;AAE5E,YAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAC7B,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC;iBACpD,IAAI,CACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EACzD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;iBACA,SAAS,CAAC,MAAK;gBACd,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,oBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzC,iBAAA;AAAM,qBAAA;AACL,oBAAA,iBAAiB,EAAE,CAAC;AACrB,iBAAA;aACF,CAAC,CACL,CAAC;AACH,SAAA;KACF;AAED;;;AAGG;IACK,iBAAiB,GAAA;;QACvB,OAAO,CAAA,MAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,MAAK,UAAU,CAAC;KACrD;;IAGO,QAAQ,GAAA;AACd,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AAE/C,QAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;;AAElE,YAAA,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACxC,SAAA;KACF;;6GA1QU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,EAAA,UAAA,CAAA,EAAA,cAAA,EAAA,CAAA,2BAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAfvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,UAAU;AAClB,wBAAA,OAAO,EAAE,eAAe;AACxB,wBAAA,YAAY,EAAE,WAAW;AACzB,wBAAA,sBAAsB,EAAE,kBAAkB;AAC1C,wBAAA,QAAQ,EAAE,kBAAkB;AAC5B,wBAAA,SAAS,EAAE,gBAAgB;AAC3B,wBAAA,SAAS,EAAE,gBAAgB;AAC3B,wBAAA,WAAW,EAAE,oBAAoB;AAClC,qBAAA;iBACF,CAAA;0EAqBK,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,qBAAqB,CAAA;gBAaQ,cAAc,EAAA,CAAA;sBAAjD,KAAK;uBAAC,2BAA2B,CAAA;gBAMO,SAAS,EAAA,CAAA;sBAAjD,MAAM;uBAAC,sBAAsB,CAAA;;;ACxFhC;;;;;;AAMG;AAYH;;;AAGG;MACU,mBAAmB,CAAA;AAgB9B,IAAA,WAAA;;IAEmB,MAAoB,EAAA;AAApB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAc;;AAhB9B,QAAA,IAAA,CAAA,OAAO,GAAkB,IAAI,CAAC,sBAAsB,EAAE,CAAC;;AAGvD,QAAA,IAAA,CAAA,MAAM,GAAkB,IAAI,CAAC,oBAAoB,EAAE,CAAC;;AAS5C,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAE,CAAC;AAMzD,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAK;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC;AAC1C,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;AACjC,SAAC,CAAC,CAAC;KACJ;;IAGD,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;AAED;;;AAGG;IACK,sBAAsB,GAAA;AAC5B,QAAA,OAAO,KAAK,CAAC,MACX,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CACtB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EACtB,QAAQ,CAAC,CAAC,IAAkB,KAC1B,IAAI,CAAC,GAAG,CAAC,OAAO,IACd,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,IAAI,CAC7D,KAAK,CAAC,OAAO,CAAC,EACd,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAC/B,CACF,CACF,EACD,QAAQ,EAAE,CACX,CACF,CAAC;KACH;AAED;;;AAGG;IACK,oBAAoB,GAAA;AAC1B,QAAA,OAAO,KAAK,CAAC,MACX,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CACtB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EACtB,QAAQ,CAAC,CAAC,IAAkB,KAC1B,IAAI,CAAC,GAAG,CAAC,OAAO,IACd,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,IAAI,CAC3D,KAAK,CAAC,OAAO,CAAC,EACd,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAC/B,CACF,CACF,EACD,QAAQ,EAAE,CACX,CACF,CAAC;KACH;AACF;;AChGD;;;;;;AAMG;AAwBH;AACA,IAAIA,QAAM,GAAG,CAAC,CAAC;AAEf;;;AAGG;AAcG,MAAgB,WACpB,SAAQ,YAAY,CAAA;AAdtB,IAAA,WAAA,GAAA;;;QAkBW,IAAA,CAAA,aAAa,GAAgB,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC;;AAG7D,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;;AAGzB,QAAA,IAAA,CAAA,SAAS,GAAc,MAAM,CAAC,UAAU,CAAC,CAAC;;AAGhC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;;AAGzD,QAAA,IAAG,CAAA,GAAA,GAAG,MAAM,CAAC,cAAc,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;;AAGzD,QAAA,IAAA,CAAA,EAAE,GAAG,YAAYA,QAAM,EAAE,EAAE,CAAC;;AAOrC,QAAA,IAAW,CAAA,WAAA,GAA8B,UAAU,CAAC;AAEpD;;;AAGG;AACH,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;AAME,QAAA,IAAA,CAAA,SAAS,GAAkB,IAAI,OAAO,EAAE,CAAC;;AASpD,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;KAmIpC;IAjIC,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,SAAA;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;IAED,WAAW,GAAA;;AACT,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC1B,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,CAAC;KAChC;AAED;;;AAGG;IACH,cAAc,CAAC,cAA2B,SAAS,EAAA;AACjD,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;KACtC;AAED;;;AAGG;IACH,aAAa,CAAC,cAA2B,SAAS,EAAA;AAChD,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;KACrC;;IAGD,YAAY,GAAA;AACV,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,QAAQ,GAAG,gBAAgB,GAAG,IAAI,CAAC;KAChD;AAED;;;;;AAKG;IACO,aAAa,CAAC,IAAmB,EAAE,OAAwC,EAAA;;AACnF,QAAA,MAAM,EAAC,kBAAkB,EAAC,GAAO,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAC,CAAC;AAC1C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;AACjC,QAAA,IAAI,IAAI,MAAK,CAAA,EAAA,GAAA,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,cAAc,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAA,EAAE;YACjD,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,cAAc,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,EAAE,CAAC;;;AAGnC,YAAA,IAAI,kBAAkB,EAAE;AACtB,gBAAA,IAAI,OAAO,EAAE;AACX,oBAAA,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACnC,iBAAA;AAAM,qBAAA;oBACL,UAAU,CAAC,kBAAkB,EAAE,CAAC;AACjC,iBAAA;AACF,aAAA;AACF,SAAA;KACF;;IAGO,cAAc,GAAA;;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,CAAC,cAAc,EAAE,CAAC;AAE9F,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,EAAE;AACrC,YAAA,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,KAAI,KAAK,CAAC,CAAC;AACrE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC;AAC3C,SAAA;KACF;AAED;;;AAGG;IACK,oBAAoB,GAAA;AAC1B,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,OAAO;AACf,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EACrB,QAAQ,CAAC,CAAC,IAA4B,KACpC,IAAI;aACD,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC;AAC5B,aAAA,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,EAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAC1F,EACD,QAAQ,EAAE,EACV,SAAS,CAAC,CAAC,IAAiB,KAAI;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,YAAA,OAAO,IAAI,CAAC,cAAc,EAAG,CAAC,MAAM,CAAC;SACtC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,CAAC,OAAO,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC;KACpD;;IAGO,2BAA2B,GAAA;QACjC,IAAI,CAAC,SAAS,CAAC,MAAM;AAClB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC/B,SAAS,CAAC,CAAC,EAAC,IAAI,EAAE,kBAAkB,EAAC,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAC,kBAAkB,EAAC,CAAC,CAAC,CAAC;KAC9F;;IAGO,6BAA6B,GAAA;QACnC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC3E,gBAAA,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;AACrC,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;;AAGG;IACK,oBAAoB,GAAA;QAC1B,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;gBACjC,IAAI,CAAC,cAAc,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5D,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,cAAe,CAAC,CAAC;AACrD,SAAA;KACF;;6GAlLmB,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,IAAA,EAAA,WAAW,mYAuBd,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAvBR,WAAW,EAAA,UAAA,EAAA,CAAA;kBAbhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,OAAO,EAAE,EAAE;AACX,wBAAA,YAAY,EAAE,gBAAgB;AAC9B,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,yBAAyB,EAAE,aAAa;AACxC,wBAAA,+BAA+B,EAAE,cAAc;AAC/C,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,WAAW,EAAE,6BAA6B;AAC1C,wBAAA,YAAY,EAAE,8BAA8B;AAC7C,qBAAA;iBACF,CAAA;8BAqBU,EAAE,EAAA,CAAA;sBAAV,KAAK;gBAIG,KAAK,EAAA,CAAA;sBADb,eAAe;gBAAC,IAAA,EAAA,CAAA,WAAW,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,CAAA;;;ACzEnD;;;;;;AAMG;AAWH;;;;;;AAMG;AAiBG,MAAO,OAAQ,SAAQ,WAAW,CAAA;AAYtC,IAAA,WAAA,GAAA;;AACE,QAAA,KAAK,EAAE,CAAC;AAZF,QAAA,IAAc,CAAA,cAAA,GAAG,MAAM,CAAC,YAAY,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;;AAG7C,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAE,CAAC;;AAGjD,QAAA,IAAW,CAAA,WAAA,GAAG,UAAU,CAAC;;AAGzB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;QAIhD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAC9C;IAEQ,kBAAkB,GAAA;QACzB,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC3B,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;IAEQ,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KACxB;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,KAAoB,EAAA;AAClC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,QAAQ,KAAK,CAAC,OAAO;AACnB,YAAA,KAAK,UAAU,CAAC;AAChB,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBAC1B,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,oBAAA,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AACtC,oBAAA,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7B,iBAAA;gBACD,MAAM;AAER,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBAC1B,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,oBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE;wBACzB,gBAAgB,EAAuB,CAAA;AACvC,wBAAA,kBAAkB,EAAE,IAAI;AACzB,qBAAA,CAAC,CAAC;AACJ,iBAAA;gBACD,MAAM;AAER,YAAA,KAAK,GAAG;gBACN,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;oBAC1D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAC,kBAAkB,EAAE,IAAI,EAAC,CAAC,CAAC;AACrD,iBAAA;gBACD,MAAM;AAER,YAAA;AACE,gBAAA,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;KACF;AAED;;;AAGG;AACK,IAAA,gBAAgB,CAAC,SAAgC,EAAA;AACvD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,QAAQ,SAAS;YACf,KAAA,CAAA;AACE,gBAAA,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;gBACtC,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBAC/B,MAAM;YAER,KAAA,CAAA;AACE,gBAAA,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;gBACtC,UAAU,CAAC,qBAAqB,EAAE,CAAC;gBACnC,MAAM;YAER,KAAA,CAAA;gBACE,IAAI,UAAU,CAAC,UAAU,EAAE;AACzB,oBAAA,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AACtC,oBAAA,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACjD,iBAAA;gBACD,MAAM;AACT,SAAA;KACF;;IAGO,4BAA4B,GAAA;QAClC,IAAI,CAAC,SAAS,CAAC,OAAO;AACnB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,aAAA,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;KACrD;;yGAhGU,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAP,OAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,IAAA,EAAA,OAAO,EANP,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAC;AAC7C,QAAA,EAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAC;QACzC,wCAAwC,CAAC,UAAU,CAAC;AACrD,KAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAEU,OAAO,EAAA,UAAA,EAAA,CAAA;kBAhBnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,yBAAyB,EAAE,UAAU;AACrC,wBAAA,WAAW,EAAE,yBAAyB;AACvC,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,SAAS,EAAC;AAC7C,wBAAA,EAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,SAAS,EAAC;wBACzC,wCAAwC,CAAC,UAAU,CAAC;AACrD,qBAAA;iBACF,CAAA;0EAKoB,MAAM,EAAA,CAAA;sBAAxB,MAAM;;;AC5CT;;;;;;AAMG;AAkBH;;;;;AAKG;AAgBG,MAAO,UAAW,SAAQ,WAAW,CAAA;AAf3C,IAAA,WAAA,GAAA;;;AAiBoB,QAAA,IAAW,CAAA,WAAA,GAAG,YAAY,CAAC;;AAG3B,QAAA,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;KA2FnC;IAzFU,kBAAkB,GAAA;QACzB,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC3B,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,KAAoB,EAAA;;AAClC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,QAAQ,KAAK,CAAC,OAAO;AACnB,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,UAAU,CAAC;AAChB,YAAA,KAAK,UAAU,CAAC;AAChB,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAC1B,oBAAA,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,KAAK,WAAW,CAAC;;;;AAIvF,oBAAA,IAAI,gBAAgB,EAAE;wBACpB,KAAK,CAAC,cAAc,EAAE,CAAC;wBAEvB,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,UAAU,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,EAAE,CAAC;wBACvD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAU,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,EAAE,CAAC;AAEjD,wBAAA,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AACtC,wBAAA,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5B,wBAAA,IAAI,UAAU,EAAE;4BACd,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAU,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,EAAE,CAAC;AACjD,yBAAA;AACF,qBAAA;AACF,iBAAA;gBACD,MAAM;AAER,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBAC1B,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAU,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,EAAE,CAAC;AAClD,iBAAA;gBACD,MAAM;AAER,YAAA,KAAK,GAAG;gBACN,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;oBAC1D,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAU,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,EAAE,CAAC;AAClD,iBAAA;gBACD,MAAM;AAER,YAAA;AACE,gBAAA,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;KACF;AAED;;;;AAIG;AACK,IAAA,eAAe,CAAC,SAAgC,EAAA;;AACtD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,QAAQ,SAAS;YACf,KAAA,CAAA;AACE,gBAAA,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;gBACtC,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBAC/B,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAU,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,EAAE,CAAC;gBAChD,MAAM;YAER,KAAA,CAAA;AACE,gBAAA,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;gBACtC,UAAU,CAAC,qBAAqB,EAAE,CAAC;gBACnC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAU,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,EAAE,CAAC;gBAChD,MAAM;YAER,KAAA,CAAA;gBACE,IAAI,UAAU,CAAC,UAAU,EAAE;AACzB,oBAAA,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AACtC,oBAAA,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACjD,iBAAA;gBACD,MAAM;AACT,SAAA;KACF;;IAGO,4BAA4B,GAAA;;AAClC,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC9B,CAAA,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;KACpD;;4GA/FU,UAAU,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,IAAA,EAAA,UAAU,EANV,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAC;AAChD,QAAA,EAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAC;AAC5C,QAAA,EAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAC;AACxE,KAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAEU,UAAU,EAAA,UAAA,EAAA,CAAA;kBAftB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,OAAO,EAAE,cAAc;AACvB,wBAAA,WAAW,EAAE,yBAAyB;AACvC,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,YAAY,EAAC;AAChD,wBAAA,EAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,YAAY,EAAC;AAC5C,wBAAA,EAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAC;AACxE,qBAAA;iBACF,CAAA;;;AC5CD;;;;;;AAMG;AAMH;AAOM,MAAgB,qBAAsB,SAAQ,WAAW,CAAA;AAN/D,IAAA,WAAA,GAAA;;AAeU,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;AAGN,QAAA,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;KACnD;;AAXC,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC9C;;uHARmB,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2GAArB,qBAAqB,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,IAAI,EAAE;AACJ,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,sBAAsB,EAAE,kBAAkB;AAC3C,qBAAA;iBACF,CAAA;8BAIK,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,oBAAoB,CAAA;;;ACrB7B;;;;;;AAMG;AAOH;AACA,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf;;;;AAIG;AAcG,MAAO,gBAAiB,SAAQ,qBAAqB,CAAA;AAUzD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;;AATO,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;;AAGlE,QAAA,IAAA,CAAA,GAAG,GAAG,GAAG,MAAM,EAAE,EAAE,CAAC;QAO1B,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACpC;IAEQ,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpB,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAClC;AAED;;;;AAIG;AACM,IAAA,OAAO,CAAC,OAA6B,EAAA;AAC5C,QAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAChD,SAAA;KACF;;IAGO,2BAA2B,GAAA;AACjC,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAU,KAAI;YAC/E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;AACjC,SAAC,CAAC,CAAC;KACJ;;kHAvCU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,IAAA,EAAA,gBAAgB,EALhB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,eAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA,EAAC,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,gBAAgB,EAAC;AAC/D,QAAA,EAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,qBAAqB,EAAC;AAC3D,KAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAEU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAb5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,eAAe;AACvB,wBAAA,6BAA6B,EAAE,MAAM;AACtC,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAC,OAAO,EAAE,qBAAqB,EAAE,WAAW,kBAAkB,EAAC;AAC/D,wBAAA,EAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,qBAAqB,EAAC;AAC3D,qBAAA;iBACF,CAAA;;;ACjCD;;;;;;AAMG;AAMH;;;AAGG;AAcG,MAAO,mBAAoB,SAAQ,qBAAqB,CAAA;AAC5D;;;;AAIG;AACM,IAAA,OAAO,CAAC,OAA6B,EAAA;AAC5C,QAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9B,SAAA;KACF;;qHAZU,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,IAAA,EAAA,mBAAmB,EALnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA,EAAC,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,mBAAmB,EAAC;AAClE,QAAA,EAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,qBAAqB,EAAC;AAC3D,KAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,kBAAkB;AAC1B,wBAAA,gCAAgC,EAAE,MAAM;AACzC,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAC,OAAO,EAAE,qBAAqB,EAAE,WAAW,qBAAqB,EAAC;AAClE,wBAAA,EAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,qBAAqB,EAAC;AAC3D,qBAAA;iBACF,CAAA;;;AC5BD;;;;;;AAMG;AAiBH;AACA,MAAM,sBAAsB,GAAG,iCAAiC,CAAC,GAAG,CAAC,QAAQ,IAAG;;;AAG9E,IAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,KAAK,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,IAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,IAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAW,QAAQ,CAAA,EAAA,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA,CAAA;AACzC,CAAC,CAAC,CAAC;AAEH;MAEa,kBAAkB,CAAA;AAI7B;;;AAGG;AACH,IAAA,MAAM,CAAC,OAA8B,EAAA;;AACnC,QAAA,IAAI,kBAAkB,CAAC,uBAAuB,KAAK,OAAO,EAAE;AAC1D,YAAA,CAAA,EAAA,GAAA,kBAAkB,CAAC,uBAAuB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,EAAE,CAAC;AACpD,YAAA,kBAAkB,CAAC,uBAAuB,GAAG,OAAO,CAAC;AACtD,SAAA;KACF;;oHAbU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADN,MAAM,EAAA,CAAA,CAAA;gGAClB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;AAoBhC;;;AAGG;AAoBG,MAAO,qBAAsB,SAAQ,kBAAkB,CAAA;;AAW3D,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC/C;AAGD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;;AAnBO,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;;AAG3B,QAAA,IAAe,CAAA,eAAA,GAAG,MAAM,CAAC,cAAc,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;;AAG3D,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAU1D,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAIxB,IAAI,CAAC,0BAA0B,EAAE,CAAC;KACnC;AAED;;;AAGG;AACH,IAAA,IAAI,CAAC,WAAmC,EAAA;AACtC,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;KAChC;;IAGD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;AAED;;;AAGG;AACH,IAAA,kBAAkB,CAAC,KAAiB,EAAA;;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;;YAElB,KAAK,CAAC,cAAc,EAAE,CAAC;;;;YAKvB,KAAK,CAAC,eAAe,EAAE,CAAC;AAExB,YAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,KAAK,CAAC,EAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAC,EAAE,IAAI,CAAC,CAAC;;AAGvD,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtB,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC,OAAO,CAAC,CAAC;AACzC,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7B,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC,UAAU,CAAC,CAAC;AAC5C,aAAA;AAAM,iBAAA;gBACL,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC,SAAS,CAAC,CAAC;AAC3C,aAAA;AACF,SAAA;KACF;AAED;;;AAGG;AACK,IAAA,iBAAiB,CAAC,WAAmC,EAAA;QAC3D,OAAO,IAAI,aAAa,CAAC;AACvB,YAAA,gBAAgB,EAAE,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC;YAC/D,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC3D,YAAA,SAAS,EAAE,IAAI,CAAC,eAAe,IAAI,SAAS;AAC7C,SAAA,CAAC,CAAC;KACJ;AAED;;;AAGG;AACK,IAAA,2BAA2B,CACjC,WAAmC,EAAA;;QAEnC,OAAO,IAAI,CAAC,QAAQ;AACjB,aAAA,QAAQ,EAAE;aACV,mBAAmB,CAAC,WAAW,CAAC;AAChC,aAAA,kBAAkB,EAAE;AACpB,aAAA,iBAAiB,EAAE;aACnB,aAAa,CAAC,MAAA,IAAI,CAAC,YAAY,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,sBAAsB,CAAC,CAAC;KAC/D;;IAGO,0BAA0B,GAAA;QAChC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,IAAI,EAAC,KAAI;YACzE,IAAI,IAAI,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AAC5C,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACnB,gBAAA,IAAI,CAAC,UAAW,CAAC,MAAM,EAAE,CAAC;AAC3B,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;;;AAIG;AACK,IAAA,yBAAyB,CAAC,mBAA4B,EAAA;QAC5D,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;;;AAG3D,YAAA,IAAI,mBAAmB,EAAE;gBACvB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,EAAC,IAAI,EAAC,KAAK,IAAI,KAAK,UAAU,CAAC,CAAC;AAC5F,gBAAA,aAAa,GAAG,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,aAAA;AACD,YAAA,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;gBAC9E,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,KAAK,CAAE,CAAC,EAAE;AAC3D,oBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC3B,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;;;AAIG;IACK,KAAK,CAAC,WAAmC,EAAE,0BAAmC,EAAA;QACpF,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;;;YAGjB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAU,CAAC,CAAC;AAG7C,YAAA,IAAI,CAAC,UAAW,CAAC,SAAS,EAAE,CAAC,gBAC9B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACzB,YAAA,IAAI,CAAC,UAAW,CAAC,cAAc,EAAE,CAAC;AACnC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAEnB,IAAI,IAAI,CAAC,UAAU,EAAE;AAEjB,gBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,gBAC7B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACzB,gBAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;AAClC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7E,aAAA;YAED,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,yBAAyB,CAAC,0BAA0B,CAAC,CAAC;AAC5D,SAAA;KACF;;uHA9JU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,IAAA,EAAA,qBAAqB,EALrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,CAAA,0BAAA,EAAA,iBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,wBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,2BAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAC;AAC3D,QAAA,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAC;AAC3C,KAAA,EAAA,QAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;gGAEU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAnBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,+BAA+B,EAAE,MAAM;AACvC,wBAAA,eAAe,EAAE,4BAA4B;AAC9C,qBAAA;AACD,oBAAA,MAAM,EAAE;wBACN,2CAA2C;wBAC3C,sCAAsC;wBACtC,qCAAqC;AACtC,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,8BAA8B,EAAE,8BAA8B,CAAC;AACzE,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,uBAAuB,EAAC;AAC3D,wBAAA,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAC;AAC3C,qBAAA;iBACF,CAAA;0EAaK,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,wBAAwB,CAAA;;;ACvFjC;;;;;;AAMG;AAcH,MAAM,eAAe,GAAG;IACtB,UAAU;IACV,OAAO;IACP,WAAW;IACX,gBAAgB;IAChB,mBAAmB;IACnB,cAAc;IACd,YAAY;IACZ,qBAAqB;IACrB,gBAAgB;CACjB,CAAC;AAEF;MAKa,aAAa,CAAA;;+GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAb,aAAa,EAAA,OAAA,EAAA,CAHd,aAAa,EAbvB,UAAU;QACV,OAAO;QACP,WAAW;QACX,gBAAgB;QAChB,mBAAmB;QACnB,cAAc;QACd,YAAY;QACZ,qBAAqB;AACrB,QAAA,gBAAgB,aARhB,UAAU;QACV,OAAO;QACP,WAAW;QACX,gBAAgB;QAChB,mBAAmB;QACnB,cAAc;QACd,YAAY;QACZ,qBAAqB;QACrB,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAQL,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAHd,aAAa,CAAA,EAAA,CAAA,CAAA;gGAGZ,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,aAAa,EAAE,GAAG,eAAe,CAAC;AAC5C,oBAAA,OAAO,EAAE,eAAe;iBACzB,CAAA;;;ACpCD;;;;;;AAMG;;ACNH;;;;;;AAMG;;ACNH;;AAEG;;;;"}
-------------------- SECTION 221 --------------------
{"version":3,"file":"overlay.mjs","sources":["../../../../../../src/cdk/overlay/scroll/block-scroll-strategy.ts","../../../../../../src/cdk/overlay/scroll/scroll-strategy.ts","../../../../../../src/cdk/overlay/scroll/close-scroll-strategy.ts","../../../../../../src/cdk/overlay/scroll/noop-scroll-strategy.ts","../../../../../../src/cdk/overlay/position/scroll-clip.ts","../../../../../../src/cdk/overlay/scroll/reposition-scroll-strategy.ts","../../../../../../src/cdk/overlay/scroll/scroll-strategy-options.ts","../../../../../../src/cdk/overlay/scroll/index.ts","../../../../../../src/cdk/overlay/overlay-config.ts","../../../../../../src/cdk/overlay/position/connected-position.ts","../../../../../../src/cdk/overlay/dispatchers/base-overlay-dispatcher.ts","../../../../../../src/cdk/overlay/dispatchers/overlay-keyboard-dispatcher.ts","../../../../../../src/cdk/overlay/dispatchers/overlay-outside-click-dispatcher.ts","../../../../../../src/cdk/overlay/overlay-container.ts","../../../../../../src/cdk/overlay/overlay-ref.ts","../../../../../../src/cdk/overlay/position/flexible-connected-position-strategy.ts","../../../../../../src/cdk/overlay/position/global-position-strategy.ts","../../../../../../src/cdk/overlay/position/overlay-position-builder.ts","../../../../../../src/cdk/overlay/overlay.ts","../../../../../../src/cdk/overlay/overlay-directives.ts","../../../../../../src/cdk/overlay/overlay-module.ts","../../../../../../src/cdk/overlay/dispatchers/index.ts","../../../../../../src/cdk/overlay/fullscreen-overlay-container.ts","../../../../../../src/cdk/overlay/public-api.ts","../../../../../../src/cdk/overlay/index.ts","../../../../../../src/cdk/overlay/overlay_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ScrollStrategy} from './scroll-strategy'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {coerceCssPixelValue} from '@angular/cdk/coercion'; import {supportsScrollBehavior} from '@angular/cdk/platform';  const scrollBehaviorSupported = supportsScrollBehavior();  /**  * Strategy that will prevent the user from scrolling while the overlay is visible.  */ export class BlockScrollStrategy implements ScrollStrategy {   private _previousHTMLStyles = {top: '', left: ''};   private _previousScrollPosition: {top: number; left: number};   private _isEnabled = false;   private _document: Document;    constructor(private _viewportRuler: ViewportRuler, document: any) {     this._document = document;   }    /** Attaches this scroll strategy to an overlay. */   attach() {}    /** Blocks page-level scroll while the attached overlay is open. */   enable() {     if (this._canBeEnabled()) {       const root = this._document.documentElement!;        this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();        // Cache the previous inline styles in case the user had set them.       this._previousHTMLStyles.left = root.style.left || '';       this._previousHTMLStyles.top = root.style.top || '';        // Note: we're using the `html` node, instead of the `body`, because the `body` may       // have the user agent margin, whereas the `html` is guaranteed not to have one.       root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);       root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);       root.classList.add('cdk-global-scrollblock');       this._isEnabled = true;     }   }    /** Unblocks page-level scroll while the attached overlay is open. */   disable() {     if (this._isEnabled) {       const html = this._document.documentElement!;       const body = this._document.body!;       const htmlStyle = html.style;       const bodyStyle = body.style;       const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';       const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';        this._isEnabled = false;        htmlStyle.left = this._previousHTMLStyles.left;       htmlStyle.top = this._previousHTMLStyles.top;       html.classList.remove('cdk-global-scrollblock');        // Disable user-defined smooth scrolling temporarily while we restore the scroll position.       // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior       // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,       // because it can throw off feature detections in `supportsScrollBehavior` which       // checks for `'scrollBehavior' in documentElement.style`.       if (scrollBehaviorSupported) {         htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';       }        window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);        if (scrollBehaviorSupported) {         htmlStyle.scrollBehavior = previousHtmlScrollBehavior;         bodyStyle.scrollBehavior = previousBodyScrollBehavior;       }     }   }    private _canBeEnabled(): boolean {     // Since the scroll strategies can't be singletons, we have to use a global CSS class     // (`cdk-global-scrollblock`) to make sure that we don't try to disable global     // scrolling multiple times.     const html = this._document.documentElement!;      if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {       return false;     }      const body = this._document.body;     const viewport = this._viewportRuler.getViewportSize();     return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {OverlayReference} from '../overlay-reference';  /**  * Describes a strategy that will be used by an overlay to handle scroll events while it is open.  */ export interface ScrollStrategy {   /** Enable this scroll strategy (called when the attached overlay is attached to a portal). */   enable: () => void;    /** Disable this scroll strategy (called when the attached overlay is detached from a portal). */   disable: () => void;    /** Attaches this `ScrollStrategy` to an overlay. */   attach: (overlayRef: OverlayReference) => void;    /** Detaches the scroll strategy from the current overlay. */   detach?: () => void; }  /**  * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.  */ export function getMatScrollStrategyAlreadyAttachedError(): Error {   return Error(`Scroll strategy has already been attached.`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {NgZone} from '@angular/core'; import {ScrollStrategy, getMatScrollStrategyAlreadyAttachedError} from './scroll-strategy'; import {OverlayReference} from '../overlay-reference'; import {Subscription} from 'rxjs'; import {ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling';  /**  * Config options for the CloseScrollStrategy.  */ export interface CloseScrollStrategyConfig {   /** Amount of pixels the user has to scroll before the overlay is closed. */   threshold?: number; }  /**  * Strategy that will close the overlay as soon as the user starts scrolling.  */ export class CloseScrollStrategy implements ScrollStrategy {   private _scrollSubscription: Subscription | null = null;   private _overlayRef: OverlayReference;   private _initialScrollPosition: number;    constructor(     private _scrollDispatcher: ScrollDispatcher,     private _ngZone: NgZone,     private _viewportRuler: ViewportRuler,     private _config?: CloseScrollStrategyConfig,   ) {}    /** Attaches this scroll strategy to an overlay. */   attach(overlayRef: OverlayReference) {     if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getMatScrollStrategyAlreadyAttachedError();     }      this._overlayRef = overlayRef;   }    /** Enables the closing of the attached overlay on scroll. */   enable() {     if (this._scrollSubscription) {       return;     }      const stream = this._scrollDispatcher.scrolled(0);      if (this._config && this._config.threshold && this._config.threshold > 1) {       this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;        this._scrollSubscription = stream.subscribe(() => {         const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;          if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config!.threshold!) {           this._detach();         } else {           this._overlayRef.updatePosition();         }       });     } else {       this._scrollSubscription = stream.subscribe(this._detach);     }   }    /** Disables the closing the attached overlay on scroll. */   disable() {     if (this._scrollSubscription) {       this._scrollSubscription.unsubscribe();       this._scrollSubscription = null;     }   }    detach() {     this.disable();     this._overlayRef = null!;   }    /** Detaches the overlay ref and disables the scroll strategy. */   private _detach = () => {     this.disable();      if (this._overlayRef.hasAttached()) {       this._ngZone.run(() => this._overlayRef.detach());     }   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ScrollStrategy} from './scroll-strategy';  /** Scroll strategy that doesn't do anything. */ export class NoopScrollStrategy implements ScrollStrategy {   /** Does nothing, as this scroll strategy is a no-op. */   enable() {}   /** Does nothing, as this scroll strategy is a no-op. */   disable() {}   /** Does nothing, as this scroll strategy is a no-op. */   attach() {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // TODO(jelbourn): move this to live with the rest of the scrolling code // TODO(jelbourn): someday replace this with IntersectionObservers  /** Equivalent of `ClientRect` without some of the properties we don't care about. */ type Dimensions = Omit<ClientRect, 'x' | 'y' | 'toJSON'>;  /**  * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.  * @param element Dimensions of the element (from getBoundingClientRect)  * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)  * @returns Whether the element is scrolled out of view  * @docs-private  */ export function isElementScrolledOutsideView(element: Dimensions, scrollContainers: Dimensions[]) {   return scrollContainers.some(containerBounds => {     const outsideAbove = element.bottom < containerBounds.top;     const outsideBelow = element.top > containerBounds.bottom;     const outsideLeft = element.right < containerBounds.left;     const outsideRight = element.left > containerBounds.right;      return outsideAbove || outsideBelow || outsideLeft || outsideRight;   }); }  /**  * Gets whether an element is clipped by any of its scrolling containers.  * @param element Dimensions of the element (from getBoundingClientRect)  * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)  * @returns Whether the element is clipped  * @docs-private  */ export function isElementClippedByScrolling(element: Dimensions, scrollContainers: Dimensions[]) {   return scrollContainers.some(scrollContainerRect => {     const clippedAbove = element.top < scrollContainerRect.top;     const clippedBelow = element.bottom > scrollContainerRect.bottom;     const clippedLeft = element.left < scrollContainerRect.left;     const clippedRight = element.right > scrollContainerRect.right;      return clippedAbove || clippedBelow || clippedLeft || clippedRight;   }); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgZone} from '@angular/core'; import {Subscription} from 'rxjs'; import {ScrollStrategy, getMatScrollStrategyAlreadyAttachedError} from './scroll-strategy'; import {OverlayReference} from '../overlay-reference'; import {ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling'; import {isElementScrolledOutsideView} from '../position/scroll-clip';  /**  * Config options for the RepositionScrollStrategy.  */ export interface RepositionScrollStrategyConfig {   /** Time in milliseconds to throttle the scroll events. */   scrollThrottle?: number;    /** Whether to close the overlay once the user has scrolled away completely. */   autoClose?: boolean; }  /**  * Strategy that will update the element position as the user is scrolling.  */ export class RepositionScrollStrategy implements ScrollStrategy {   private _scrollSubscription: Subscription | null = null;   private _overlayRef: OverlayReference;    constructor(     private _scrollDispatcher: ScrollDispatcher,     private _viewportRuler: ViewportRuler,     private _ngZone: NgZone,     private _config?: RepositionScrollStrategyConfig,   ) {}    /** Attaches this scroll strategy to an overlay. */   attach(overlayRef: OverlayReference) {     if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw getMatScrollStrategyAlreadyAttachedError();     }      this._overlayRef = overlayRef;   }    /** Enables repositioning of the attached overlay on scroll. */   enable() {     if (!this._scrollSubscription) {       const throttle = this._config ? this._config.scrollThrottle : 0;        this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {         this._overlayRef.updatePosition();          // TODO(crisbeto): make `close` on by default once all components can handle it.         if (this._config && this._config.autoClose) {           const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();           const {width, height} = this._viewportRuler.getViewportSize();            // TODO(crisbeto): include all ancestor scroll containers here once           // we have a way of exposing the trigger element to the scroll strategy.           const parentRects = [{width, height, bottom: height, right: width, top: 0, left: 0}];            if (isElementScrolledOutsideView(overlayRect, parentRects)) {             this.disable();             this._ngZone.run(() => this._overlayRef.detach());           }         }       });     }   }    /** Disables repositioning of the attached overlay on scroll. */   disable() {     if (this._scrollSubscription) {       this._scrollSubscription.unsubscribe();       this._scrollSubscription = null;     }   }    detach() {     this.disable();     this._overlayRef = null!;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling'; import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, NgZone} from '@angular/core'; import {BlockScrollStrategy} from './block-scroll-strategy'; import {CloseScrollStrategy, CloseScrollStrategyConfig} from './close-scroll-strategy'; import {NoopScrollStrategy} from './noop-scroll-strategy'; import {   RepositionScrollStrategy,   RepositionScrollStrategyConfig, } from './reposition-scroll-strategy';  /**  * Options for how an overlay will handle scrolling.  *  * Users can provide a custom value for `ScrollStrategyOptions` to replace the default  * behaviors. This class primarily acts as a factory for ScrollStrategy instances.  */ @Injectable({providedIn: 'root'}) export class ScrollStrategyOptions {   private _document: Document;    constructor(     private _scrollDispatcher: ScrollDispatcher,     private _viewportRuler: ViewportRuler,     private _ngZone: NgZone,     @Inject(DOCUMENT) document: any,   ) {     this._document = document;   }    /** Do nothing on scroll. */   noop = () => new NoopScrollStrategy();    /**    * Close the overlay as soon as the user scrolls.    * @param config Configuration to be used inside the scroll strategy.    */   close = (config?: CloseScrollStrategyConfig) =>     new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);    /** Block scrolling. */   block = () => new BlockScrollStrategy(this._viewportRuler, this._document);    /**    * Update the overlay's position on scroll.    * @param config Configuration to be used inside the scroll strategy.    * Allows debouncing the reposition calls.    */   reposition = (config?: RepositionScrollStrategyConfig) =>     new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export {CdkScrollable, ScrollDispatcher} from '@angular/cdk/scrolling';  // Export pre-defined scroll strategies and interface to build custom ones. export {ScrollStrategy} from './scroll-strategy'; export {ScrollStrategyOptions} from './scroll-strategy-options'; export {   RepositionScrollStrategy,   RepositionScrollStrategyConfig, } from './reposition-scroll-strategy'; export {CloseScrollStrategy} from './close-scroll-strategy'; export {NoopScrollStrategy} from './noop-scroll-strategy'; export {BlockScrollStrategy} from './block-scroll-strategy'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {PositionStrategy} from './position/position-strategy'; import {Direction, Directionality} from '@angular/cdk/bidi'; import {ScrollStrategy, NoopScrollStrategy} from './scroll/index';  /** Initial configuration used when creating an overlay. */ export class OverlayConfig {   /** Strategy with which to position the overlay. */   positionStrategy?: PositionStrategy;    /** Strategy to be used when handling scroll events while the overlay is open. */   scrollStrategy?: ScrollStrategy = new NoopScrollStrategy();    /** Custom class to add to the overlay pane. */   panelClass?: string | string[] = '';    /** Whether the overlay has a backdrop. */   hasBackdrop?: boolean = false;    /** Custom class to add to the backdrop */   backdropClass?: string | string[] = 'cdk-overlay-dark-backdrop';    /** The width of the overlay panel. If a number is provided, pixel units are assumed. */   width?: number | string;    /** The height of the overlay panel. If a number is provided, pixel units are assumed. */   height?: number | string;    /** The min-width of the overlay panel. If a number is provided, pixel units are assumed. */   minWidth?: number | string;    /** The min-height of the overlay panel. If a number is provided, pixel units are assumed. */   minHeight?: number | string;    /** The max-width of the overlay panel. If a number is provided, pixel units are assumed. */   maxWidth?: number | string;    /** The max-height of the overlay panel. If a number is provided, pixel units are assumed. */   maxHeight?: number | string;    /**    * Direction of the text in the overlay panel. If a `Directionality` instance    * is passed in, the overlay will handle changes to its value automatically.    */   direction?: Direction | Directionality;    /**    * Whether the overlay should be disposed of when the user goes backwards/forwards in history.    * Note that this usually doesn't include clicking on links (unless the user is using    * the `HashLocationStrategy`).    */   disposeOnNavigation?: boolean = false;    constructor(config?: OverlayConfig) {     if (config) {       // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,       // loses the array generic type in the `for of`. But we *also* have to use `Array` because       // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`       const configKeys = Object.keys(config) as Iterable<keyof OverlayConfig> &         (keyof OverlayConfig)[];       for (const key of configKeys) {         if (config[key] !== undefined) {           // TypeScript, as of version 3.5, sees the left-hand-side of this expression           // as \"I don't know *which* key this is, so the only valid value is the intersection           // of all the possible values.\" In this case, that happens to be `undefined`. TypeScript           // is not smart enough to see that the right-hand-side is actually an access of the same           // exact type with the same exact key, meaning that the value type must be identical.           // So we use `any` to work around this.           this[key] = config[key] as any;         }       }     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /** Horizontal dimension of a connection point on the perimeter of the origin or overlay element. */ export type HorizontalConnectionPos = 'start' | 'center' | 'end';  /** Vertical dimension of a connection point on the perimeter of the origin or overlay element. */ export type VerticalConnectionPos = 'top' | 'center' | 'bottom';  /** A connection point on the origin element. */ export interface OriginConnectionPosition {   originX: HorizontalConnectionPos;   originY: VerticalConnectionPos; }  /** A connection point on the overlay element. */ export interface OverlayConnectionPosition {   overlayX: HorizontalConnectionPos;   overlayY: VerticalConnectionPos; }  /** The points of the origin element and the overlay element to connect. */ export class ConnectionPositionPair {   /** X-axis attachment point for connected overlay origin. Can be 'start', 'end', or 'center'. */   originX: HorizontalConnectionPos;   /** Y-axis attachment point for connected overlay origin. Can be 'top', 'bottom', or 'center'. */   originY: VerticalConnectionPos;   /** X-axis attachment point for connected overlay. Can be 'start', 'end', or 'center'. */   overlayX: HorizontalConnectionPos;   /** Y-axis attachment point for connected overlay. Can be 'top', 'bottom', or 'center'. */   overlayY: VerticalConnectionPos;    constructor(     origin: OriginConnectionPosition,     overlay: OverlayConnectionPosition,     /** Offset along the X axis. */     public offsetX?: number,     /** Offset along the Y axis. */     public offsetY?: number,     /** Class(es) to be applied to the panel while this position is active. */     public panelClass?: string | string[],   ) {     this.originX = origin.originX;     this.originY = origin.originY;     this.overlayX = overlay.overlayX;     this.overlayY = overlay.overlayY;   } }  /**  * Set of properties regarding the position of the origin and overlay relative to the viewport  * with respect to the containing Scrollable elements.  *  * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the  * bounds of any one of the strategy's Scrollable's bounding client rectangle.  *  * The overlay and origin are outside view if there is no overlap between their bounding client  * rectangle and any one of the strategy's Scrollable's bounding client rectangle.  *  *       -----------                    -----------  *       | outside |                    | clipped |  *       |  view   |              --------------------------  *       |         |              |     |         |        |  *       ----------               |     -----------        |  *  --------------------------    |                        |  *  |                        |    |      Scrollable        |  *  |                        |    |                        |  *  |                        |     --------------------------  *  |      Scrollable        |  *  |                        |  *  --------------------------  *  *  @docs-private  */ export class ScrollingVisibility {   isOriginClipped: boolean;   isOriginOutsideView: boolean;   isOverlayClipped: boolean;   isOverlayOutsideView: boolean; }  /** The change event emitted by the strategy when a fallback position is used. */ export class ConnectedOverlayPositionChange {   constructor(     /** The position used as a result of this change. */     public connectionPair: ConnectionPositionPair,     /** @docs-private */     public scrollableViewProperties: ScrollingVisibility,   ) {} }  /**  * Validates whether a vertical position property matches the expected values.  * @param property Name of the property being validated.  * @param value Value of the property being validated.  * @docs-private  */ export function validateVerticalPosition(property: string, value: VerticalConnectionPos) {   if (value !== 'top' && value !== 'bottom' && value !== 'center') {     throw Error(       `ConnectedPosition: Invalid ${property} \"${value}\". ` +         `Expected \"top\", \"bottom\" or \"center\".`,     );   } }  /**  * Validates whether a horizontal position property matches the expected values.  * @param property Name of the property being validated.  * @param value Value of the property being validated.  * @docs-private  */ export function validateHorizontalPosition(property: string, value: HorizontalConnectionPos) {   if (value !== 'start' && value !== 'end' && value !== 'center') {     throw Error(       `ConnectedPosition: Invalid ${property} \"${value}\". ` +         `Expected \"start\", \"end\" or \"center\".`,     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, OnDestroy} from '@angular/core'; import {OverlayReference} from '../overlay-reference';  /**  * Service for dispatching events that land on the body to appropriate overlay ref,  * if any. It maintains a list of attached overlays to determine best suited overlay based  * on event target and order of overlay opens.  */ @Injectable({providedIn: 'root'}) export abstract class BaseOverlayDispatcher implements OnDestroy {   /** Currently attached overlays in the order they were attached. */   _attachedOverlays: OverlayReference[] = [];    protected _document: Document;   protected _isAttached: boolean;    constructor(@Inject(DOCUMENT) document: any) {     this._document = document;   }    ngOnDestroy(): void {     this.detach();   }    /** Add a new overlay to the list of attached overlay refs. */   add(overlayRef: OverlayReference): void {     // Ensure that we don't get the same overlay multiple times.     this.remove(overlayRef);     this._attachedOverlays.push(overlayRef);   }    /** Remove an overlay from the list of attached overlay refs. */   remove(overlayRef: OverlayReference): void {     const index = this._attachedOverlays.indexOf(overlayRef);      if (index > -1) {       this._attachedOverlays.splice(index, 1);     }      // Remove the global listener once there are no more overlays.     if (this._attachedOverlays.length === 0) {       this.detach();     }   }    /** Detaches the global event listener. */   protected abstract detach(): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, NgZone, Optional} from '@angular/core'; import {OverlayReference} from '../overlay-reference'; import {BaseOverlayDispatcher} from './base-overlay-dispatcher';  /**  * Service for dispatching keyboard events that land on the body to appropriate overlay ref,  * if any. It maintains a list of attached overlays to determine best suited overlay based  * on event target and order of overlay opens.  */ @Injectable({providedIn: 'root'}) export class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {   constructor(     @Inject(DOCUMENT) document: any,     /** @breaking-change 14.0.0 _ngZone will be required. */     @Optional() private _ngZone?: NgZone,   ) {     super(document);   }    /** Add a new overlay to the list of attached overlay refs. */   override add(overlayRef: OverlayReference): void {     super.add(overlayRef);      // Lazily start dispatcher once first overlay is added     if (!this._isAttached) {       /** @breaking-change 14.0.0 _ngZone will be required. */       if (this._ngZone) {         this._ngZone.runOutsideAngular(() =>           this._document.body.addEventListener('keydown', this._keydownListener),         );       } else {         this._document.body.addEventListener('keydown', this._keydownListener);       }       this._isAttached = true;     }   }    /** Detaches the global keyboard event listener. */   protected detach() {     if (this._isAttached) {       this._document.body.removeEventListener('keydown', this._keydownListener);       this._isAttached = false;     }   }    /** Keyboard event listener that will be attached to the body. */   private _keydownListener = (event: KeyboardEvent) => {     const overlays = this._attachedOverlays;      for (let i = overlays.length - 1; i > -1; i--) {       // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.       // We want to target the most recent overlay, rather than trying to match where the event came       // from, because some components might open an overlay, but keep focus on a trigger element       // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,       // because we don't want overlays that don't handle keyboard events to block the ones below       // them that do.       if (overlays[i]._keydownEvents.observers.length > 0) {         const keydownEvents = overlays[i]._keydownEvents;         /** @breaking-change 14.0.0 _ngZone will be required. */         if (this._ngZone) {           this._ngZone.run(() => keydownEvents.next(event));         } else {           keydownEvents.next(event);         }         break;       }     }   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, NgZone, Optional} from '@angular/core'; import {OverlayReference} from '../overlay-reference'; import {Platform, _getEventTarget} from '@angular/cdk/platform'; import {BaseOverlayDispatcher} from './base-overlay-dispatcher';  /**  * Service for dispatching mouse click events that land on the body to appropriate overlay ref,  * if any. It maintains a list of attached overlays to determine best suited overlay based  * on event target and order of overlay opens.  */ @Injectable({providedIn: 'root'}) export class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {   private _cursorOriginalValue: string;   private _cursorStyleIsSet = false;   private _pointerDownEventTarget: EventTarget | null;    constructor(     @Inject(DOCUMENT) document: any,     private _platform: Platform,     /** @breaking-change 14.0.0 _ngZone will be required. */     @Optional() private _ngZone?: NgZone,   ) {     super(document);   }    /** Add a new overlay to the list of attached overlay refs. */   override add(overlayRef: OverlayReference): void {     super.add(overlayRef);      // Safari on iOS does not generate click events for non-interactive     // elements. However, we want to receive a click for any element outside     // the overlay. We can force a \"clickable\" state by setting     // `cursor: pointer` on the document body. See:     // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile     // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html     if (!this._isAttached) {       const body = this._document.body;        /** @breaking-change 14.0.0 _ngZone will be required. */       if (this._ngZone) {         this._ngZone.runOutsideAngular(() => this._addEventListeners(body));       } else {         this._addEventListeners(body);       }        // click event is not fired on iOS. To make element \"clickable\" we are       // setting the cursor to pointer       if (this._platform.IOS && !this._cursorStyleIsSet) {         this._cursorOriginalValue = body.style.cursor;         body.style.cursor = 'pointer';         this._cursorStyleIsSet = true;       }        this._isAttached = true;     }   }    /** Detaches the global keyboard event listener. */   protected detach() {     if (this._isAttached) {       const body = this._document.body;       body.removeEventListener('pointerdown', this._pointerDownListener, true);       body.removeEventListener('click', this._clickListener, true);       body.removeEventListener('auxclick', this._clickListener, true);       body.removeEventListener('contextmenu', this._clickListener, true);       if (this._platform.IOS && this._cursorStyleIsSet) {         body.style.cursor = this._cursorOriginalValue;         this._cursorStyleIsSet = false;       }       this._isAttached = false;     }   }    private _addEventListeners(body: HTMLElement): void {     body.addEventListener('pointerdown', this._pointerDownListener, true);     body.addEventListener('click', this._clickListener, true);     body.addEventListener('auxclick', this._clickListener, true);     body.addEventListener('contextmenu', this._clickListener, true);   }    /** Store pointerdown event target to track origin of click. */   private _pointerDownListener = (event: PointerEvent) => {     this._pointerDownEventTarget = _getEventTarget(event);   };    /** Click event listener that will be attached to the body propagate phase. */   private _clickListener = (event: MouseEvent) => {     const target = _getEventTarget(event);     // In case of a click event, we want to check the origin of the click     // (e.g. in case where a user starts a click inside the overlay and     // releases the click outside of it).     // This is done by using the event target of the preceding pointerdown event.     // Every click event caused by a pointer device has a preceding pointerdown     // event, unless the click was programmatically triggered (e.g. in a unit test).     const origin =       event.type === 'click' && this._pointerDownEventTarget         ? this._pointerDownEventTarget         : target;     // Reset the stored pointerdown event target, to avoid having it interfere     // in subsequent events.     this._pointerDownEventTarget = null;      // We copy the array because the original may be modified asynchronously if the     // outsidePointerEvents listener decides to detach overlays resulting in index errors inside     // the for loop.     const overlays = this._attachedOverlays.slice();      // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.     // We want to target all overlays for which the click could be considered as outside click.     // As soon as we reach an overlay for which the click is not outside click we break off     // the loop.     for (let i = overlays.length - 1; i > -1; i--) {       const overlayRef = overlays[i];       if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {         continue;       }        // If it's a click inside the overlay, just break - we should do nothing       // If it's an outside click (both origin and target of the click) dispatch the mouse event,       // and proceed with the next overlay       if (         overlayRef.overlayElement.contains(target as Node) ||         overlayRef.overlayElement.contains(origin as Node)       ) {         break;       }        const outsidePointerEvents = overlayRef._outsidePointerEvents;       /** @breaking-change 14.0.0 _ngZone will be required. */       if (this._ngZone) {         this._ngZone.run(() => outsidePointerEvents.next(event));       } else {         outsidePointerEvents.next(event);       }     }   }; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, OnDestroy} from '@angular/core'; import {Platform, _isTestEnvironment} from '@angular/cdk/platform';  /** Container inside which all overlays will render. */ @Injectable({providedIn: 'root'}) export class OverlayContainer implements OnDestroy {   protected _containerElement: HTMLElement;   protected _document: Document;    constructor(@Inject(DOCUMENT) document: any, protected _platform: Platform) {     this._document = document;   }    ngOnDestroy() {     this._containerElement?.remove();   }    /**    * This method returns the overlay container element. It will lazily    * create the element the first time it is called to facilitate using    * the container in non-browser environments.    * @returns the container element    */   getContainerElement(): HTMLElement {     if (!this._containerElement) {       this._createContainer();     }      return this._containerElement;   }    /**    * Create the overlay container element, which is simply a div    * with the 'cdk-overlay-container' class on the document body.    */   protected _createContainer(): void {     const containerClass = 'cdk-overlay-container';      // TODO(crisbeto): remove the testing check once we have an overlay testing     // module or Angular starts tearing down the testing `NgModule`. See:     // https://github.com/angular/angular/issues/18831     if (this._platform.isBrowser || _isTestEnvironment()) {       const oppositePlatformContainers = this._document.querySelectorAll(         `.${containerClass}[platform=\"server\"], ` + `.${containerClass}[platform=\"test\"]`,       );        // Remove any old containers from the opposite platform.       // This can happen when transitioning from the server to the client.       for (let i = 0; i < oppositePlatformContainers.length; i++) {         oppositePlatformContainers[i].remove();       }     }      const container = this._document.createElement('div');     container.classList.add(containerClass);      // A long time ago we kept adding new overlay containers whenever a new app was instantiated,     // but at some point we added logic which clears the duplicate ones in order to avoid leaks.     // The new logic was a little too aggressive since it was breaking some legitimate use cases.     // To mitigate the problem we made it so that only containers from a different platform are     // cleared, but the side-effect was that people started depending on the overly-aggressive     // logic to clean up their tests for them. Until we can introduce an overlay-specific testing     // module which does the cleanup, we try to detect that we're in a test environment and we     // always clear the container. See #17006.     // TODO(crisbeto): remove the test environment check once we have an overlay testing module.     if (_isTestEnvironment()) {       container.setAttribute('platform', 'test');     } else if (!this._platform.isBrowser) {       container.setAttribute('platform', 'server');     }      this._document.body.appendChild(container);     this._containerElement = container;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Direction, Directionality} from '@angular/cdk/bidi'; import {ComponentPortal, Portal, PortalOutlet, TemplatePortal} from '@angular/cdk/portal'; import {ComponentRef, EmbeddedViewRef, NgZone} from '@angular/core'; import {Location} from '@angular/common'; import {Observable, Subject, merge, SubscriptionLike, Subscription} from 'rxjs'; import {take, takeUntil} from 'rxjs/operators'; import {OverlayKeyboardDispatcher} from './dispatchers/overlay-keyboard-dispatcher'; import {OverlayOutsideClickDispatcher} from './dispatchers/overlay-outside-click-dispatcher'; import {OverlayConfig} from './overlay-config'; import {coerceCssPixelValue, coerceArray} from '@angular/cdk/coercion'; import {OverlayReference} from './overlay-reference'; import {PositionStrategy} from './position/position-strategy'; import {ScrollStrategy} from './scroll';  /** An object where all of its properties cannot be written. */ export type ImmutableObject<T> = {   readonly [P in keyof T]: T[P]; };  /**  * Reference to an overlay that has been created with the Overlay service.  * Used to manipulate or dispose of said overlay.  */ export class OverlayRef implements PortalOutlet, OverlayReference {   private _backdropElement: HTMLElement | null = null;   private _backdropTimeout: number | undefined;   private readonly _backdropClick = new Subject<MouseEvent>();   private readonly _attachments = new Subject<void>();   private readonly _detachments = new Subject<void>();   private _positionStrategy: PositionStrategy | undefined;   private _scrollStrategy: ScrollStrategy | undefined;   private _locationChanges: SubscriptionLike = Subscription.EMPTY;   private _backdropClickHandler = (event: MouseEvent) => this._backdropClick.next(event);   private _backdropTransitionendHandler = (event: TransitionEvent) => {     this._disposeBackdrop(event.target as HTMLElement | null);   };    /**    * Reference to the parent of the `_host` at the time it was detached. Used to restore    * the `_host` to its original position in the DOM when it gets re-attached.    */   private _previousHostParent: HTMLElement;    /** Stream of keydown events dispatched to this overlay. */   readonly _keydownEvents = new Subject<KeyboardEvent>();    /** Stream of mouse outside events dispatched to this overlay. */   readonly _outsidePointerEvents = new Subject<MouseEvent>();    constructor(     private _portalOutlet: PortalOutlet,     private _host: HTMLElement,     private _pane: HTMLElement,     private _config: ImmutableObject<OverlayConfig>,     private _ngZone: NgZone,     private _keyboardDispatcher: OverlayKeyboardDispatcher,     private _document: Document,     private _location: Location,     private _outsideClickDispatcher: OverlayOutsideClickDispatcher,     private _animationsDisabled = false,   ) {     if (_config.scrollStrategy) {       this._scrollStrategy = _config.scrollStrategy;       this._scrollStrategy.attach(this);     }      this._positionStrategy = _config.positionStrategy;   }    /** The overlay's HTML element */   get overlayElement(): HTMLElement {     return this._pane;   }    /** The overlay's backdrop HTML element. */   get backdropElement(): HTMLElement | null {     return this._backdropElement;   }    /**    * Wrapper around the panel element. Can be used for advanced    * positioning where a wrapper with specific styling is    * required around the overlay pane.    */   get hostElement(): HTMLElement {     return this._host;   }    attach<T>(portal: ComponentPortal<T>): ComponentRef<T>;   attach<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T>;   attach(portal: any): any;    /**    * Attaches content, given via a Portal, to the overlay.    * If the overlay is configured to have a backdrop, it will be created.    *    * @param portal Portal instance to which to attach the overlay.    * @returns The portal attachment result.    */   attach(portal: Portal<any>): any {     // Insert the host into the DOM before attaching the portal, otherwise     // the animations module will skip animations on repeat attachments.     if (!this._host.parentElement && this._previousHostParent) {       this._previousHostParent.appendChild(this._host);     }      const attachResult = this._portalOutlet.attach(portal);      if (this._positionStrategy) {       this._positionStrategy.attach(this);     }      this._updateStackingOrder();     this._updateElementSize();     this._updateElementDirection();      if (this._scrollStrategy) {       this._scrollStrategy.enable();     }      // Update the position once the zone is stable so that the overlay will be fully rendered     // before attempting to position it, as the position may depend on the size of the rendered     // content.     this._ngZone.onStable.pipe(take(1)).subscribe(() => {       // The overlay could've been detached before the zone has stabilized.       if (this.hasAttached()) {         this.updatePosition();       }     });      // Enable pointer events for the overlay pane element.     this._togglePointerEvents(true);      if (this._config.hasBackdrop) {       this._attachBackdrop();     }      if (this._config.panelClass) {       this._toggleClasses(this._pane, this._config.panelClass, true);     }      // Only emit the `attachments` event once all other setup is done.     this._attachments.next();      // Track this overlay by the keyboard dispatcher     this._keyboardDispatcher.add(this);      if (this._config.disposeOnNavigation) {       this._locationChanges = this._location.subscribe(() => this.dispose());     }      this._outsideClickDispatcher.add(this);      // TODO(crisbeto): the null check is here, because the portal outlet returns `any`.     // We should be guaranteed for the result to be `ComponentRef | EmbeddedViewRef`, but     // `instanceof EmbeddedViewRef` doesn't appear to work at the moment.     if (typeof attachResult?.onDestroy === 'function') {       // In most cases we control the portal and we know when it is being detached so that       // we can finish the disposal process. The exception is if the user passes in a custom       // `ViewContainerRef` that isn't destroyed through the overlay API. Note that we use       // `detach` here instead of `dispose`, because we don't know if the user intends to       // reattach the overlay at a later point. It also has the advantage of waiting for animations.       attachResult.onDestroy(() => {         if (this.hasAttached()) {           // We have to delay the `detach` call, because detaching immediately prevents           // other destroy hooks from running. This is likely a framework bug similar to           // https://github.com/angular/angular/issues/46119           this._ngZone.runOutsideAngular(() => Promise.resolve().then(() => this.detach()));         }       });     }      return attachResult;   }    /**    * Detaches an overlay from a portal.    * @returns The portal detachment result.    */   detach(): any {     if (!this.hasAttached()) {       return;     }      this.detachBackdrop();      // When the overlay is detached, the pane element should disable pointer events.     // This is necessary because otherwise the pane element will cover the page and disable     // pointer events therefore. Depends on the position strategy and the applied pane boundaries.     this._togglePointerEvents(false);      if (this._positionStrategy && this._positionStrategy.detach) {       this._positionStrategy.detach();     }      if (this._scrollStrategy) {       this._scrollStrategy.disable();     }      const detachmentResult = this._portalOutlet.detach();      // Only emit after everything is detached.     this._detachments.next();      // Remove this overlay from keyboard dispatcher tracking.     this._keyboardDispatcher.remove(this);      // Keeping the host element in the DOM can cause scroll jank, because it still gets     // rendered, even though it's transparent and unclickable which is why we remove it.     this._detachContentWhenStable();     this._locationChanges.unsubscribe();     this._outsideClickDispatcher.remove(this);     return detachmentResult;   }    /** Cleans up the overlay from the DOM. */   dispose(): void {     const isAttached = this.hasAttached();      if (this._positionStrategy) {       this._positionStrategy.dispose();     }      this._disposeScrollStrategy();     this._disposeBackdrop(this._backdropElement);     this._locationChanges.unsubscribe();     this._keyboardDispatcher.remove(this);     this._portalOutlet.dispose();     this._attachments.complete();     this._backdropClick.complete();     this._keydownEvents.complete();     this._outsidePointerEvents.complete();     this._outsideClickDispatcher.remove(this);     this._host?.remove();      this._previousHostParent = this._pane = this._host = null!;      if (isAttached) {       this._detachments.next();     }      this._detachments.complete();   }    /** Whether the overlay has attached content. */   hasAttached(): boolean {     return this._portalOutlet.hasAttached();   }    /** Gets an observable that emits when the backdrop has been clicked. */   backdropClick(): Observable<MouseEvent> {     return this._backdropClick;   }    /** Gets an observable that emits when the overlay has been attached. */   attachments(): Observable<void> {     return this._attachments;   }    /** Gets an observable that emits when the overlay has been detached. */   detachments(): Observable<void> {     return this._detachments;   }    /** Gets an observable of keydown events targeted to this overlay. */   keydownEvents(): Observable<KeyboardEvent> {     return this._keydownEvents;   }    /** Gets an observable of pointer events targeted outside this overlay. */   outsidePointerEvents(): Observable<MouseEvent> {     return this._outsidePointerEvents;   }    /** Gets the current overlay configuration, which is immutable. */   getConfig(): OverlayConfig {     return this._config;   }    /** Updates the position of the overlay based on the position strategy. */   updatePosition(): void {     if (this._positionStrategy) {       this._positionStrategy.apply();     }   }    /** Switches to a new position strategy and updates the overlay position. */   updatePositionStrategy(strategy: PositionStrategy): void {     if (strategy === this._positionStrategy) {       return;     }      if (this._positionStrategy) {       this._positionStrategy.dispose();     }      this._positionStrategy = strategy;      if (this.hasAttached()) {       strategy.attach(this);       this.updatePosition();     }   }    /** Update the size properties of the overlay. */   updateSize(sizeConfig: OverlaySizeConfig): void {     this._config = {...this._config, ...sizeConfig};     this._updateElementSize();   }    /** Sets the LTR/RTL direction for the overlay. */   setDirection(dir: Direction | Directionality): void {     this._config = {...this._config, direction: dir};     this._updateElementDirection();   }    /** Add a CSS class or an array of classes to the overlay pane. */   addPanelClass(classes: string | string[]): void {     if (this._pane) {       this._toggleClasses(this._pane, classes, true);     }   }    /** Remove a CSS class or an array of classes from the overlay pane. */   removePanelClass(classes: string | string[]): void {     if (this._pane) {       this._toggleClasses(this._pane, classes, false);     }   }    /**    * Returns the layout direction of the overlay panel.    */   getDirection(): Direction {     const direction = this._config.direction;      if (!direction) {       return 'ltr';     }      return typeof direction === 'string' ? direction : direction.value;   }    /** Switches to a new scroll strategy. */   updateScrollStrategy(strategy: ScrollStrategy): void {     if (strategy === this._scrollStrategy) {       return;     }      this._disposeScrollStrategy();     this._scrollStrategy = strategy;      if (this.hasAttached()) {       strategy.attach(this);       strategy.enable();     }   }    /** Updates the text direction of the overlay panel. */   private _updateElementDirection() {     this._host.setAttribute('dir', this.getDirection());   }    /** Updates the size of the overlay element based on the overlay config. */   private _updateElementSize() {     if (!this._pane) {       return;     }      const style = this._pane.style;      style.width = coerceCssPixelValue(this._config.width);     style.height = coerceCssPixelValue(this._config.height);     style.minWidth = coerceCssPixelValue(this._config.minWidth);     style.minHeight = coerceCssPixelValue(this._config.minHeight);     style.maxWidth = coerceCssPixelValue(this._config.maxWidth);     style.maxHeight = coerceCssPixelValue(this._config.maxHeight);   }    /** Toggles the pointer events for the overlay pane element. */   private _togglePointerEvents(enablePointer: boolean) {     this._pane.style.pointerEvents = enablePointer ? '' : 'none';   }    /** Attaches a backdrop for this overlay. */   private _attachBackdrop() {     const showingClass = 'cdk-overlay-backdrop-showing';      this._backdropElement = this._document.createElement('div');     this._backdropElement.classList.add('cdk-overlay-backdrop');      if (this._animationsDisabled) {       this._backdropElement.classList.add('cdk-overlay-backdrop-noop-animation');     }      if (this._config.backdropClass) {       this._toggleClasses(this._backdropElement, this._config.backdropClass, true);     }      // Insert the backdrop before the pane in the DOM order,     // in order to handle stacked overlays properly.     this._host.parentElement!.insertBefore(this._backdropElement, this._host);      // Forward backdrop clicks such that the consumer of the overlay can perform whatever     // action desired when such a click occurs (usually closing the overlay).     this._backdropElement.addEventListener('click', this._backdropClickHandler);      // Add class to fade-in the backdrop after one frame.     if (!this._animationsDisabled && typeof requestAnimationFrame !== 'undefined') {       this._ngZone.runOutsideAngular(() => {         requestAnimationFrame(() => {           if (this._backdropElement) {             this._backdropElement.classList.add(showingClass);           }         });       });     } else {       this._backdropElement.classList.add(showingClass);     }   }    /**    * Updates the stacking order of the element, moving it to the top if necessary.    * This is required in cases where one overlay was detached, while another one,    * that should be behind it, was destroyed. The next time both of them are opened,    * the stacking will be wrong, because the detached element's pane will still be    * in its original DOM position.    */   private _updateStackingOrder() {     if (this._host.nextSibling) {       this._host.parentNode!.appendChild(this._host);     }   }    /** Detaches the backdrop (if any) associated with the overlay. */   detachBackdrop(): void {     const backdropToDetach = this._backdropElement;      if (!backdropToDetach) {       return;     }      if (this._animationsDisabled) {       this._disposeBackdrop(backdropToDetach);       return;     }      backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');      this._ngZone.runOutsideAngular(() => {       backdropToDetach!.addEventListener('transitionend', this._backdropTransitionendHandler);     });      // If the backdrop doesn't have a transition, the `transitionend` event won't fire.     // In this case we make it unclickable and we try to remove it after a delay.     backdropToDetach.style.pointerEvents = 'none';      // Run this outside the Angular zone because there's nothing that Angular cares about.     // If it were to run inside the Angular zone, every test that used Overlay would have to be     // either async or fakeAsync.     this._backdropTimeout = this._ngZone.runOutsideAngular(() =>       setTimeout(() => {         this._disposeBackdrop(backdropToDetach);       }, 500),     );   }    /** Toggles a single CSS class or an array of classes on an element. */   private _toggleClasses(element: HTMLElement, cssClasses: string | string[], isAdd: boolean) {     const classes = coerceArray(cssClasses || []).filter(c => !!c);      if (classes.length) {       isAdd ? element.classList.add(...classes) : element.classList.remove(...classes);     }   }    /** Detaches the overlay content next time the zone stabilizes. */   private _detachContentWhenStable() {     // Normally we wouldn't have to explicitly run this outside the `NgZone`, however     // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will     // be patched to run inside the zone, which will throw us into an infinite loop.     this._ngZone.runOutsideAngular(() => {       // We can't remove the host here immediately, because the overlay pane's content       // might still be animating. This stream helps us avoid interrupting the animation       // by waiting for the pane to become empty.       const subscription = this._ngZone.onStable         .pipe(takeUntil(merge(this._attachments, this._detachments)))         .subscribe(() => {           // Needs a couple of checks for the pane and host, because           // they may have been removed by the time the zone stabilizes.           if (!this._pane || !this._host || this._pane.children.length === 0) {             if (this._pane && this._config.panelClass) {               this._toggleClasses(this._pane, this._config.panelClass, false);             }              if (this._host && this._host.parentElement) {               this._previousHostParent = this._host.parentElement;               this._host.remove();             }              subscription.unsubscribe();           }         });     });   }    /** Disposes of a scroll strategy. */   private _disposeScrollStrategy() {     const scrollStrategy = this._scrollStrategy;      if (scrollStrategy) {       scrollStrategy.disable();        if (scrollStrategy.detach) {         scrollStrategy.detach();       }     }   }    /** Removes a backdrop element from the DOM. */   private _disposeBackdrop(backdrop: HTMLElement | null) {     if (backdrop) {       backdrop.removeEventListener('click', this._backdropClickHandler);       backdrop.removeEventListener('transitionend', this._backdropTransitionendHandler);       backdrop.remove();        // It is possible that a new portal has been attached to this overlay since we started       // removing the backdrop. If that is the case, only clear the backdrop reference if it       // is still the same instance that we started to remove.       if (this._backdropElement === backdrop) {         this._backdropElement = null;       }     }      if (this._backdropTimeout) {       clearTimeout(this._backdropTimeout);       this._backdropTimeout = undefined;     }   } }  /** Size properties for an overlay. */ export interface OverlaySizeConfig {   width?: number | string;   height?: number | string;   minWidth?: number | string;   minHeight?: number | string;   maxWidth?: number | string;   maxHeight?: number | string; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {PositionStrategy} from './position-strategy'; import {ElementRef} from '@angular/core'; import {ViewportRuler, CdkScrollable, ViewportScrollPosition} from '@angular/cdk/scrolling'; import {   ConnectedOverlayPositionChange,   ConnectionPositionPair,   ScrollingVisibility,   validateHorizontalPosition,   validateVerticalPosition, } from './connected-position'; import {Observable, Subscription, Subject} from 'rxjs'; import {OverlayReference} from '../overlay-reference'; import {isElementScrolledOutsideView, isElementClippedByScrolling} from './scroll-clip'; import {coerceCssPixelValue, coerceArray} from '@angular/cdk/coercion'; import {Platform} from '@angular/cdk/platform'; import {OverlayContainer} from '../overlay-container';  // TODO: refactor clipping detection into a separate thing (part of scrolling module) // TODO: doesn't handle both flexible width and height when it has to scroll along both axis.  /** Class to be added to the overlay bounding box. */ const boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';  /** Regex used to split a string on its CSS units. */ const cssUnitPattern = /([A-Za-z%]+)$/;  /** Possible values that can be set as the origin of a FlexibleConnectedPositionStrategy. */ export type FlexibleConnectedPositionStrategyOrigin =   | ElementRef   | Element   | (Point & {       width?: number;       height?: number;     });  /** Equivalent of `ClientRect` without some of the properties we don't care about. */ type Dimensions = Omit<ClientRect, 'x' | 'y' | 'toJSON'>;  /**  * A strategy for positioning overlays. Using this strategy, an overlay is given an  * implicit position relative some origin element. The relative position is defined in terms of  * a point on the origin element that is connected to a point on the overlay element. For example,  * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner  * of the overlay.  */ export class FlexibleConnectedPositionStrategy implements PositionStrategy {   /** The overlay to which this strategy is attached. */   private _overlayRef: OverlayReference;    /** Whether we're performing the very first positioning of the overlay. */   private _isInitialRender: boolean;    /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */   private _lastBoundingBoxSize = {width: 0, height: 0};    /** Whether the overlay was pushed in a previous positioning. */   private _isPushed = false;    /** Whether the overlay can be pushed on-screen on the initial open. */   private _canPush = true;    /** Whether the overlay can grow via flexible width/height after the initial open. */   private _growAfterOpen = false;    /** Whether the overlay's width and height can be constrained to fit within the viewport. */   private _hasFlexibleDimensions = true;    /** Whether the overlay position is locked. */   private _positionLocked = false;    /** Cached origin dimensions */   private _originRect: Dimensions;    /** Cached overlay dimensions */   private _overlayRect: Dimensions;    /** Cached viewport dimensions */   private _viewportRect: Dimensions;    /** Cached container dimensions */   private _containerRect: Dimensions;    /** Amount of space that must be maintained between the overlay and the edge of the viewport. */   private _viewportMargin = 0;    /** The Scrollable containers used to check scrollable view properties on position change. */   private _scrollables: CdkScrollable[] = [];    /** Ordered list of preferred positions, from most to least desirable. */   _preferredPositions: ConnectionPositionPair[] = [];    /** The origin element against which the overlay will be positioned. */   _origin: FlexibleConnectedPositionStrategyOrigin;    /** The overlay pane element. */   private _pane: HTMLElement;    /** Whether the strategy has been disposed of already. */   private _isDisposed: boolean;    /**    * Parent element for the overlay panel used to constrain the overlay panel's size to fit    * within the viewport.    */   private _boundingBox: HTMLElement | null;    /** The last position to have been calculated as the best fit position. */   private _lastPosition: ConnectedPosition | null;    /** Subject that emits whenever the position changes. */   private readonly _positionChanges = new Subject<ConnectedOverlayPositionChange>();    /** Subscription to viewport size changes. */   private _resizeSubscription = Subscription.EMPTY;    /** Default offset for the overlay along the x axis. */   private _offsetX = 0;    /** Default offset for the overlay along the y axis. */   private _offsetY = 0;    /** Selector to be used when finding the elements on which to set the transform origin. */   private _transformOriginSelector: string;    /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */   private _appliedPanelClasses: string[] = [];    /** Amount by which the overlay was pushed in each axis during the last time it was positioned. */   private _previousPushAmount: {x: number; y: number} | null;    /** Observable sequence of position changes. */   positionChanges: Observable<ConnectedOverlayPositionChange> = this._positionChanges;    /** Ordered list of preferred positions, from most to least desirable. */   get positions(): ConnectionPositionPair[] {     return this._preferredPositions;   }    constructor(     connectedTo: FlexibleConnectedPositionStrategyOrigin,     private _viewportRuler: ViewportRuler,     private _document: Document,     private _platform: Platform,     private _overlayContainer: OverlayContainer,   ) {     this.setOrigin(connectedTo);   }    /** Attaches this position strategy to an overlay. */   attach(overlayRef: OverlayReference): void {     if (       this._overlayRef &&       overlayRef !== this._overlayRef &&       (typeof ngDevMode === 'undefined' || ngDevMode)     ) {       throw Error('This position strategy is already attached to an overlay');     }      this._validatePositions();      overlayRef.hostElement.classList.add(boundingBoxClass);      this._overlayRef = overlayRef;     this._boundingBox = overlayRef.hostElement;     this._pane = overlayRef.overlayElement;     this._isDisposed = false;     this._isInitialRender = true;     this._lastPosition = null;     this._resizeSubscription.unsubscribe();     this._resizeSubscription = this._viewportRuler.change().subscribe(() => {       // When the window is resized, we want to trigger the next reposition as if it       // was an initial render, in order for the strategy to pick a new optimal position,       // otherwise position locking will cause it to stay at the old one.       this._isInitialRender = true;       this.apply();     });   }    /**    * Updates the position of the overlay element, using whichever preferred position relative    * to the origin best fits on-screen.    *    * The selection of a position goes as follows:    *  - If any positions fit completely within the viewport as-is,    *      choose the first position that does so.    *  - If flexible dimensions are enabled and at least one satisfies the given minimum width/height,    *      choose the position with the greatest available size modified by the positions' weight.    *  - If pushing is enabled, take the position that went off-screen the least and push it    *      on-screen.    *  - If none of the previous criteria were met, use the position that goes off-screen the least.    * @docs-private    */   apply(): void {     // We shouldn't do anything if the strategy was disposed or we're on the server.     if (this._isDisposed || !this._platform.isBrowser) {       return;     }      // If the position has been applied already (e.g. when the overlay was opened) and the     // consumer opted into locking in the position, re-use the old position, in order to     // prevent the overlay from jumping around.     if (!this._isInitialRender && this._positionLocked && this._lastPosition) {       this.reapplyLastPosition();       return;     }      this._clearPanelClasses();     this._resetOverlayElementStyles();     this._resetBoundingBoxStyles();      // We need the bounding rects for the origin, the overlay and the container to determine how to position     // the overlay relative to the origin.     // We use the viewport rect to determine whether a position would go off-screen.     this._viewportRect = this._getNarrowedViewportRect();     this._originRect = this._getOriginRect();     this._overlayRect = this._pane.getBoundingClientRect();     this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();      const originRect = this._originRect;     const overlayRect = this._overlayRect;     const viewportRect = this._viewportRect;     const containerRect = this._containerRect;      // Positions where the overlay will fit with flexible dimensions.     const flexibleFits: FlexibleFit[] = [];      // Fallback if none of the preferred positions fit within the viewport.     let fallback: FallbackPosition | undefined;      // Go through each of the preferred positions looking for a good fit.     // If a good fit is found, it will be applied immediately.     for (let pos of this._preferredPositions) {       // Get the exact (x, y) coordinate for the point-of-origin on the origin element.       let originPoint = this._getOriginPoint(originRect, containerRect, pos);        // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the       // overlay in this position. We use the top-left corner for calculations and later translate       // this into an appropriate (top, left, bottom, right) style.       let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos);        // Calculate how well the overlay would fit into the viewport with this point.       let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos);        // If the overlay, without any further work, fits into the viewport, use this position.       if (overlayFit.isCompletelyWithinViewport) {         this._isPushed = false;         this._applyPosition(pos, originPoint);         return;       }        // If the overlay has flexible dimensions, we can use this position       // so long as there's enough space for the minimum dimensions.       if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {         // Save positions where the overlay will fit with flexible dimensions. We will use these         // if none of the positions fit *without* flexible dimensions.         flexibleFits.push({           position: pos,           origin: originPoint,           overlayRect,           boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos),         });          continue;       }        // If the current preferred position does not fit on the screen, remember the position       // if it has more visible area on-screen than we've seen and move onto the next preferred       // position.       if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {         fallback = {overlayFit, overlayPoint, originPoint, position: pos, overlayRect};       }     }      // If there are any positions where the overlay would fit with flexible dimensions, choose the     // one that has the greatest area available modified by the position's weight     if (flexibleFits.length) {       let bestFit: FlexibleFit | null = null;       let bestScore = -1;       for (const fit of flexibleFits) {         const score =           fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);         if (score > bestScore) {           bestScore = score;           bestFit = fit;         }       }        this._isPushed = false;       this._applyPosition(bestFit!.position, bestFit!.origin);       return;     }      // When none of the preferred positions fit within the viewport, take the position     // that went off-screen the least and attempt to push it on-screen.     if (this._canPush) {       // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.       this._isPushed = true;       this._applyPosition(fallback!.position, fallback!.originPoint);       return;     }      // All options for getting the overlay within the viewport have been exhausted, so go with the     // position that went off-screen the least.     this._applyPosition(fallback!.position, fallback!.originPoint);   }    detach(): void {     this._clearPanelClasses();     this._lastPosition = null;     this._previousPushAmount = null;     this._resizeSubscription.unsubscribe();   }    /** Cleanup after the element gets destroyed. */   dispose(): void {     if (this._isDisposed) {       return;     }      // We can't use `_resetBoundingBoxStyles` here, because it resets     // some properties to zero, rather than removing them.     if (this._boundingBox) {       extendStyles(this._boundingBox.style, {         top: '',         left: '',         right: '',         bottom: '',         height: '',         width: '',         alignItems: '',         justifyContent: '',       } as CSSStyleDeclaration);     }      if (this._pane) {       this._resetOverlayElementStyles();     }      if (this._overlayRef) {       this._overlayRef.hostElement.classList.remove(boundingBoxClass);     }      this.detach();     this._positionChanges.complete();     this._overlayRef = this._boundingBox = null!;     this._isDisposed = true;   }    /**    * This re-aligns the overlay element with the trigger in its last calculated position,    * even if a position higher in the \"preferred positions\" list would now fit. This    * allows one to re-align the panel without changing the orientation of the panel.    */   reapplyLastPosition(): void {     if (this._isDisposed || !this._platform.isBrowser) {       return;     }      const lastPosition = this._lastPosition;      if (lastPosition) {       this._originRect = this._getOriginRect();       this._overlayRect = this._pane.getBoundingClientRect();       this._viewportRect = this._getNarrowedViewportRect();       this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();        const originPoint = this._getOriginPoint(this._originRect, this._containerRect, lastPosition);       this._applyPosition(lastPosition, originPoint);     } else {       this.apply();     }   }    /**    * Sets the list of Scrollable containers that host the origin element so that    * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every    * Scrollable must be an ancestor element of the strategy's origin element.    */   withScrollableContainers(scrollables: CdkScrollable[]): this {     this._scrollables = scrollables;     return this;   }    /**    * Adds new preferred positions.    * @param positions List of positions options for this overlay.    */   withPositions(positions: ConnectedPosition[]): this {     this._preferredPositions = positions;      // If the last calculated position object isn't part of the positions anymore, clear     // it in order to avoid it being picked up if the consumer tries to re-apply.     if (positions.indexOf(this._lastPosition!) === -1) {       this._lastPosition = null;     }      this._validatePositions();      return this;   }    /**    * Sets a minimum distance the overlay may be positioned to the edge of the viewport.    * @param margin Required margin between the overlay and the viewport edge in pixels.    */   withViewportMargin(margin: number): this {     this._viewportMargin = margin;     return this;   }    /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */   withFlexibleDimensions(flexibleDimensions = true): this {     this._hasFlexibleDimensions = flexibleDimensions;     return this;   }    /** Sets whether the overlay can grow after the initial open via flexible width/height. */   withGrowAfterOpen(growAfterOpen = true): this {     this._growAfterOpen = growAfterOpen;     return this;   }    /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */   withPush(canPush = true): this {     this._canPush = canPush;     return this;   }    /**    * Sets whether the overlay's position should be locked in after it is positioned    * initially. When an overlay is locked in, it won't attempt to reposition itself    * when the position is re-applied (e.g. when the user scrolls away).    * @param isLocked Whether the overlay should locked in.    */   withLockedPosition(isLocked = true): this {     this._positionLocked = isLocked;     return this;   }    /**    * Sets the origin, relative to which to position the overlay.    * Using an element origin is useful for building components that need to be positioned    * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be    * used for cases like contextual menus which open relative to the user's pointer.    * @param origin Reference to the new origin.    */   setOrigin(origin: FlexibleConnectedPositionStrategyOrigin): this {     this._origin = origin;     return this;   }    /**    * Sets the default offset for the overlay's connection point on the x-axis.    * @param offset New offset in the X axis.    */   withDefaultOffsetX(offset: number): this {     this._offsetX = offset;     return this;   }    /**    * Sets the default offset for the overlay's connection point on the y-axis.    * @param offset New offset in the Y axis.    */   withDefaultOffsetY(offset: number): this {     this._offsetY = offset;     return this;   }    /**    * Configures that the position strategy should set a `transform-origin` on some elements    * inside the overlay, depending on the current position that is being applied. This is    * useful for the cases where the origin of an animation can change depending on the    * alignment of the overlay.    * @param selector CSS selector that will be used to find the target    *    elements onto which to set the transform origin.    */   withTransformOriginOn(selector: string): this {     this._transformOriginSelector = selector;     return this;   }    /**    * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.    */   private _getOriginPoint(     originRect: Dimensions,     containerRect: Dimensions,     pos: ConnectedPosition,   ): Point {     let x: number;     if (pos.originX == 'center') {       // Note: when centering we should always use the `left`       // offset, otherwise the position will be wrong in RTL.       x = originRect.left + originRect.width / 2;     } else {       const startX = this._isRtl() ? originRect.right : originRect.left;       const endX = this._isRtl() ? originRect.left : originRect.right;       x = pos.originX == 'start' ? startX : endX;     }      // When zooming in Safari the container rectangle contains negative values for the position     // and we need to re-add them to the calculated coordinates.     if (containerRect.left < 0) {       x -= containerRect.left;     }      let y: number;     if (pos.originY == 'center') {       y = originRect.top + originRect.height / 2;     } else {       y = pos.originY == 'top' ? originRect.top : originRect.bottom;     }      // Normally the containerRect's top value would be zero, however when the overlay is attached to an input     // (e.g. in an autocomplete), mobile browsers will shift everything in order to put the input in the middle     // of the screen and to make space for the virtual keyboard. We need to account for this offset,     // otherwise our positioning will be thrown off.     // Additionally, when zooming in Safari this fixes the vertical position.     if (containerRect.top < 0) {       y -= containerRect.top;     }      return {x, y};   }    /**    * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and    * origin point to which the overlay should be connected.    */   private _getOverlayPoint(     originPoint: Point,     overlayRect: Dimensions,     pos: ConnectedPosition,   ): Point {     // Calculate the (overlayStartX, overlayStartY), the start of the     // potential overlay position relative to the origin point.     let overlayStartX: number;     if (pos.overlayX == 'center') {       overlayStartX = -overlayRect.width / 2;     } else if (pos.overlayX === 'start') {       overlayStartX = this._isRtl() ? -overlayRect.width : 0;     } else {       overlayStartX = this._isRtl() ? 0 : -overlayRect.width;     }      let overlayStartY: number;     if (pos.overlayY == 'center') {       overlayStartY = -overlayRect.height / 2;     } else {       overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;     }      // The (x, y) coordinates of the overlay.     return {       x: originPoint.x + overlayStartX,       y: originPoint.y + overlayStartY,     };   }    /** Gets how well an overlay at the given point will fit within the viewport. */   private _getOverlayFit(     point: Point,     rawOverlayRect: Dimensions,     viewport: Dimensions,     position: ConnectedPosition,   ): OverlayFit {     // Round the overlay rect when comparing against the     // viewport, because the viewport is always rounded.     const overlay = getRoundedBoundingClientRect(rawOverlayRect);     let {x, y} = point;     let offsetX = this._getOffset(position, 'x');     let offsetY = this._getOffset(position, 'y');      // Account for the offsets since they could push the overlay out of the viewport.     if (offsetX) {       x += offsetX;     }      if (offsetY) {       y += offsetY;     }      // How much the overlay would overflow at this position, on each side.     let leftOverflow = 0 - x;     let rightOverflow = x + overlay.width - viewport.width;     let topOverflow = 0 - y;     let bottomOverflow = y + overlay.height - viewport.height;      // Visible parts of the element on each axis.     let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);     let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);     let visibleArea = visibleWidth * visibleHeight;      return {       visibleArea,       isCompletelyWithinViewport: overlay.width * overlay.height === visibleArea,       fitsInViewportVertically: visibleHeight === overlay.height,       fitsInViewportHorizontally: visibleWidth == overlay.width,     };   }    /**    * Whether the overlay can fit within the viewport when it may resize either its width or height.    * @param fit How well the overlay fits in the viewport at some position.    * @param point The (x, y) coordinates of the overlay at some position.    * @param viewport The geometry of the viewport.    */   private _canFitWithFlexibleDimensions(fit: OverlayFit, point: Point, viewport: Dimensions) {     if (this._hasFlexibleDimensions) {       const availableHeight = viewport.bottom - point.y;       const availableWidth = viewport.right - point.x;       const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);       const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);        const verticalFit =         fit.fitsInViewportVertically || (minHeight != null && minHeight <= availableHeight);       const horizontalFit =         fit.fitsInViewportHorizontally || (minWidth != null && minWidth <= availableWidth);        return verticalFit && horizontalFit;     }     return false;   }    /**    * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than    * the viewport, the top-left corner will be pushed on-screen (with overflow occurring on the    * right and bottom).    *    * @param start Starting point from which the overlay is pushed.    * @param rawOverlayRect Dimensions of the overlay.    * @param scrollPosition Current viewport scroll position.    * @returns The point at which to position the overlay after pushing. This is effectively a new    *     originPoint.    */   private _pushOverlayOnScreen(     start: Point,     rawOverlayRect: Dimensions,     scrollPosition: ViewportScrollPosition,   ): Point {     // If the position is locked and we've pushed the overlay already, reuse the previous push     // amount, rather than pushing it again. If we were to continue pushing, the element would     // remain in the viewport, which goes against the expectations when position locking is enabled.     if (this._previousPushAmount && this._positionLocked) {       return {         x: start.x + this._previousPushAmount.x,         y: start.y + this._previousPushAmount.y,       };     }      // Round the overlay rect when comparing against the     // viewport, because the viewport is always rounded.     const overlay = getRoundedBoundingClientRect(rawOverlayRect);     const viewport = this._viewportRect;      // Determine how much the overlay goes outside the viewport on each     // side, which we'll use to decide which direction to push it.     const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);     const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);     const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);     const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0);      // Amount by which to push the overlay in each axis such that it remains on-screen.     let pushX = 0;     let pushY = 0;      // If the overlay fits completely within the bounds of the viewport, push it from whichever     // direction is goes off-screen. Otherwise, push the top-left corner such that its in the     // viewport and allow for the trailing end of the overlay to go out of bounds.     if (overlay.width <= viewport.width) {       pushX = overflowLeft || -overflowRight;     } else {       pushX = start.x < this._viewportMargin ? viewport.left - scrollPosition.left - start.x : 0;     }      if (overlay.height <= viewport.height) {       pushY = overflowTop || -overflowBottom;     } else {       pushY = start.y < this._viewportMargin ? viewport.top - scrollPosition.top - start.y : 0;     }      this._previousPushAmount = {x: pushX, y: pushY};      return {       x: start.x + pushX,       y: start.y + pushY,     };   }    /**    * Applies a computed position to the overlay and emits a position change.    * @param position The position preference    * @param originPoint The point on the origin element where the overlay is connected.    */   private _applyPosition(position: ConnectedPosition, originPoint: Point) {     this._setTransformOrigin(position);     this._setOverlayElementStyles(originPoint, position);     this._setBoundingBoxStyles(originPoint, position);      if (position.panelClass) {       this._addPanelClasses(position.panelClass);     }      // Save the last connected position in case the position needs to be re-calculated.     this._lastPosition = position;      // Notify that the position has been changed along with its change properties.     // We only emit if we've got any subscriptions, because the scroll visibility     // calculations can be somewhat expensive.     if (this._positionChanges.observers.length) {       const scrollableViewProperties = this._getScrollVisibility();       const changeEvent = new ConnectedOverlayPositionChange(position, scrollableViewProperties);       this._positionChanges.next(changeEvent);     }      this._isInitialRender = false;   }    /** Sets the transform origin based on the configured selector and the passed-in position.  */   private _setTransformOrigin(position: ConnectedPosition) {     if (!this._transformOriginSelector) {       return;     }      const elements: NodeListOf<HTMLElement> = this._boundingBox!.querySelectorAll(       this._transformOriginSelector,     );     let xOrigin: 'left' | 'right' | 'center';     let yOrigin: 'top' | 'bottom' | 'center' = position.overlayY;      if (position.overlayX === 'center') {       xOrigin = 'center';     } else if (this._isRtl()) {       xOrigin = position.overlayX === 'start' ? 'right' : 'left';     } else {       xOrigin = position.overlayX === 'start' ? 'left' : 'right';     }      for (let i = 0; i < elements.length; i++) {       elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;     }   }    /**    * Gets the position and size of the overlay's sizing container.    *    * This method does no measuring and applies no styles so that we can cheaply compute the    * bounds for all positions and choose the best fit based on these results.    */   private _calculateBoundingBoxRect(origin: Point, position: ConnectedPosition): BoundingBoxRect {     const viewport = this._viewportRect;     const isRtl = this._isRtl();     let height: number, top: number, bottom: number;      if (position.overlayY === 'top') {       // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.       top = origin.y;       height = viewport.height - top + this._viewportMargin;     } else if (position.overlayY === 'bottom') {       // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add       // the viewport margin back in, because the viewport rect is narrowed down to remove the       // margin, whereas the `origin` position is calculated based on its `ClientRect`.       bottom = viewport.height - origin.y + this._viewportMargin * 2;       height = viewport.height - bottom + this._viewportMargin;     } else {       // If neither top nor bottom, it means that the overlay is vertically centered on the       // origin point. Note that we want the position relative to the viewport, rather than       // the page, which is why we don't use something like `viewport.bottom - origin.y` and       // `origin.y - viewport.top`.       const smallestDistanceToViewportEdge = Math.min(         viewport.bottom - origin.y + viewport.top,         origin.y,       );        const previousHeight = this._lastBoundingBoxSize.height;        height = smallestDistanceToViewportEdge * 2;       top = origin.y - smallestDistanceToViewportEdge;        if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {         top = origin.y - previousHeight / 2;       }     }      // The overlay is opening 'right-ward' (the content flows to the right).     const isBoundedByRightViewportEdge =       (position.overlayX === 'start' && !isRtl) || (position.overlayX === 'end' && isRtl);      // The overlay is opening 'left-ward' (the content flows to the left).     const isBoundedByLeftViewportEdge =       (position.overlayX === 'end' && !isRtl) || (position.overlayX === 'start' && isRtl);      let width: number, left: number, right: number;      if (isBoundedByLeftViewportEdge) {       right = viewport.width - origin.x + this._viewportMargin;       width = origin.x - this._viewportMargin;     } else if (isBoundedByRightViewportEdge) {       left = origin.x;       width = viewport.right - origin.x;     } else {       // If neither start nor end, it means that the overlay is horizontally centered on the       // origin point. Note that we want the position relative to the viewport, rather than       // the page, which is why we don't use something like `viewport.right - origin.x` and       // `origin.x - viewport.left`.       const smallestDistanceToViewportEdge = Math.min(         viewport.right - origin.x + viewport.left,         origin.x,       );       const previousWidth = this._lastBoundingBoxSize.width;        width = smallestDistanceToViewportEdge * 2;       left = origin.x - smallestDistanceToViewportEdge;        if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {         left = origin.x - previousWidth / 2;       }     }      return {top: top!, left: left!, bottom: bottom!, right: right!, width, height};   }    /**    * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the    * origin's connection point and stretches to the bounds of the viewport.    *    * @param origin The point on the origin element where the overlay is connected.    * @param position The position preference    */   private _setBoundingBoxStyles(origin: Point, position: ConnectedPosition): void {     const boundingBoxRect = this._calculateBoundingBoxRect(origin, position);      // It's weird if the overlay *grows* while scrolling, so we take the last size into account     // when applying a new size.     if (!this._isInitialRender && !this._growAfterOpen) {       boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);       boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);     }      const styles = {} as CSSStyleDeclaration;      if (this._hasExactPosition()) {       styles.top = styles.left = '0';       styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';       styles.width = styles.height = '100%';     } else {       const maxHeight = this._overlayRef.getConfig().maxHeight;       const maxWidth = this._overlayRef.getConfig().maxWidth;        styles.height = coerceCssPixelValue(boundingBoxRect.height);       styles.top = coerceCssPixelValue(boundingBoxRect.top);       styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);       styles.width = coerceCssPixelValue(boundingBoxRect.width);       styles.left = coerceCssPixelValue(boundingBoxRect.left);       styles.right = coerceCssPixelValue(boundingBoxRect.right);        // Push the pane content towards the proper direction.       if (position.overlayX === 'center') {         styles.alignItems = 'center';       } else {         styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';       }        if (position.overlayY === 'center') {         styles.justifyContent = 'center';       } else {         styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';       }        if (maxHeight) {         styles.maxHeight = coerceCssPixelValue(maxHeight);       }        if (maxWidth) {         styles.maxWidth = coerceCssPixelValue(maxWidth);       }     }      this._lastBoundingBoxSize = boundingBoxRect;      extendStyles(this._boundingBox!.style, styles);   }    /** Resets the styles for the bounding box so that a new positioning can be computed. */   private _resetBoundingBoxStyles() {     extendStyles(this._boundingBox!.style, {       top: '0',       left: '0',       right: '0',       bottom: '0',       height: '',       width: '',       alignItems: '',       justifyContent: '',     } as CSSStyleDeclaration);   }    /** Resets the styles for the overlay pane so that a new positioning can be computed. */   private _resetOverlayElementStyles() {     extendStyles(this._pane.style, {       top: '',       left: '',       bottom: '',       right: '',       position: '',       transform: '',     } as CSSStyleDeclaration);   }    /** Sets positioning styles to the overlay element. */   private _setOverlayElementStyles(originPoint: Point, position: ConnectedPosition): void {     const styles = {} as CSSStyleDeclaration;     const hasExactPosition = this._hasExactPosition();     const hasFlexibleDimensions = this._hasFlexibleDimensions;     const config = this._overlayRef.getConfig();      if (hasExactPosition) {       const scrollPosition = this._viewportRuler.getViewportScrollPosition();       extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));       extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));     } else {       styles.position = 'static';     }      // Use a transform to apply the offsets. We do this because the `center` positions rely on     // being in the normal flex flow and setting a `top` / `left` at all will completely throw     // off the position. We also can't use margins, because they won't have an effect in some     // cases where the element doesn't have anything to \"push off of\". Finally, this works     // better both with flexible and non-flexible positioning.     let transformString = '';     let offsetX = this._getOffset(position, 'x');     let offsetY = this._getOffset(position, 'y');      if (offsetX) {       transformString += `translateX(${offsetX}px) `;     }      if (offsetY) {       transformString += `translateY(${offsetY}px)`;     }      styles.transform = transformString.trim();      // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because     // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.     // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.     // Note that this doesn't apply when we have an exact position, in which case we do want to     // apply them because they'll be cleared from the bounding box.     if (config.maxHeight) {       if (hasExactPosition) {         styles.maxHeight = coerceCssPixelValue(config.maxHeight);       } else if (hasFlexibleDimensions) {         styles.maxHeight = '';       }     }      if (config.maxWidth) {       if (hasExactPosition) {         styles.maxWidth = coerceCssPixelValue(config.maxWidth);       } else if (hasFlexibleDimensions) {         styles.maxWidth = '';       }     }      extendStyles(this._pane.style, styles);   }    /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */   private _getExactOverlayY(     position: ConnectedPosition,     originPoint: Point,     scrollPosition: ViewportScrollPosition,   ) {     // Reset any existing styles. This is necessary in case the     // preferred position has changed since the last `apply`.     let styles = {top: '', bottom: ''} as CSSStyleDeclaration;     let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);      if (this._isPushed) {       overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);     }      // We want to set either `top` or `bottom` based on whether the overlay wants to appear     // above or below the origin and the direction in which the element will expand.     if (position.overlayY === 'bottom') {       // When using `bottom`, we adjust the y position such that it is the distance       // from the bottom of the viewport rather than the top.       const documentHeight = this._document.documentElement!.clientHeight;       styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;     } else {       styles.top = coerceCssPixelValue(overlayPoint.y);     }      return styles;   }    /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */   private _getExactOverlayX(     position: ConnectedPosition,     originPoint: Point,     scrollPosition: ViewportScrollPosition,   ) {     // Reset any existing styles. This is necessary in case the preferred position has     // changed since the last `apply`.     let styles = {left: '', right: ''} as CSSStyleDeclaration;     let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);      if (this._isPushed) {       overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);     }      // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"     // or \"after\" the origin, which determines the direction in which the element will expand.     // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the     // page is in RTL or LTR.     let horizontalStyleProperty: 'left' | 'right';      if (this._isRtl()) {       horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';     } else {       horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';     }      // When we're setting `right`, we adjust the x position such that it is the distance     // from the right edge of the viewport rather than the left edge.     if (horizontalStyleProperty === 'right') {       const documentWidth = this._document.documentElement!.clientWidth;       styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;     } else {       styles.left = coerceCssPixelValue(overlayPoint.x);     }      return styles;   }    /**    * Gets the view properties of the trigger and overlay, including whether they are clipped    * or completely outside the view of any of the strategy's scrollables.    */   private _getScrollVisibility(): ScrollingVisibility {     // Note: needs fresh rects since the position could've changed.     const originBounds = this._getOriginRect();     const overlayBounds = this._pane.getBoundingClientRect();      // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers     // every time, we should be able to use the scrollTop of the containers if the size of those     // containers hasn't changed.     const scrollContainerBounds = this._scrollables.map(scrollable => {       return scrollable.getElementRef().nativeElement.getBoundingClientRect();     });      return {       isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),       isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),       isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),       isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds),     };   }    /** Subtracts the amount that an element is overflowing on an axis from its length. */   private _subtractOverflows(length: number, ...overflows: number[]): number {     return overflows.reduce((currentValue: number, currentOverflow: number) => {       return currentValue - Math.max(currentOverflow, 0);     }, length);   }    /** Narrows the given viewport rect by the current _viewportMargin. */   private _getNarrowedViewportRect(): Dimensions {     // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,     // because we want to use the `clientWidth` and `clientHeight` as the base. The difference     // being that the client properties don't include the scrollbar, as opposed to `innerWidth`     // and `innerHeight` that do. This is necessary, because the overlay container uses     // 100% `width` and `height` which don't include the scrollbar either.     const width = this._document.documentElement!.clientWidth;     const height = this._document.documentElement!.clientHeight;     const scrollPosition = this._viewportRuler.getViewportScrollPosition();      return {       top: scrollPosition.top + this._viewportMargin,       left: scrollPosition.left + this._viewportMargin,       right: scrollPosition.left + width - this._viewportMargin,       bottom: scrollPosition.top + height - this._viewportMargin,       width: width - 2 * this._viewportMargin,       height: height - 2 * this._viewportMargin,     };   }    /** Whether the we're dealing with an RTL context */   private _isRtl() {     return this._overlayRef.getDirection() === 'rtl';   }    /** Determines whether the overlay uses exact or flexible positioning. */   private _hasExactPosition() {     return !this._hasFlexibleDimensions || this._isPushed;   }    /** Retrieves the offset of a position along the x or y axis. */   private _getOffset(position: ConnectedPosition, axis: 'x' | 'y') {     if (axis === 'x') {       // We don't do something like `position['offset' + axis]` in       // order to avoid breaking minifiers that rename properties.       return position.offsetX == null ? this._offsetX : position.offsetX;     }      return position.offsetY == null ? this._offsetY : position.offsetY;   }    /** Validates that the current position match the expected values. */   private _validatePositions(): void {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       if (!this._preferredPositions.length) {         throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');       }        // TODO(crisbeto): remove these once Angular's template type       // checking is advanced enough to catch these cases.       this._preferredPositions.forEach(pair => {         validateHorizontalPosition('originX', pair.originX);         validateVerticalPosition('originY', pair.originY);         validateHorizontalPosition('overlayX', pair.overlayX);         validateVerticalPosition('overlayY', pair.overlayY);       });     }   }    /** Adds a single CSS class or an array of classes on the overlay panel. */   private _addPanelClasses(cssClasses: string | string[]) {     if (this._pane) {       coerceArray(cssClasses).forEach(cssClass => {         if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {           this._appliedPanelClasses.push(cssClass);           this._pane.classList.add(cssClass);         }       });     }   }    /** Clears the classes that the position strategy has applied from the overlay panel. */   private _clearPanelClasses() {     if (this._pane) {       this._appliedPanelClasses.forEach(cssClass => {         this._pane.classList.remove(cssClass);       });       this._appliedPanelClasses = [];     }   }    /** Returns the ClientRect of the current origin. */   private _getOriginRect(): Dimensions {     const origin = this._origin;      if (origin instanceof ElementRef) {       return origin.nativeElement.getBoundingClientRect();     }      // Check for Element so SVG elements are also supported.     if (origin instanceof Element) {       return origin.getBoundingClientRect();     }      const width = origin.width || 0;     const height = origin.height || 0;      // If the origin is a point, return a client rect as if it was a 0x0 element at the point.     return {       top: origin.y,       bottom: origin.y + height,       left: origin.x,       right: origin.x + width,       height,       width,     };   } }  /** A simple (x, y) coordinate. */ interface Point {   x: number;   y: number; }  /** Record of measurements for how an overlay (at a given position) fits into the viewport. */ interface OverlayFit {   /** Whether the overlay fits completely in the viewport. */   isCompletelyWithinViewport: boolean;    /** Whether the overlay fits in the viewport on the y-axis. */   fitsInViewportVertically: boolean;    /** Whether the overlay fits in the viewport on the x-axis. */   fitsInViewportHorizontally: boolean;    /** The total visible area (in px^2) of the overlay inside the viewport. */   visibleArea: number; }  /** Record of the measurements determining whether an overlay will fit in a specific position. */ interface FallbackPosition {   position: ConnectedPosition;   originPoint: Point;   overlayPoint: Point;   overlayFit: OverlayFit;   overlayRect: Dimensions; }  /** Position and size of the overlay sizing wrapper for a specific position. */ interface BoundingBoxRect {   top: number;   left: number;   bottom: number;   right: number;   height: number;   width: number; }  /** Record of measures determining how well a given position will fit with flexible dimensions. */ interface FlexibleFit {   position: ConnectedPosition;   origin: Point;   overlayRect: Dimensions;   boundingBoxRect: BoundingBoxRect; }  /** A connected position as specified by the user. */ export interface ConnectedPosition {   originX: 'start' | 'center' | 'end';   originY: 'top' | 'center' | 'bottom';    overlayX: 'start' | 'center' | 'end';   overlayY: 'top' | 'center' | 'bottom';    weight?: number;   offsetX?: number;   offsetY?: number;   panelClass?: string | string[]; }  /** Shallow-extends a stylesheet object with another stylesheet object. */ function extendStyles(   destination: CSSStyleDeclaration,   source: CSSStyleDeclaration, ): CSSStyleDeclaration {   for (let key in source) {     if (source.hasOwnProperty(key)) {       destination[key] = source[key];     }   }    return destination; }  /**  * Extracts the pixel value as a number from a value, if it's a number  * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.  */ function getPixelValue(input: number | string | null | undefined): number | null {   if (typeof input !== 'number' && input != null) {     const [value, units] = input.split(cssUnitPattern);     return !units || units === 'px' ? parseFloat(value) : null;   }    return input || null; }  /**  * Gets a version of an element's bounding `ClientRect` where all the values are rounded down to  * the nearest pixel. This allows us to account for the cases where there may be sub-pixel  * deviations in the `ClientRect` returned by the browser (e.g. when zoomed in with a percentage  * size, see #21350).  */ function getRoundedBoundingClientRect(clientRect: Dimensions): Dimensions {   return {     top: Math.floor(clientRect.top),     right: Math.floor(clientRect.right),     bottom: Math.floor(clientRect.bottom),     left: Math.floor(clientRect.left),     width: Math.floor(clientRect.width),     height: Math.floor(clientRect.height),   }; }  export const STANDARD_DROPDOWN_BELOW_POSITIONS: ConnectedPosition[] = [   {originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top'},   {originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom'},   {originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top'},   {originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom'}, ];  export const STANDARD_DROPDOWN_ADJACENT_POSITIONS: ConnectedPosition[] = [   {originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top'},   {originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom'},   {originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top'},   {originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom'}, ]; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {PositionStrategy} from './position-strategy'; import {OverlayReference} from '../overlay-reference';  /** Class to be added to the overlay pane wrapper. */ const wrapperClass = 'cdk-global-overlay-wrapper';  /**  * A strategy for positioning overlays. Using this strategy, an overlay is given an  * explicit position relative to the browser's viewport. We use flexbox, instead of  * transforms, in order to avoid issues with subpixel rendering which can cause the  * element to become blurry.  */ export class GlobalPositionStrategy implements PositionStrategy {   /** The overlay to which this strategy is attached. */   private _overlayRef: OverlayReference;   private _cssPosition = 'static';   private _topOffset = '';   private _bottomOffset = '';   private _alignItems = '';   private _xPosition = '';   private _xOffset = '';   private _width = '';   private _height = '';   private _isDisposed = false;    attach(overlayRef: OverlayReference): void {     const config = overlayRef.getConfig();      this._overlayRef = overlayRef;      if (this._width && !config.width) {       overlayRef.updateSize({width: this._width});     }      if (this._height && !config.height) {       overlayRef.updateSize({height: this._height});     }      overlayRef.hostElement.classList.add(wrapperClass);     this._isDisposed = false;   }    /**    * Sets the top position of the overlay. Clears any previously set vertical position.    * @param value New top offset.    */   top(value: string = ''): this {     this._bottomOffset = '';     this._topOffset = value;     this._alignItems = 'flex-start';     return this;   }    /**    * Sets the left position of the overlay. Clears any previously set horizontal position.    * @param value New left offset.    */   left(value: string = ''): this {     this._xOffset = value;     this._xPosition = 'left';     return this;   }    /**    * Sets the bottom position of the overlay. Clears any previously set vertical position.    * @param value New bottom offset.    */   bottom(value: string = ''): this {     this._topOffset = '';     this._bottomOffset = value;     this._alignItems = 'flex-end';     return this;   }    /**    * Sets the right position of the overlay. Clears any previously set horizontal position.    * @param value New right offset.    */   right(value: string = ''): this {     this._xOffset = value;     this._xPosition = 'right';     return this;   }    /**    * Sets the overlay to the start of the viewport, depending on the overlay direction.    * This will be to the left in LTR layouts and to the right in RTL.    * @param offset Offset from the edge of the screen.    */   start(value: string = ''): this {     this._xOffset = value;     this._xPosition = 'start';     return this;   }    /**    * Sets the overlay to the end of the viewport, depending on the overlay direction.    * This will be to the right in LTR layouts and to the left in RTL.    * @param offset Offset from the edge of the screen.    */   end(value: string = ''): this {     this._xOffset = value;     this._xPosition = 'end';     return this;   }    /**    * Sets the overlay width and clears any previously set width.    * @param value New width for the overlay    * @deprecated Pass the `width` through the `OverlayConfig`.    * @breaking-change 8.0.0    */   width(value: string = ''): this {     if (this._overlayRef) {       this._overlayRef.updateSize({width: value});     } else {       this._width = value;     }      return this;   }    /**    * Sets the overlay height and clears any previously set height.    * @param value New height for the overlay    * @deprecated Pass the `height` through the `OverlayConfig`.    * @breaking-change 8.0.0    */   height(value: string = ''): this {     if (this._overlayRef) {       this._overlayRef.updateSize({height: value});     } else {       this._height = value;     }      return this;   }    /**    * Centers the overlay horizontally with an optional offset.    * Clears any previously set horizontal position.    *    * @param offset Overlay offset from the horizontal center.    */   centerHorizontally(offset: string = ''): this {     this.left(offset);     this._xPosition = 'center';     return this;   }    /**    * Centers the overlay vertically with an optional offset.    * Clears any previously set vertical position.    *    * @param offset Overlay offset from the vertical center.    */   centerVertically(offset: string = ''): this {     this.top(offset);     this._alignItems = 'center';     return this;   }    /**    * Apply the position to the element.    * @docs-private    */   apply(): void {     // Since the overlay ref applies the strategy asynchronously, it could     // have been disposed before it ends up being applied. If that is the     // case, we shouldn't do anything.     if (!this._overlayRef || !this._overlayRef.hasAttached()) {       return;     }      const styles = this._overlayRef.overlayElement.style;     const parentStyles = this._overlayRef.hostElement.style;     const config = this._overlayRef.getConfig();     const {width, height, maxWidth, maxHeight} = config;     const shouldBeFlushHorizontally =       (width === '100%' || width === '100vw') &&       (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');     const shouldBeFlushVertically =       (height === '100%' || height === '100vh') &&       (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');     const xPosition = this._xPosition;     const xOffset = this._xOffset;     const isRtl = this._overlayRef.getConfig().direction === 'rtl';     let marginLeft = '';     let marginRight = '';     let justifyContent = '';      if (shouldBeFlushHorizontally) {       justifyContent = 'flex-start';     } else if (xPosition === 'center') {       justifyContent = 'center';        if (isRtl) {         marginRight = xOffset;       } else {         marginLeft = xOffset;       }     } else if (isRtl) {       if (xPosition === 'left' || xPosition === 'end') {         justifyContent = 'flex-end';         marginLeft = xOffset;       } else if (xPosition === 'right' || xPosition === 'start') {         justifyContent = 'flex-start';         marginRight = xOffset;       }     } else if (xPosition === 'left' || xPosition === 'start') {       justifyContent = 'flex-start';       marginLeft = xOffset;     } else if (xPosition === 'right' || xPosition === 'end') {       justifyContent = 'flex-end';       marginRight = xOffset;     }      styles.position = this._cssPosition;     styles.marginLeft = shouldBeFlushHorizontally ? '0' : marginLeft;     styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;     styles.marginBottom = this._bottomOffset;     styles.marginRight = shouldBeFlushHorizontally ? '0' : marginRight;     parentStyles.justifyContent = justifyContent;     parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;   }    /**    * Cleans up the DOM changes from the position strategy.    * @docs-private    */   dispose(): void {     if (this._isDisposed || !this._overlayRef) {       return;     }      const styles = this._overlayRef.overlayElement.style;     const parent = this._overlayRef.hostElement;     const parentStyles = parent.style;      parent.classList.remove(wrapperClass);     parentStyles.justifyContent =       parentStyles.alignItems =       styles.marginTop =       styles.marginBottom =       styles.marginLeft =       styles.marginRight =       styles.position =         '';      this._overlayRef = null!;     this._isDisposed = true;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Platform} from '@angular/cdk/platform'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {DOCUMENT} from '@angular/common'; import {Inject, Injectable} from '@angular/core'; import {OverlayContainer} from '../overlay-container'; import {   FlexibleConnectedPositionStrategy,   FlexibleConnectedPositionStrategyOrigin, } from './flexible-connected-position-strategy'; import {GlobalPositionStrategy} from './global-position-strategy';  /** Builder for overlay position strategy. */ @Injectable({providedIn: 'root'}) export class OverlayPositionBuilder {   constructor(     private _viewportRuler: ViewportRuler,     @Inject(DOCUMENT) private _document: any,     private _platform: Platform,     private _overlayContainer: OverlayContainer,   ) {}    /**    * Creates a global position strategy.    */   global(): GlobalPositionStrategy {     return new GlobalPositionStrategy();   }    /**    * Creates a flexible position strategy.    * @param origin Origin relative to which to position the overlay.    */   flexibleConnectedTo(     origin: FlexibleConnectedPositionStrategyOrigin,   ): FlexibleConnectedPositionStrategy {     return new FlexibleConnectedPositionStrategy(       origin,       this._viewportRuler,       this._document,       this._platform,       this._overlayContainer,     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directionality} from '@angular/cdk/bidi'; import {DomPortalOutlet} from '@angular/cdk/portal'; import {DOCUMENT, Location} from '@angular/common'; import {   ApplicationRef,   ComponentFactoryResolver,   Inject,   Injectable,   Injector,   NgZone,   ANIMATION_MODULE_TYPE,   Optional, } from '@angular/core'; import {OverlayKeyboardDispatcher} from './dispatchers/overlay-keyboard-dispatcher'; import {OverlayOutsideClickDispatcher} from './dispatchers/overlay-outside-click-dispatcher'; import {OverlayConfig} from './overlay-config'; import {OverlayContainer} from './overlay-container'; import {OverlayRef} from './overlay-ref'; import {OverlayPositionBuilder} from './position/overlay-position-builder'; import {ScrollStrategyOptions} from './scroll/index';  /** Next overlay unique ID. */ let nextUniqueId = 0;  // Note that Overlay is *not* scoped to the app root because of the ComponentFactoryResolver // which needs to be different depending on where OverlayModule is imported.  /**  * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be  * used as a low-level building block for other components. Dialogs, tooltips, menus,  * selects, etc. can all be built using overlays. The service should primarily be used by authors  * of re-usable components rather than developers building end-user applications.  *  * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.  */ @Injectable({providedIn: 'root'}) export class Overlay {   private _appRef: ApplicationRef;    constructor(     /** Scrolling strategies that can be used when creating an overlay. */     public scrollStrategies: ScrollStrategyOptions,     private _overlayContainer: OverlayContainer,     private _componentFactoryResolver: ComponentFactoryResolver,     private _positionBuilder: OverlayPositionBuilder,     private _keyboardDispatcher: OverlayKeyboardDispatcher,     private _injector: Injector,     private _ngZone: NgZone,     @Inject(DOCUMENT) private _document: any,     private _directionality: Directionality,     private _location: Location,     private _outsideClickDispatcher: OverlayOutsideClickDispatcher,     @Inject(ANIMATION_MODULE_TYPE) @Optional() private _animationsModuleType?: string,   ) {}    /**    * Creates an overlay.    * @param config Configuration applied to the overlay.    * @returns Reference to the created overlay.    */   create(config?: OverlayConfig): OverlayRef {     const host = this._createHostElement();     const pane = this._createPaneElement(host);     const portalOutlet = this._createPortalOutlet(pane);     const overlayConfig = new OverlayConfig(config);      overlayConfig.direction = overlayConfig.direction || this._directionality.value;      return new OverlayRef(       portalOutlet,       host,       pane,       overlayConfig,       this._ngZone,       this._keyboardDispatcher,       this._document,       this._location,       this._outsideClickDispatcher,       this._animationsModuleType === 'NoopAnimations',     );   }    /**    * Gets a position builder that can be used, via fluent API,    * to construct and configure a position strategy.    * @returns An overlay position builder.    */   position(): OverlayPositionBuilder {     return this._positionBuilder;   }    /**    * Creates the DOM element for an overlay and appends it to the overlay container.    * @returns Newly-created pane element    */   private _createPaneElement(host: HTMLElement): HTMLElement {     const pane = this._document.createElement('div');      pane.id = `cdk-overlay-${nextUniqueId++}`;     pane.classList.add('cdk-overlay-pane');     host.appendChild(pane);      return pane;   }    /**    * Creates the host element that wraps around an overlay    * and can be used for advanced positioning.    * @returns Newly-create host element.    */   private _createHostElement(): HTMLElement {     const host = this._document.createElement('div');     this._overlayContainer.getContainerElement().appendChild(host);     return host;   }    /**    * Create a DomPortalOutlet into which the overlay content can be loaded.    * @param pane The DOM element to turn into a portal outlet.    * @returns A portal outlet for the given DOM element.    */   private _createPortalOutlet(pane: HTMLElement): DomPortalOutlet {     // We have to resolve the ApplicationRef later in order to allow people     // to use overlay-based providers during app initialization.     if (!this._appRef) {       this._appRef = this._injector.get<ApplicationRef>(ApplicationRef);     }      return new DomPortalOutlet(       pane,       this._componentFactoryResolver,       this._appRef,       this._injector,       this._document,     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Direction, Directionality} from '@angular/cdk/bidi'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes'; import {TemplatePortal} from '@angular/cdk/portal'; import {   Directive,   ElementRef,   EventEmitter,   Inject,   InjectionToken,   Input,   OnChanges,   OnDestroy,   Optional,   Output,   SimpleChanges,   TemplateRef,   ViewContainerRef, } from '@angular/core'; import {Subscription} from 'rxjs'; import {takeWhile} from 'rxjs/operators'; import {Overlay} from './overlay'; import {OverlayConfig} from './overlay-config'; import {OverlayRef} from './overlay-ref'; import {ConnectedOverlayPositionChange} from './position/connected-position'; import {   ConnectedPosition,   FlexibleConnectedPositionStrategy,   FlexibleConnectedPositionStrategyOrigin, } from './position/flexible-connected-position-strategy'; import {RepositionScrollStrategy, ScrollStrategy} from './scroll/index';  /** Default set of positions for the overlay. Follows the behavior of a dropdown. */ const defaultPositionList: ConnectedPosition[] = [   {     originX: 'start',     originY: 'bottom',     overlayX: 'start',     overlayY: 'top',   },   {     originX: 'start',     originY: 'top',     overlayX: 'start',     overlayY: 'bottom',   },   {     originX: 'end',     originY: 'top',     overlayX: 'end',     overlayY: 'bottom',   },   {     originX: 'end',     originY: 'bottom',     overlayX: 'end',     overlayY: 'top',   }, ];  /** Injection token that determines the scroll handling while the connected overlay is open. */ export const CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(   'cdk-connected-overlay-scroll-strategy', );  /**  * Directive applied to an element to make it usable as an origin for an Overlay using a  * ConnectedPositionStrategy.  */ @Directive({   selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',   exportAs: 'cdkOverlayOrigin',   standalone: true, }) export class CdkOverlayOrigin {   constructor(     /** Reference to the element on which the directive is applied. */     public elementRef: ElementRef,   ) {} }  /**  * Directive to facilitate declarative creation of an  * Overlay using a FlexibleConnectedPositionStrategy.  */ @Directive({   selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',   exportAs: 'cdkConnectedOverlay',   standalone: true, }) export class CdkConnectedOverlay implements OnDestroy, OnChanges {   private _overlayRef: OverlayRef;   private _templatePortal: TemplatePortal;   private _hasBackdrop = false;   private _lockPosition = false;   private _growAfterOpen = false;   private _flexibleDimensions = false;   private _push = false;   private _backdropSubscription = Subscription.EMPTY;   private _attachSubscription = Subscription.EMPTY;   private _detachSubscription = Subscription.EMPTY;   private _positionSubscription = Subscription.EMPTY;   private _offsetX: number;   private _offsetY: number;   private _position: FlexibleConnectedPositionStrategy;   private _scrollStrategyFactory: () => ScrollStrategy;    /** Origin for the connected overlay. */   @Input('cdkConnectedOverlayOrigin')   origin: CdkOverlayOrigin | FlexibleConnectedPositionStrategyOrigin;    /** Registered connected position pairs. */   @Input('cdkConnectedOverlayPositions') positions: ConnectedPosition[];    /**    * This input overrides the positions input if specified. It lets users pass    * in arbitrary positioning strategies.    */   @Input('cdkConnectedOverlayPositionStrategy') positionStrategy: FlexibleConnectedPositionStrategy;    /** The offset in pixels for the overlay connection point on the x-axis */   @Input('cdkConnectedOverlayOffsetX')   get offsetX(): number {     return this._offsetX;   }   set offsetX(offsetX: number) {     this._offsetX = offsetX;      if (this._position) {       this._updatePositionStrategy(this._position);     }   }    /** The offset in pixels for the overlay connection point on the y-axis */   @Input('cdkConnectedOverlayOffsetY')   get offsetY() {     return this._offsetY;   }   set offsetY(offsetY: number) {     this._offsetY = offsetY;      if (this._position) {       this._updatePositionStrategy(this._position);     }   }    /** The width of the overlay panel. */   @Input('cdkConnectedOverlayWidth') width: number | string;    /** The height of the overlay panel. */   @Input('cdkConnectedOverlayHeight') height: number | string;    /** The min width of the overlay panel. */   @Input('cdkConnectedOverlayMinWidth') minWidth: number | string;    /** The min height of the overlay panel. */   @Input('cdkConnectedOverlayMinHeight') minHeight: number | string;    /** The custom class to be set on the backdrop element. */   @Input('cdkConnectedOverlayBackdropClass') backdropClass: string | string[];    /** The custom class to add to the overlay pane element. */   @Input('cdkConnectedOverlayPanelClass') panelClass: string | string[];    /** Margin between the overlay and the viewport edges. */   @Input('cdkConnectedOverlayViewportMargin') viewportMargin: number = 0;    /** Strategy to be used when handling scroll events while the overlay is open. */   @Input('cdkConnectedOverlayScrollStrategy') scrollStrategy: ScrollStrategy;    /** Whether the overlay is open. */   @Input('cdkConnectedOverlayOpen') open: boolean = false;    /** Whether the overlay can be closed by user interaction. */   @Input('cdkConnectedOverlayDisableClose') disableClose: boolean = false;    /** CSS selector which to set the transform origin. */   @Input('cdkConnectedOverlayTransformOriginOn') transformOriginSelector: string;    /** Whether or not the overlay should attach a backdrop. */   @Input('cdkConnectedOverlayHasBackdrop')   get hasBackdrop(): boolean {     return this._hasBackdrop;   }   set hasBackdrop(value: BooleanInput) {     this._hasBackdrop = coerceBooleanProperty(value);   }    /** Whether or not the overlay should be locked when scrolling. */   @Input('cdkConnectedOverlayLockPosition')   get lockPosition(): boolean {     return this._lockPosition;   }   set lockPosition(value: BooleanInput) {     this._lockPosition = coerceBooleanProperty(value);   }    /** Whether the overlay's width and height can be constrained to fit within the viewport. */   @Input('cdkConnectedOverlayFlexibleDimensions')   get flexibleDimensions(): boolean {     return this._flexibleDimensions;   }   set flexibleDimensions(value: BooleanInput) {     this._flexibleDimensions = coerceBooleanProperty(value);   }    /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */   @Input('cdkConnectedOverlayGrowAfterOpen')   get growAfterOpen(): boolean {     return this._growAfterOpen;   }   set growAfterOpen(value: BooleanInput) {     this._growAfterOpen = coerceBooleanProperty(value);   }    /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */   @Input('cdkConnectedOverlayPush')   get push(): boolean {     return this._push;   }   set push(value: BooleanInput) {     this._push = coerceBooleanProperty(value);   }    /** Event emitted when the backdrop is clicked. */   @Output() readonly backdropClick = new EventEmitter<MouseEvent>();    /** Event emitted when the position has changed. */   @Output() readonly positionChange = new EventEmitter<ConnectedOverlayPositionChange>();    /** Event emitted when the overlay has been attached. */   @Output() readonly attach = new EventEmitter<void>();    /** Event emitted when the overlay has been detached. */   @Output() readonly detach = new EventEmitter<void>();    /** Emits when there are keyboard events that are targeted at the overlay. */   @Output() readonly overlayKeydown = new EventEmitter<KeyboardEvent>();    /** Emits when there are mouse outside click events that are targeted at the overlay. */   @Output() readonly overlayOutsideClick = new EventEmitter<MouseEvent>();    // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.    constructor(     private _overlay: Overlay,     templateRef: TemplateRef<any>,     viewContainerRef: ViewContainerRef,     @Inject(CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY) scrollStrategyFactory: any,     @Optional() private _dir: Directionality,   ) {     this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);     this._scrollStrategyFactory = scrollStrategyFactory;     this.scrollStrategy = this._scrollStrategyFactory();   }    /** The associated overlay reference. */   get overlayRef(): OverlayRef {     return this._overlayRef;   }    /** The element's layout direction. */   get dir(): Direction {     return this._dir ? this._dir.value : 'ltr';   }    ngOnDestroy() {     this._attachSubscription.unsubscribe();     this._detachSubscription.unsubscribe();     this._backdropSubscription.unsubscribe();     this._positionSubscription.unsubscribe();      if (this._overlayRef) {       this._overlayRef.dispose();     }   }    ngOnChanges(changes: SimpleChanges) {     if (this._position) {       this._updatePositionStrategy(this._position);       this._overlayRef.updateSize({         width: this.width,         minWidth: this.minWidth,         height: this.height,         minHeight: this.minHeight,       });        if (changes['origin'] && this.open) {         this._position.apply();       }     }      if (changes['open']) {       this.open ? this._attachOverlay() : this._detachOverlay();     }   }    /** Creates an overlay */   private _createOverlay() {     if (!this.positions || !this.positions.length) {       this.positions = defaultPositionList;     }      const overlayRef = (this._overlayRef = this._overlay.create(this._buildConfig()));     this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());     this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());     overlayRef.keydownEvents().subscribe((event: KeyboardEvent) => {       this.overlayKeydown.next(event);        if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {         event.preventDefault();         this._detachOverlay();       }     });      this._overlayRef.outsidePointerEvents().subscribe((event: MouseEvent) => {       this.overlayOutsideClick.next(event);     });   }    /** Builds the overlay config based on the directive's inputs */   private _buildConfig(): OverlayConfig {     const positionStrategy = (this._position =       this.positionStrategy || this._createPositionStrategy());     const overlayConfig = new OverlayConfig({       direction: this._dir,       positionStrategy,       scrollStrategy: this.scrollStrategy,       hasBackdrop: this.hasBackdrop,     });      if (this.width || this.width === 0) {       overlayConfig.width = this.width;     }      if (this.height || this.height === 0) {       overlayConfig.height = this.height;     }      if (this.minWidth || this.minWidth === 0) {       overlayConfig.minWidth = this.minWidth;     }      if (this.minHeight || this.minHeight === 0) {       overlayConfig.minHeight = this.minHeight;     }      if (this.backdropClass) {       overlayConfig.backdropClass = this.backdropClass;     }      if (this.panelClass) {       overlayConfig.panelClass = this.panelClass;     }      return overlayConfig;   }    /** Updates the state of a position strategy, based on the values of the directive inputs. */   private _updatePositionStrategy(positionStrategy: FlexibleConnectedPositionStrategy) {     const positions: ConnectedPosition[] = this.positions.map(currentPosition => ({       originX: currentPosition.originX,       originY: currentPosition.originY,       overlayX: currentPosition.overlayX,       overlayY: currentPosition.overlayY,       offsetX: currentPosition.offsetX || this.offsetX,       offsetY: currentPosition.offsetY || this.offsetY,       panelClass: currentPosition.panelClass || undefined,     }));      return positionStrategy       .setOrigin(this._getFlexibleConnectedPositionStrategyOrigin())       .withPositions(positions)       .withFlexibleDimensions(this.flexibleDimensions)       .withPush(this.push)       .withGrowAfterOpen(this.growAfterOpen)       .withViewportMargin(this.viewportMargin)       .withLockedPosition(this.lockPosition)       .withTransformOriginOn(this.transformOriginSelector);   }    /** Returns the position strategy of the overlay to be set on the overlay config */   private _createPositionStrategy(): FlexibleConnectedPositionStrategy {     const strategy = this._overlay       .position()       .flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());     this._updatePositionStrategy(strategy);     return strategy;   }    private _getFlexibleConnectedPositionStrategyOrigin(): FlexibleConnectedPositionStrategyOrigin {     if (this.origin instanceof CdkOverlayOrigin) {       return this.origin.elementRef;     } else {       return this.origin;     }   }    /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */   private _attachOverlay() {     if (!this._overlayRef) {       this._createOverlay();     } else {       // Update the overlay size, in case the directive's inputs have changed       this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;     }      if (!this._overlayRef.hasAttached()) {       this._overlayRef.attach(this._templatePortal);     }      if (this.hasBackdrop) {       this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {         this.backdropClick.emit(event);       });     } else {       this._backdropSubscription.unsubscribe();     }      this._positionSubscription.unsubscribe();      // Only subscribe to `positionChanges` if requested, because putting     // together all the information for it can be expensive.     if (this.positionChange.observers.length > 0) {       this._positionSubscription = this._position.positionChanges         .pipe(takeWhile(() => this.positionChange.observers.length > 0))         .subscribe(position => {           this.positionChange.emit(position);            if (this.positionChange.observers.length === 0) {             this._positionSubscription.unsubscribe();           }         });     }   }    /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */   private _detachOverlay() {     if (this._overlayRef) {       this._overlayRef.detach();     }      this._backdropSubscription.unsubscribe();     this._positionSubscription.unsubscribe();   } }  /** @docs-private */ export function CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(   overlay: Overlay, ): () => RepositionScrollStrategy {   return () => overlay.scrollStrategies.reposition(); }  /** @docs-private */ export const CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {   provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,   deps: [Overlay],   useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY, }; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BidiModule} from '@angular/cdk/bidi'; import {PortalModule} from '@angular/cdk/portal'; import {ScrollingModule} from '@angular/cdk/scrolling'; import {NgModule} from '@angular/core'; import {Overlay} from './overlay'; import {   CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER,   CdkConnectedOverlay,   CdkOverlayOrigin, } from './overlay-directives';  @NgModule({   imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin],   exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],   providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER], }) export class OverlayModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export {OverlayOutsideClickDispatcher} from './overlay-outside-click-dispatcher'; export {OverlayKeyboardDispatcher} from './overlay-keyboard-dispatcher'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable, Inject, OnDestroy} from '@angular/core'; import {OverlayContainer} from './overlay-container'; import {DOCUMENT} from '@angular/common'; import {Platform} from '@angular/cdk/platform';  /**  * Alternative to OverlayContainer that supports correct displaying of overlay elements in  * Fullscreen mode  * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen  *  * Should be provided in the root component.  */ @Injectable({providedIn: 'root'}) export class FullscreenOverlayContainer extends OverlayContainer implements OnDestroy {   private _fullScreenEventName: string | undefined;   private _fullScreenListener: () => void;    constructor(@Inject(DOCUMENT) _document: any, platform: Platform) {     super(_document, platform);   }    override ngOnDestroy() {     super.ngOnDestroy();      if (this._fullScreenEventName && this._fullScreenListener) {       this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);     }   }    protected override _createContainer(): void {     super._createContainer();     this._adjustParentForFullscreenChange();     this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());   }    private _adjustParentForFullscreenChange(): void {     if (!this._containerElement) {       return;     }      const fullscreenElement = this.getFullscreenElement();     const parent = fullscreenElement || this._document.body;     parent.appendChild(this._containerElement);   }    private _addFullscreenChangeListener(fn: () => void) {     const eventName = this._getEventName();      if (eventName) {       if (this._fullScreenListener) {         this._document.removeEventListener(eventName, this._fullScreenListener);       }        this._document.addEventListener(eventName, fn);       this._fullScreenListener = fn;     }   }    private _getEventName(): string | undefined {     if (!this._fullScreenEventName) {       const _document = this._document as any;        if (_document.fullscreenEnabled) {         this._fullScreenEventName = 'fullscreenchange';       } else if (_document.webkitFullscreenEnabled) {         this._fullScreenEventName = 'webkitfullscreenchange';       } else if (_document.mozFullScreenEnabled) {         this._fullScreenEventName = 'mozfullscreenchange';       } else if (_document.msFullscreenEnabled) {         this._fullScreenEventName = 'MSFullscreenChange';       }     }      return this._fullScreenEventName;   }    /**    * When the page is put into fullscreen mode, a specific element is specified.    * Only that element and its children are visible when in fullscreen mode.    */   getFullscreenElement(): Element {     const _document = this._document as any;      return (       _document.fullscreenElement ||       _document.webkitFullscreenElement ||       _document.mozFullScreenElement ||       _document.msFullscreenElement ||       null     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './overlay-config'; export * from './position/connected-position'; export * from './scroll/index'; export * from './overlay-module'; export * from './dispatchers/index'; export {Overlay} from './overlay'; export {OverlayContainer} from './overlay-container'; export {CdkOverlayOrigin, CdkConnectedOverlay} from './overlay-directives'; export {FullscreenOverlayContainer} from './fullscreen-overlay-container'; export {OverlayRef, OverlaySizeConfig} from './overlay-ref'; export {ViewportRuler} from '@angular/cdk/scrolling'; export {ComponentType} from '@angular/cdk/portal'; export {OverlayPositionBuilder} from './position/overlay-position-builder';  // Export pre-defined position strategies and interface to build custom ones. export {PositionStrategy} from './position/position-strategy'; export {GlobalPositionStrategy} from './position/global-position-strategy'; export {   ConnectedPosition,   FlexibleConnectedPositionStrategy,   FlexibleConnectedPositionStrategyOrigin,   STANDARD_DROPDOWN_ADJACENT_POSITIONS,   STANDARD_DROPDOWN_BELOW_POSITIONS, } from './position/flexible-connected-position-strategy'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["i1","i2","i3.OverlayContainer","i1.ScrollStrategyOptions","i2.OverlayContainer","i3.OverlayPositionBuilder","i4.OverlayKeyboardDispatcher","i7.OverlayOutsideClickDispatcher"],"mappings":"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"}
-------------------- SECTION 222 --------------------
{"version":3,"file":"menu.mjs","sources":["../../../../../../src/cdk/menu/menu-group.ts","../../../../../../src/cdk/menu/menu-interface.ts","../../../../../../src/cdk/menu/menu-stack.ts","../../../../../../src/cdk/menu/menu-trigger-base.ts","../../../../../../src/cdk/menu/menu-errors.ts","../../../../../../src/cdk/menu/menu-aim.ts","../../../../../../src/cdk/menu/menu-trigger.ts","../../../../../../src/cdk/menu/menu-item.ts","../../../../../../src/cdk/menu/pointer-focus-tracker.ts","../../../../../../src/cdk/menu/menu-base.ts","../../../../../../src/cdk/menu/menu.ts","../../../../../../src/cdk/menu/menu-bar.ts","../../../../../../src/cdk/menu/menu-item-selectable.ts","../../../../../../src/cdk/menu/menu-item-radio.ts","../../../../../../src/cdk/menu/menu-item-checkbox.ts","../../../../../../src/cdk/menu/context-menu-trigger.ts","../../../../../../src/cdk/menu/menu-module.ts","../../../../../../src/cdk/menu/public-api.ts","../../../../../../src/cdk/menu/index.ts","../../../../../../src/cdk/menu/menu_public_index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive} from '@angular/core'; import {UniqueSelectionDispatcher} from '@angular/cdk/collections';  /**  * A grouping container for `CdkMenuItemRadio` instances, similar to a `role=\"radiogroup\"` element.  */ @Directive({   selector: '[cdkMenuGroup]',   exportAs: 'cdkMenuGroup',   standalone: true,   host: {     'role': 'group',     'class': 'cdk-menu-group',   },   providers: [{provide: UniqueSelectionDispatcher, useClass: UniqueSelectionDispatcher}], }) export class CdkMenuGroup {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core'; import {MenuStackItem} from './menu-stack'; import {FocusOrigin} from '@angular/cdk/a11y';  /** Injection token used to return classes implementing the Menu interface */ export const CDK_MENU = new InjectionToken<Menu>('cdk-menu');  /** Interface which specifies Menu operations and used to break circular dependency issues */ export interface Menu extends MenuStackItem {   /** The id of the menu's host element. */   id: string;    /** The menu's native DOM host element. */   nativeElement: HTMLElement;    /** The direction items in the menu flow. */   readonly orientation: 'horizontal' | 'vertical';    /** Place focus on the first MenuItem in the menu. */   focusFirstItem(focusOrigin: FocusOrigin): void;    /** Place focus on the last MenuItem in the menu. */   focusLastItem(focusOrigin: FocusOrigin): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, Injectable, InjectionToken, Optional, SkipSelf} from '@angular/core'; import {Observable, Subject} from 'rxjs'; import {debounceTime, distinctUntilChanged, startWith} from 'rxjs/operators';  /** The relative item in the inline menu to focus after closing all popup menus. */ export const enum FocusNext {   nextItem,   previousItem,   currentItem, }  /** A single item (menu) in the menu stack. */ export interface MenuStackItem {   /** A reference to the menu stack this menu stack item belongs to. */   menuStack?: MenuStack; }  /** Injection token used for an implementation of MenuStack. */ export const MENU_STACK = new InjectionToken<MenuStack>('cdk-menu-stack');  /** Provider that provides the parent menu stack, or a new menu stack if there is no parent one. */ export const PARENT_OR_NEW_MENU_STACK_PROVIDER = {   provide: MENU_STACK,   deps: [[new Optional(), new SkipSelf(), new Inject(MENU_STACK)]],   useFactory: (parentMenuStack?: MenuStack) => parentMenuStack || new MenuStack(), };  /** Provider that provides the parent menu stack, or a new inline menu stack if there is no parent one. */ export const PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER = (   orientation: 'vertical' | 'horizontal', ) => ({   provide: MENU_STACK,   deps: [[new Optional(), new SkipSelf(), new Inject(MENU_STACK)]],   useFactory: (parentMenuStack?: MenuStack) => parentMenuStack || MenuStack.inline(orientation), });  /** Options that can be provided to the close or closeAll methods. */ export interface CloseOptions {   /** The element to focus next if the close operation causes the menu stack to become empty. */   focusNextOnEmpty?: FocusNext;   /** Whether to focus the parent trigger after closing the menu. */   focusParentTrigger?: boolean; }  /** Event dispatched when a menu is closed. */ export interface MenuStackCloseEvent {   /** The menu being closed. */   item: MenuStackItem;   /** Whether to focus the parent trigger after closing the menu. */   focusParentTrigger?: boolean; }  /** The next available menu stack ID. */ let nextId = 0;  /**  * MenuStack allows subscribers to listen for close events (when a MenuStackItem is popped off  * of the stack) in order to perform closing actions. Upon the MenuStack being empty it emits  * from the `empty` observable specifying the next focus action which the listener should perform  * as requested by the closer.  */ @Injectable() export class MenuStack {   /** The ID of this menu stack. */   readonly id = `${nextId++}`;    /** All MenuStackItems tracked by this MenuStack. */   private readonly _elements: MenuStackItem[] = [];    /** Emits the element which was popped off of the stack when requested by a closer. */   private readonly _close = new Subject<MenuStackCloseEvent>();    /** Emits once the MenuStack has become empty after popping off elements. */   private readonly _empty = new Subject<FocusNext | undefined>();    /** Emits whether any menu in the menu stack has focus. */   private readonly _hasFocus = new Subject<boolean>();    /** Observable which emits the MenuStackItem which has been requested to close. */   readonly closed: Observable<MenuStackCloseEvent> = this._close;    /** Observable which emits whether any menu in the menu stack has focus. */   readonly hasFocus: Observable<boolean> = this._hasFocus.pipe(     startWith(false),     debounceTime(0),     distinctUntilChanged(),   );    /**    * Observable which emits when the MenuStack is empty after popping off the last element. It    * emits a FocusNext event which specifies the action the closer has requested the listener    * perform.    */   readonly emptied: Observable<FocusNext | undefined> = this._empty;    /**    * Whether the inline menu associated with this menu stack is vertical or horizontal.    * `null` indicates there is no inline menu associated with this menu stack.    */   private _inlineMenuOrientation: 'vertical' | 'horizontal' | null = null;    /** Creates a menu stack that originates from an inline menu. */   static inline(orientation: 'vertical' | 'horizontal') {     const stack = new MenuStack();     stack._inlineMenuOrientation = orientation;     return stack;   }    /**    * Adds an item to the menu stack.    * @param menu the MenuStackItem to put on the stack.    */   push(menu: MenuStackItem) {     this._elements.push(menu);   }    /**    * Pop items off of the stack up to and including `lastItem` and emit each on the close    * observable. If the stack is empty or `lastItem` is not on the stack it does nothing.    * @param lastItem the last item to pop off the stack.    * @param options Options that configure behavior on close.    */   close(lastItem: MenuStackItem, options?: CloseOptions) {     const {focusNextOnEmpty, focusParentTrigger} = {...options};     if (this._elements.indexOf(lastItem) >= 0) {       let poppedElement;       do {         poppedElement = this._elements.pop()!;         this._close.next({item: poppedElement, focusParentTrigger});       } while (poppedElement !== lastItem);        if (this.isEmpty()) {         this._empty.next(focusNextOnEmpty);       }     }   }    /**    * Pop items off of the stack up to but excluding `lastItem` and emit each on the close    * observable. If the stack is empty or `lastItem` is not on the stack it does nothing.    * @param lastItem the element which should be left on the stack    * @return whether or not an item was removed from the stack    */   closeSubMenuOf(lastItem: MenuStackItem) {     let removed = false;     if (this._elements.indexOf(lastItem) >= 0) {       removed = this.peek() !== lastItem;       while (this.peek() !== lastItem) {         this._close.next({item: this._elements.pop()!});       }     }     return removed;   }    /**    * Pop off all MenuStackItems and emit each one on the `close` observable one by one.    * @param options Options that configure behavior on close.    */   closeAll(options?: CloseOptions) {     const {focusNextOnEmpty, focusParentTrigger} = {...options};     if (!this.isEmpty()) {       while (!this.isEmpty()) {         const menuStackItem = this._elements.pop();         if (menuStackItem) {           this._close.next({item: menuStackItem, focusParentTrigger});         }       }       this._empty.next(focusNextOnEmpty);     }   }    /** Return true if this stack is empty. */   isEmpty() {     return !this._elements.length;   }    /** Return the length of the stack. */   length() {     return this._elements.length;   }    /** Get the top most element on the stack. */   peek(): MenuStackItem | undefined {     return this._elements[this._elements.length - 1];   }    /** Whether the menu stack is associated with an inline menu. */   hasInlineMenu() {     return this._inlineMenuOrientation != null;   }    /** The orientation of the associated inline menu. */   inlineMenuOrientation() {     return this._inlineMenuOrientation;   }    /** Sets whether the menu stack contains the focused element. */   setHasFocus(hasFocus: boolean) {     this._hasFocus.next(hasFocus);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   Directive,   EventEmitter,   inject,   InjectionToken,   Injector,   OnDestroy,   TemplateRef,   ViewContainerRef, } from '@angular/core'; import {Menu} from './menu-interface'; import {MENU_STACK, MenuStack} from './menu-stack'; import {ConnectedPosition, OverlayRef} from '@angular/cdk/overlay'; import {TemplatePortal} from '@angular/cdk/portal'; import {merge, Subject} from 'rxjs';  /** Injection token used for an implementation of MenuStack. */ export const MENU_TRIGGER = new InjectionToken<CdkMenuTriggerBase>('cdk-menu-trigger');  /**  * Abstract directive that implements shared logic common to all menu triggers.  * This class can be extended to create custom menu trigger types.  */ @Directive({   host: {     '[attr.aria-controls]': 'childMenu?.id',     '[attr.data-cdk-menu-stack-id]': 'menuStack.id',   }, }) export abstract class CdkMenuTriggerBase implements OnDestroy {   /** The DI injector for this component. */   readonly injector = inject(Injector);    /** The view container ref for this component */   protected readonly viewContainerRef = inject(ViewContainerRef);    /** The menu stack in which this menu resides. */   protected readonly menuStack: MenuStack = inject(MENU_STACK);    /**    * A list of preferred menu positions to be used when constructing the    * `FlexibleConnectedPositionStrategy` for this trigger's menu.    */   menuPosition: ConnectedPosition[];    /** Emits when the attached menu is requested to open */   readonly opened: EventEmitter<void> = new EventEmitter();    /** Emits when the attached menu is requested to close */   readonly closed: EventEmitter<void> = new EventEmitter();    /** Template reference variable to the menu this trigger opens */   menuTemplateRef: TemplateRef<unknown> | null;    /** Context data to be passed along to the menu template */   menuData: unknown;    /** A reference to the overlay which manages the triggered menu */   protected overlayRef: OverlayRef | null = null;    /** Emits when this trigger is destroyed. */   protected readonly destroyed: Subject<void> = new Subject();    /** Emits when the outside pointer events listener on the overlay should be stopped. */   protected readonly stopOutsideClicksListener = merge(this.closed, this.destroyed);    /** The child menu opened by this trigger. */   protected childMenu?: Menu;    /** The content of the menu panel opened by this trigger. */   private _menuPortal: TemplatePortal;    /** The injector to use for the child menu opened by this trigger. */   private _childMenuInjector?: Injector;    ngOnDestroy() {     this._destroyOverlay();      this.destroyed.next();     this.destroyed.complete();   }    /** Whether the attached menu is open. */   isOpen() {     return !!this.overlayRef?.hasAttached();   }    /** Registers a child menu as having been opened by this trigger. */   registerChildMenu(child: Menu) {     this.childMenu = child;   }    /**    * Get the portal to be attached to the overlay which contains the menu. Allows for the menu    * content to change dynamically and be reflected in the application.    */   protected getMenuContentPortal() {     const hasMenuContentChanged = this.menuTemplateRef !== this._menuPortal?.templateRef;     if (this.menuTemplateRef && (!this._menuPortal || hasMenuContentChanged)) {       this._menuPortal = new TemplatePortal(         this.menuTemplateRef,         this.viewContainerRef,         this.menuData,         this._getChildMenuInjector(),       );     }      return this._menuPortal;   }    /**    * Whether the given element is inside the scope of this trigger's menu stack.    * @param element The element to check.    * @return Whether the element is inside the scope of this trigger's menu stack.    */   protected isElementInsideMenuStack(element: Element) {     for (let el: Element | null = element; el; el = el?.parentElement ?? null) {       if (el.getAttribute('data-cdk-menu-stack-id') === this.menuStack.id) {         return true;       }     }     return false;   }    /** Destroy and unset the overlay reference it if exists */   private _destroyOverlay() {     if (this.overlayRef) {       this.overlayRef.dispose();       this.overlayRef = null;     }   }    /** Gets the injector to use when creating a child menu. */   private _getChildMenuInjector() {     this._childMenuInjector =       this._childMenuInjector ||       Injector.create({         providers: [           {provide: MENU_TRIGGER, useValue: this},           {provide: MENU_STACK, useValue: this.menuStack},         ],         parent: this.injector,       });     return this._childMenuInjector;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * Throws an exception when an instance of the PointerFocusTracker is not provided.  * @docs-private  */ export function throwMissingPointerFocusTracker() {   throw Error('expected an instance of PointerFocusTracker to be provided'); }  /**  * Throws an exception when a reference to the parent menu is not provided.  * @docs-private  */ export function throwMissingMenuReference() {   throw Error('expected a reference to the parent menu'); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, inject, Injectable, InjectionToken, NgZone, OnDestroy} from '@angular/core'; import {fromEvent, Subject} from 'rxjs'; import {filter, takeUntil} from 'rxjs/operators'; import {FocusableElement, PointerFocusTracker} from './pointer-focus-tracker'; import {Menu} from './menu-interface'; import {throwMissingMenuReference, throwMissingPointerFocusTracker} from './menu-errors';  /**  * MenuAim is responsible for determining if a sibling menuitem's menu should be closed when a  * Toggler item is hovered into. It is up to the hovered in item to call the MenuAim service in  * order to determine if it may perform its close actions.  */ export interface MenuAim {   /**    * Set the Menu and its PointerFocusTracker.    * @param menu The menu that this menu aim service controls.    * @param pointerTracker The `PointerFocusTracker` for the given menu.    */   initialize(menu: Menu, pointerTracker: PointerFocusTracker<FocusableElement & Toggler>): void;    /**    * Calls the `doToggle` callback when it is deemed that the user is not moving towards    * the submenu.    * @param doToggle the function called when the user is not moving towards the submenu.    */   toggle(doToggle: () => void): void; }  /** Injection token used for an implementation of MenuAim. */ export const MENU_AIM = new InjectionToken<MenuAim>('cdk-menu-aim');  /** Capture every nth mouse move event. */ const MOUSE_MOVE_SAMPLE_FREQUENCY = 3;  /** The number of mouse move events to track. */ const NUM_POINTS = 5;  /**  * How long to wait before closing a sibling menu if a user stops short of the submenu they were  * predicted to go into.  */ const CLOSE_DELAY = 300;  /** An element which when hovered over may open or close a menu. */ export interface Toggler {   /** Gets the open menu, or undefined if no menu is open. */   getMenu(): Menu | undefined; }  /** Calculate the slope between point a and b. */ function getSlope(a: Point, b: Point) {   return (b.y - a.y) / (b.x - a.x); }  /** Calculate the y intercept for the given point and slope. */ function getYIntercept(point: Point, slope: number) {   return point.y - slope * point.x; }  /** Represents a coordinate of mouse travel. */ type Point = {x: number; y: number};  /**  * Whether the given mouse trajectory line defined by the slope and y intercept falls within the  * submenu as defined by `submenuPoints`  * @param submenuPoints the submenu DOMRect points.  * @param m the slope of the trajectory line.  * @param b the y intercept of the trajectory line.  * @return true if any point on the line falls within the submenu.  */ function isWithinSubmenu(submenuPoints: DOMRect, m: number, b: number) {   const {left, right, top, bottom} = submenuPoints;    // Check for intersection with each edge of the submenu (left, right, top, bottom)   // by fixing one coordinate to that edge's coordinate (either x or y) and checking if the   // other coordinate is within bounds.   return (     (m * left + b >= top && m * left + b <= bottom) ||     (m * right + b >= top && m * right + b <= bottom) ||     ((top - b) / m >= left && (top - b) / m <= right) ||     ((bottom - b) / m >= left && (bottom - b) / m <= right)   ); }  /**  * TargetMenuAim predicts if a user is moving into a submenu. It calculates the  * trajectory of the user's mouse movement in the current menu to determine if the  * mouse is moving towards an open submenu.  *  * The determination is made by calculating the slope of the users last NUM_POINTS moves where each  * pair of points determines if the trajectory line points into the submenu. It uses consensus  * approach by checking if at least NUM_POINTS / 2 pairs determine that the user is moving towards  * to submenu.  */ @Injectable() export class TargetMenuAim implements MenuAim, OnDestroy {   /** The Angular zone. */   private readonly _ngZone = inject(NgZone);    /** The last NUM_POINTS mouse move events. */   private readonly _points: Point[] = [];    /** Reference to the root menu in which we are tracking mouse moves. */   private _menu: Menu;    /** Reference to the root menu's mouse manager. */   private _pointerTracker: PointerFocusTracker<Toggler & FocusableElement>;    /** The id associated with the current timeout call waiting to resolve. */   private _timeoutId: number | null;    /** Emits when this service is destroyed. */   private readonly _destroyed: Subject<void> = new Subject();    ngOnDestroy() {     this._destroyed.next();     this._destroyed.complete();   }    /**    * Set the Menu and its PointerFocusTracker.    * @param menu The menu that this menu aim service controls.    * @param pointerTracker The `PointerFocusTracker` for the given menu.    */   initialize(menu: Menu, pointerTracker: PointerFocusTracker<FocusableElement & Toggler>) {     this._menu = menu;     this._pointerTracker = pointerTracker;     this._subscribeToMouseMoves();   }    /**    * Calls the `doToggle` callback when it is deemed that the user is not moving towards    * the submenu.    * @param doToggle the function called when the user is not moving towards the submenu.    */   toggle(doToggle: () => void) {     // If the menu is horizontal the sub-menus open below and there is no risk of premature     // closing of any sub-menus therefore we automatically resolve the callback.     if (this._menu.orientation === 'horizontal') {       doToggle();     }      this._checkConfigured();      const siblingItemIsWaiting = !!this._timeoutId;     const hasPoints = this._points.length > 1;      if (hasPoints && !siblingItemIsWaiting) {       if (this._isMovingToSubmenu()) {         this._startTimeout(doToggle);       } else {         doToggle();       }     } else if (!siblingItemIsWaiting) {       doToggle();     }   }    /**    * Start the delayed toggle handler if one isn't running already.    *    * The delayed toggle handler executes the `doToggle` callback after some period of time iff the    * users mouse is on an item in the current menu.    *    * @param doToggle the function called when the user is not moving towards the submenu.    */   private _startTimeout(doToggle: () => void) {     // If the users mouse is moving towards a submenu we don't want to immediately resolve.     // Wait for some period of time before determining if the previous menu should close in     // cases where the user may have moved towards the submenu but stopped on a sibling menu     // item intentionally.     const timeoutId = setTimeout(() => {       // Resolve if the user is currently moused over some element in the root menu       if (this._pointerTracker!.activeElement && timeoutId === this._timeoutId) {         doToggle();       }       this._timeoutId = null;     }, CLOSE_DELAY) as any as number;      this._timeoutId = timeoutId;   }    /** Whether the user is heading towards the open submenu. */   private _isMovingToSubmenu() {     const submenuPoints = this._getSubmenuBounds();     if (!submenuPoints) {       return false;     }      let numMoving = 0;     const currPoint = this._points[this._points.length - 1];     // start from the second last point and calculate the slope between each point and the last     // point.     for (let i = this._points.length - 2; i >= 0; i--) {       const previous = this._points[i];       const slope = getSlope(currPoint, previous);       if (isWithinSubmenu(submenuPoints, slope, getYIntercept(currPoint, slope))) {         numMoving++;       }     }     return numMoving >= Math.floor(NUM_POINTS / 2);   }    /** Get the bounding DOMRect for the open submenu. */   private _getSubmenuBounds(): DOMRect | undefined {     return this._pointerTracker?.previousElement?.getMenu()?.nativeElement.getBoundingClientRect();   }    /**    * Check if a reference to the PointerFocusTracker and menu element is provided.    * @throws an error if neither reference is provided.    */   private _checkConfigured() {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       if (!this._pointerTracker) {         throwMissingPointerFocusTracker();       }       if (!this._menu) {         throwMissingMenuReference();       }     }   }    /** Subscribe to the root menus mouse move events and update the tracked mouse points. */   private _subscribeToMouseMoves() {     this._ngZone.runOutsideAngular(() => {       fromEvent<MouseEvent>(this._menu.nativeElement, 'mousemove')         .pipe(           filter((_: MouseEvent, index: number) => index % MOUSE_MOVE_SAMPLE_FREQUENCY === 0),           takeUntil(this._destroyed),         )         .subscribe((event: MouseEvent) => {           this._points.push({x: event.clientX, y: event.clientY});           if (this._points.length > NUM_POINTS) {             this._points.shift();           }         });     });   } }  /**  * CdkTargetMenuAim is a provider for the TargetMenuAim service. It can be added to an  * element with either the `cdkMenu` or `cdkMenuBar` directive and child menu items.  */ @Directive({   selector: '[cdkTargetMenuAim]',   exportAs: 'cdkTargetMenuAim',   standalone: true,   providers: [{provide: MENU_AIM, useClass: TargetMenuAim}], }) export class CdkTargetMenuAim {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef, inject, NgZone, OnDestroy} from '@angular/core'; import {Directionality} from '@angular/cdk/bidi'; import {   ConnectedPosition,   FlexibleConnectedPositionStrategy,   Overlay,   OverlayConfig,   STANDARD_DROPDOWN_ADJACENT_POSITIONS,   STANDARD_DROPDOWN_BELOW_POSITIONS, } from '@angular/cdk/overlay'; import {   DOWN_ARROW,   ENTER,   hasModifierKey,   LEFT_ARROW,   RIGHT_ARROW,   SPACE,   UP_ARROW, } from '@angular/cdk/keycodes'; import {_getEventTarget} from '@angular/cdk/platform'; import {InputModalityDetector} from '@angular/cdk/a11y'; import {fromEvent} from 'rxjs'; import {filter, takeUntil} from 'rxjs/operators'; import {CDK_MENU, Menu} from './menu-interface'; import {PARENT_OR_NEW_MENU_STACK_PROVIDER} from './menu-stack'; import {MENU_AIM} from './menu-aim'; import {CdkMenuTriggerBase, MENU_TRIGGER} from './menu-trigger-base';  /**  * A directive that turns its host element into a trigger for a popup menu.  * It can be combined with cdkMenuItem to create sub-menus. If the element is in a top level  * MenuBar it will open the menu on click, or if a sibling is already opened it will open on hover.  * If it is inside of a Menu it will open the attached Submenu on hover regardless of its sibling  * state.  */ @Directive({   selector: '[cdkMenuTriggerFor]',   exportAs: 'cdkMenuTriggerFor',   standalone: true,   host: {     'class': 'cdk-menu-trigger',     '[attr.aria-haspopup]': 'menuTemplateRef ? \"menu\" : null',     '[attr.aria-expanded]': 'menuTemplateRef == null ? null : isOpen()',     '(focusin)': '_setHasFocus(true)',     '(focusout)': '_setHasFocus(false)',     '(keydown)': '_toggleOnKeydown($event)',     '(click)': '_handleClick()',   },   inputs: [     'menuTemplateRef: cdkMenuTriggerFor',     'menuPosition: cdkMenuPosition',     'menuData: cdkMenuTriggerData',   ],   outputs: ['opened: cdkMenuOpened', 'closed: cdkMenuClosed'],   providers: [     {provide: MENU_TRIGGER, useExisting: CdkMenuTrigger},     PARENT_OR_NEW_MENU_STACK_PROVIDER,   ], }) export class CdkMenuTrigger extends CdkMenuTriggerBase implements OnDestroy {   private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);   private readonly _overlay = inject(Overlay);   private readonly _ngZone = inject(NgZone);   private readonly _directionality = inject(Directionality, {optional: true});   private readonly _inputModalityDetector = inject(InputModalityDetector);    /** The parent menu this trigger belongs to. */   private readonly _parentMenu = inject(CDK_MENU, {optional: true});    /** The menu aim service used by this menu. */   private readonly _menuAim = inject(MENU_AIM, {optional: true});    constructor() {     super();     this._setRole();     this._registerCloseHandler();     this._subscribeToMenuStackClosed();     this._subscribeToMouseEnter();     this._subscribeToMenuStackHasFocus();     this._setType();   }    /** Toggle the attached menu. */   toggle() {     this.isOpen() ? this.close() : this.open();   }    /** Open the attached menu. */   open() {     if (!this.isOpen() && this.menuTemplateRef != null) {       this.opened.next();        this.overlayRef = this.overlayRef || this._overlay.create(this._getOverlayConfig());       this.overlayRef.attach(this.getMenuContentPortal());       this._subscribeToOutsideClicks();     }   }    /** Close the opened menu. */   close() {     if (this.isOpen()) {       this.closed.next();        this.overlayRef!.detach();     }     this._closeSiblingTriggers();   }    /**    * Get a reference to the rendered Menu if the Menu is open and rendered in the DOM.    */   getMenu(): Menu | undefined {     return this.childMenu;   }    /**    * Handles keyboard events for the menu item.    * @param event The keyboard event to handle    */   _toggleOnKeydown(event: KeyboardEvent) {     const isParentVertical = this._parentMenu?.orientation === 'vertical';     switch (event.keyCode) {       case SPACE:       case ENTER:         if (!hasModifierKey(event)) {           this.toggle();           this.childMenu?.focusFirstItem('keyboard');         }         break;        case RIGHT_ARROW:         if (!hasModifierKey(event)) {           if (this._parentMenu && isParentVertical && this._directionality?.value !== 'rtl') {             event.preventDefault();             this.open();             this.childMenu?.focusFirstItem('keyboard');           }         }         break;        case LEFT_ARROW:         if (!hasModifierKey(event)) {           if (this._parentMenu && isParentVertical && this._directionality?.value === 'rtl') {             event.preventDefault();             this.open();             this.childMenu?.focusFirstItem('keyboard');           }         }         break;        case DOWN_ARROW:       case UP_ARROW:         if (!hasModifierKey(event)) {           if (!isParentVertical) {             event.preventDefault();             this.open();             event.keyCode === DOWN_ARROW               ? this.childMenu?.focusFirstItem('keyboard')               : this.childMenu?.focusLastItem('keyboard');           }         }         break;     }   }    /** Handles clicks on the menu trigger. */   _handleClick() {     // Don't handle clicks originating from the keyboard since we     // already do the same on `keydown` events for enter and space.     if (this._inputModalityDetector.mostRecentModality !== 'keyboard') {       this.toggle();     }   }    /**    * Sets whether the trigger's menu stack has focus.    * @param hasFocus Whether the menu stack has focus.    */   _setHasFocus(hasFocus: boolean) {     if (!this._parentMenu) {       this.menuStack.setHasFocus(hasFocus);     }   }    /**    * Subscribe to the mouseenter events and close any sibling menu items if this element is moused    * into.    */   private _subscribeToMouseEnter() {     this._ngZone.runOutsideAngular(() => {       fromEvent(this._elementRef.nativeElement, 'mouseenter')         .pipe(           filter(() => !this.menuStack.isEmpty() && !this.isOpen()),           takeUntil(this.destroyed),         )         .subscribe(() => {           // Closes any sibling menu items and opens the menu associated with this trigger.           const toggleMenus = () =>             this._ngZone.run(() => {               this._closeSiblingTriggers();               this.open();             });            if (this._menuAim) {             this._menuAim.toggle(toggleMenus);           } else {             toggleMenus();           }         });     });   }    /** Close out any sibling menu trigger menus. */   private _closeSiblingTriggers() {     if (this._parentMenu) {       // If nothing was removed from the stack and the last element is not the parent item       // that means that the parent menu is a menu bar since we don't put the menu bar on the       // stack       const isParentMenuBar =         !this.menuStack.closeSubMenuOf(this._parentMenu) &&         this.menuStack.peek() !== this._parentMenu;        if (isParentMenuBar) {         this.menuStack.closeAll();       }     } else {       this.menuStack.closeAll();     }   }    /** Get the configuration object used to create the overlay. */   private _getOverlayConfig() {     return new OverlayConfig({       positionStrategy: this._getOverlayPositionStrategy(),       scrollStrategy: this._overlay.scrollStrategies.reposition(),       direction: this._directionality || undefined,     });   }    /** Build the position strategy for the overlay which specifies where to place the menu. */   private _getOverlayPositionStrategy(): FlexibleConnectedPositionStrategy {     return this._overlay       .position()       .flexibleConnectedTo(this._elementRef)       .withLockedPosition()       .withGrowAfterOpen()       .withPositions(this._getOverlayPositions());   }    /** Get the preferred positions for the opened menu relative to the menu item. */   private _getOverlayPositions(): ConnectedPosition[] {     return (       this.menuPosition ??       (!this._parentMenu || this._parentMenu.orientation === 'horizontal'         ? STANDARD_DROPDOWN_BELOW_POSITIONS         : STANDARD_DROPDOWN_ADJACENT_POSITIONS)     );   }    /**    * Subscribe to the MenuStack close events if this is a standalone trigger and close out the menu    * this triggers when requested.    */   private _registerCloseHandler() {     if (!this._parentMenu) {       this.menuStack.closed.pipe(takeUntil(this.destroyed)).subscribe(({item}) => {         if (item === this.childMenu) {           this.close();         }       });     }   }    /**    * Subscribe to the overlays outside pointer events stream and handle closing out the stack if a    * click occurs outside the menus.    */   private _subscribeToOutsideClicks() {     if (this.overlayRef) {       this.overlayRef         .outsidePointerEvents()         .pipe(takeUntil(this.stopOutsideClicksListener))         .subscribe(event => {           const target = _getEventTarget(event) as Element;           const element = this._elementRef.nativeElement;            if (target !== element && !element.contains(target)) {             if (!this.isElementInsideMenuStack(target)) {               this.menuStack.closeAll();             } else {               this._closeSiblingTriggers();             }           }         });     }   }    /** Subscribe to the MenuStack hasFocus events. */   private _subscribeToMenuStackHasFocus() {     if (!this._parentMenu) {       this.menuStack.hasFocus.pipe(takeUntil(this.destroyed)).subscribe(hasFocus => {         if (!hasFocus) {           this.menuStack.closeAll();         }       });     }   }    /** Subscribe to the MenuStack closed events. */   private _subscribeToMenuStackClosed() {     if (!this._parentMenu) {       this.menuStack.closed.subscribe(({focusParentTrigger}) => {         if (focusParentTrigger && !this.menuStack.length()) {           this._elementRef.nativeElement.focus();         }       });     }   }    /** Sets the role attribute for this trigger if needed. */   private _setRole() {     // If this trigger is part of another menu, the cdkMenuItem directive will handle setting the     // role, otherwise this is a standalone trigger, and we should ensure it has role=\"button\".     if (!this._parentMenu) {       this._elementRef.nativeElement.setAttribute('role', 'button');     }   }    /** Sets thte `type` attribute of the trigger. */   private _setType() {     const element = this._elementRef.nativeElement;      if (element.nodeName === 'BUTTON' && !element.getAttribute('type')) {       // Prevents form submissions.       element.setAttribute('type', 'button');     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {   Directive,   ElementRef,   EventEmitter,   inject,   Input,   NgZone,   OnDestroy,   Output, } from '@angular/core'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {FocusableOption, InputModalityDetector} from '@angular/cdk/a11y'; import {ENTER, hasModifierKey, LEFT_ARROW, RIGHT_ARROW, SPACE} from '@angular/cdk/keycodes'; import {Directionality} from '@angular/cdk/bidi'; import {fromEvent, Subject} from 'rxjs'; import {filter, takeUntil} from 'rxjs/operators'; import {CdkMenuTrigger} from './menu-trigger'; import {CDK_MENU, Menu} from './menu-interface'; import {FocusNext, MENU_STACK} from './menu-stack'; import {FocusableElement} from './pointer-focus-tracker'; import {MENU_AIM, Toggler} from './menu-aim';  /**  * Directive which provides the ability for an element to be focused and navigated to using the  * keyboard when residing in a CdkMenu, CdkMenuBar, or CdkMenuGroup. It performs user defined  * behavior when clicked.  */ @Directive({   selector: '[cdkMenuItem]',   exportAs: 'cdkMenuItem',   standalone: true,   host: {     'role': 'menuitem',     'class': 'cdk-menu-item',     '[tabindex]': '_tabindex',     '[attr.aria-disabled]': 'disabled || null',     '(blur)': '_resetTabIndex()',     '(focus)': '_setTabIndex()',     '(click)': '_handleClick()',     '(keydown)': '_onKeydown($event)',   }, }) export class CdkMenuItem implements FocusableOption, FocusableElement, Toggler, OnDestroy {   protected readonly _dir = inject(Directionality, {optional: true});   private readonly _inputModalityDetector = inject(InputModalityDetector);   readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);   protected _ngZone = inject(NgZone);    /** The menu aim service used by this menu. */   private readonly _menuAim = inject(MENU_AIM, {optional: true});    /** The stack of menus this menu belongs to. */   private readonly _menuStack = inject(MENU_STACK);    /** The parent menu in which this menuitem resides. */   private readonly _parentMenu = inject(CDK_MENU, {optional: true});    /** Reference to the CdkMenuItemTrigger directive if one is added to the same element */   private readonly _menuTrigger = inject(CdkMenuTrigger, {optional: true, self: true});    /**  Whether the CdkMenuItem is disabled - defaults to false */   @Input('cdkMenuItemDisabled')   get disabled(): boolean {     return this._disabled;   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);   }   private _disabled = false;    /**    * The text used to locate this item during menu typeahead. If not specified,    * the `textContent` of the item will be used.    */   @Input('cdkMenuitemTypeaheadLabel') typeaheadLabel: string | null;    /**    * If this MenuItem is a regular MenuItem, outputs when it is triggered by a keyboard or mouse    * event.    */   @Output('cdkMenuItemTriggered') readonly triggered: EventEmitter<void> = new EventEmitter();    /** Whether the menu item opens a menu. */   get hasMenu() {     return this._menuTrigger?.menuTemplateRef != null;   }    /**    * The tabindex for this menu item managed internally and used for implementing roving a    * tab index.    */   _tabindex: 0 | -1 = -1;    /** Whether the item should close the menu if triggered by the spacebar. */   protected closeOnSpacebarTrigger = true;    /** Emits when the menu item is destroyed. */   protected readonly destroyed = new Subject<void>();    constructor() {     this._setupMouseEnter();     this._setType();      if (this._isStandaloneItem()) {       this._tabindex = 0;     }   }    ngOnDestroy() {     this.destroyed.next();     this.destroyed.complete();   }    /** Place focus on the element. */   focus() {     this._elementRef.nativeElement.focus();   }    /**    * If the menu item is not disabled and the element does not have a menu trigger attached, emit    * on the cdkMenuItemTriggered emitter and close all open menus.    * @param options Options the configure how the item is triggered    *   - keepOpen: specifies that the menu should be kept open after triggering the item.    */   trigger(options?: {keepOpen: boolean}) {     const {keepOpen} = {...options};     if (!this.disabled && !this.hasMenu) {       this.triggered.next();       if (!keepOpen) {         this._menuStack.closeAll({focusParentTrigger: true});       }     }   }    /** Return true if this MenuItem has an attached menu and it is open. */   isMenuOpen() {     return !!this._menuTrigger?.isOpen();   }    /**    * Get a reference to the rendered Menu if the Menu is open and it is visible in the DOM.    * @return the menu if it is open, otherwise undefined.    */   getMenu(): Menu | undefined {     return this._menuTrigger?.getMenu();   }    /** Get the CdkMenuTrigger associated with this element. */   getMenuTrigger(): CdkMenuTrigger | null {     return this._menuTrigger;   }    /** Get the label for this element which is required by the FocusableOption interface. */   getLabel(): string {     return this.typeaheadLabel || this._elementRef.nativeElement.textContent?.trim() || '';   }    /** Reset the tabindex to -1. */   _resetTabIndex() {     if (!this._isStandaloneItem()) {       this._tabindex = -1;     }   }    /**    * Set the tab index to 0 if not disabled and it's a focus event, or a mouse enter if this element    * is not in a menu bar.    */   _setTabIndex(event?: MouseEvent) {     if (this.disabled) {       return;     }      // don't set the tabindex if there are no open sibling or parent menus     if (!event || !this._menuStack.isEmpty()) {       this._tabindex = 0;     }   }    /**    * Handles keyboard events for the menu item, specifically either triggering the user defined    * callback or opening/closing the current menu based on whether the left or right arrow key was    * pressed.    * @param event the keyboard event to handle    */   _onKeydown(event: KeyboardEvent) {     switch (event.keyCode) {       case SPACE:       case ENTER:         if (!hasModifierKey(event)) {           this.trigger({keepOpen: event.keyCode === SPACE && !this.closeOnSpacebarTrigger});         }         break;        case RIGHT_ARROW:         if (!hasModifierKey(event)) {           if (this._parentMenu && this._isParentVertical()) {             if (this._dir?.value !== 'rtl') {               this._forwardArrowPressed(event);             } else {               this._backArrowPressed(event);             }           }         }         break;        case LEFT_ARROW:         if (!hasModifierKey(event)) {           if (this._parentMenu && this._isParentVertical()) {             if (this._dir?.value !== 'rtl') {               this._backArrowPressed(event);             } else {               this._forwardArrowPressed(event);             }           }         }         break;     }   }    /** Handles clicks on the menu item. */   _handleClick() {     // Don't handle clicks originating from the keyboard since we     // already do the same on `keydown` events for enter and space.     if (this._inputModalityDetector.mostRecentModality !== 'keyboard') {       this.trigger();     }   }    /** Whether this menu item is standalone or within a menu or menu bar. */   private _isStandaloneItem() {     return !this._parentMenu;   }    /**    * Handles the user pressing the back arrow key.    * @param event The keyboard event.    */   private _backArrowPressed(event: KeyboardEvent) {     const parentMenu = this._parentMenu!;     if (this._menuStack.hasInlineMenu() || this._menuStack.length() > 1) {       event.preventDefault();       this._menuStack.close(parentMenu, {         focusNextOnEmpty:           this._menuStack.inlineMenuOrientation() === 'horizontal'             ? FocusNext.previousItem             : FocusNext.currentItem,         focusParentTrigger: true,       });     }   }    /**    * Handles the user pressing the forward arrow key.    * @param event The keyboard event.    */   private _forwardArrowPressed(event: KeyboardEvent) {     if (!this.hasMenu && this._menuStack.inlineMenuOrientation() === 'horizontal') {       event.preventDefault();       this._menuStack.closeAll({         focusNextOnEmpty: FocusNext.nextItem,         focusParentTrigger: true,       });     }   }    /**    * Subscribe to the mouseenter events and close any sibling menu items if this element is moused    * into.    */   private _setupMouseEnter() {     if (!this._isStandaloneItem()) {       const closeOpenSiblings = () =>         this._ngZone.run(() => this._menuStack.closeSubMenuOf(this._parentMenu!));        this._ngZone.runOutsideAngular(() =>         fromEvent(this._elementRef.nativeElement, 'mouseenter')           .pipe(             filter(() => !this._menuStack.isEmpty() && !this.hasMenu),             takeUntil(this.destroyed),           )           .subscribe(() => {             if (this._menuAim) {               this._menuAim.toggle(closeOpenSiblings);             } else {               closeOpenSiblings();             }           }),       );     }   }    /**    * Return true if the enclosing parent menu is configured in a horizontal orientation, false    * otherwise or if no parent.    */   private _isParentVertical() {     return this._parentMenu?.orientation === 'vertical';   }    /** Sets the `type` attribute of the menu item. */   private _setType() {     const element = this._elementRef.nativeElement;      if (element.nodeName === 'BUTTON' && !element.getAttribute('type')) {       // Prevent form submissions.       element.setAttribute('type', 'button');     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ElementRef, QueryList} from '@angular/core'; import {defer, fromEvent, Observable, Subject} from 'rxjs'; import {mapTo, mergeAll, mergeMap, startWith, takeUntil} from 'rxjs/operators';  /** Item to track for mouse focus events. */ export interface FocusableElement {   /** A reference to the element to be tracked. */   _elementRef: ElementRef<HTMLElement>; }  /**  * PointerFocusTracker keeps track of the currently active item under mouse focus. It also has  * observables which emit when the users mouse enters and leaves a tracked element.  */ export class PointerFocusTracker<T extends FocusableElement> {   /** Emits when an element is moused into. */   readonly entered: Observable<T> = this._getItemPointerEntries();    /** Emits when an element is moused out. */   readonly exited: Observable<T> = this._getItemPointerExits();    /** The element currently under mouse focus. */   activeElement?: T;    /** The element previously under mouse focus. */   previousElement?: T;    /** Emits when this is destroyed. */   private readonly _destroyed: Subject<void> = new Subject();    constructor(     /** The list of items being tracked. */     private readonly _items: QueryList<T>,   ) {     this.entered.subscribe(element => (this.activeElement = element));     this.exited.subscribe(() => {       this.previousElement = this.activeElement;       this.activeElement = undefined;     });   }    /** Stop the managers listeners. */   destroy() {     this._destroyed.next();     this._destroyed.complete();   }    /**    * Gets a stream of pointer (mouse) entries into the given items.    * This should typically run outside the Angular zone.    */   private _getItemPointerEntries(): Observable<T> {     return defer(() =>       this._items.changes.pipe(         startWith(this._items),         mergeMap((list: QueryList<T>) =>           list.map(element =>             fromEvent(element._elementRef.nativeElement, 'mouseenter').pipe(               mapTo(element),               takeUntil(this._items.changes),             ),           ),         ),         mergeAll(),       ),     );   }    /**    * Gets a stream of pointer (mouse) exits out of the given items.    * This should typically run outside the Angular zone.    */   private _getItemPointerExits() {     return defer(() =>       this._items.changes.pipe(         startWith(this._items),         mergeMap((list: QueryList<T>) =>           list.map(element =>             fromEvent(element._elementRef.nativeElement, 'mouseout').pipe(               mapTo(element),               takeUntil(this._items.changes),             ),           ),         ),         mergeAll(),       ),     );   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {CdkMenuGroup} from './menu-group'; import {   AfterContentInit,   ContentChildren,   Directive,   ElementRef,   inject,   Input,   NgZone,   OnDestroy,   QueryList, } from '@angular/core'; import {FocusKeyManager, FocusOrigin} from '@angular/cdk/a11y'; import {CdkMenuItem} from './menu-item'; import {merge, Subject} from 'rxjs'; import {Directionality} from '@angular/cdk/bidi'; import {mapTo, mergeAll, mergeMap, startWith, switchMap, takeUntil} from 'rxjs/operators'; import {MENU_STACK, MenuStack, MenuStackItem} from './menu-stack'; import {Menu} from './menu-interface'; import {PointerFocusTracker} from './pointer-focus-tracker'; import {MENU_AIM} from './menu-aim';  /** Counter used to create unique IDs for menus. */ let nextId = 0;  /**  * Abstract directive that implements shared logic common to all menus.  * This class can be extended to create custom menu types.  */ @Directive({   host: {     'role': 'menu',     'class': '', // reset the css class added by the super-class     '[tabindex]': '_getTabIndex()',     '[id]': 'id',     '[attr.aria-orientation]': 'orientation',     '[attr.data-cdk-menu-stack-id]': 'menuStack.id',     '(focus)': 'focusFirstItem()',     '(focusin)': 'menuStack.setHasFocus(true)',     '(focusout)': 'menuStack.setHasFocus(false)',   }, }) export abstract class CdkMenuBase   extends CdkMenuGroup   implements Menu, AfterContentInit, OnDestroy {   /** The menu's native DOM host element. */   readonly nativeElement: HTMLElement = inject(ElementRef).nativeElement;    /** The Angular zone. */   protected ngZone = inject(NgZone);    /** The stack of menus this menu belongs to. */   readonly menuStack: MenuStack = inject(MENU_STACK);    /** The menu aim service used by this menu. */   protected readonly menuAim = inject(MENU_AIM, {optional: true, self: true});    /** The directionality (text direction) of the current page. */   protected readonly dir = inject(Directionality, {optional: true});    /** The id of the menu's host element. */   @Input() id = `cdk-menu-${nextId++}`;    /** All child MenuItem elements nested in this Menu. */   @ContentChildren(CdkMenuItem, {descendants: true})   readonly items: QueryList<CdkMenuItem>;    /** The direction items in the menu flow. */   orientation: 'horizontal' | 'vertical' = 'vertical';    /**    * Whether the menu is displayed inline (i.e. always present vs a conditional popup that the    * user triggers with a trigger element).    */   isInline = false;    /** Handles keyboard events for the menu. */   protected keyManager: FocusKeyManager<CdkMenuItem>;    /** Emits when the MenuBar is destroyed. */   protected readonly destroyed: Subject<void> = new Subject();    /** The Menu Item which triggered the open submenu. */   protected triggerItem?: CdkMenuItem;    /** Tracks the users mouse movements over the menu. */   protected pointerTracker?: PointerFocusTracker<CdkMenuItem>;    /** Whether this menu's menu stack has focus. */   private _menuStackHasFocus = false;    ngAfterContentInit() {     if (!this.isInline) {       this.menuStack.push(this);     }     this._setKeyManager();     this._subscribeToMenuStackHasFocus();     this._subscribeToMenuOpen();     this._subscribeToMenuStackClosed();     this._setUpPointerTracker();   }    ngOnDestroy() {     this.keyManager?.destroy();     this.destroyed.next();     this.destroyed.complete();     this.pointerTracker?.destroy();   }    /**    * Place focus on the first MenuItem in the menu and set the focus origin.    * @param focusOrigin The origin input mode of the focus event.    */   focusFirstItem(focusOrigin: FocusOrigin = 'program') {     this.keyManager.setFocusOrigin(focusOrigin);     this.keyManager.setFirstItemActive();   }    /**    * Place focus on the last MenuItem in the menu and set the focus origin.    * @param focusOrigin The origin input mode of the focus event.    */   focusLastItem(focusOrigin: FocusOrigin = 'program') {     this.keyManager.setFocusOrigin(focusOrigin);     this.keyManager.setLastItemActive();   }    /** Gets the tabindex for this menu. */   _getTabIndex() {     const tabindexIfInline = this._menuStackHasFocus ? -1 : 0;     return this.isInline ? tabindexIfInline : null;   }    /**    * Close the open menu if the current active item opened the requested MenuStackItem.    * @param menu The menu requested to be closed.    * @param options Options to configure the behavior on close.    *   - `focusParentTrigger` Whether to focus the parent trigger after closing the menu.    */   protected closeOpenMenu(menu: MenuStackItem, options?: {focusParentTrigger?: boolean}) {     const {focusParentTrigger} = {...options};     const keyManager = this.keyManager;     const trigger = this.triggerItem;     if (menu === trigger?.getMenuTrigger()?.getMenu()) {       trigger?.getMenuTrigger()?.close();       // If the user has moused over a sibling item we want to focus the element under mouse focus       // not the trigger which previously opened the now closed menu.       if (focusParentTrigger) {         if (trigger) {           keyManager.setActiveItem(trigger);         } else {           keyManager.setFirstItemActive();         }       }     }   }    /** Setup the FocusKeyManager with the correct orientation for the menu. */   private _setKeyManager() {     this.keyManager = new FocusKeyManager(this.items).withWrap().withTypeAhead().withHomeAndEnd();      if (this.orientation === 'horizontal') {       this.keyManager.withHorizontalOrientation(this.dir?.value || 'ltr');     } else {       this.keyManager.withVerticalOrientation();     }   }    /**    * Subscribe to the menu trigger's open events in order to track the trigger which opened the menu    * and stop tracking it when the menu is closed.    */   private _subscribeToMenuOpen() {     const exitCondition = merge(this.items.changes, this.destroyed);     this.items.changes       .pipe(         startWith(this.items),         mergeMap((list: QueryList<CdkMenuItem>) =>           list             .filter(item => item.hasMenu)             .map(item => item.getMenuTrigger()!.opened.pipe(mapTo(item), takeUntil(exitCondition))),         ),         mergeAll(),         switchMap((item: CdkMenuItem) => {           this.triggerItem = item;           return item.getMenuTrigger()!.closed;         }),         takeUntil(this.destroyed),       )       .subscribe(() => (this.triggerItem = undefined));   }    /** Subscribe to the MenuStack close events. */   private _subscribeToMenuStackClosed() {     this.menuStack.closed       .pipe(takeUntil(this.destroyed))       .subscribe(({item, focusParentTrigger}) => this.closeOpenMenu(item, {focusParentTrigger}));   }    /** Subscribe to the MenuStack hasFocus events. */   private _subscribeToMenuStackHasFocus() {     if (this.isInline) {       this.menuStack.hasFocus.pipe(takeUntil(this.destroyed)).subscribe(hasFocus => {         this._menuStackHasFocus = hasFocus;       });     }   }    /**    * Set the PointerFocusTracker and ensure that when mouse focus changes the key manager is updated    * with the latest menu item under mouse focus.    */   private _setUpPointerTracker() {     if (this.menuAim) {       this.ngZone.runOutsideAngular(() => {         this.pointerTracker = new PointerFocusTracker(this.items);       });       this.menuAim.initialize(this, this.pointerTracker!);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AfterContentInit, Directive, EventEmitter, inject, OnDestroy, Output} from '@angular/core'; import {ESCAPE, hasModifierKey, LEFT_ARROW, RIGHT_ARROW, TAB} from '@angular/cdk/keycodes'; import {takeUntil} from 'rxjs/operators'; import {CdkMenuGroup} from './menu-group'; import {CDK_MENU} from './menu-interface'; import {FocusNext, PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER} from './menu-stack'; import {MENU_TRIGGER} from './menu-trigger-base'; import {CdkMenuBase} from './menu-base';  /**  * Directive which configures the element as a Menu which should contain child elements marked as  * CdkMenuItem or CdkMenuGroup. Sets the appropriate role and aria-attributes for a menu and  * contains accessible keyboard and mouse handling logic.  *  * It also acts as a RadioGroup for elements marked with role `menuitemradio`.  */ @Directive({   selector: '[cdkMenu]',   exportAs: 'cdkMenu',   standalone: true,   host: {     'role': 'menu',     'class': 'cdk-menu',     '[class.cdk-menu-inline]': 'isInline',     '(keydown)': '_handleKeyEvent($event)',   },   providers: [     {provide: CdkMenuGroup, useExisting: CdkMenu},     {provide: CDK_MENU, useExisting: CdkMenu},     PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER('vertical'),   ], }) export class CdkMenu extends CdkMenuBase implements AfterContentInit, OnDestroy {   private _parentTrigger = inject(MENU_TRIGGER, {optional: true});    /** Event emitted when the menu is closed. */   @Output() readonly closed: EventEmitter<void> = new EventEmitter();    /** The direction items in the menu flow. */   override readonly orientation = 'vertical';    /** Whether the menu is displayed inline (i.e. always present vs a conditional popup that the user triggers with a trigger element). */   override readonly isInline = !this._parentTrigger;    constructor() {     super();     this.destroyed.subscribe(this.closed);     this._parentTrigger?.registerChildMenu(this);   }    override ngAfterContentInit() {     super.ngAfterContentInit();     this._subscribeToMenuStackEmptied();   }    override ngOnDestroy() {     super.ngOnDestroy();     this.closed.complete();   }    /**    * Handle keyboard events for the Menu.    * @param event The keyboard event to be handled.    */   _handleKeyEvent(event: KeyboardEvent) {     const keyManager = this.keyManager;     switch (event.keyCode) {       case LEFT_ARROW:       case RIGHT_ARROW:         if (!hasModifierKey(event)) {           event.preventDefault();           keyManager.setFocusOrigin('keyboard');           keyManager.onKeydown(event);         }         break;        case ESCAPE:         if (!hasModifierKey(event)) {           event.preventDefault();           this.menuStack.close(this, {             focusNextOnEmpty: FocusNext.currentItem,             focusParentTrigger: true,           });         }         break;        case TAB:         if (!hasModifierKey(event, 'altKey', 'metaKey', 'ctrlKey')) {           this.menuStack.closeAll({focusParentTrigger: true});         }         break;        default:         keyManager.onKeydown(event);     }   }    /**    * Set focus the either the current, previous or next item based on the FocusNext event.    * @param focusNext The element to focus.    */   private _toggleMenuFocus(focusNext: FocusNext | undefined) {     const keyManager = this.keyManager;     switch (focusNext) {       case FocusNext.nextItem:         keyManager.setFocusOrigin('keyboard');         keyManager.setNextItemActive();         break;        case FocusNext.previousItem:         keyManager.setFocusOrigin('keyboard');         keyManager.setPreviousItemActive();         break;        case FocusNext.currentItem:         if (keyManager.activeItem) {           keyManager.setFocusOrigin('keyboard');           keyManager.setActiveItem(keyManager.activeItem);         }         break;     }   }    /** Subscribe to the MenuStack emptied events. */   private _subscribeToMenuStackEmptied() {     this.menuStack.emptied       .pipe(takeUntil(this.destroyed))       .subscribe(event => this._toggleMenuFocus(event));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AfterContentInit, Directive} from '@angular/core'; import {   DOWN_ARROW,   ESCAPE,   hasModifierKey,   LEFT_ARROW,   RIGHT_ARROW,   TAB,   UP_ARROW, } from '@angular/cdk/keycodes'; import {takeUntil} from 'rxjs/operators'; import {CdkMenuGroup} from './menu-group'; import {CDK_MENU} from './menu-interface'; import {FocusNext, MENU_STACK, MenuStack} from './menu-stack'; import {CdkMenuBase} from './menu-base';  /**  * Directive applied to an element which configures it as a MenuBar by setting the appropriate  * role, aria attributes, and accessible keyboard and mouse handling logic. The component that  * this directive is applied to should contain components marked with CdkMenuItem.  *  */ @Directive({   selector: '[cdkMenuBar]',   exportAs: 'cdkMenuBar',   standalone: true,   host: {     'role': 'menubar',     'class': 'cdk-menu-bar',     '(keydown)': '_handleKeyEvent($event)',   },   providers: [     {provide: CdkMenuGroup, useExisting: CdkMenuBar},     {provide: CDK_MENU, useExisting: CdkMenuBar},     {provide: MENU_STACK, useFactory: () => MenuStack.inline('horizontal')},   ], }) export class CdkMenuBar extends CdkMenuBase implements AfterContentInit {   /** The direction items in the menu flow. */   override readonly orientation = 'horizontal';    /** Whether the menu is displayed inline (i.e. always present vs a conditional popup that the user triggers with a trigger element). */   override readonly isInline = true;    override ngAfterContentInit() {     super.ngAfterContentInit();     this._subscribeToMenuStackEmptied();   }    /**    * Handle keyboard events for the Menu.    * @param event The keyboard event to be handled.    */   _handleKeyEvent(event: KeyboardEvent) {     const keyManager = this.keyManager;     switch (event.keyCode) {       case UP_ARROW:       case DOWN_ARROW:       case LEFT_ARROW:       case RIGHT_ARROW:         if (!hasModifierKey(event)) {           const horizontalArrows = event.keyCode === LEFT_ARROW || event.keyCode === RIGHT_ARROW;           // For a horizontal menu if the left/right keys were clicked, or a vertical menu if the           // up/down keys were clicked: if the current menu is open, close it then focus and open the           // next  menu.           if (horizontalArrows) {             event.preventDefault();              const prevIsOpen = keyManager.activeItem?.isMenuOpen();             keyManager.activeItem?.getMenuTrigger()?.close();              keyManager.setFocusOrigin('keyboard');             keyManager.onKeydown(event);             if (prevIsOpen) {               keyManager.activeItem?.getMenuTrigger()?.open();             }           }         }         break;        case ESCAPE:         if (!hasModifierKey(event)) {           event.preventDefault();           keyManager.activeItem?.getMenuTrigger()?.close();         }         break;        case TAB:         if (!hasModifierKey(event, 'altKey', 'metaKey', 'ctrlKey')) {           keyManager.activeItem?.getMenuTrigger()?.close();         }         break;        default:         keyManager.onKeydown(event);     }   }    /**    * Set focus to either the current, previous or next item based on the FocusNext event, then    * open the previous or next item.    * @param focusNext The element to focus.    */   private _toggleOpenMenu(focusNext: FocusNext | undefined) {     const keyManager = this.keyManager;     switch (focusNext) {       case FocusNext.nextItem:         keyManager.setFocusOrigin('keyboard');         keyManager.setNextItemActive();         keyManager.activeItem?.getMenuTrigger()?.open();         break;        case FocusNext.previousItem:         keyManager.setFocusOrigin('keyboard');         keyManager.setPreviousItemActive();         keyManager.activeItem?.getMenuTrigger()?.open();         break;        case FocusNext.currentItem:         if (keyManager.activeItem) {           keyManager.setFocusOrigin('keyboard');           keyManager.setActiveItem(keyManager.activeItem);         }         break;     }   }    /** Subscribe to the MenuStack emptied events. */   private _subscribeToMenuStackEmptied() {     this.menuStack?.emptied       .pipe(takeUntil(this.destroyed))       .subscribe(event => this._toggleOpenMenu(event));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {Directive, Input} from '@angular/core'; import {CdkMenuItem} from './menu-item';  /** Base class providing checked state for selectable MenuItems. */ @Directive({   host: {     '[attr.aria-checked]': '!!checked',     '[attr.aria-disabled]': 'disabled || null',   }, }) export abstract class CdkMenuItemSelectable extends CdkMenuItem {   /** Whether the element is checked */   @Input('cdkMenuItemChecked')   get checked(): boolean {     return this._checked;   }   set checked(value: BooleanInput) {     this._checked = coerceBooleanProperty(value);   }   private _checked = false;    /** Whether the item should close the menu if triggered by the spacebar. */   protected override closeOnSpacebarTrigger = false; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {UniqueSelectionDispatcher} from '@angular/cdk/collections'; import {Directive, inject, OnDestroy} from '@angular/core'; import {CdkMenuItemSelectable} from './menu-item-selectable'; import {CdkMenuItem} from './menu-item';  /** Counter used to set a unique id and name for a selectable item */ let nextId = 0;  /**  * A directive providing behavior for the \"menuitemradio\" ARIA role, which behaves similarly to  * a conventional radio-button. Any sibling `CdkMenuItemRadio` instances within the same `CdkMenu`  * or `CdkMenuGroup` comprise a radio group with unique selection enforced.  */ @Directive({   selector: '[cdkMenuItemRadio]',   exportAs: 'cdkMenuItemRadio',   standalone: true,   host: {     'role': 'menuitemradio',     '[class.cdk-menu-item-radio]': 'true',   },   providers: [     {provide: CdkMenuItemSelectable, useExisting: CdkMenuItemRadio},     {provide: CdkMenuItem, useExisting: CdkMenuItemSelectable},   ], }) export class CdkMenuItemRadio extends CdkMenuItemSelectable implements OnDestroy {   /** The unique selection dispatcher for this radio's `CdkMenuGroup`. */   private readonly _selectionDispatcher = inject(UniqueSelectionDispatcher);    /** An ID to identify this radio item to the `UniqueSelectionDispatcher`. */   private _id = `${nextId++}`;    /** Function to unregister the selection dispatcher */   private _removeDispatcherListener: () => void;    constructor() {     super();     this._registerDispatcherListener();   }    override ngOnDestroy() {     super.ngOnDestroy();      this._removeDispatcherListener();   }    /**    * Toggles the checked state of the radio-button.    * @param options Options the configure how the item is triggered    *   - keepOpen: specifies that the menu should be kept open after triggering the item.    */   override trigger(options?: {keepOpen: boolean}) {     super.trigger(options);      if (!this.disabled) {       this._selectionDispatcher.notify(this._id, '');     }   }    /** Configure the unique selection dispatcher listener in order to toggle the checked state  */   private _registerDispatcherListener() {     this._removeDispatcherListener = this._selectionDispatcher.listen((id: string) => {       this.checked = this._id === id;     });   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive} from '@angular/core'; import {CdkMenuItemSelectable} from './menu-item-selectable'; import {CdkMenuItem} from './menu-item';  /**  * A directive providing behavior for the \"menuitemcheckbox\" ARIA role, which behaves similarly to a  * conventional checkbox.  */ @Directive({   selector: '[cdkMenuItemCheckbox]',   exportAs: 'cdkMenuItemCheckbox',   standalone: true,   host: {     'role': 'menuitemcheckbox',     '[class.cdk-menu-item-checkbox]': 'true',   },   providers: [     {provide: CdkMenuItemSelectable, useExisting: CdkMenuItemCheckbox},     {provide: CdkMenuItem, useExisting: CdkMenuItemSelectable},   ], }) export class CdkMenuItemCheckbox extends CdkMenuItemSelectable {   /**    * Toggle the checked state of the checkbox.    * @param options Options the configure how the item is triggered    *   - keepOpen: specifies that the menu should be kept open after triggering the item.    */   override trigger(options?: {keepOpen: boolean}) {     super.trigger(options);      if (!this.disabled) {       this.checked = !this.checked;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, inject, Injectable, Input, OnDestroy} from '@angular/core'; import {Directionality} from '@angular/cdk/bidi'; import {   FlexibleConnectedPositionStrategy,   Overlay,   OverlayConfig,   STANDARD_DROPDOWN_BELOW_POSITIONS, } from '@angular/cdk/overlay'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {_getEventTarget} from '@angular/cdk/platform'; import {merge, partition} from 'rxjs'; import {skip, takeUntil} from 'rxjs/operators'; import {MENU_STACK, MenuStack} from './menu-stack'; import {CdkMenuTriggerBase, MENU_TRIGGER} from './menu-trigger-base';  /** The preferred menu positions for the context menu. */ const CONTEXT_MENU_POSITIONS = STANDARD_DROPDOWN_BELOW_POSITIONS.map(position => {   // In cases where the first menu item in the context menu is a trigger the submenu opens on a   // hover event. We offset the context menu 2px by default to prevent this from occurring.   const offsetX = position.overlayX === 'start' ? 2 : -2;   const offsetY = position.overlayY === 'top' ? 2 : -2;   return {...position, offsetX, offsetY}; });  /** Tracks the last open context menu trigger across the entire application. */ @Injectable({providedIn: 'root'}) export class ContextMenuTracker {   /** The last open context menu trigger. */   private static _openContextMenuTrigger?: CdkContextMenuTrigger;    /**    * Close the previous open context menu and set the given one as being open.    * @param trigger The trigger for the currently open Context Menu.    */   update(trigger: CdkContextMenuTrigger) {     if (ContextMenuTracker._openContextMenuTrigger !== trigger) {       ContextMenuTracker._openContextMenuTrigger?.close();       ContextMenuTracker._openContextMenuTrigger = trigger;     }   } }  /** The coordinates where the context menu should open. */ export type ContextMenuCoordinates = {x: number; y: number};  /**  * A directive that opens a menu when a user right-clicks within its host element.  * It is aware of nested context menus and will trigger only the lowest level non-disabled context menu.  */ @Directive({   selector: '[cdkContextMenuTriggerFor]',   exportAs: 'cdkContextMenuTriggerFor',   standalone: true,   host: {     '[attr.data-cdk-menu-stack-id]': 'null',     '(contextmenu)': '_openOnContextMenu($event)',   },   inputs: [     'menuTemplateRef: cdkContextMenuTriggerFor',     'menuPosition: cdkContextMenuPosition',     'menuData: cdkContextMenuTriggerData',   ],   outputs: ['opened: cdkContextMenuOpened', 'closed: cdkContextMenuClosed'],   providers: [     {provide: MENU_TRIGGER, useExisting: CdkContextMenuTrigger},     {provide: MENU_STACK, useClass: MenuStack},   ], }) export class CdkContextMenuTrigger extends CdkMenuTriggerBase implements OnDestroy {   /** The CDK overlay service. */   private readonly _overlay = inject(Overlay);    /** The directionality of the page. */   private readonly _directionality = inject(Directionality, {optional: true});    /** The app's context menu tracking registry */   private readonly _contextMenuTracker = inject(ContextMenuTracker);    /** Whether the context menu is disabled. */   @Input('cdkContextMenuDisabled')   get disabled(): boolean {     return this._disabled;   }   set disabled(value: BooleanInput) {     this._disabled = coerceBooleanProperty(value);   }   private _disabled = false;    constructor() {     super();     this._setMenuStackCloseListener();   }    /**    * Open the attached menu at the specified location.    * @param coordinates where to open the context menu    */   open(coordinates: ContextMenuCoordinates) {     this._open(coordinates, false);   }    /** Close the currently opened context menu. */   close() {     this.menuStack.closeAll();   }    /**    * Open the context menu and closes any previously open menus.    * @param event the mouse event which opens the context menu.    */   _openOnContextMenu(event: MouseEvent) {     if (!this.disabled) {       // Prevent the native context menu from opening because we're opening a custom one.       event.preventDefault();        // Stop event propagation to ensure that only the closest enabled context menu opens.       // Otherwise, any context menus attached to containing elements would *also* open,       // resulting in multiple stacked context menus being displayed.       event.stopPropagation();        this._contextMenuTracker.update(this);       this._open({x: event.clientX, y: event.clientY}, true);        // A context menu can be triggered via a mouse right click or a keyboard shortcut.       if (event.button === 2) {         this.childMenu?.focusFirstItem('mouse');       } else if (event.button === 0) {         this.childMenu?.focusFirstItem('keyboard');       } else {         this.childMenu?.focusFirstItem('program');       }     }   }    /**    * Get the configuration object used to create the overlay.    * @param coordinates the location to place the opened menu    */   private _getOverlayConfig(coordinates: ContextMenuCoordinates) {     return new OverlayConfig({       positionStrategy: this._getOverlayPositionStrategy(coordinates),       scrollStrategy: this._overlay.scrollStrategies.reposition(),       direction: this._directionality || undefined,     });   }    /**    * Get the position strategy for the overlay which specifies where to place the menu.    * @param coordinates the location to place the opened menu    */   private _getOverlayPositionStrategy(     coordinates: ContextMenuCoordinates,   ): FlexibleConnectedPositionStrategy {     return this._overlay       .position()       .flexibleConnectedTo(coordinates)       .withLockedPosition()       .withGrowAfterOpen()       .withPositions(this.menuPosition ?? CONTEXT_MENU_POSITIONS);   }    /** Subscribe to the menu stack close events and close this menu when requested. */   private _setMenuStackCloseListener() {     this.menuStack.closed.pipe(takeUntil(this.destroyed)).subscribe(({item}) => {       if (item === this.childMenu && this.isOpen()) {         this.closed.next();         this.overlayRef!.detach();       }     });   }    /**    * Subscribe to the overlays outside pointer events stream and handle closing out the stack if a    * click occurs outside the menus.    * @param ignoreFirstAuxClick Whether to ignore the first auxclick event outside the menu.    */   private _subscribeToOutsideClicks(ignoreFirstAuxClick: boolean) {     if (this.overlayRef) {       let outsideClicks = this.overlayRef.outsidePointerEvents();       // If the menu was triggered by the `contextmenu` event, skip the first `auxclick` event       // because it fires when the mouse is released on the same click that opened the menu.       if (ignoreFirstAuxClick) {         const [auxClicks, nonAuxClicks] = partition(outsideClicks, ({type}) => type === 'auxclick');         outsideClicks = merge(nonAuxClicks, auxClicks.pipe(skip(1)));       }       outsideClicks.pipe(takeUntil(this.stopOutsideClicksListener)).subscribe(event => {         if (!this.isElementInsideMenuStack(_getEventTarget(event)!)) {           this.menuStack.closeAll();         }       });     }   }    /**    * Open the attached menu at the specified location.    * @param coordinates where to open the context menu    * @param ignoreFirstOutsideAuxClick Whether to ignore the first auxclick outside the menu after opening.    */   private _open(coordinates: ContextMenuCoordinates, ignoreFirstOutsideAuxClick: boolean) {     if (this.disabled) {       return;     }     if (this.isOpen()) {       // since we're moving this menu we need to close any submenus first otherwise they end up       // disconnected from this one.       this.menuStack.closeSubMenuOf(this.childMenu!);        (         this.overlayRef!.getConfig().positionStrategy as FlexibleConnectedPositionStrategy       ).setOrigin(coordinates);       this.overlayRef!.updatePosition();     } else {       this.opened.next();        if (this.overlayRef) {         (           this.overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy         ).setOrigin(coordinates);         this.overlayRef.updatePosition();       } else {         this.overlayRef = this._overlay.create(this._getOverlayConfig(coordinates));       }        this.overlayRef.attach(this.getMenuContentPortal());       this._subscribeToOutsideClicks(ignoreFirstOutsideAuxClick);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core'; import {OverlayModule} from '@angular/cdk/overlay'; import {CdkMenu} from './menu'; import {CdkMenuBar} from './menu-bar'; import {CdkMenuItem} from './menu-item'; import {CdkMenuGroup} from './menu-group'; import {CdkMenuItemRadio} from './menu-item-radio'; import {CdkMenuItemCheckbox} from './menu-item-checkbox'; import {CdkMenuTrigger} from './menu-trigger'; import {CdkContextMenuTrigger} from './context-menu-trigger'; import {CdkTargetMenuAim} from './menu-aim';  const MENU_DIRECTIVES = [   CdkMenuBar,   CdkMenu,   CdkMenuItem,   CdkMenuItemRadio,   CdkMenuItemCheckbox,   CdkMenuTrigger,   CdkMenuGroup,   CdkContextMenuTrigger,   CdkTargetMenuAim, ];  /** Module that declares components and directives for the CDK menu. */ @NgModule({   imports: [OverlayModule, ...MENU_DIRECTIVES],   exports: MENU_DIRECTIVES, }) export class CdkMenuModule {} ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './menu-module'; export * from './menu-bar'; export * from './menu'; export * from './menu-base'; export * from './menu-item'; export * from './menu-item-checkbox'; export * from './menu-item-radio'; export * from './menu-trigger'; export * from './menu-group'; export * from './menu-item-selectable'; export * from './context-menu-trigger'; export * from './menu-trigger-base'; export * from './pointer-focus-tracker'; export * from './menu-stack'; export * from './menu-interface'; export * from './menu-aim'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["nextId"],"mappings":"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"}
-------------------- SECTION 223 --------------------
License

Everything in this repo is BSD style license unless otherwise specified.

Copyright (c) 2016 The Polymer Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------- SECTION 224 --------------------
License

Everything in this repo is BSD style license unless otherwise specified.

Copyright (c) 2019 The Polymer Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------- SECTION 225 --------------------
Everything in this repository is BSD style license unless otherwise specified.
-------------------- SECTION 226 --------------------
{"version":3,"sources":["clr-ui-dark.css","../../projects/angular/src/utils/_normalize.scss","dist/clr-ui/clr-ui-dark.css","
../../projects/angular/src/layout/grid/utilities/_align.scss","../../projects/angular/src/layout/grid/utilities/_clearfix.scss","../../projects/angular/src/layout/grid/utilities/_display.scss","../../projects/angular/src/layout/grid/utilities/_flex.scss","../../projects/angular/src/layout/grid/mixins/_breakpoint.scss","
../../projects/angular/src/layout/grid/utilities/_float.scss","../../projects/angular/src/layout/grid/utilities/_visibility.scss","../../projects/angular/src/layout/grid/grid/_grid.scss","../../projects/angular/src/layout/grid/mixins/_grid.scss","../../projects/angular/src/layout/grid/mixins/_grid-framework.scss","
../../projects/angular/src/layout/grid/_grid.scss","../../projects/angular/src/typography/_code.scss","../../projects/angular/src/utils/_mixins.scss","../../projects/angular/src/typography/_lists.scss","../../projects/angular/src/typography/_typography.scss","
../../projects/angular/src/utils/_reboot.clarity.scss","../../projects/angular/src/utils/_a11y.scss","../../projects/angular/src/image/_images.clarity.scss","../../projects/angular/src/popover/common/_popover.clarity.scss","../../projects/angular/src/utils/popover/_popover-popover.clarity.scss","
../../projects/angular/src/button/_buttons.clarity.scss","../../projects/angular/src/button/button-group/_button-group.clarity.scss","../../projects/angular/src/utils/_close.clarity.scss","../../projects/angular/src/emphasis/alert/_alert.clarity.scss","../../projects/angular/src/layout/_card.clarity.scss","
../../projects/angular/src/popover/dropdown/_dropdown.clarity.scss","../../projects/angular/src/popover/dropdown/_menu-mixins.clarity.scss","../../projects/angular/src/emphasis/_badges.clarity.scss","../../projects/angular/src/emphasis/_labels.clarity.scss","../../projects/angular/src/layout/_login.clarity.scss","
../../projects/angular/src/layout/main-container/_layout.clarity.scss","../../projects/angular/src/modal/_modal.clarity.scss","../../projects/angular/src/layout/nav/_header.clarity.scss","../../projects/angular/src/layout/nav/_links.clarity.scss","../../projects/angular/src/layout/nav/_nav.clarity.scss","
../../projects/angular/src/layout/nav/_subnav.clarity.scss","../../projects/angular/src/layout/vertical-nav/_vertical-nav.clarity.scss","../../projects/angular/src/layout/nav/_responsive-nav.clarity.scss","../../projects/angular/src/progress/progress-bars/_progress-bars.clarity.scss","../../projects/angular/src/progress/progress-bars/utils/_mixins.clarity.scss","
../../projects/angular/src/progress/spinner/_spinner.clarity.scss","../../projects/angular/src/data/_tables.clarity.scss","../../projects/angular/src/popover/tooltip/_tooltips.clarity.scss","../../projects/angular/src/forms/styles/_containers.clarity.scss","../../projects/angular/src/forms/styles/_mixins.forms.scss","
../../projects/angular/src/forms/styles/_form.clarity.scss","../../projects/angular/src/forms/styles/_checkbox.clarity.scss","../../projects/angular/src/forms/styles/_file.clarity.scss","../../projects/angular/src/forms/styles/_input.clarity.scss","../../projects/angular/src/forms/styles/_input-group.clarity.scss","
../../projects/angular/src/forms/styles/_radio.clarity.scss","../../projects/angular/src/forms/styles/_select.clarity.scss","../../projects/angular/src/forms/styles/_textarea.clarity.scss","../../projects/angular/src/forms/styles/_toggles.clarity.scss","../../projects/angular/src/forms/styles/_range.clarity.scss","
../../projects/angular/src/forms/styles/_datalist.clarity.scss","../../projects/angular/src/forms/datepicker/_datepicker.clarity.scss","../../projects/angular/src/forms/combobox/_combobox.clarity.scss","../../projects/angular/src/data/stack-view/_stack-view.clarity.scss","../../projects/angular/src/data/tree-view/_tree-view.clarity.scss","
../../projects/angular/src/data/datagrid/_datagrid.clarity.scss","../../projects/angular/src/utils/animations/_animations.clarity.scss","../../projects/angular/src/layout/tabs/_tabs.clarity.scss","../../projects/angular/src/wizard/_wizard.clarity.scss","../../projects/angular/src/popover/signpost/_signposts.clarity.scss","
../../projects/angular/src/accordion/_accordion.clarity.scss","../../projects/angular/src/timeline/_timeline.clarity.scss","../../projects/angular/src/utils/_theme.dark.icons.clarity.scss","../../projects/angular/src/typography/_font-metropolis.scss"],"names":[],"

-------------------- SECTION 227 --------------------
{"version":3,"file":"platform-browser.mjs","sources":["../../../../../../packages/platform-browser/src/browser/generic_browser_adapter.ts","../../../../../../packages/platform-browser/src/browser/browser_adapter.ts","../../../../../../packages/platform-browser/src/browser/server-transition.ts","../../../../../../packages/platform-browser/src/browser/testability.ts","../../../../../../packages/platform-browser/src/browser/xhr.ts","../../../../../../packages/platform-browser/src/dom/events/event_manager.ts","../../../../../../packages/platform-browser/src/dom/shared_styles_host.ts","../../../../../../packages/platform-browser/src/dom/dom_renderer.ts","../../../../../../packages/platform-browser/src/dom/events/dom_events.ts","../../../../../../packages/platform-browser/src/dom/events/key_events.ts","../../../../../../packages/platform-browser/src/browser.ts","../../../../../../packages/platform-browser/src/browser/meta.ts","../../../../../../packages/platform-browser/src/browser/title.ts","../../../../../../packages/platform-browser/src/dom/util.ts","../../../../../../packages/platform-browser/src/browser/tools/browser.ts","../../../../../../packages/platform-browser/src/browser/tools/common_tools.ts","../../../../../../packages/platform-browser/src/browser/tools/tools.ts","../../../../../../packages/platform-browser/src/browser/transfer_state.ts","../../../../../../packages/platform-browser/src/dom/debug/by.ts","../../../../../../packages/platform-browser/src/dom/events/hammer_gestures.ts","../../../../../../packages/platform-browser/src/security/dom_sanitization_service.ts","../../../../../../packages/platform-browser/src/version.ts","../../../../../../packages/platform-browser/public_api.ts","../../../../../../packages/platform-browser/index.ts","../../../../../../packages/platform-browser/platform-browser.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵDomAdapter as DomAdapter} from '@angular/common';    /**  * Provides DOM operations in any browser environment.  *  * @security Tread carefully! Interacting with the DOM directly is dangerous and  * can introduce XSS risks.  */ export abstract class GenericBrowserDomAdapter extends DomAdapter {   readonly supportsDOMEvents: boolean = true; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵparseCookieValue as parseCookieValue, ɵsetRootDomAdapter as setRootDomAdapter} from '@angular/common';  import {GenericBrowserDomAdapter} from './generic_browser_adapter';  /**  * A `DomAdapter` powered by full browser DOM APIs.  *  * @security Tread carefully! Interacting with the DOM directly is dangerous and  * can introduce XSS risks.  */ /* tslint:disable:requireParameterType no-console */ export class BrowserDomAdapter extends GenericBrowserDomAdapter {   static makeCurrent() {     setRootDomAdapter(new BrowserDomAdapter());   }    onAndCancel(el: Node, evt: any, listener: any): Function {     el.addEventListener(evt, listener, false);     // Needed to follow Dart's subscription semantic, until fix of     // https://code.google.com/p/dart/issues/detail?id=17406     return () => {       el.removeEventListener(evt, listener, false);     };   }   dispatchEvent(el: Node, evt: any) {     el.dispatchEvent(evt);   }   remove(node: Node): void {     if (node.parentNode) {       node.parentNode.removeChild(node);     }   }   createElement(tagName: string, doc?: Document): HTMLElement {     doc = doc || this.getDefaultDocument();     return doc.createElement(tagName);   }   createHtmlDocument(): Document {     return document.implementation.createHTMLDocument('fakeTitle');   }   getDefaultDocument(): Document {     return document;   }    isElementNode(node: Node): boolean {     return node.nodeType === Node.ELEMENT_NODE;   }    isShadowRoot(node: any): boolean {     return node instanceof DocumentFragment;   }    /** @deprecated No longer being used in Ivy code. To be removed in version 14. */   getGlobalEventTarget(doc: Document, target: string): EventTarget|null {     if (target === 'window') {       return window;     }     if (target === 'document') {       return doc;     }     if (target === 'body') {       return doc.body;     }     return null;   }   getBaseHref(doc: Document): string|null {     const href = getBaseElementHref();     return href == null ? null : relativePath(href);   }   resetBaseElement(): void {     baseElement = null;   }   getUserAgent(): string {     return window.navigator.userAgent;   }   getCookie(name: string): string|null {     return parseCookieValue(document.cookie, name);   } }  let baseElement: HTMLElement|null = null; function getBaseElementHref(): string|null {   baseElement = baseElement || document.querySelector('base');   return baseElement ? baseElement.getAttribute('href') : null; }  // based on urlUtils.js in AngularJS 1 let urlParsingNode: HTMLAnchorElement|undefined; function relativePath(url: any): string {   urlParsingNode = urlParsingNode || document.createElement('a');   urlParsingNode.setAttribute('href', url);   const pathName = urlParsingNode.pathname;   return pathName.charAt(0) === '/' ? pathName : `/${pathName}`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT, ɵgetDOM as getDOM} from '@angular/common'; import {APP_INITIALIZER, ApplicationInitStatus, InjectionToken, Injector, StaticProvider} from '@angular/core';  /**  * An id that identifies a particular application being bootstrapped, that should  * match across the client/server boundary.  */ export const TRANSITION_ID = new InjectionToken('TRANSITION_ID');  export function appInitializerFactory(transitionId: string, document: any, injector: Injector) {   return () => {     // Wait for all application initializers to be completed before removing the styles set by     // the server.     injector.get(ApplicationInitStatus).donePromise.then(() => {       const dom = getDOM();       const styles: HTMLCollectionOf<HTMLStyleElement> =           document.querySelectorAll(`style[ng-transition=\"${transitionId}\"]`);       for (let i = 0; i < styles.length; i++) {         dom.remove(styles[i]);       }     });   }; }  export const SERVER_TRANSITION_PROVIDERS: StaticProvider[] = [   {     provide: APP_INITIALIZER,     useFactory: appInitializerFactory,     deps: [TRANSITION_ID, DOCUMENT, Injector],     multi: true   }, ]; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵgetDOM as getDOM} from '@angular/common'; import {GetTestability, Testability, TestabilityRegistry, ɵglobal as global} from '@angular/core';  export class BrowserGetTestability implements GetTestability {   addToWindow(registry: TestabilityRegistry): void {     global['getAngularTestability'] = (elem: any, findInAncestors: boolean = true) => {       const testability = registry.findTestabilityInTree(elem, findInAncestors);       if (testability == null) {         throw new Error('Could not find testability for element.');       }       return testability;     };      global['getAllAngularTestabilities'] = () => registry.getAllTestabilities();      global['getAllAngularRootElements'] = () => registry.getAllRootElements();      const whenAllStable = (callback: any /** TODO #9100 */) => {       const testabilities = global['getAllAngularTestabilities']();       let count = testabilities.length;       let didWork = false;       const decrement = function(didWork_: any /** TODO #9100 */) {         didWork = didWork || didWork_;         count--;         if (count == 0) {           callback(didWork);         }       };       testabilities.forEach(function(testability: any /** TODO #9100 */) {         testability.whenStable(decrement);       });     };      if (!global['frameworkStabilizers']) {       global['frameworkStabilizers'] = [];     }     global['frameworkStabilizers'].push(whenAllStable);   }    findTestabilityInTree(registry: TestabilityRegistry, elem: any, findInAncestors: boolean):       Testability|null {     if (elem == null) {       return null;     }     const t = registry.getTestability(elem);     if (t != null) {       return t;     } else if (!findInAncestors) {       return null;     }     if (getDOM().isShadowRoot(elem)) {       return this.findTestabilityInTree(registry, (<any>elem).host, true);     }     return this.findTestabilityInTree(registry, elem.parentElement, true);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {XhrFactory} from '@angular/common'; import {Injectable} from '@angular/core';  /**  * A factory for `HttpXhrBackend` that uses the `XMLHttpRequest` browser API.  */ @Injectable() export class BrowserXhr implements XhrFactory {   build(): XMLHttpRequest {     return new XMLHttpRequest();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵgetDOM as getDOM} from '@angular/common'; import {Inject, Injectable, InjectionToken, NgZone} from '@angular/core';  /**  * The injection token for the event-manager plug-in service.  *  * @publicApi  */ export const EVENT_MANAGER_PLUGINS =     new InjectionToken<EventManagerPlugin[]>('EventManagerPlugins');  /**  * An injectable service that provides event management for Angular  * through a browser plug-in.  *  * @publicApi  */ @Injectable() export class EventManager {   private _plugins: EventManagerPlugin[];   private _eventNameToPlugin = new Map<string, EventManagerPlugin>();    /**    * Initializes an instance of the event-manager service.    */   constructor(@Inject(EVENT_MANAGER_PLUGINS) plugins: EventManagerPlugin[], private _zone: NgZone) {     plugins.forEach(p => p.manager = this);     this._plugins = plugins.slice().reverse();   }    /**    * Registers a handler for a specific element and event.    *    * @param element The HTML element to receive event notifications.    * @param eventName The name of the event to listen for.    * @param handler A function to call when the notification occurs. Receives the    * event object as an argument.    * @returns  A callback function that can be used to remove the handler.    */   addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {     const plugin = this._findPluginFor(eventName);     return plugin.addEventListener(element, eventName, handler);   }    /**    * Registers a global handler for an event in a target view.    *    * @param target A target for global event notifications. One of \"window\", \"document\", or \"body\".    * @param eventName The name of the event to listen for.    * @param handler A function to call when the notification occurs. Receives the    * event object as an argument.    * @returns A callback function that can be used to remove the handler.    * @deprecated No longer being used in Ivy code. To be removed in version 14.    */   addGlobalEventListener(target: string, eventName: string, handler: Function): Function {     const plugin = this._findPluginFor(eventName);     return plugin.addGlobalEventListener(target, eventName, handler);   }    /**    * Retrieves the compilation zone in which event listeners are registered.    */   getZone(): NgZone {     return this._zone;   }    /** @internal */   _findPluginFor(eventName: string): EventManagerPlugin {     const plugin = this._eventNameToPlugin.get(eventName);     if (plugin) {       return plugin;     }      const plugins = this._plugins;     for (let i = 0; i < plugins.length; i++) {       const plugin = plugins[i];       if (plugin.supports(eventName)) {         this._eventNameToPlugin.set(eventName, plugin);         return plugin;       }     }     throw new Error(`No event manager plugin found for event ${eventName}`);   } }  export abstract class EventManagerPlugin {   constructor(private _doc: any) {}    // TODO(issue/24571): remove '!'.   manager!: EventManager;    abstract supports(eventName: string): boolean;    abstract addEventListener(element: HTMLElement, eventName: string, handler: Function): Function;    addGlobalEventListener(element: string, eventName: string, handler: Function): Function {     const target: HTMLElement = getDOM().getGlobalEventTarget(this._doc, element);     if (!target) {       throw new Error(`Unsupported event target ${target} for event ${eventName}`);     }     return this.addEventListener(target, eventName, handler);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, OnDestroy} from '@angular/core';  @Injectable() export class SharedStylesHost implements OnDestroy {   private readonly usageCount = new Map<string /** Style string */, number /** Usage count */>();    addStyles(styles: string[]): void {     for (const style of styles) {       const usageCount = this.changeUsageCount(style, 1);        if (usageCount === 1) {         this.onStyleAdded(style);       }     }   }    removeStyles(styles: string[]): void {     for (const style of styles) {       const usageCount = this.changeUsageCount(style, -1);        if (usageCount === 0) {         this.onStyleRemoved(style);       }     }   }    onStyleRemoved(style: string): void {}    onStyleAdded(style: string): void {}    getAllStyles(): IterableIterator<string> {     return this.usageCount.keys();   }    private changeUsageCount(style: string, delta: number): number {     const map = this.usageCount;     let usage = map.get(style) ?? 0;     usage += delta;      if (usage > 0) {       map.set(style, usage);     } else {       map.delete(style);     }      return usage;   }    ngOnDestroy(): void {     for (const style of this.getAllStyles()) {       this.onStyleRemoved(style);     }      this.usageCount.clear();   } }  @Injectable() export class DomSharedStylesHost extends SharedStylesHost implements OnDestroy {   // Maps all registered host nodes to a list of style nodes that have been added to the host node.   private readonly styleRef = new Map<string, HTMLStyleElement[]>();   private hostNodes = new Set<Node>();    constructor(@Inject(DOCUMENT) private readonly doc: any) {     super();     this.resetHostNodes();   }    override onStyleAdded(style: string): void {     for (const host of this.hostNodes) {       this.addStyleToHost(host, style);     }   }    override onStyleRemoved(style: string): void {     const styleRef = this.styleRef;     const styleElements = styleRef.get(style);     styleElements?.forEach(e => e.remove());     styleRef.delete(style);   }    override ngOnDestroy(): void {     super.ngOnDestroy();     this.styleRef.clear();     this.resetHostNodes();   }    addHost(hostNode: Node): void {     this.hostNodes.add(hostNode);      for (const style of this.getAllStyles()) {       this.addStyleToHost(hostNode, style);     }   }    removeHost(hostNode: Node): void {     this.hostNodes.delete(hostNode);   }    private addStyleToHost(host: Node, style: string): void {     const styleEl = this.doc.createElement('style');     styleEl.textContent = style;     host.appendChild(styleEl);      const styleElRef = this.styleRef.get(style);     if (styleElRef) {       styleElRef.push(styleEl);     } else {       this.styleRef.set(style, [styleEl]);     }   }    private resetHostNodes(): void {     const hostNodes = this.hostNodes;     hostNodes.clear();     // Re-add the head element back since this is the default host.     hostNodes.add(this.doc.head);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {APP_ID, Inject, Injectable, InjectionToken, OnDestroy, Renderer2, RendererFactory2, RendererStyleFlags2, RendererType2, ViewEncapsulation} from '@angular/core';  import {EventManager} from './events/event_manager'; import {DomSharedStylesHost} from './shared_styles_host';  export const NAMESPACE_URIS: {[ns: string]: string} = {   'svg': 'http://www.w3.org/2000/svg',   'xhtml': 'http://www.w3.org/1999/xhtml',   'xlink': 'http://www.w3.org/1999/xlink',   'xml': 'http://www.w3.org/XML/1998/namespace',   'xmlns': 'http://www.w3.org/2000/xmlns/',   'math': 'http://www.w3.org/1998/MathML/', };  const COMPONENT_REGEX = /%COMP%/g; const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  export const COMPONENT_VARIABLE = '%COMP%'; export const HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`; export const CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`;  /**  * The default value for the `REMOVE_STYLES_ON_COMPONENT_DESTROY` DI token.  */ const REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT = false;  /**  * A [DI token](guide/glossary#di-token \"DI token definition\") that indicates whether styles  * of destroyed components should be removed from DOM.  *  * By default, the value is set to `false`. This will be changed in the next major version.  * @publicApi  */ export const REMOVE_STYLES_ON_COMPONENT_DESTROY =     new InjectionToken<boolean>('RemoveStylesOnCompDestory', {       providedIn: 'root',       factory: () => REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT,     });  export function shimContentAttribute(componentShortId: string): string {   return CONTENT_ATTR.replace(COMPONENT_REGEX, componentShortId); }  export function shimHostAttribute(componentShortId: string): string {   return HOST_ATTR.replace(COMPONENT_REGEX, componentShortId); }  export function flattenStyles(compId: string, styles: Array<string|string[]>): string[] {   // Cannot use `Infinity` as depth as `infinity` is not a number literal in TypeScript.   // See: https://github.com/microsoft/TypeScript/issues/32277   return styles.flat(100).map(s => s.replace(COMPONENT_REGEX, compId)); }  function decoratePreventDefault(eventHandler: Function): Function {   // `DebugNode.triggerEventHandler` needs to know if the listener was created with   // decoratePreventDefault or is a listener added outside the Angular context so it can handle the   // two differently. In the first case, the special '__ngUnwrap__' token is passed to the unwrap   // the listener (see below).   return (event: any) => {     // Ivy uses '__ngUnwrap__' as a special token that allows us to unwrap the function     // so that it can be invoked programmatically by `DebugNode.triggerEventHandler`. The debug_node     // can inspect the listener toString contents for the existence of this special token. Because     // the token is a string literal, it is ensured to not be modified by compiled code.     if (event === '__ngUnwrap__') {       return eventHandler;     }      const allowDefaultBehavior = eventHandler(event);     if (allowDefaultBehavior === false) {       // TODO(tbosch): move preventDefault into event plugins...       event.preventDefault();       event.returnValue = false;     }      return undefined;   }; }  @Injectable() export class DomRendererFactory2 implements RendererFactory2, OnDestroy {   private rendererByCompId =       new Map<string, EmulatedEncapsulationDomRenderer2|NoneEncapsulationDomRenderer>();   private defaultRenderer: Renderer2;    constructor(       private eventManager: EventManager, private sharedStylesHost: DomSharedStylesHost,       @Inject(APP_ID) private appId: string,       @Inject(REMOVE_STYLES_ON_COMPONENT_DESTROY) private removeStylesOnCompDestory: boolean) {     this.defaultRenderer = new DefaultDomRenderer2(eventManager);   }    createRenderer(element: any, type: RendererType2|null): Renderer2 {     if (!element || !type) {       return this.defaultRenderer;     }      const renderer = this.getOrCreateRenderer(element, type);      // Renderers have different logic due to different encapsulation behaviours.     // Ex: for emulated, an attribute is added to the element.     if (renderer instanceof EmulatedEncapsulationDomRenderer2) {       renderer.applyToHost(element);     } else if (renderer instanceof NoneEncapsulationDomRenderer) {       renderer.applyStyles();     }      return renderer;   }    private getOrCreateRenderer(element: any, type: RendererType2): Renderer2 {     const rendererByCompId = this.rendererByCompId;     let renderer = rendererByCompId.get(type.id);      if (!renderer) {       const eventManager = this.eventManager;       const sharedStylesHost = this.sharedStylesHost;       const removeStylesOnCompDestory = this.removeStylesOnCompDestory;        switch (type.encapsulation) {         case ViewEncapsulation.Emulated:           renderer = new EmulatedEncapsulationDomRenderer2(               eventManager, sharedStylesHost, type, this.appId, removeStylesOnCompDestory);           break;         case ViewEncapsulation.ShadowDom:           return new ShadowDomRenderer(eventManager, sharedStylesHost, element, type);         default:           renderer = new NoneEncapsulationDomRenderer(               eventManager, sharedStylesHost, type, removeStylesOnCompDestory);           break;       }        renderer.onDestroy = () => rendererByCompId.delete(type.id);       rendererByCompId.set(type.id, renderer);     }      return renderer;   }    ngOnDestroy() {     this.rendererByCompId.clear();   }    begin() {}   end() {} }  class DefaultDomRenderer2 implements Renderer2 {   data: {[key: string]: any} = Object.create(null);    constructor(private eventManager: EventManager) {}    destroy(): void {}    destroyNode = null;    createElement(name: string, namespace?: string): any {     if (namespace) {       // TODO: `|| namespace` was added in       // https://github.com/angular/angular/commit/2b9cc8503d48173492c29f5a271b61126104fbdb to       // support how Ivy passed around the namespace URI rather than short name at the time. It did       // not, however extend the support to other parts of the system (setAttribute, setAttribute,       // and the ServerRenderer). We should decide what exactly the semantics for dealing with       // namespaces should be and make it consistent.       // Related issues:       // https://github.com/angular/angular/issues/44028       // https://github.com/angular/angular/issues/44883       return document.createElementNS(NAMESPACE_URIS[namespace] || namespace, name);     }      return document.createElement(name);   }    createComment(value: string): any {     return document.createComment(value);   }    createText(value: string): any {     return document.createTextNode(value);   }    appendChild(parent: any, newChild: any): void {     const targetParent = isTemplateNode(parent) ? parent.content : parent;     targetParent.appendChild(newChild);   }    insertBefore(parent: any, newChild: any, refChild: any): void {     if (parent) {       const targetParent = isTemplateNode(parent) ? parent.content : parent;       targetParent.insertBefore(newChild, refChild);     }   }    removeChild(parent: any, oldChild: any): void {     if (parent) {       parent.removeChild(oldChild);     }   }    selectRootElement(selectorOrNode: string|any, preserveContent?: boolean): any {     let el: any = typeof selectorOrNode === 'string' ? document.querySelector(selectorOrNode) :                                                        selectorOrNode;     if (!el) {       throw new Error(`The selector \"${selectorOrNode}\" did not match any elements`);     }     if (!preserveContent) {       el.textContent = '';     }     return el;   }    parentNode(node: any): any {     return node.parentNode;   }    nextSibling(node: any): any {     return node.nextSibling;   }    setAttribute(el: any, name: string, value: string, namespace?: string): void {     if (namespace) {       name = namespace + ':' + name;       const namespaceUri = NAMESPACE_URIS[namespace];       if (namespaceUri) {         el.setAttributeNS(namespaceUri, name, value);       } else {         el.setAttribute(name, value);       }     } else {       el.setAttribute(name, value);     }   }    removeAttribute(el: any, name: string, namespace?: string): void {     if (namespace) {       const namespaceUri = NAMESPACE_URIS[namespace];       if (namespaceUri) {         el.removeAttributeNS(namespaceUri, name);       } else {         el.removeAttribute(`${namespace}:${name}`);       }     } else {       el.removeAttribute(name);     }   }    addClass(el: any, name: string): void {     el.classList.add(name);   }    removeClass(el: any, name: string): void {     el.classList.remove(name);   }    setStyle(el: any, style: string, value: any, flags: RendererStyleFlags2): void {     if (flags & (RendererStyleFlags2.DashCase | RendererStyleFlags2.Important)) {       el.style.setProperty(style, value, flags & RendererStyleFlags2.Important ? 'important' : '');     } else {       el.style[style] = value;     }   }    removeStyle(el: any, style: string, flags: RendererStyleFlags2): void {     if (flags & RendererStyleFlags2.DashCase) {       el.style.removeProperty(style);     } else {       // IE requires '' instead of null       // see https://github.com/angular/angular/issues/7916       el.style[style] = '';     }   }    setProperty(el: any, name: string, value: any): void {     NG_DEV_MODE && checkNoSyntheticProp(name, 'property');     el[name] = value;   }    setValue(node: any, value: string): void {     node.nodeValue = value;   }    listen(target: 'window'|'document'|'body'|any, event: string, callback: (event: any) => boolean):       () => void {     NG_DEV_MODE && checkNoSyntheticProp(event, 'listener');     if (typeof target === 'string') {       return <() => void>this.eventManager.addGlobalEventListener(           target, event, decoratePreventDefault(callback));     }     return <() => void>this.eventManager.addEventListener(                target, event, decoratePreventDefault(callback)) as () => void;   } }  const AT_CHARCODE = (() => '@'.charCodeAt(0))(); function checkNoSyntheticProp(name: string, nameKind: string) {   if (name.charCodeAt(0) === AT_CHARCODE) {     throw new Error(`Unexpected synthetic ${nameKind} ${name} found. Please make sure that:   - Either \\`BrowserAnimationsModule\\` or \\`NoopAnimationsModule\\` are imported in your application.   - There is corresponding configuration for the animation named \\`${         name}\\` defined in the \\`animations\\` field of the \\`@Component\\` decorator (see https://angular.io/api/core/Component#animations).`);   } }   function isTemplateNode(node: any): node is HTMLTemplateElement {   return node.tagName === 'TEMPLATE' && node.content !== undefined; }  class ShadowDomRenderer extends DefaultDomRenderer2 {   private shadowRoot: any;    constructor(       eventManager: EventManager, private sharedStylesHost: DomSharedStylesHost,       private hostEl: any, component: RendererType2) {     super(eventManager);     this.shadowRoot = (hostEl as any).attachShadow({mode: 'open'});      this.sharedStylesHost.addHost(this.shadowRoot);     const styles = flattenStyles(component.id, component.styles);      for (const style of styles) {       const styleEl = document.createElement('style');       styleEl.textContent = style;       this.shadowRoot.appendChild(styleEl);     }   }    private nodeOrShadowRoot(node: any): any {     return node === this.hostEl ? this.shadowRoot : node;   }    override appendChild(parent: any, newChild: any): void {     return super.appendChild(this.nodeOrShadowRoot(parent), newChild);   }   override insertBefore(parent: any, newChild: any, refChild: any): void {     return super.insertBefore(this.nodeOrShadowRoot(parent), newChild, refChild);   }   override removeChild(parent: any, oldChild: any): void {     return super.removeChild(this.nodeOrShadowRoot(parent), oldChild);   }   override parentNode(node: any): any {     return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(node)));   }    override destroy() {     this.sharedStylesHost.removeHost(this.shadowRoot);   } }  class NoneEncapsulationDomRenderer extends DefaultDomRenderer2 {   private readonly styles: string[];   private rendererUsageCount = 0;   onDestroy: VoidFunction|undefined;    constructor(       eventManager: EventManager,       private readonly sharedStylesHost: DomSharedStylesHost,       component: RendererType2,       private removeStylesOnCompDestory: boolean,       compId = component.id,   ) {     super(eventManager);     this.styles = flattenStyles(compId, component.styles);   }    applyStyles(): void {     this.sharedStylesHost.addStyles(this.styles);     this.rendererUsageCount++;   }    override destroy(): void {     if (!this.removeStylesOnCompDestory) {       return;     }      this.sharedStylesHost.removeStyles(this.styles);     this.rendererUsageCount--;     if (this.rendererUsageCount === 0) {       this.onDestroy?.();     }   } }  class EmulatedEncapsulationDomRenderer2 extends NoneEncapsulationDomRenderer {   private contentAttr: string;   private hostAttr: string;    constructor(       eventManager: EventManager, sharedStylesHost: DomSharedStylesHost, component: RendererType2,       appId: string, removeStylesOnCompDestory: boolean) {     const compId = appId + '-' + component.id;     super(eventManager, sharedStylesHost, component, removeStylesOnCompDestory, compId);     this.contentAttr = shimContentAttribute(compId);     this.hostAttr = shimHostAttribute(compId);   }    applyToHost(element: any): void {     this.applyStyles();     this.setAttribute(element, this.hostAttr, '');   }    override createElement(parent: any, name: string): Element {     const el = super.createElement(parent, name);     super.setAttribute(el, this.contentAttr, '');     return el;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable} from '@angular/core';  import {EventManagerPlugin} from './event_manager';  @Injectable() export class DomEventsPlugin extends EventManagerPlugin {   constructor(@Inject(DOCUMENT) doc: any) {     super(doc);   }    // This plugin should come last in the list of plugins, because it accepts all   // events.   override supports(eventName: string): boolean {     return true;   }    override addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {     element.addEventListener(eventName, handler as EventListener, false);     return () => this.removeEventListener(element, eventName, handler as EventListener);   }    removeEventListener(target: any, eventName: string, callback: Function): void {     return target.removeEventListener(eventName, callback as EventListener);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT, ɵgetDOM as getDOM} from '@angular/common'; import {Inject, Injectable, NgZone} from '@angular/core';  import {EventManagerPlugin} from './event_manager';  /**  * Defines supported modifiers for key events.  */ const MODIFIER_KEYS = ['alt', 'control', 'meta', 'shift'];  // The following values are here for cross-browser compatibility and to match the W3C standard // cf https://www.w3.org/TR/DOM-Level-3-Events-key/ const _keyMap: {[k: string]: string} = {   '\\b': 'Backspace',   '\ ': 'Tab',   '\\x7F': 'Delete',   '\\x1B': 'Escape',   'Del': 'Delete',   'Esc': 'Escape',   'Left': 'ArrowLeft',   'Right': 'ArrowRight',   'Up': 'ArrowUp',   'Down': 'ArrowDown',   'Menu': 'ContextMenu',   'Scroll': 'ScrollLock',   'Win': 'OS' };  /**  * Retrieves modifiers from key-event objects.  */ const MODIFIER_KEY_GETTERS: {[key: string]: (event: KeyboardEvent) => boolean} = {   'alt': (event: KeyboardEvent) => event.altKey,   'control': (event: KeyboardEvent) => event.ctrlKey,   'meta': (event: KeyboardEvent) => event.metaKey,   'shift': (event: KeyboardEvent) => event.shiftKey };  /**  * @publicApi  * A browser plug-in that provides support for handling of key events in Angular.  */ @Injectable() export class KeyEventsPlugin extends EventManagerPlugin {   /**    * Initializes an instance of the browser plug-in.    * @param doc The document in which key events will be detected.    */   constructor(@Inject(DOCUMENT) doc: any) {     super(doc);   }    /**    * Reports whether a named key event is supported.    * @param eventName The event name to query.    * @return True if the named key event is supported.    */   override supports(eventName: string): boolean {     return KeyEventsPlugin.parseEventName(eventName) != null;   }    /**    * Registers a handler for a specific element and key event.    * @param element The HTML element to receive event notifications.    * @param eventName The name of the key event to listen for.    * @param handler A function to call when the notification occurs. Receives the    * event object as an argument.    * @returns The key event that was registered.    */   override addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {     const parsedEvent = KeyEventsPlugin.parseEventName(eventName)!;      const outsideHandler =         KeyEventsPlugin.eventCallback(parsedEvent['fullKey'], handler, this.manager.getZone());      return this.manager.getZone().runOutsideAngular(() => {       return getDOM().onAndCancel(element, parsedEvent['domEventName'], outsideHandler);     });   }    /**    * Parses the user provided full keyboard event definition and normalizes it for    * later internal use. It ensures the string is all lowercase, converts special    * characters to a standard spelling, and orders all the values consistently.    *    * @param eventName The name of the key event to listen for.    * @returns an object with the full, normalized string, and the dom event name    * or null in the case when the event doesn't match a keyboard event.    */   static parseEventName(eventName: string): {fullKey: string, domEventName: string}|null {     const parts: string[] = eventName.toLowerCase().split('.');      const domEventName = parts.shift();     if ((parts.length === 0) || !(domEventName === 'keydown' || domEventName === 'keyup')) {       return null;     }      const key = KeyEventsPlugin._normalizeKey(parts.pop()!);      let fullKey = '';     let codeIX = parts.indexOf('code');     if (codeIX > -1) {       parts.splice(codeIX, 1);       fullKey = 'code.';     }     MODIFIER_KEYS.forEach(modifierName => {       const index: number = parts.indexOf(modifierName);       if (index > -1) {         parts.splice(index, 1);         fullKey += modifierName + '.';       }     });     fullKey += key;      if (parts.length != 0 || key.length === 0) {       // returning null instead of throwing to let another plugin process the event       return null;     }      // NOTE: Please don't rewrite this as so, as it will break JSCompiler property renaming.     //       The code must remain in the `result['domEventName']` form.     // return {domEventName, fullKey};     const result: {fullKey: string, domEventName: string} = {} as any;     result['domEventName'] = domEventName;     result['fullKey'] = fullKey;     return result;   }    /**    * Determines whether the actual keys pressed match the configured key code string.    * The `fullKeyCode` event is normalized in the `parseEventName` method when the    * event is attached to the DOM during the `addEventListener` call. This is unseen    * by the end user and is normalized for internal consistency and parsing.    *    * @param event The keyboard event.    * @param fullKeyCode The normalized user defined expected key event string    * @returns boolean.    */   static matchEventFullKeyCode(event: KeyboardEvent, fullKeyCode: string): boolean {     let keycode = _keyMap[event.key] || event.key;     let key = '';     if (fullKeyCode.indexOf('code.') > -1) {       keycode = event.code;       key = 'code.';     }     // the keycode could be unidentified so we have to check here     if (keycode == null || !keycode) return false;     keycode = keycode.toLowerCase();     if (keycode === ' ') {       keycode = 'space';  // for readability     } else if (keycode === '.') {       keycode = 'dot';  // because '.' is used as a separator in event names     }     MODIFIER_KEYS.forEach(modifierName => {       if (modifierName !== keycode) {         const modifierGetter = MODIFIER_KEY_GETTERS[modifierName];         if (modifierGetter(event)) {           key += modifierName + '.';         }       }     });     key += keycode;     return key === fullKeyCode;   }    /**    * Configures a handler callback for a key event.    * @param fullKey The event name that combines all simultaneous keystrokes.    * @param handler The function that responds to the key event.    * @param zone The zone in which the event occurred.    * @returns A callback function.    */   static eventCallback(fullKey: string, handler: Function, zone: NgZone): Function {     return (event: KeyboardEvent) => {       if (KeyEventsPlugin.matchEventFullKeyCode(event, fullKey)) {         zone.runGuarded(() => handler(event));       }     };   }    /** @internal */   static _normalizeKey(keyName: string): string {     // TODO: switch to a Map if the mapping grows too much     switch (keyName) {       case 'esc':         return 'escape';       default:         return keyName;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {CommonModule, DOCUMENT, XhrFactory, ɵPLATFORM_BROWSER_ID as PLATFORM_BROWSER_ID} from '@angular/common'; import {APP_ID, ApplicationModule, ApplicationRef, createPlatformFactory, EnvironmentProviders, ErrorHandler, Inject, InjectionToken, ModuleWithProviders, NgModule, NgZone, Optional, PLATFORM_ID, PLATFORM_INITIALIZER, platformCore, PlatformRef, Provider, RendererFactory2, SkipSelf, StaticProvider, Testability, TestabilityRegistry, Type, ɵINJECTOR_SCOPE as INJECTOR_SCOPE, ɵinternalCreateApplication as internalCreateApplication, ɵsetDocument, ɵTESTABILITY as TESTABILITY, ɵTESTABILITY_GETTER as TESTABILITY_GETTER} from '@angular/core';  import {BrowserDomAdapter} from './browser/browser_adapter'; import {SERVER_TRANSITION_PROVIDERS, TRANSITION_ID} from './browser/server-transition'; import {BrowserGetTestability} from './browser/testability'; import {BrowserXhr} from './browser/xhr'; import {DomRendererFactory2, REMOVE_STYLES_ON_COMPONENT_DESTROY} from './dom/dom_renderer'; import {DomEventsPlugin} from './dom/events/dom_events'; import {EVENT_MANAGER_PLUGINS, EventManager} from './dom/events/event_manager'; import {KeyEventsPlugin} from './dom/events/key_events'; import {DomSharedStylesHost, SharedStylesHost} from './dom/shared_styles_host';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  /**  * Set of config options available during the application bootstrap operation.  *  * @publicApi  */ export interface ApplicationConfig {   /**    * List of providers that should be available to the root component and all its children.    */   providers: Array<Provider|EnvironmentProviders>; }  /**  * Bootstraps an instance of an Angular application and renders a standalone component as the  * application's root component. More information about standalone components can be found in [this  * guide](guide/standalone-components).  *  * @usageNotes  * The root component passed into this function *must* be a standalone one (should have the  * `standalone: true` flag in the `@Component` decorator config).  *  * ```typescript  * @Component({  *   standalone: true,  *   template: 'Hello world!'  * })  * class RootComponent {}  *  * const appRef: ApplicationRef = await bootstrapApplication(RootComponent);  * ```  *  * You can add the list of providers that should be available in the application injector by  * specifying the `providers` field in an object passed as the second argument:  *  * ```typescript  * await bootstrapApplication(RootComponent, {  *   providers: [  *     {provide: BACKEND_URL, useValue: 'https://yourdomain.com/api'}  *   ]  * });  * ```  *  * The `importProvidersFrom` helper method can be used to collect all providers from any  * existing NgModule (and transitively from all NgModules that it imports):  *  * ```typescript  * await bootstrapApplication(RootComponent, {  *   providers: [  *     importProvidersFrom(SomeNgModule)  *   ]  * });  * ```  *  * Note: the `bootstrapApplication` method doesn't include [Testability](api/core/Testability) by  * default. You can add [Testability](api/core/Testability) by getting the list of necessary  * providers using `provideProtractorTestingSupport()` function and adding them into the `providers`  * array, for example:  *  * ```typescript  * import {provideProtractorTestingSupport} from '@angular/platform-browser';  *  * await bootstrapApplication(RootComponent, {providers: [provideProtractorTestingSupport()]});  * ```  *  * @param rootComponent A reference to a standalone component that should be rendered.  * @param options Extra configuration for the bootstrap operation, see `ApplicationConfig` for  *     additional info.  * @returns A promise that returns an `ApplicationRef` instance once resolved.  *  * @publicApi  */ export function bootstrapApplication(     rootComponent: Type<unknown>, options?: ApplicationConfig): Promise<ApplicationRef> {   return internalCreateApplication({rootComponent, ...createProvidersConfig(options)}); }  /**  * Create an instance of an Angular application without bootstrapping any components. This is useful  * for the situation where one wants to decouple application environment creation (a platform and  * associated injectors) from rendering components on a screen. Components can be subsequently  * bootstrapped on the returned `ApplicationRef`.  *  * @param options Extra configuration for the application environment, see `ApplicationConfig` for  *     additional info.  * @returns A promise that returns an `ApplicationRef` instance once resolved.  *  * @publicApi  */ export function createApplication(options?: ApplicationConfig) {   return internalCreateApplication(createProvidersConfig(options)); }  function createProvidersConfig(options?: ApplicationConfig) {   return {     appProviders: [       ...BROWSER_MODULE_PROVIDERS,       ...(options?.providers ?? []),     ],     platformProviders: INTERNAL_BROWSER_PLATFORM_PROVIDERS   }; }  /**  * Returns a set of providers required to setup [Testability](api/core/Testability) for an  * application bootstrapped using the `bootstrapApplication` function. The set of providers is  * needed to support testing an application with Protractor (which relies on the Testability APIs  * to be present).  *  * @returns An array of providers required to setup Testability for an application and make it  *     available for testing using Protractor.  *  * @publicApi  */ export function provideProtractorTestingSupport(): Provider[] {   // Return a copy to prevent changes to the original array in case any in-place   // alterations are performed to the `provideProtractorTestingSupport` call results in app code.   return [...TESTABILITY_PROVIDERS]; }  export function initDomAdapter() {   BrowserDomAdapter.makeCurrent(); }  export function errorHandler(): ErrorHandler {   return new ErrorHandler(); }  export function _document(): any {   // Tell ivy about the global document   ɵsetDocument(document);   return document; }  export const INTERNAL_BROWSER_PLATFORM_PROVIDERS: StaticProvider[] = [   {provide: PLATFORM_ID, useValue: PLATFORM_BROWSER_ID},   {provide: PLATFORM_INITIALIZER, useValue: initDomAdapter, multi: true},   {provide: DOCUMENT, useFactory: _document, deps: []}, ];  /**  * A factory function that returns a `PlatformRef` instance associated with browser service  * providers.  *  * @publicApi  */ export const platformBrowser: (extraProviders?: StaticProvider[]) => PlatformRef =     createPlatformFactory(platformCore, 'browser', INTERNAL_BROWSER_PLATFORM_PROVIDERS);  /**  * Internal marker to signal whether providers from the `BrowserModule` are already present in DI.  * This is needed to avoid loading `BrowserModule` providers twice. We can't rely on the  * `BrowserModule` presence itself, since the standalone-based bootstrap just imports  * `BrowserModule` providers without referencing the module itself.  */ const BROWSER_MODULE_PROVIDERS_MARKER =     new InjectionToken(NG_DEV_MODE ? 'BrowserModule Providers Marker' : '');  const TESTABILITY_PROVIDERS = [   {     provide: TESTABILITY_GETTER,     useClass: BrowserGetTestability,     deps: [],   },   {     provide: TESTABILITY,     useClass: Testability,     deps: [NgZone, TestabilityRegistry, TESTABILITY_GETTER]   },   {     provide: Testability,  // Also provide as `Testability` for backwards-compatibility.     useClass: Testability,     deps: [NgZone, TestabilityRegistry, TESTABILITY_GETTER]   } ];  const BROWSER_MODULE_PROVIDERS: Provider[] = [   {provide: INJECTOR_SCOPE, useValue: 'root'},   {provide: ErrorHandler, useFactory: errorHandler, deps: []}, {     provide: EVENT_MANAGER_PLUGINS,     useClass: DomEventsPlugin,     multi: true,     deps: [DOCUMENT, NgZone, PLATFORM_ID]   },   {provide: EVENT_MANAGER_PLUGINS, useClass: KeyEventsPlugin, multi: true, deps: [DOCUMENT]}, {     provide: DomRendererFactory2,     useClass: DomRendererFactory2,     deps: [EventManager, DomSharedStylesHost, APP_ID, REMOVE_STYLES_ON_COMPONENT_DESTROY]   },   {provide: RendererFactory2, useExisting: DomRendererFactory2},   {provide: SharedStylesHost, useExisting: DomSharedStylesHost},   {provide: DomSharedStylesHost, useClass: DomSharedStylesHost, deps: [DOCUMENT]},   {provide: EventManager, useClass: EventManager, deps: [EVENT_MANAGER_PLUGINS, NgZone]},   {provide: XhrFactory, useClass: BrowserXhr, deps: []},   NG_DEV_MODE ? {provide: BROWSER_MODULE_PROVIDERS_MARKER, useValue: true} : [] ];  /**  * Exports required infrastructure for all Angular apps.  * Included by default in all Angular apps created with the CLI  * `new` command.  * Re-exports `CommonModule` and `ApplicationModule`, making their  * exports and providers available to all apps.  *  * @publicApi  */ @NgModule({   providers: [     ...BROWSER_MODULE_PROVIDERS,  //     ...TESTABILITY_PROVIDERS   ],   exports: [CommonModule, ApplicationModule], }) export class BrowserModule {   constructor(@Optional() @SkipSelf() @Inject(BROWSER_MODULE_PROVIDERS_MARKER)               providersAlreadyPresent: boolean|null) {     if (NG_DEV_MODE && providersAlreadyPresent) {       throw new Error(           `Providers from the \\`BrowserModule\\` have already been loaded. If you need access ` +           `to common directives such as NgIf and NgFor, import the \\`CommonModule\\` instead.`);     }   }    /**    * Configures a browser-based app to transition from a server-rendered app, if    * one is present on the page.    *    * @param params An object containing an identifier for the app to transition.    * The ID must match between the client and server versions of the app.    * @returns The reconfigured `BrowserModule` to import into the app's root `AppModule`.    */   static withServerTransition(params: {appId: string}): ModuleWithProviders<BrowserModule> {     return {       ngModule: BrowserModule,       providers: [         {provide: APP_ID, useValue: params.appId},         {provide: TRANSITION_ID, useExisting: APP_ID},         SERVER_TRANSITION_PROVIDERS,       ],     };   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT, ɵDomAdapter as DomAdapter, ɵgetDOM as getDOM} from '@angular/common'; import {Inject, Injectable, ɵɵinject} from '@angular/core';  /**  * Represents the attributes of an HTML `<meta>` element. The element itself is  * represented by the internal `HTMLMetaElement`.  *  * @see [HTML meta tag](https://developer.mozilla.org/docs/Web/HTML/Element/meta)  * @see `Meta`  *  * @publicApi  */ export type MetaDefinition = {   charset?: string;   content?: string;   httpEquiv?: string;   id?: string;   itemprop?: string;   name?: string;   property?: string;   scheme?: string;   url?: string; }&{   // TODO(IgorMinar): this type looks wrong   [prop: string]: string; };  /**  * Factory to create a `Meta` service instance for the current DOM document.  */ export function createMeta() {   return new Meta(ɵɵinject(DOCUMENT)); }  /**  * A service for managing HTML `<meta>` tags.  *  * Properties of the `MetaDefinition` object match the attributes of the  * HTML `<meta>` tag. These tags define document metadata that is important for  * things like configuring a Content Security Policy, defining browser compatibility  * and security settings, setting HTTP Headers, defining rich content for social sharing,  * and Search Engine Optimization (SEO).  *  * To identify specific `<meta>` tags in a document, use an attribute selection  * string in the format `\"tag_attribute='value string'\"`.  * For example, an `attrSelector` value of `\"name='description'\"` matches a tag  * whose `name` attribute has the value `\"description\"`.  * Selectors are used with the `querySelector()` Document method,  * in the format `meta[{attrSelector}]`.  *  * @see [HTML meta tag](https://developer.mozilla.org/docs/Web/HTML/Element/meta)  * @see [Document.querySelector()](https://developer.mozilla.org/docs/Web/API/Document/querySelector)  *  *  * @publicApi  */ @Injectable({providedIn: 'root', useFactory: createMeta, deps: []}) export class Meta {   private _dom: DomAdapter;   constructor(@Inject(DOCUMENT) private _doc: any) {     this._dom = getDOM();   }   /**    * Retrieves or creates a specific `<meta>` tag element in the current HTML document.    * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute    * values in the provided tag definition, and verifies that all other attribute values are equal.    * If an existing element is found, it is returned and is not modified in any way.    * @param tag The definition of a `<meta>` element to match or create.    * @param forceCreation True to create a new element without checking whether one already exists.    * @returns The existing element with the same attributes and values if found,    * the new element if no match is found, or `null` if the tag parameter is not defined.    */   addTag(tag: MetaDefinition, forceCreation: boolean = false): HTMLMetaElement|null {     if (!tag) return null;     return this._getOrCreateElement(tag, forceCreation);   }    /**    * Retrieves or creates a set of `<meta>` tag elements in the current HTML document.    * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute    * values in the provided tag definition, and verifies that all other attribute values are equal.    * @param tags An array of tag definitions to match or create.    * @param forceCreation True to create new elements without checking whether they already exist.    * @returns The matching elements if found, or the new elements.    */   addTags(tags: MetaDefinition[], forceCreation: boolean = false): HTMLMetaElement[] {     if (!tags) return [];     return tags.reduce((result: HTMLMetaElement[], tag: MetaDefinition) => {       if (tag) {         result.push(this._getOrCreateElement(tag, forceCreation));       }       return result;     }, []);   }    /**    * Retrieves a `<meta>` tag element in the current HTML document.    * @param attrSelector The tag attribute and value to match against, in the format    * `\"tag_attribute='value string'\"`.    * @returns The matching element, if any.    */   getTag(attrSelector: string): HTMLMetaElement|null {     if (!attrSelector) return null;     return this._doc.querySelector(`meta[${attrSelector}]`) || null;   }    /**    * Retrieves a set of `<meta>` tag elements in the current HTML document.    * @param attrSelector The tag attribute and value to match against, in the format    * `\"tag_attribute='value string'\"`.    * @returns The matching elements, if any.    */   getTags(attrSelector: string): HTMLMetaElement[] {     if (!attrSelector) return [];     const list /*NodeList*/ = this._doc.querySelectorAll(`meta[${attrSelector}]`);     return list ? [].slice.call(list) : [];   }    /**    * Modifies an existing `<meta>` tag element in the current HTML document.    * @param tag The tag description with which to replace the existing tag content.    * @param selector A tag attribute and value to match against, to identify    * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.    * If not supplied, matches a tag with the same `name` or `property` attribute value as the    * replacement tag.    * @return The modified element.    */   updateTag(tag: MetaDefinition, selector?: string): HTMLMetaElement|null {     if (!tag) return null;     selector = selector || this._parseSelector(tag);     const meta: HTMLMetaElement = this.getTag(selector)!;     if (meta) {       return this._setMetaElementAttributes(tag, meta);     }     return this._getOrCreateElement(tag, true);   }    /**    * Removes an existing `<meta>` tag element from the current HTML document.    * @param attrSelector A tag attribute and value to match against, to identify    * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.    */   removeTag(attrSelector: string): void {     this.removeTagElement(this.getTag(attrSelector)!);   }    /**    * Removes an existing `<meta>` tag element from the current HTML document.    * @param meta The tag definition to match against to identify an existing tag.    */   removeTagElement(meta: HTMLMetaElement): void {     if (meta) {       this._dom.remove(meta);     }   }    private _getOrCreateElement(meta: MetaDefinition, forceCreation: boolean = false):       HTMLMetaElement {     if (!forceCreation) {       const selector: string = this._parseSelector(meta);       // It's allowed to have multiple elements with the same name so it's not enough to       // just check that element with the same name already present on the page. We also need to       // check if element has tag attributes       const elem = this.getTags(selector).filter(elem => this._containsAttributes(meta, elem))[0];       if (elem !== undefined) return elem;     }     const element: HTMLMetaElement = this._dom.createElement('meta') as HTMLMetaElement;     this._setMetaElementAttributes(meta, element);     const head = this._doc.getElementsByTagName('head')[0];     head.appendChild(element);     return element;   }    private _setMetaElementAttributes(tag: MetaDefinition, el: HTMLMetaElement): HTMLMetaElement {     Object.keys(tag).forEach(         (prop: string) => el.setAttribute(this._getMetaKeyMap(prop), tag[prop]));     return el;   }    private _parseSelector(tag: MetaDefinition): string {     const attr: string = tag.name ? 'name' : 'property';     return `${attr}=\"${tag[attr]}\"`;   }    private _containsAttributes(tag: MetaDefinition, elem: HTMLMetaElement): boolean {     return Object.keys(tag).every(         (key: string) => elem.getAttribute(this._getMetaKeyMap(key)) === tag[key]);   }    private _getMetaKeyMap(prop: string): string {     return META_KEYS_MAP[prop] || prop;   } }  /**  * Mapping for MetaDefinition properties with their correct meta attribute names  */ const META_KEYS_MAP: {[prop: string]: string;} = {   httpEquiv: 'http-equiv' }; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT, ɵgetDOM as getDOM} from '@angular/common'; import {Inject, Injectable, ɵɵinject} from '@angular/core';   /**  * Factory to create Title service.  */ export function createTitle() {   return new Title(ɵɵinject(DOCUMENT)); }  /**  * A service that can be used to get and set the title of a current HTML document.  *  * Since an Angular application can't be bootstrapped on the entire HTML document (`<html>` tag)  * it is not possible to bind to the `text` property of the `HTMLTitleElement` elements  * (representing the `<title>` tag). Instead, this service can be used to set and get the current  * title value.  *  * @publicApi  */ @Injectable({providedIn: 'root', useFactory: createTitle, deps: []}) export class Title {   constructor(@Inject(DOCUMENT) private _doc: any) {}   /**    * Get the title of the current HTML document.    */   getTitle(): string {     return this._doc.title;   }    /**    * Set the title of the current HTML document.    * @param newTitle    */   setTitle(newTitle: string) {     this._doc.title = newTitle || '';   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵglobal as global} from '@angular/core';  const CAMEL_CASE_REGEXP = /([A-Z])/g; const DASH_CASE_REGEXP = /-([a-z])/g;   export function camelCaseToDashCase(input: string): string {   return input.replace(CAMEL_CASE_REGEXP, (...m: string[]) => '-' + m[1].toLowerCase()); }  export function dashCaseToCamelCase(input: string): string {   return input.replace(DASH_CASE_REGEXP, (...m: string[]) => m[1].toUpperCase()); }  /**  * Exports the value under a given `name` in the global property `ng`. For example `ng.probe` if  * `name` is `'probe'`.  * @param name Name under which it will be exported. Keep in mind this will be a property of the  * global `ng` object.  * @param value The value to export.  */ export function exportNgVar(name: string, value: any): void {   if (typeof COMPILED === 'undefined' || !COMPILED) {     // Note: we can't export `ng` when using closure enhanced optimization as:     // - closure declares globals itself for minified names, which sometimes clobber our `ng` global     // - we can't declare a closure extern as the namespace `ng` is already used within Google     //   for typings for angularJS (via `goog.provide('ng....')`).     const ng = global['ng'] = (global['ng'] as {[key: string]: any} | undefined) || {};     ng[name] = value;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  const win = typeof window !== 'undefined' && window || <any>{}; export {win as window}; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ApplicationRef, ComponentRef} from '@angular/core'; import {window} from './browser';  export class ChangeDetectionPerfRecord {   constructor(public msPerTick: number, public numTicks: number) {} }  /**  * Entry point for all Angular profiling-related debug tools. This object  * corresponds to the `ng.profiler` in the dev console.  */ export class AngularProfiler {   appRef: ApplicationRef;    constructor(ref: ComponentRef<any>) {     this.appRef = ref.injector.get(ApplicationRef);   }    // tslint:disable:no-console   /**    * Exercises change detection in a loop and then prints the average amount of    * time in milliseconds how long a single round of change detection takes for    * the current state of the UI. It runs a minimum of 5 rounds for a minimum    * of 500 milliseconds.    *    * Optionally, a user may pass a `config` parameter containing a map of    * options. Supported options are:    *    * `record` (boolean) - causes the profiler to record a CPU profile while    * it exercises the change detector. Example:    *    * ```    * ng.profiler.timeChangeDetection({record: true})    * ```    */   timeChangeDetection(config: any): ChangeDetectionPerfRecord {     const record = config && config['record'];     const profileName = 'Change Detection';     // Profiler is not available in Android browsers without dev tools opened     const isProfilerAvailable = window.console.profile != null;     if (record && isProfilerAvailable) {       window.console.profile(profileName);     }     const start = performanceNow();     let numTicks = 0;     while (numTicks < 5 || (performanceNow() - start) < 500) {       this.appRef.tick();       numTicks++;     }     const end = performanceNow();     if (record && isProfilerAvailable) {       window.console.profileEnd(profileName);     }     const msPerTick = (end - start) / numTicks;     window.console.log(`ran ${numTicks} change detection cycles`);     window.console.log(`${msPerTick.toFixed(2)} ms per check`);      return new ChangeDetectionPerfRecord(msPerTick, numTicks);   } }  function performanceNow() {   return window.performance && window.performance.now ? window.performance.now() :                                                         new Date().getTime(); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ComponentRef} from '@angular/core'; import {exportNgVar} from '../../dom/util'; import {AngularProfiler} from './common_tools';  const PROFILER_GLOBAL_NAME = 'profiler';  /**  * Enabled Angular debug tools that are accessible via your browser's  * developer console.  *  * Usage:  *  * 1. Open developer console (e.g. in Chrome Ctrl + Shift + j)  * 1. Type `ng.` (usually the console will show auto-complete suggestion)  * 1. Try the change detection profiler `ng.profiler.timeChangeDetection()`  *    then hit Enter.  *  * @publicApi  */ export function enableDebugTools<T>(ref: ComponentRef<T>): ComponentRef<T> {   exportNgVar(PROFILER_GLOBAL_NAME, new AngularProfiler(ref));   return ref; }  /**  * Disables Angular tools.  *  * @publicApi  */ export function disableDebugTools(): void {   exportNgVar(PROFILER_GLOBAL_NAME, null); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {APP_ID, inject, Injectable, NgModule} from '@angular/core';  export function escapeHtml(text: string): string {   const escapedText: {[k: string]: string} = {     '&': '&a;',     '\"': '&q;',     '\\'': '&s;',     '<': '&l;',     '>': '&g;',   };   return text.replace(/[&\"'<>]/g, s => escapedText[s]); }  export function unescapeHtml(text: string): string {   const unescapedText: {[k: string]: string} = {     '&a;': '&',     '&q;': '\"',     '&s;': '\\'',     '&l;': '<',     '&g;': '>',   };   return text.replace(/&[^;]+;/g, s => unescapedText[s]); }  /**  * A type-safe key to use with `TransferState`.  *  * Example:  *  * ```  * const COUNTER_KEY = makeStateKey<number>('counter');  * let value = 10;  *  * transferState.set(COUNTER_KEY, value);  * ```  *  * @publicApi  */ export type StateKey<T> = string&{   __not_a_string: never,   __value_type?: T, };  /**  * Create a `StateKey<T>` that can be used to store value of type T with `TransferState`.  *  * Example:  *  * ```  * const COUNTER_KEY = makeStateKey<number>('counter');  * let value = 10;  *  * transferState.set(COUNTER_KEY, value);  * ```  *  * @publicApi  */ export function makeStateKey<T = void>(key: string): StateKey<T> {   return key as StateKey<T>; }  /**  * A key value store that is transferred from the application on the server side to the application  * on the client side.  *  * The `TransferState` is available as an injectable token.  * On the client, just inject this token using DI and use it, it will be lazily initialized.  * On the server it's already included if `renderApplication` function is used. Otherwise, import  * the `ServerTransferStateModule` module to make the `TransferState` available.  *  * The values in the store are serialized/deserialized using JSON.stringify/JSON.parse. So only  * boolean, number, string, null and non-class objects will be serialized and deserialized in a  * non-lossy manner.  *  * @publicApi  */ @Injectable({   providedIn: 'root',   useFactory: () => {     const doc = inject(DOCUMENT);     const appId = inject(APP_ID);     const state = new TransferState();     state.store = retrieveTransferredState(doc, appId);     return state;   } }) export class TransferState {   private store: {[k: string]: unknown|undefined} = {};   private onSerializeCallbacks: {[k: string]: () => unknown | undefined} = {};    /**    * Get the value corresponding to a key. Return `defaultValue` if key is not found.    */   get<T>(key: StateKey<T>, defaultValue: T): T {     return this.store[key] !== undefined ? this.store[key] as T : defaultValue;   }    /**    * Set the value corresponding to a key.    */   set<T>(key: StateKey<T>, value: T): void {     this.store[key] = value;   }    /**    * Remove a key from the store.    */   remove<T>(key: StateKey<T>): void {     delete this.store[key];   }    /**    * Test whether a key exists in the store.    */   hasKey<T>(key: StateKey<T>) {     return this.store.hasOwnProperty(key);   }    /**    * Indicates whether the state is empty.    */   get isEmpty(): boolean {     return Object.keys(this.store).length === 0;   }    /**    * Register a callback to provide the value for a key when `toJson` is called.    */   onSerialize<T>(key: StateKey<T>, callback: () => T): void {     this.onSerializeCallbacks[key] = callback;   }    /**    * Serialize the current state of the store to JSON.    */   toJson(): string {     // Call the onSerialize callbacks and put those values into the store.     for (const key in this.onSerializeCallbacks) {       if (this.onSerializeCallbacks.hasOwnProperty(key)) {         try {           this.store[key] = this.onSerializeCallbacks[key]();         } catch (e) {           console.warn('Exception in onSerialize callback: ', e);         }       }     }     return JSON.stringify(this.store);   } }  export function retrieveTransferredState(doc: Document, appId: string) {   // Locate the script tag with the JSON data transferred from the server.   // The id of the script tag is set to the Angular appId + 'state'.   const script = doc.getElementById(appId + '-state');   let initialState = {};   if (script && script.textContent) {     try {       // Avoid using any here as it triggers lint errors in google3 (any is not allowed).       initialState = JSON.parse(unescapeHtml(script.textContent)) as {};     } catch (e) {       console.warn('Exception while restoring TransferState for app ' + appId, e);     }   }   return initialState; }  /**  * NgModule to install on the client side while using the `TransferState` to transfer state from  * server to client.  *  * @publicApi  * @deprecated no longer needed, you can inject the `TransferState` in an app without providing  *     this module.  */ @NgModule({}) export class BrowserTransferStateModule { } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵgetDOM as getDOM} from '@angular/common'; import {DebugElement, DebugNode, Predicate, Type} from '@angular/core';    /**  * Predicates for use with {@link DebugElement}'s query functions.  *  * @publicApi  */ export class By {   /**    * Match all nodes.    *    * @usageNotes    * ### Example    *    * {@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}    */   static all(): Predicate<DebugNode> {     return () => true;   }    /**    * Match elements by the given CSS selector.    *    * @usageNotes    * ### Example    *    * {@example platform-browser/dom/debug/ts/by/by.ts region='by_css'}    */   static css(selector: string): Predicate<DebugElement> {     return (debugElement) => {       return debugElement.nativeElement != null ?           elementMatches(debugElement.nativeElement, selector) :           false;     };   }    /**    * Match nodes that have the given directive present.    *    * @usageNotes    * ### Example    *    * {@example platform-browser/dom/debug/ts/by/by.ts region='by_directive'}    */   static directive(type: Type<any>): Predicate<DebugNode> {     return (debugNode) => debugNode.providerTokens!.indexOf(type) !== -1;   } }  function elementMatches(n: any, selector: string): boolean {   if (getDOM().isElementNode(n)) {     return n.matches && n.matches(selector) ||         n.msMatchesSelector && n.msMatchesSelector(selector) ||         n.webkitMatchesSelector && n.webkitMatchesSelector(selector);   }    return false; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, InjectionToken, NgModule, Optional, Provider, ɵConsole as Console} from '@angular/core';  import {EVENT_MANAGER_PLUGINS, EventManagerPlugin} from './event_manager';    /**  * Supported HammerJS recognizer event names.  */ const EVENT_NAMES = {   // pan   'pan': true,   'panstart': true,   'panmove': true,   'panend': true,   'pancancel': true,   'panleft': true,   'panright': true,   'panup': true,   'pandown': true,   // pinch   'pinch': true,   'pinchstart': true,   'pinchmove': true,   'pinchend': true,   'pinchcancel': true,   'pinchin': true,   'pinchout': true,   // press   'press': true,   'pressup': true,   // rotate   'rotate': true,   'rotatestart': true,   'rotatemove': true,   'rotateend': true,   'rotatecancel': true,   // swipe   'swipe': true,   'swipeleft': true,   'swiperight': true,   'swipeup': true,   'swipedown': true,   // tap   'tap': true,   'doubletap': true };  /**  * DI token for providing [HammerJS](https://hammerjs.github.io/) support to Angular.  * @see `HammerGestureConfig`  *  * @ngModule HammerModule  * @publicApi  */ export const HAMMER_GESTURE_CONFIG = new InjectionToken<HammerGestureConfig>('HammerGestureConfig');   /**  * Function that loads HammerJS, returning a promise that is resolved once HammerJs is loaded.  *  * @publicApi  */ export type HammerLoader = () => Promise<void>;  /**  * Injection token used to provide a {@link HammerLoader} to Angular.  *  * @publicApi  */ export const HAMMER_LOADER = new InjectionToken<HammerLoader>('HammerLoader');  export interface HammerInstance {   on(eventName: string, callback?: Function): void;   off(eventName: string, callback?: Function): void;   destroy?(): void; }  /**  * An injectable [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)  * for gesture recognition. Configures specific event recognition.  * @publicApi  */ @Injectable() export class HammerGestureConfig {   /**    * A set of supported event names for gestures to be used in Angular.    * Angular supports all built-in recognizers, as listed in    * [HammerJS documentation](https://hammerjs.github.io/).    */   events: string[] = [];    /**    * Maps gesture event names to a set of configuration options    * that specify overrides to the default values for specific properties.    *    * The key is a supported event name to be configured,    * and the options object contains a set of properties, with override values    * to be applied to the named recognizer event.    * For example, to disable recognition of the rotate event, specify    *  `{\"rotate\": {\"enable\": false}}`.    *    * Properties that are not present take the HammerJS default values.    * For information about which properties are supported for which events,    * and their allowed and default values, see    * [HammerJS documentation](https://hammerjs.github.io/).    *    */   overrides: {[key: string]: Object} = {};    /**    * Properties whose default values can be overridden for a given event.    * Different sets of properties apply to different events.    * For information about which properties are supported for which events,    * and their allowed and default values, see    * [HammerJS documentation](https://hammerjs.github.io/).    */   options?: {     cssProps?: any;     domEvents?: boolean;     enable?: boolean | ((manager: any) => boolean);     preset?: any[];     touchAction?: string;     recognizers?: any[];     inputClass?: any;     inputTarget?: EventTarget;   };    /**    * Creates a [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)    * and attaches it to a given HTML element.    * @param element The element that will recognize gestures.    * @returns A HammerJS event-manager object.    */   buildHammer(element: HTMLElement): HammerInstance {     const mc = new Hammer!(element, this.options);      mc.get('pinch').set({enable: true});     mc.get('rotate').set({enable: true});      for (const eventName in this.overrides) {       mc.get(eventName).set(this.overrides[eventName]);     }      return mc;   } }  /**  * Event plugin that adds Hammer support to an application.  *  * @ngModule HammerModule  */ @Injectable() export class HammerGesturesPlugin extends EventManagerPlugin {   private _loaderPromise: Promise<void>|null = null;    constructor(       @Inject(DOCUMENT) doc: any,       @Inject(HAMMER_GESTURE_CONFIG) private _config: HammerGestureConfig, private console: Console,       @Optional() @Inject(HAMMER_LOADER) private loader?: HammerLoader|null) {     super(doc);   }    override supports(eventName: string): boolean {     if (!EVENT_NAMES.hasOwnProperty(eventName.toLowerCase()) && !this.isCustomEvent(eventName)) {       return false;     }      if (!(window as any).Hammer && !this.loader) {       if (typeof ngDevMode === 'undefined' || ngDevMode) {         this.console.warn(             `The \"${eventName}\" event cannot be bound because Hammer.JS is not ` +             `loaded and no custom loader has been specified.`);       }       return false;     }      return true;   }    override addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {     const zone = this.manager.getZone();     eventName = eventName.toLowerCase();      // If Hammer is not present but a loader is specified, we defer adding the event listener     // until Hammer is loaded.     if (!(window as any).Hammer && this.loader) {       this._loaderPromise = this._loaderPromise || zone.runOutsideAngular(() => this.loader!());       // This `addEventListener` method returns a function to remove the added listener.       // Until Hammer is loaded, the returned function needs to *cancel* the registration rather       // than remove anything.       let cancelRegistration = false;       let deregister: Function = () => {         cancelRegistration = true;       };        zone.runOutsideAngular(           () => this._loaderPromise!                     .then(() => {                       // If Hammer isn't actually loaded when the custom loader resolves, give up.                       if (!(window as any).Hammer) {                         if (typeof ngDevMode === 'undefined' || ngDevMode) {                           this.console.warn(                               `The custom HAMMER_LOADER completed, but Hammer.JS is not present.`);                         }                         deregister = () => {};                         return;                       }                        if (!cancelRegistration) {                         // Now that Hammer is loaded and the listener is being loaded for real,                         // the deregistration function changes from canceling registration to                         // removal.                         deregister = this.addEventListener(element, eventName, handler);                       }                     })                     .catch(() => {                       if (typeof ngDevMode === 'undefined' || ngDevMode) {                         this.console.warn(                             `The \"${eventName}\" event cannot be bound because the custom ` +                             `Hammer.JS loader failed.`);                       }                       deregister = () => {};                     }));        // Return a function that *executes* `deregister` (and not `deregister` itself) so that we       // can change the behavior of `deregister` once the listener is added. Using a closure in       // this way allows us to avoid any additional data structures to track listener removal.       return () => {         deregister();       };     }      return zone.runOutsideAngular(() => {       // Creating the manager bind events, must be done outside of angular       const mc = this._config.buildHammer(element);       const callback = function(eventObj: HammerInput) {         zone.runGuarded(function() {           handler(eventObj);         });       };       mc.on(eventName, callback);       return () => {         mc.off(eventName, callback);         // destroy mc to prevent memory leak         if (typeof mc.destroy === 'function') {           mc.destroy();         }       };     });   }    isCustomEvent(eventName: string): boolean {     return this._config.events.indexOf(eventName) > -1;   } }  /**  * Adds support for HammerJS.  *  * Import this module at the root of your application so that Angular can work with  * HammerJS to detect gesture events.  *  * Note that applications still need to include the HammerJS script itself. This module  * simply sets up the coordination layer between HammerJS and Angular's EventManager.  *  * @publicApi  */ @NgModule({   providers: [     {       provide: EVENT_MANAGER_PLUGINS,       useClass: HammerGesturesPlugin,       multi: true,       deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, Console, [new Optional(), HAMMER_LOADER]]     },     {provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig, deps: []},   ] }) export class HammerModule { } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {forwardRef, Inject, Injectable, Injector, Sanitizer, SecurityContext, ɵ_sanitizeHtml as _sanitizeHtml, ɵ_sanitizeUrl as _sanitizeUrl, ɵallowSanitizationBypassAndThrow as allowSanitizationBypassOrThrow, ɵbypassSanitizationTrustHtml as bypassSanitizationTrustHtml, ɵbypassSanitizationTrustResourceUrl as bypassSanitizationTrustResourceUrl, ɵbypassSanitizationTrustScript as bypassSanitizationTrustScript, ɵbypassSanitizationTrustStyle as bypassSanitizationTrustStyle, ɵbypassSanitizationTrustUrl as bypassSanitizationTrustUrl, ɵBypassType as BypassType, ɵgetSanitizationBypassType as getSanitizationBypassType, ɵunwrapSafeValue as unwrapSafeValue, ɵXSS_SECURITY_URL as XSS_SECURITY_URL} from '@angular/core';  export {SecurityContext};    /**  * Marker interface for a value that's safe to use in a particular context.  *  * @publicApi  */ export interface SafeValue {}  /**  * Marker interface for a value that's safe to use as HTML.  *  * @publicApi  */ export interface SafeHtml extends SafeValue {}  /**  * Marker interface for a value that's safe to use as style (CSS).  *  * @publicApi  */ export interface SafeStyle extends SafeValue {}  /**  * Marker interface for a value that's safe to use as JavaScript.  *  * @publicApi  */ export interface SafeScript extends SafeValue {}  /**  * Marker interface for a value that's safe to use as a URL linking to a document.  *  * @publicApi  */ export interface SafeUrl extends SafeValue {}  /**  * Marker interface for a value that's safe to use as a URL to load executable code from.  *  * @publicApi  */ export interface SafeResourceUrl extends SafeValue {}  /**  * DomSanitizer helps preventing Cross Site Scripting Security bugs (XSS) by sanitizing  * values to be safe to use in the different DOM contexts.  *  * For example, when binding a URL in an `<a [href]=\"someValue\">` hyperlink, `someValue` will be  * sanitized so that an attacker cannot inject e.g. a `javascript:` URL that would execute code on  * the website.  *  * In specific situations, it might be necessary to disable sanitization, for example if the  * application genuinely needs to produce a `javascript:` style link with a dynamic value in it.  * Users can bypass security by constructing a value with one of the `bypassSecurityTrust...`  * methods, and then binding to that value from the template.  *  * These situations should be very rare, and extraordinary care must be taken to avoid creating a  * Cross Site Scripting (XSS) security bug!  *  * When using `bypassSecurityTrust...`, make sure to call the method as early as possible and as  * close as possible to the source of the value, to make it easy to verify no security bug is  * created by its use.  *  * It is not required (and not recommended) to bypass security if the value is safe, e.g. a URL that  * does not start with a suspicious protocol, or an HTML snippet that does not contain dangerous  * code. The sanitizer leaves safe values intact.  *  * @security Calling any of the `bypassSecurityTrust...` APIs disables Angular's built-in  * sanitization for the value passed in. Carefully check and audit all values and code paths going  * into this call. Make sure any user data is appropriately escaped for this security context.  * For more detail, see the [Security Guide](https://g.co/ng/security).  *  * @publicApi  */ @Injectable({providedIn: 'root', useExisting: forwardRef(() => DomSanitizerImpl)}) export abstract class DomSanitizer implements Sanitizer {   /**    * Gets a safe value from either a known safe value or a value with unknown safety.    *    * If the given value is already a `SafeValue`, this method returns the unwrapped value.    * If the security context is HTML and the given value is a plain string, this method    * sanitizes the string, removing any potentially unsafe content.    * For any other security context, this method throws an error if provided    * with a plain string.    */   abstract sanitize(context: SecurityContext, value: SafeValue|string|null): string|null;    /**    * Bypass security and trust the given value to be safe HTML. Only use this when the bound HTML    * is unsafe (e.g. contains `<script>` tags) and the code should be executed. The sanitizer will    * leave safe HTML intact, so in most situations this method should not be used.    *    * **WARNING:** calling this method with untrusted user data exposes your application to XSS    * security risks!    */   abstract bypassSecurityTrustHtml(value: string): SafeHtml;    /**    * Bypass security and trust the given value to be safe style value (CSS).    *    * **WARNING:** calling this method with untrusted user data exposes your application to XSS    * security risks!    */   abstract bypassSecurityTrustStyle(value: string): SafeStyle;    /**    * Bypass security and trust the given value to be safe JavaScript.    *    * **WARNING:** calling this method with untrusted user data exposes your application to XSS    * security risks!    */   abstract bypassSecurityTrustScript(value: string): SafeScript;    /**    * Bypass security and trust the given value to be a safe style URL, i.e. a value that can be used    * in hyperlinks or `<img src>`.    *    * **WARNING:** calling this method with untrusted user data exposes your application to XSS    * security risks!    */   abstract bypassSecurityTrustUrl(value: string): SafeUrl;    /**    * Bypass security and trust the given value to be a safe resource URL, i.e. a location that may    * be used to load executable code from, like `<script src>`, or `<iframe src>`.    *    * **WARNING:** calling this method with untrusted user data exposes your application to XSS    * security risks!    */   abstract bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl; }  export function domSanitizerImplFactory(injector: Injector) {   return new DomSanitizerImpl(injector.get(DOCUMENT)); }  @Injectable({providedIn: 'root', useFactory: domSanitizerImplFactory, deps: [Injector]}) export class DomSanitizerImpl extends DomSanitizer {   constructor(@Inject(DOCUMENT) private _doc: any) {     super();   }    override sanitize(ctx: SecurityContext, value: SafeValue|string|null): string|null {     if (value == null) return null;     switch (ctx) {       case SecurityContext.NONE:         return value as string;       case SecurityContext.HTML:         if (allowSanitizationBypassOrThrow(value, BypassType.Html)) {           return unwrapSafeValue(value);         }         return _sanitizeHtml(this._doc, String(value)).toString();       case SecurityContext.STYLE:         if (allowSanitizationBypassOrThrow(value, BypassType.Style)) {           return unwrapSafeValue(value);         }         return value as string;       case SecurityContext.SCRIPT:         if (allowSanitizationBypassOrThrow(value, BypassType.Script)) {           return unwrapSafeValue(value);         }         throw new Error('unsafe value used in a script context');       case SecurityContext.URL:         if (allowSanitizationBypassOrThrow(value, BypassType.Url)) {           return unwrapSafeValue(value);         }         return _sanitizeUrl(String(value));       case SecurityContext.RESOURCE_URL:         if (allowSanitizationBypassOrThrow(value, BypassType.ResourceUrl)) {           return unwrapSafeValue(value);         }         throw new Error(`unsafe value used in a resource URL context (see ${XSS_SECURITY_URL})`);       default:         throw new Error(`Unexpected SecurityContext ${ctx} (see ${XSS_SECURITY_URL})`);     }   }    override bypassSecurityTrustHtml(value: string): SafeHtml {     return bypassSanitizationTrustHtml(value);   }   override bypassSecurityTrustStyle(value: string): SafeStyle {     return bypassSanitizationTrustStyle(value);   }   override bypassSecurityTrustScript(value: string): SafeScript {     return bypassSanitizationTrustScript(value);   }   override bypassSecurityTrustUrl(value: string): SafeUrl {     return bypassSanitizationTrustUrl(value);   }   override bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl {     return bypassSanitizationTrustResourceUrl(value);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the platform-browser package.  */  import {Version} from '@angular/core';  /**  * @publicApi  */ export const VERSION = new Version('15.2.0'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/platform-browser'; // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["DomAdapter","setRootDomAdapter","parseCookieValue","getDOM","global","NG_DEV_MODE","i1.EventManager","i2.DomSharedStylesHost","internalCreateApplication","PLATFORM_BROWSER_ID","TESTABILITY_GETTER","TESTABILITY","INJECTOR_SCOPE","window","Console","allowSanitizationBypassOrThrow","unwrapSafeValue","_sanitizeHtml","_sanitizeUrl","XSS_SECURITY_URL","bypassSanitizationTrustHtml","bypassSanitizationTrustStyle","bypassSanitizationTrustScript","bypassSanitizationTrustUrl","bypassSanitizationTrustResourceUrl"],"mappings":"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"}
-------------------- SECTION 228 --------------------
{"version":3,"file":"platform-browser.mjs","sources":["../../../../../../packages/platform-browser/src/browser/generic_browser_adapter.ts","../../../../../../packages/platform-browser/src/browser/browser_adapter.ts","../../../../../../packages/platform-browser/src/browser/server-transition.ts","../../../../../../packages/platform-browser/src/browser/testability.ts","../../../../../../packages/platform-browser/src/browser/xhr.ts","../../../../../../packages/platform-browser/src/dom/events/event_manager.ts","../../../../../../packages/platform-browser/src/dom/shared_styles_host.ts","../../../../../../packages/platform-browser/src/dom/dom_renderer.ts","../../../../../../packages/platform-browser/src/dom/events/dom_events.ts","../../../../../../packages/platform-browser/src/dom/events/key_events.ts","../../../../../../packages/platform-browser/src/browser.ts","../../../../../../packages/platform-browser/src/browser/meta.ts","../../../../../../packages/platform-browser/src/browser/title.ts","../../../../../../packages/platform-browser/src/dom/util.ts","../../../../../../packages/platform-browser/src/browser/tools/browser.ts","../../../../../../packages/platform-browser/src/browser/tools/common_tools.ts","../../../../../../packages/platform-browser/src/browser/tools/tools.ts","../../../../../../packages/platform-browser/src/browser/transfer_state.ts","../../../../../../packages/platform-browser/src/dom/debug/by.ts","../../../../../../packages/platform-browser/src/dom/events/hammer_gestures.ts","../../../../../../packages/platform-browser/src/security/dom_sanitization_service.ts","../../../../../../packages/platform-browser/src/version.ts","../../../../../../packages/platform-browser/public_api.ts","../../../../../../packages/platform-browser/index.ts","../../../../../../packages/platform-browser/platform-browser.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵDomAdapter as DomAdapter} from '@angular/common';    /**  * Provides DOM operations in any browser environment.  *  * @security Tread carefully! Interacting with the DOM directly is dangerous and  * can introduce XSS risks.  */ export abstract class GenericBrowserDomAdapter extends DomAdapter {   readonly supportsDOMEvents: boolean = true; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵparseCookieValue as parseCookieValue, ɵsetRootDomAdapter as setRootDomAdapter} from '@angular/common';  import {GenericBrowserDomAdapter} from './generic_browser_adapter';  /**  * A `DomAdapter` powered by full browser DOM APIs.  *  * @security Tread carefully! Interacting with the DOM directly is dangerous and  * can introduce XSS risks.  */ /* tslint:disable:requireParameterType no-console */ export class BrowserDomAdapter extends GenericBrowserDomAdapter {   static makeCurrent() {     setRootDomAdapter(new BrowserDomAdapter());   }    onAndCancel(el: Node, evt: any, listener: any): Function {     el.addEventListener(evt, listener, false);     // Needed to follow Dart's subscription semantic, until fix of     // https://code.google.com/p/dart/issues/detail?id=17406     return () => {       el.removeEventListener(evt, listener, false);     };   }   dispatchEvent(el: Node, evt: any) {     el.dispatchEvent(evt);   }   remove(node: Node): void {     if (node.parentNode) {       node.parentNode.removeChild(node);     }   }   createElement(tagName: string, doc?: Document): HTMLElement {     doc = doc || this.getDefaultDocument();     return doc.createElement(tagName);   }   createHtmlDocument(): Document {     return document.implementation.createHTMLDocument('fakeTitle');   }   getDefaultDocument(): Document {     return document;   }    isElementNode(node: Node): boolean {     return node.nodeType === Node.ELEMENT_NODE;   }    isShadowRoot(node: any): boolean {     return node instanceof DocumentFragment;   }    /** @deprecated No longer being used in Ivy code. To be removed in version 14. */   getGlobalEventTarget(doc: Document, target: string): EventTarget|null {     if (target === 'window') {       return window;     }     if (target === 'document') {       return doc;     }     if (target === 'body') {       return doc.body;     }     return null;   }   getBaseHref(doc: Document): string|null {     const href = getBaseElementHref();     return href == null ? null : relativePath(href);   }   resetBaseElement(): void {     baseElement = null;   }   getUserAgent(): string {     return window.navigator.userAgent;   }   getCookie(name: string): string|null {     return parseCookieValue(document.cookie, name);   } }  let baseElement: HTMLElement|null = null; function getBaseElementHref(): string|null {   baseElement = baseElement || document.querySelector('base');   return baseElement ? baseElement.getAttribute('href') : null; }  // based on urlUtils.js in AngularJS 1 let urlParsingNode: HTMLAnchorElement|undefined; function relativePath(url: any): string {   urlParsingNode = urlParsingNode || document.createElement('a');   urlParsingNode.setAttribute('href', url);   const pathName = urlParsingNode.pathname;   return pathName.charAt(0) === '/' ? pathName : `/${pathName}`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT, ɵgetDOM as getDOM} from '@angular/common'; import {APP_INITIALIZER, ApplicationInitStatus, InjectionToken, Injector, StaticProvider} from '@angular/core';  /**  * An id that identifies a particular application being bootstrapped, that should  * match across the client/server boundary.  */ export const TRANSITION_ID = new InjectionToken('TRANSITION_ID');  export function appInitializerFactory(transitionId: string, document: any, injector: Injector) {   return () => {     // Wait for all application initializers to be completed before removing the styles set by     // the server.     injector.get(ApplicationInitStatus).donePromise.then(() => {       const dom = getDOM();       const styles: HTMLCollectionOf<HTMLStyleElement> =           document.querySelectorAll(`style[ng-transition=\"${transitionId}\"]`);       for (let i = 0; i < styles.length; i++) {         dom.remove(styles[i]);       }     });   }; }  export const SERVER_TRANSITION_PROVIDERS: StaticProvider[] = [   {     provide: APP_INITIALIZER,     useFactory: appInitializerFactory,     deps: [TRANSITION_ID, DOCUMENT, Injector],     multi: true   }, ]; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵgetDOM as getDOM} from '@angular/common'; import {GetTestability, Testability, TestabilityRegistry, ɵglobal as global} from '@angular/core';  export class BrowserGetTestability implements GetTestability {   addToWindow(registry: TestabilityRegistry): void {     global['getAngularTestability'] = (elem: any, findInAncestors: boolean = true) => {       const testability = registry.findTestabilityInTree(elem, findInAncestors);       if (testability == null) {         throw new Error('Could not find testability for element.');       }       return testability;     };      global['getAllAngularTestabilities'] = () => registry.getAllTestabilities();      global['getAllAngularRootElements'] = () => registry.getAllRootElements();      const whenAllStable = (callback: any /** TODO #9100 */) => {       const testabilities = global['getAllAngularTestabilities']();       let count = testabilities.length;       let didWork = false;       const decrement = function(didWork_: any /** TODO #9100 */) {         didWork = didWork || didWork_;         count--;         if (count == 0) {           callback(didWork);         }       };       testabilities.forEach(function(testability: any /** TODO #9100 */) {         testability.whenStable(decrement);       });     };      if (!global['frameworkStabilizers']) {       global['frameworkStabilizers'] = [];     }     global['frameworkStabilizers'].push(whenAllStable);   }    findTestabilityInTree(registry: TestabilityRegistry, elem: any, findInAncestors: boolean):       Testability|null {     if (elem == null) {       return null;     }     const t = registry.getTestability(elem);     if (t != null) {       return t;     } else if (!findInAncestors) {       return null;     }     if (getDOM().isShadowRoot(elem)) {       return this.findTestabilityInTree(registry, (<any>elem).host, true);     }     return this.findTestabilityInTree(registry, elem.parentElement, true);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {XhrFactory} from '@angular/common'; import {Injectable} from '@angular/core';  /**  * A factory for `HttpXhrBackend` that uses the `XMLHttpRequest` browser API.  */ @Injectable() export class BrowserXhr implements XhrFactory {   build(): XMLHttpRequest {     return new XMLHttpRequest();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵgetDOM as getDOM} from '@angular/common'; import {Inject, Injectable, InjectionToken, NgZone} from '@angular/core';  /**  * The injection token for the event-manager plug-in service.  *  * @publicApi  */ export const EVENT_MANAGER_PLUGINS =     new InjectionToken<EventManagerPlugin[]>('EventManagerPlugins');  /**  * An injectable service that provides event management for Angular  * through a browser plug-in.  *  * @publicApi  */ @Injectable() export class EventManager {   private _plugins: EventManagerPlugin[];   private _eventNameToPlugin = new Map<string, EventManagerPlugin>();    /**    * Initializes an instance of the event-manager service.    */   constructor(@Inject(EVENT_MANAGER_PLUGINS) plugins: EventManagerPlugin[], private _zone: NgZone) {     plugins.forEach(p => p.manager = this);     this._plugins = plugins.slice().reverse();   }    /**    * Registers a handler for a specific element and event.    *    * @param element The HTML element to receive event notifications.    * @param eventName The name of the event to listen for.    * @param handler A function to call when the notification occurs. Receives the    * event object as an argument.    * @returns  A callback function that can be used to remove the handler.    */   addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {     const plugin = this._findPluginFor(eventName);     return plugin.addEventListener(element, eventName, handler);   }    /**    * Registers a global handler for an event in a target view.    *    * @param target A target for global event notifications. One of \"window\", \"document\", or \"body\".    * @param eventName The name of the event to listen for.    * @param handler A function to call when the notification occurs. Receives the    * event object as an argument.    * @returns A callback function that can be used to remove the handler.    * @deprecated No longer being used in Ivy code. To be removed in version 14.    */   addGlobalEventListener(target: string, eventName: string, handler: Function): Function {     const plugin = this._findPluginFor(eventName);     return plugin.addGlobalEventListener(target, eventName, handler);   }    /**    * Retrieves the compilation zone in which event listeners are registered.    */   getZone(): NgZone {     return this._zone;   }    /** @internal */   _findPluginFor(eventName: string): EventManagerPlugin {     const plugin = this._eventNameToPlugin.get(eventName);     if (plugin) {       return plugin;     }      const plugins = this._plugins;     for (let i = 0; i < plugins.length; i++) {       const plugin = plugins[i];       if (plugin.supports(eventName)) {         this._eventNameToPlugin.set(eventName, plugin);         return plugin;       }     }     throw new Error(`No event manager plugin found for event ${eventName}`);   } }  export abstract class EventManagerPlugin {   constructor(private _doc: any) {}    // TODO(issue/24571): remove '!'.   manager!: EventManager;    abstract supports(eventName: string): boolean;    abstract addEventListener(element: HTMLElement, eventName: string, handler: Function): Function;    addGlobalEventListener(element: string, eventName: string, handler: Function): Function {     const target: HTMLElement = getDOM().getGlobalEventTarget(this._doc, element);     if (!target) {       throw new Error(`Unsupported event target ${target} for event ${eventName}`);     }     return this.addEventListener(target, eventName, handler);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, OnDestroy} from '@angular/core';  @Injectable() export class SharedStylesHost implements OnDestroy {   private readonly usageCount = new Map<string /** Style string */, number /** Usage count */>();    addStyles(styles: string[]): void {     for (const style of styles) {       const usageCount = this.changeUsageCount(style, 1);        if (usageCount === 1) {         this.onStyleAdded(style);       }     }   }    removeStyles(styles: string[]): void {     for (const style of styles) {       const usageCount = this.changeUsageCount(style, -1);        if (usageCount === 0) {         this.onStyleRemoved(style);       }     }   }    onStyleRemoved(style: string): void {}    onStyleAdded(style: string): void {}    getAllStyles(): IterableIterator<string> {     return this.usageCount.keys();   }    private changeUsageCount(style: string, delta: number): number {     const map = this.usageCount;     let usage = map.get(style) ?? 0;     usage += delta;      if (usage > 0) {       map.set(style, usage);     } else {       map.delete(style);     }      return usage;   }    ngOnDestroy(): void {     for (const style of this.getAllStyles()) {       this.onStyleRemoved(style);     }      this.usageCount.clear();   } }  @Injectable() export class DomSharedStylesHost extends SharedStylesHost implements OnDestroy {   // Maps all registered host nodes to a list of style nodes that have been added to the host node.   private readonly styleRef = new Map<string, HTMLStyleElement[]>();   private hostNodes = new Set<Node>();    constructor(@Inject(DOCUMENT) private readonly doc: any) {     super();     this.resetHostNodes();   }    override onStyleAdded(style: string): void {     for (const host of this.hostNodes) {       this.addStyleToHost(host, style);     }   }    override onStyleRemoved(style: string): void {     const styleRef = this.styleRef;     const styleElements = styleRef.get(style);     styleElements?.forEach(e => e.remove());     styleRef.delete(style);   }    override ngOnDestroy(): void {     super.ngOnDestroy();     this.styleRef.clear();     this.resetHostNodes();   }    addHost(hostNode: Node): void {     this.hostNodes.add(hostNode);      for (const style of this.getAllStyles()) {       this.addStyleToHost(hostNode, style);     }   }    removeHost(hostNode: Node): void {     this.hostNodes.delete(hostNode);   }    private addStyleToHost(host: Node, style: string): void {     const styleEl = this.doc.createElement('style');     styleEl.textContent = style;     host.appendChild(styleEl);      const styleElRef = this.styleRef.get(style);     if (styleElRef) {       styleElRef.push(styleEl);     } else {       this.styleRef.set(style, [styleEl]);     }   }    private resetHostNodes(): void {     const hostNodes = this.hostNodes;     hostNodes.clear();     // Re-add the head element back since this is the default host.     hostNodes.add(this.doc.head);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {APP_ID, Inject, Injectable, InjectionToken, OnDestroy, Renderer2, RendererFactory2, RendererStyleFlags2, RendererType2, ViewEncapsulation} from '@angular/core';  import {EventManager} from './events/event_manager'; import {DomSharedStylesHost} from './shared_styles_host';  export const NAMESPACE_URIS: {[ns: string]: string} = {   'svg': 'http://www.w3.org/2000/svg',   'xhtml': 'http://www.w3.org/1999/xhtml',   'xlink': 'http://www.w3.org/1999/xlink',   'xml': 'http://www.w3.org/XML/1998/namespace',   'xmlns': 'http://www.w3.org/2000/xmlns/',   'math': 'http://www.w3.org/1998/MathML/', };  const COMPONENT_REGEX = /%COMP%/g; const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  export const COMPONENT_VARIABLE = '%COMP%'; export const HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`; export const CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`;  /**  * The default value for the `REMOVE_STYLES_ON_COMPONENT_DESTROY` DI token.  */ const REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT = false;  /**  * A [DI token](guide/glossary#di-token \"DI token definition\") that indicates whether styles  * of destroyed components should be removed from DOM.  *  * By default, the value is set to `false`. This will be changed in the next major version.  * @publicApi  */ export const REMOVE_STYLES_ON_COMPONENT_DESTROY =     new InjectionToken<boolean>('RemoveStylesOnCompDestory', {       providedIn: 'root',       factory: () => REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT,     });  export function shimContentAttribute(componentShortId: string): string {   return CONTENT_ATTR.replace(COMPONENT_REGEX, componentShortId); }  export function shimHostAttribute(componentShortId: string): string {   return HOST_ATTR.replace(COMPONENT_REGEX, componentShortId); }  export function flattenStyles(compId: string, styles: Array<string|string[]>): string[] {   // Cannot use `Infinity` as depth as `infinity` is not a number literal in TypeScript.   // See: https://github.com/microsoft/TypeScript/issues/32277   return styles.flat(100).map(s => s.replace(COMPONENT_REGEX, compId)); }  function decoratePreventDefault(eventHandler: Function): Function {   // `DebugNode.triggerEventHandler` needs to know if the listener was created with   // decoratePreventDefault or is a listener added outside the Angular context so it can handle the   // two differently. In the first case, the special '__ngUnwrap__' token is passed to the unwrap   // the listener (see below).   return (event: any) => {     // Ivy uses '__ngUnwrap__' as a special token that allows us to unwrap the function     // so that it can be invoked programmatically by `DebugNode.triggerEventHandler`. The debug_node     // can inspect the listener toString contents for the existence of this special token. Because     // the token is a string literal, it is ensured to not be modified by compiled code.     if (event === '__ngUnwrap__') {       return eventHandler;     }      const allowDefaultBehavior = eventHandler(event);     if (allowDefaultBehavior === false) {       // TODO(tbosch): move preventDefault into event plugins...       event.preventDefault();       event.returnValue = false;     }      return undefined;   }; }  @Injectable() export class DomRendererFactory2 implements RendererFactory2, OnDestroy {   private rendererByCompId =       new Map<string, EmulatedEncapsulationDomRenderer2|NoneEncapsulationDomRenderer>();   private defaultRenderer: Renderer2;    constructor(       private eventManager: EventManager, private sharedStylesHost: DomSharedStylesHost,       @Inject(APP_ID) private appId: string,       @Inject(REMOVE_STYLES_ON_COMPONENT_DESTROY) private removeStylesOnCompDestory: boolean) {     this.defaultRenderer = new DefaultDomRenderer2(eventManager);   }    createRenderer(element: any, type: RendererType2|null): Renderer2 {     if (!element || !type) {       return this.defaultRenderer;     }      const renderer = this.getOrCreateRenderer(element, type);      // Renderers have different logic due to different encapsulation behaviours.     // Ex: for emulated, an attribute is added to the element.     if (renderer instanceof EmulatedEncapsulationDomRenderer2) {       renderer.applyToHost(element);     } else if (renderer instanceof NoneEncapsulationDomRenderer) {       renderer.applyStyles();     }      return renderer;   }    private getOrCreateRenderer(element: any, type: RendererType2): Renderer2 {     const rendererByCompId = this.rendererByCompId;     let renderer = rendererByCompId.get(type.id);      if (!renderer) {       const eventManager = this.eventManager;       const sharedStylesHost = this.sharedStylesHost;       const removeStylesOnCompDestory = this.removeStylesOnCompDestory;        switch (type.encapsulation) {         case ViewEncapsulation.Emulated:           renderer = new EmulatedEncapsulationDomRenderer2(               eventManager, sharedStylesHost, type, this.appId, removeStylesOnCompDestory);           break;         case ViewEncapsulation.ShadowDom:           return new ShadowDomRenderer(eventManager, sharedStylesHost, element, type);         default:           renderer = new NoneEncapsulationDomRenderer(               eventManager, sharedStylesHost, type, removeStylesOnCompDestory);           break;       }        renderer.onDestroy = () => rendererByCompId.delete(type.id);       rendererByCompId.set(type.id, renderer);     }      return renderer;   }    ngOnDestroy() {     this.rendererByCompId.clear();   }    begin() {}   end() {} }  class DefaultDomRenderer2 implements Renderer2 {   data: {[key: string]: any} = Object.create(null);    constructor(private eventManager: EventManager) {}    destroy(): void {}    destroyNode = null;    createElement(name: string, namespace?: string): any {     if (namespace) {       // TODO: `|| namespace` was added in       // https://github.com/angular/angular/commit/2b9cc8503d48173492c29f5a271b61126104fbdb to       // support how Ivy passed around the namespace URI rather than short name at the time. It did       // not, however extend the support to other parts of the system (setAttribute, setAttribute,       // and the ServerRenderer). We should decide what exactly the semantics for dealing with       // namespaces should be and make it consistent.       // Related issues:       // https://github.com/angular/angular/issues/44028       // https://github.com/angular/angular/issues/44883       return document.createElementNS(NAMESPACE_URIS[namespace] || namespace, name);     }      return document.createElement(name);   }    createComment(value: string): any {     return document.createComment(value);   }    createText(value: string): any {     return document.createTextNode(value);   }    appendChild(parent: any, newChild: any): void {     const targetParent = isTemplateNode(parent) ? parent.content : parent;     targetParent.appendChild(newChild);   }    insertBefore(parent: any, newChild: any, refChild: any): void {     if (parent) {       const targetParent = isTemplateNode(parent) ? parent.content : parent;       targetParent.insertBefore(newChild, refChild);     }   }    removeChild(parent: any, oldChild: any): void {     if (parent) {       parent.removeChild(oldChild);     }   }    selectRootElement(selectorOrNode: string|any, preserveContent?: boolean): any {     let el: any = typeof selectorOrNode === 'string' ? document.querySelector(selectorOrNode) :                                                        selectorOrNode;     if (!el) {       throw new Error(`The selector \"${selectorOrNode}\" did not match any elements`);     }     if (!preserveContent) {       el.textContent = '';     }     return el;   }    parentNode(node: any): any {     return node.parentNode;   }    nextSibling(node: any): any {     return node.nextSibling;   }    setAttribute(el: any, name: string, value: string, namespace?: string): void {     if (namespace) {       name = namespace + ':' + name;       const namespaceUri = NAMESPACE_URIS[namespace];       if (namespaceUri) {         el.setAttributeNS(namespaceUri, name, value);       } else {         el.setAttribute(name, value);       }     } else {       el.setAttribute(name, value);     }   }    removeAttribute(el: any, name: string, namespace?: string): void {     if (namespace) {       const namespaceUri = NAMESPACE_URIS[namespace];       if (namespaceUri) {         el.removeAttributeNS(namespaceUri, name);       } else {         el.removeAttribute(`${namespace}:${name}`);       }     } else {       el.removeAttribute(name);     }   }    addClass(el: any, name: string): void {     el.classList.add(name);   }    removeClass(el: any, name: string): void {     el.classList.remove(name);   }    setStyle(el: any, style: string, value: any, flags: RendererStyleFlags2): void {     if (flags & (RendererStyleFlags2.DashCase | RendererStyleFlags2.Important)) {       el.style.setProperty(style, value, flags & RendererStyleFlags2.Important ? 'important' : '');     } else {       el.style[style] = value;     }   }    removeStyle(el: any, style: string, flags: RendererStyleFlags2): void {     if (flags & RendererStyleFlags2.DashCase) {       el.style.removeProperty(style);     } else {       // IE requires '' instead of null       // see https://github.com/angular/angular/issues/7916       el.style[style] = '';     }   }    setProperty(el: any, name: string, value: any): void {     NG_DEV_MODE && checkNoSyntheticProp(name, 'property');     el[name] = value;   }    setValue(node: any, value: string): void {     node.nodeValue = value;   }    listen(target: 'window'|'document'|'body'|any, event: string, callback: (event: any) => boolean):       () => void {     NG_DEV_MODE && checkNoSyntheticProp(event, 'listener');     if (typeof target === 'string') {       return <() => void>this.eventManager.addGlobalEventListener(           target, event, decoratePreventDefault(callback));     }     return <() => void>this.eventManager.addEventListener(                target, event, decoratePreventDefault(callback)) as () => void;   } }  const AT_CHARCODE = (() => '@'.charCodeAt(0))(); function checkNoSyntheticProp(name: string, nameKind: string) {   if (name.charCodeAt(0) === AT_CHARCODE) {     throw new Error(`Unexpected synthetic ${nameKind} ${name} found. Please make sure that:   - Either \\`BrowserAnimationsModule\\` or \\`NoopAnimationsModule\\` are imported in your application.   - There is corresponding configuration for the animation named \\`${         name}\\` defined in the \\`animations\\` field of the \\`@Component\\` decorator (see https://angular.io/api/core/Component#animations).`);   } }   function isTemplateNode(node: any): node is HTMLTemplateElement {   return node.tagName === 'TEMPLATE' && node.content !== undefined; }  class ShadowDomRenderer extends DefaultDomRenderer2 {   private shadowRoot: any;    constructor(       eventManager: EventManager, private sharedStylesHost: DomSharedStylesHost,       private hostEl: any, component: RendererType2) {     super(eventManager);     this.shadowRoot = (hostEl as any).attachShadow({mode: 'open'});      this.sharedStylesHost.addHost(this.shadowRoot);     const styles = flattenStyles(component.id, component.styles);      for (const style of styles) {       const styleEl = document.createElement('style');       styleEl.textContent = style;       this.shadowRoot.appendChild(styleEl);     }   }    private nodeOrShadowRoot(node: any): any {     return node === this.hostEl ? this.shadowRoot : node;   }    override appendChild(parent: any, newChild: any): void {     return super.appendChild(this.nodeOrShadowRoot(parent), newChild);   }   override insertBefore(parent: any, newChild: any, refChild: any): void {     return super.insertBefore(this.nodeOrShadowRoot(parent), newChild, refChild);   }   override removeChild(parent: any, oldChild: any): void {     return super.removeChild(this.nodeOrShadowRoot(parent), oldChild);   }   override parentNode(node: any): any {     return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(node)));   }    override destroy() {     this.sharedStylesHost.removeHost(this.shadowRoot);   } }  class NoneEncapsulationDomRenderer extends DefaultDomRenderer2 {   private readonly styles: string[];   private rendererUsageCount = 0;   onDestroy: VoidFunction|undefined;    constructor(       eventManager: EventManager,       private readonly sharedStylesHost: DomSharedStylesHost,       component: RendererType2,       private removeStylesOnCompDestory: boolean,       compId = component.id,   ) {     super(eventManager);     this.styles = flattenStyles(compId, component.styles);   }    applyStyles(): void {     this.sharedStylesHost.addStyles(this.styles);     this.rendererUsageCount++;   }    override destroy(): void {     if (!this.removeStylesOnCompDestory) {       return;     }      this.sharedStylesHost.removeStyles(this.styles);     this.rendererUsageCount--;     if (this.rendererUsageCount === 0) {       this.onDestroy?.();     }   } }  class EmulatedEncapsulationDomRenderer2 extends NoneEncapsulationDomRenderer {   private contentAttr: string;   private hostAttr: string;    constructor(       eventManager: EventManager, sharedStylesHost: DomSharedStylesHost, component: RendererType2,       appId: string, removeStylesOnCompDestory: boolean) {     const compId = appId + '-' + component.id;     super(eventManager, sharedStylesHost, component, removeStylesOnCompDestory, compId);     this.contentAttr = shimContentAttribute(compId);     this.hostAttr = shimHostAttribute(compId);   }    applyToHost(element: any): void {     this.applyStyles();     this.setAttribute(element, this.hostAttr, '');   }    override createElement(parent: any, name: string): Element {     const el = super.createElement(parent, name);     super.setAttribute(el, this.contentAttr, '');     return el;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable} from '@angular/core';  import {EventManagerPlugin} from './event_manager';  @Injectable() export class DomEventsPlugin extends EventManagerPlugin {   constructor(@Inject(DOCUMENT) doc: any) {     super(doc);   }    // This plugin should come last in the list of plugins, because it accepts all   // events.   override supports(eventName: string): boolean {     return true;   }    override addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {     element.addEventListener(eventName, handler as EventListener, false);     return () => this.removeEventListener(element, eventName, handler as EventListener);   }    removeEventListener(target: any, eventName: string, callback: Function): void {     return target.removeEventListener(eventName, callback as EventListener);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT, ɵgetDOM as getDOM} from '@angular/common'; import {Inject, Injectable, NgZone} from '@angular/core';  import {EventManagerPlugin} from './event_manager';  /**  * Defines supported modifiers for key events.  */ const MODIFIER_KEYS = ['alt', 'control', 'meta', 'shift'];  // The following values are here for cross-browser compatibility and to match the W3C standard // cf https://www.w3.org/TR/DOM-Level-3-Events-key/ const _keyMap: {[k: string]: string} = {   '\\b': 'Backspace',   '\ ': 'Tab',   '\\x7F': 'Delete',   '\\x1B': 'Escape',   'Del': 'Delete',   'Esc': 'Escape',   'Left': 'ArrowLeft',   'Right': 'ArrowRight',   'Up': 'ArrowUp',   'Down': 'ArrowDown',   'Menu': 'ContextMenu',   'Scroll': 'ScrollLock',   'Win': 'OS' };  /**  * Retrieves modifiers from key-event objects.  */ const MODIFIER_KEY_GETTERS: {[key: string]: (event: KeyboardEvent) => boolean} = {   'alt': (event: KeyboardEvent) => event.altKey,   'control': (event: KeyboardEvent) => event.ctrlKey,   'meta': (event: KeyboardEvent) => event.metaKey,   'shift': (event: KeyboardEvent) => event.shiftKey };  /**  * @publicApi  * A browser plug-in that provides support for handling of key events in Angular.  */ @Injectable() export class KeyEventsPlugin extends EventManagerPlugin {   /**    * Initializes an instance of the browser plug-in.    * @param doc The document in which key events will be detected.    */   constructor(@Inject(DOCUMENT) doc: any) {     super(doc);   }    /**    * Reports whether a named key event is supported.    * @param eventName The event name to query.    * @return True if the named key event is supported.    */   override supports(eventName: string): boolean {     return KeyEventsPlugin.parseEventName(eventName) != null;   }    /**    * Registers a handler for a specific element and key event.    * @param element The HTML element to receive event notifications.    * @param eventName The name of the key event to listen for.    * @param handler A function to call when the notification occurs. Receives the    * event object as an argument.    * @returns The key event that was registered.    */   override addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {     const parsedEvent = KeyEventsPlugin.parseEventName(eventName)!;      const outsideHandler =         KeyEventsPlugin.eventCallback(parsedEvent['fullKey'], handler, this.manager.getZone());      return this.manager.getZone().runOutsideAngular(() => {       return getDOM().onAndCancel(element, parsedEvent['domEventName'], outsideHandler);     });   }    /**    * Parses the user provided full keyboard event definition and normalizes it for    * later internal use. It ensures the string is all lowercase, converts special    * characters to a standard spelling, and orders all the values consistently.    *    * @param eventName The name of the key event to listen for.    * @returns an object with the full, normalized string, and the dom event name    * or null in the case when the event doesn't match a keyboard event.    */   static parseEventName(eventName: string): {fullKey: string, domEventName: string}|null {     const parts: string[] = eventName.toLowerCase().split('.');      const domEventName = parts.shift();     if ((parts.length === 0) || !(domEventName === 'keydown' || domEventName === 'keyup')) {       return null;     }      const key = KeyEventsPlugin._normalizeKey(parts.pop()!);      let fullKey = '';     let codeIX = parts.indexOf('code');     if (codeIX > -1) {       parts.splice(codeIX, 1);       fullKey = 'code.';     }     MODIFIER_KEYS.forEach(modifierName => {       const index: number = parts.indexOf(modifierName);       if (index > -1) {         parts.splice(index, 1);         fullKey += modifierName + '.';       }     });     fullKey += key;      if (parts.length != 0 || key.length === 0) {       // returning null instead of throwing to let another plugin process the event       return null;     }      // NOTE: Please don't rewrite this as so, as it will break JSCompiler property renaming.     //       The code must remain in the `result['domEventName']` form.     // return {domEventName, fullKey};     const result: {fullKey: string, domEventName: string} = {} as any;     result['domEventName'] = domEventName;     result['fullKey'] = fullKey;     return result;   }    /**    * Determines whether the actual keys pressed match the configured key code string.    * The `fullKeyCode` event is normalized in the `parseEventName` method when the    * event is attached to the DOM during the `addEventListener` call. This is unseen    * by the end user and is normalized for internal consistency and parsing.    *    * @param event The keyboard event.    * @param fullKeyCode The normalized user defined expected key event string    * @returns boolean.    */   static matchEventFullKeyCode(event: KeyboardEvent, fullKeyCode: string): boolean {     let keycode = _keyMap[event.key] || event.key;     let key = '';     if (fullKeyCode.indexOf('code.') > -1) {       keycode = event.code;       key = 'code.';     }     // the keycode could be unidentified so we have to check here     if (keycode == null || !keycode) return false;     keycode = keycode.toLowerCase();     if (keycode === ' ') {       keycode = 'space';  // for readability     } else if (keycode === '.') {       keycode = 'dot';  // because '.' is used as a separator in event names     }     MODIFIER_KEYS.forEach(modifierName => {       if (modifierName !== keycode) {         const modifierGetter = MODIFIER_KEY_GETTERS[modifierName];         if (modifierGetter(event)) {           key += modifierName + '.';         }       }     });     key += keycode;     return key === fullKeyCode;   }    /**    * Configures a handler callback for a key event.    * @param fullKey The event name that combines all simultaneous keystrokes.    * @param handler The function that responds to the key event.    * @param zone The zone in which the event occurred.    * @returns A callback function.    */   static eventCallback(fullKey: string, handler: Function, zone: NgZone): Function {     return (event: KeyboardEvent) => {       if (KeyEventsPlugin.matchEventFullKeyCode(event, fullKey)) {         zone.runGuarded(() => handler(event));       }     };   }    /** @internal */   static _normalizeKey(keyName: string): string {     // TODO: switch to a Map if the mapping grows too much     switch (keyName) {       case 'esc':         return 'escape';       default:         return keyName;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {CommonModule, DOCUMENT, XhrFactory, ɵPLATFORM_BROWSER_ID as PLATFORM_BROWSER_ID} from '@angular/common'; import {APP_ID, ApplicationModule, ApplicationRef, createPlatformFactory, EnvironmentProviders, ErrorHandler, Inject, InjectionToken, ModuleWithProviders, NgModule, NgZone, Optional, PLATFORM_ID, PLATFORM_INITIALIZER, platformCore, PlatformRef, Provider, RendererFactory2, SkipSelf, StaticProvider, Testability, TestabilityRegistry, Type, ɵINJECTOR_SCOPE as INJECTOR_SCOPE, ɵinternalCreateApplication as internalCreateApplication, ɵsetDocument, ɵTESTABILITY as TESTABILITY, ɵTESTABILITY_GETTER as TESTABILITY_GETTER} from '@angular/core';  import {BrowserDomAdapter} from './browser/browser_adapter'; import {SERVER_TRANSITION_PROVIDERS, TRANSITION_ID} from './browser/server-transition'; import {BrowserGetTestability} from './browser/testability'; import {BrowserXhr} from './browser/xhr'; import {DomRendererFactory2, REMOVE_STYLES_ON_COMPONENT_DESTROY} from './dom/dom_renderer'; import {DomEventsPlugin} from './dom/events/dom_events'; import {EVENT_MANAGER_PLUGINS, EventManager} from './dom/events/event_manager'; import {KeyEventsPlugin} from './dom/events/key_events'; import {DomSharedStylesHost, SharedStylesHost} from './dom/shared_styles_host';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  /**  * Set of config options available during the application bootstrap operation.  *  * @publicApi  */ export interface ApplicationConfig {   /**    * List of providers that should be available to the root component and all its children.    */   providers: Array<Provider|EnvironmentProviders>; }  /**  * Bootstraps an instance of an Angular application and renders a standalone component as the  * application's root component. More information about standalone components can be found in [this  * guide](guide/standalone-components).  *  * @usageNotes  * The root component passed into this function *must* be a standalone one (should have the  * `standalone: true` flag in the `@Component` decorator config).  *  * ```typescript  * @Component({  *   standalone: true,  *   template: 'Hello world!'  * })  * class RootComponent {}  *  * const appRef: ApplicationRef = await bootstrapApplication(RootComponent);  * ```  *  * You can add the list of providers that should be available in the application injector by  * specifying the `providers` field in an object passed as the second argument:  *  * ```typescript  * await bootstrapApplication(RootComponent, {  *   providers: [  *     {provide: BACKEND_URL, useValue: 'https://yourdomain.com/api'}  *   ]  * });  * ```  *  * The `importProvidersFrom` helper method can be used to collect all providers from any  * existing NgModule (and transitively from all NgModules that it imports):  *  * ```typescript  * await bootstrapApplication(RootComponent, {  *   providers: [  *     importProvidersFrom(SomeNgModule)  *   ]  * });  * ```  *  * Note: the `bootstrapApplication` method doesn't include [Testability](api/core/Testability) by  * default. You can add [Testability](api/core/Testability) by getting the list of necessary  * providers using `provideProtractorTestingSupport()` function and adding them into the `providers`  * array, for example:  *  * ```typescript  * import {provideProtractorTestingSupport} from '@angular/platform-browser';  *  * await bootstrapApplication(RootComponent, {providers: [provideProtractorTestingSupport()]});  * ```  *  * @param rootComponent A reference to a standalone component that should be rendered.  * @param options Extra configuration for the bootstrap operation, see `ApplicationConfig` for  *     additional info.  * @returns A promise that returns an `ApplicationRef` instance once resolved.  *  * @publicApi  */ export function bootstrapApplication(     rootComponent: Type<unknown>, options?: ApplicationConfig): Promise<ApplicationRef> {   return internalCreateApplication({rootComponent, ...createProvidersConfig(options)}); }  /**  * Create an instance of an Angular application without bootstrapping any components. This is useful  * for the situation where one wants to decouple application environment creation (a platform and  * associated injectors) from rendering components on a screen. Components can be subsequently  * bootstrapped on the returned `ApplicationRef`.  *  * @param options Extra configuration for the application environment, see `ApplicationConfig` for  *     additional info.  * @returns A promise that returns an `ApplicationRef` instance once resolved.  *  * @publicApi  */ export function createApplication(options?: ApplicationConfig) {   return internalCreateApplication(createProvidersConfig(options)); }  function createProvidersConfig(options?: ApplicationConfig) {   return {     appProviders: [       ...BROWSER_MODULE_PROVIDERS,       ...(options?.providers ?? []),     ],     platformProviders: INTERNAL_BROWSER_PLATFORM_PROVIDERS   }; }  /**  * Returns a set of providers required to setup [Testability](api/core/Testability) for an  * application bootstrapped using the `bootstrapApplication` function. The set of providers is  * needed to support testing an application with Protractor (which relies on the Testability APIs  * to be present).  *  * @returns An array of providers required to setup Testability for an application and make it  *     available for testing using Protractor.  *  * @publicApi  */ export function provideProtractorTestingSupport(): Provider[] {   // Return a copy to prevent changes to the original array in case any in-place   // alterations are performed to the `provideProtractorTestingSupport` call results in app code.   return [...TESTABILITY_PROVIDERS]; }  export function initDomAdapter() {   BrowserDomAdapter.makeCurrent(); }  export function errorHandler(): ErrorHandler {   return new ErrorHandler(); }  export function _document(): any {   // Tell ivy about the global document   ɵsetDocument(document);   return document; }  export const INTERNAL_BROWSER_PLATFORM_PROVIDERS: StaticProvider[] = [   {provide: PLATFORM_ID, useValue: PLATFORM_BROWSER_ID},   {provide: PLATFORM_INITIALIZER, useValue: initDomAdapter, multi: true},   {provide: DOCUMENT, useFactory: _document, deps: []}, ];  /**  * A factory function that returns a `PlatformRef` instance associated with browser service  * providers.  *  * @publicApi  */ export const platformBrowser: (extraProviders?: StaticProvider[]) => PlatformRef =     createPlatformFactory(platformCore, 'browser', INTERNAL_BROWSER_PLATFORM_PROVIDERS);  /**  * Internal marker to signal whether providers from the `BrowserModule` are already present in DI.  * This is needed to avoid loading `BrowserModule` providers twice. We can't rely on the  * `BrowserModule` presence itself, since the standalone-based bootstrap just imports  * `BrowserModule` providers without referencing the module itself.  */ const BROWSER_MODULE_PROVIDERS_MARKER =     new InjectionToken(NG_DEV_MODE ? 'BrowserModule Providers Marker' : '');  const TESTABILITY_PROVIDERS = [   {     provide: TESTABILITY_GETTER,     useClass: BrowserGetTestability,     deps: [],   },   {     provide: TESTABILITY,     useClass: Testability,     deps: [NgZone, TestabilityRegistry, TESTABILITY_GETTER]   },   {     provide: Testability,  // Also provide as `Testability` for backwards-compatibility.     useClass: Testability,     deps: [NgZone, TestabilityRegistry, TESTABILITY_GETTER]   } ];  const BROWSER_MODULE_PROVIDERS: Provider[] = [   {provide: INJECTOR_SCOPE, useValue: 'root'},   {provide: ErrorHandler, useFactory: errorHandler, deps: []}, {     provide: EVENT_MANAGER_PLUGINS,     useClass: DomEventsPlugin,     multi: true,     deps: [DOCUMENT, NgZone, PLATFORM_ID]   },   {provide: EVENT_MANAGER_PLUGINS, useClass: KeyEventsPlugin, multi: true, deps: [DOCUMENT]}, {     provide: DomRendererFactory2,     useClass: DomRendererFactory2,     deps: [EventManager, DomSharedStylesHost, APP_ID, REMOVE_STYLES_ON_COMPONENT_DESTROY]   },   {provide: RendererFactory2, useExisting: DomRendererFactory2},   {provide: SharedStylesHost, useExisting: DomSharedStylesHost},   {provide: DomSharedStylesHost, useClass: DomSharedStylesHost, deps: [DOCUMENT]},   {provide: EventManager, useClass: EventManager, deps: [EVENT_MANAGER_PLUGINS, NgZone]},   {provide: XhrFactory, useClass: BrowserXhr, deps: []},   NG_DEV_MODE ? {provide: BROWSER_MODULE_PROVIDERS_MARKER, useValue: true} : [] ];  /**  * Exports required infrastructure for all Angular apps.  * Included by default in all Angular apps created with the CLI  * `new` command.  * Re-exports `CommonModule` and `ApplicationModule`, making their  * exports and providers available to all apps.  *  * @publicApi  */ @NgModule({   providers: [     ...BROWSER_MODULE_PROVIDERS,  //     ...TESTABILITY_PROVIDERS   ],   exports: [CommonModule, ApplicationModule], }) export class BrowserModule {   constructor(@Optional() @SkipSelf() @Inject(BROWSER_MODULE_PROVIDERS_MARKER)               providersAlreadyPresent: boolean|null) {     if (NG_DEV_MODE && providersAlreadyPresent) {       throw new Error(           `Providers from the \\`BrowserModule\\` have already been loaded. If you need access ` +           `to common directives such as NgIf and NgFor, import the \\`CommonModule\\` instead.`);     }   }    /**    * Configures a browser-based app to transition from a server-rendered app, if    * one is present on the page.    *    * @param params An object containing an identifier for the app to transition.    * The ID must match between the client and server versions of the app.    * @returns The reconfigured `BrowserModule` to import into the app's root `AppModule`.    */   static withServerTransition(params: {appId: string}): ModuleWithProviders<BrowserModule> {     return {       ngModule: BrowserModule,       providers: [         {provide: APP_ID, useValue: params.appId},         {provide: TRANSITION_ID, useExisting: APP_ID},         SERVER_TRANSITION_PROVIDERS,       ],     };   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT, ɵDomAdapter as DomAdapter, ɵgetDOM as getDOM} from '@angular/common'; import {Inject, Injectable, ɵɵinject} from '@angular/core';  /**  * Represents the attributes of an HTML `<meta>` element. The element itself is  * represented by the internal `HTMLMetaElement`.  *  * @see [HTML meta tag](https://developer.mozilla.org/docs/Web/HTML/Element/meta)  * @see `Meta`  *  * @publicApi  */ export type MetaDefinition = {   charset?: string;   content?: string;   httpEquiv?: string;   id?: string;   itemprop?: string;   name?: string;   property?: string;   scheme?: string;   url?: string; }&{   // TODO(IgorMinar): this type looks wrong   [prop: string]: string; };  /**  * Factory to create a `Meta` service instance for the current DOM document.  */ export function createMeta() {   return new Meta(ɵɵinject(DOCUMENT)); }  /**  * A service for managing HTML `<meta>` tags.  *  * Properties of the `MetaDefinition` object match the attributes of the  * HTML `<meta>` tag. These tags define document metadata that is important for  * things like configuring a Content Security Policy, defining browser compatibility  * and security settings, setting HTTP Headers, defining rich content for social sharing,  * and Search Engine Optimization (SEO).  *  * To identify specific `<meta>` tags in a document, use an attribute selection  * string in the format `\"tag_attribute='value string'\"`.  * For example, an `attrSelector` value of `\"name='description'\"` matches a tag  * whose `name` attribute has the value `\"description\"`.  * Selectors are used with the `querySelector()` Document method,  * in the format `meta[{attrSelector}]`.  *  * @see [HTML meta tag](https://developer.mozilla.org/docs/Web/HTML/Element/meta)  * @see [Document.querySelector()](https://developer.mozilla.org/docs/Web/API/Document/querySelector)  *  *  * @publicApi  */ @Injectable({providedIn: 'root', useFactory: createMeta, deps: []}) export class Meta {   private _dom: DomAdapter;   constructor(@Inject(DOCUMENT) private _doc: any) {     this._dom = getDOM();   }   /**    * Retrieves or creates a specific `<meta>` tag element in the current HTML document.    * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute    * values in the provided tag definition, and verifies that all other attribute values are equal.    * If an existing element is found, it is returned and is not modified in any way.    * @param tag The definition of a `<meta>` element to match or create.    * @param forceCreation True to create a new element without checking whether one already exists.    * @returns The existing element with the same attributes and values if found,    * the new element if no match is found, or `null` if the tag parameter is not defined.    */   addTag(tag: MetaDefinition, forceCreation: boolean = false): HTMLMetaElement|null {     if (!tag) return null;     return this._getOrCreateElement(tag, forceCreation);   }    /**    * Retrieves or creates a set of `<meta>` tag elements in the current HTML document.    * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute    * values in the provided tag definition, and verifies that all other attribute values are equal.    * @param tags An array of tag definitions to match or create.    * @param forceCreation True to create new elements without checking whether they already exist.    * @returns The matching elements if found, or the new elements.    */   addTags(tags: MetaDefinition[], forceCreation: boolean = false): HTMLMetaElement[] {     if (!tags) return [];     return tags.reduce((result: HTMLMetaElement[], tag: MetaDefinition) => {       if (tag) {         result.push(this._getOrCreateElement(tag, forceCreation));       }       return result;     }, []);   }    /**    * Retrieves a `<meta>` tag element in the current HTML document.    * @param attrSelector The tag attribute and value to match against, in the format    * `\"tag_attribute='value string'\"`.    * @returns The matching element, if any.    */   getTag(attrSelector: string): HTMLMetaElement|null {     if (!attrSelector) return null;     return this._doc.querySelector(`meta[${attrSelector}]`) || null;   }    /**    * Retrieves a set of `<meta>` tag elements in the current HTML document.    * @param attrSelector The tag attribute and value to match against, in the format    * `\"tag_attribute='value string'\"`.    * @returns The matching elements, if any.    */   getTags(attrSelector: string): HTMLMetaElement[] {     if (!attrSelector) return [];     const list /*NodeList*/ = this._doc.querySelectorAll(`meta[${attrSelector}]`);     return list ? [].slice.call(list) : [];   }    /**    * Modifies an existing `<meta>` tag element in the current HTML document.    * @param tag The tag description with which to replace the existing tag content.    * @param selector A tag attribute and value to match against, to identify    * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.    * If not supplied, matches a tag with the same `name` or `property` attribute value as the    * replacement tag.    * @return The modified element.    */   updateTag(tag: MetaDefinition, selector?: string): HTMLMetaElement|null {     if (!tag) return null;     selector = selector || this._parseSelector(tag);     const meta: HTMLMetaElement = this.getTag(selector)!;     if (meta) {       return this._setMetaElementAttributes(tag, meta);     }     return this._getOrCreateElement(tag, true);   }    /**    * Removes an existing `<meta>` tag element from the current HTML document.    * @param attrSelector A tag attribute and value to match against, to identify    * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.    */   removeTag(attrSelector: string): void {     this.removeTagElement(this.getTag(attrSelector)!);   }    /**    * Removes an existing `<meta>` tag element from the current HTML document.    * @param meta The tag definition to match against to identify an existing tag.    */   removeTagElement(meta: HTMLMetaElement): void {     if (meta) {       this._dom.remove(meta);     }   }    private _getOrCreateElement(meta: MetaDefinition, forceCreation: boolean = false):       HTMLMetaElement {     if (!forceCreation) {       const selector: string = this._parseSelector(meta);       // It's allowed to have multiple elements with the same name so it's not enough to       // just check that element with the same name already present on the page. We also need to       // check if element has tag attributes       const elem = this.getTags(selector).filter(elem => this._containsAttributes(meta, elem))[0];       if (elem !== undefined) return elem;     }     const element: HTMLMetaElement = this._dom.createElement('meta') as HTMLMetaElement;     this._setMetaElementAttributes(meta, element);     const head = this._doc.getElementsByTagName('head')[0];     head.appendChild(element);     return element;   }    private _setMetaElementAttributes(tag: MetaDefinition, el: HTMLMetaElement): HTMLMetaElement {     Object.keys(tag).forEach(         (prop: string) => el.setAttribute(this._getMetaKeyMap(prop), tag[prop]));     return el;   }    private _parseSelector(tag: MetaDefinition): string {     const attr: string = tag.name ? 'name' : 'property';     return `${attr}=\"${tag[attr]}\"`;   }    private _containsAttributes(tag: MetaDefinition, elem: HTMLMetaElement): boolean {     return Object.keys(tag).every(         (key: string) => elem.getAttribute(this._getMetaKeyMap(key)) === tag[key]);   }    private _getMetaKeyMap(prop: string): string {     return META_KEYS_MAP[prop] || prop;   } }  /**  * Mapping for MetaDefinition properties with their correct meta attribute names  */ const META_KEYS_MAP: {[prop: string]: string;} = {   httpEquiv: 'http-equiv' }; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT, ɵgetDOM as getDOM} from '@angular/common'; import {Inject, Injectable, ɵɵinject} from '@angular/core';   /**  * Factory to create Title service.  */ export function createTitle() {   return new Title(ɵɵinject(DOCUMENT)); }  /**  * A service that can be used to get and set the title of a current HTML document.  *  * Since an Angular application can't be bootstrapped on the entire HTML document (`<html>` tag)  * it is not possible to bind to the `text` property of the `HTMLTitleElement` elements  * (representing the `<title>` tag). Instead, this service can be used to set and get the current  * title value.  *  * @publicApi  */ @Injectable({providedIn: 'root', useFactory: createTitle, deps: []}) export class Title {   constructor(@Inject(DOCUMENT) private _doc: any) {}   /**    * Get the title of the current HTML document.    */   getTitle(): string {     return this._doc.title;   }    /**    * Set the title of the current HTML document.    * @param newTitle    */   setTitle(newTitle: string) {     this._doc.title = newTitle || '';   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵglobal as global} from '@angular/core';  const CAMEL_CASE_REGEXP = /([A-Z])/g; const DASH_CASE_REGEXP = /-([a-z])/g;   export function camelCaseToDashCase(input: string): string {   return input.replace(CAMEL_CASE_REGEXP, (...m: string[]) => '-' + m[1].toLowerCase()); }  export function dashCaseToCamelCase(input: string): string {   return input.replace(DASH_CASE_REGEXP, (...m: string[]) => m[1].toUpperCase()); }  /**  * Exports the value under a given `name` in the global property `ng`. For example `ng.probe` if  * `name` is `'probe'`.  * @param name Name under which it will be exported. Keep in mind this will be a property of the  * global `ng` object.  * @param value The value to export.  */ export function exportNgVar(name: string, value: any): void {   if (typeof COMPILED === 'undefined' || !COMPILED) {     // Note: we can't export `ng` when using closure enhanced optimization as:     // - closure declares globals itself for minified names, which sometimes clobber our `ng` global     // - we can't declare a closure extern as the namespace `ng` is already used within Google     //   for typings for angularJS (via `goog.provide('ng....')`).     const ng = global['ng'] = (global['ng'] as {[key: string]: any} | undefined) || {};     ng[name] = value;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  const win = typeof window !== 'undefined' && window || <any>{}; export {win as window}; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ApplicationRef, ComponentRef} from '@angular/core'; import {window} from './browser';  export class ChangeDetectionPerfRecord {   constructor(public msPerTick: number, public numTicks: number) {} }  /**  * Entry point for all Angular profiling-related debug tools. This object  * corresponds to the `ng.profiler` in the dev console.  */ export class AngularProfiler {   appRef: ApplicationRef;    constructor(ref: ComponentRef<any>) {     this.appRef = ref.injector.get(ApplicationRef);   }    // tslint:disable:no-console   /**    * Exercises change detection in a loop and then prints the average amount of    * time in milliseconds how long a single round of change detection takes for    * the current state of the UI. It runs a minimum of 5 rounds for a minimum    * of 500 milliseconds.    *    * Optionally, a user may pass a `config` parameter containing a map of    * options. Supported options are:    *    * `record` (boolean) - causes the profiler to record a CPU profile while    * it exercises the change detector. Example:    *    * ```    * ng.profiler.timeChangeDetection({record: true})    * ```    */   timeChangeDetection(config: any): ChangeDetectionPerfRecord {     const record = config && config['record'];     const profileName = 'Change Detection';     // Profiler is not available in Android browsers without dev tools opened     const isProfilerAvailable = window.console.profile != null;     if (record && isProfilerAvailable) {       window.console.profile(profileName);     }     const start = performanceNow();     let numTicks = 0;     while (numTicks < 5 || (performanceNow() - start) < 500) {       this.appRef.tick();       numTicks++;     }     const end = performanceNow();     if (record && isProfilerAvailable) {       window.console.profileEnd(profileName);     }     const msPerTick = (end - start) / numTicks;     window.console.log(`ran ${numTicks} change detection cycles`);     window.console.log(`${msPerTick.toFixed(2)} ms per check`);      return new ChangeDetectionPerfRecord(msPerTick, numTicks);   } }  function performanceNow() {   return window.performance && window.performance.now ? window.performance.now() :                                                         new Date().getTime(); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ComponentRef} from '@angular/core'; import {exportNgVar} from '../../dom/util'; import {AngularProfiler} from './common_tools';  const PROFILER_GLOBAL_NAME = 'profiler';  /**  * Enabled Angular debug tools that are accessible via your browser's  * developer console.  *  * Usage:  *  * 1. Open developer console (e.g. in Chrome Ctrl + Shift + j)  * 1. Type `ng.` (usually the console will show auto-complete suggestion)  * 1. Try the change detection profiler `ng.profiler.timeChangeDetection()`  *    then hit Enter.  *  * @publicApi  */ export function enableDebugTools<T>(ref: ComponentRef<T>): ComponentRef<T> {   exportNgVar(PROFILER_GLOBAL_NAME, new AngularProfiler(ref));   return ref; }  /**  * Disables Angular tools.  *  * @publicApi  */ export function disableDebugTools(): void {   exportNgVar(PROFILER_GLOBAL_NAME, null); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {APP_ID, inject, Injectable, NgModule} from '@angular/core';  export function escapeHtml(text: string): string {   const escapedText: {[k: string]: string} = {     '&': '&a;',     '\"': '&q;',     '\\'': '&s;',     '<': '&l;',     '>': '&g;',   };   return text.replace(/[&\"'<>]/g, s => escapedText[s]); }  export function unescapeHtml(text: string): string {   const unescapedText: {[k: string]: string} = {     '&a;': '&',     '&q;': '\"',     '&s;': '\\'',     '&l;': '<',     '&g;': '>',   };   return text.replace(/&[^;]+;/g, s => unescapedText[s]); }  /**  * A type-safe key to use with `TransferState`.  *  * Example:  *  * ```  * const COUNTER_KEY = makeStateKey<number>('counter');  * let value = 10;  *  * transferState.set(COUNTER_KEY, value);  * ```  *  * @publicApi  */ export type StateKey<T> = string&{   __not_a_string: never,   __value_type?: T, };  /**  * Create a `StateKey<T>` that can be used to store value of type T with `TransferState`.  *  * Example:  *  * ```  * const COUNTER_KEY = makeStateKey<number>('counter');  * let value = 10;  *  * transferState.set(COUNTER_KEY, value);  * ```  *  * @publicApi  */ export function makeStateKey<T = void>(key: string): StateKey<T> {   return key as StateKey<T>; }  /**  * A key value store that is transferred from the application on the server side to the application  * on the client side.  *  * The `TransferState` is available as an injectable token.  * On the client, just inject this token using DI and use it, it will be lazily initialized.  * On the server it's already included if `renderApplication` function is used. Otherwise, import  * the `ServerTransferStateModule` module to make the `TransferState` available.  *  * The values in the store are serialized/deserialized using JSON.stringify/JSON.parse. So only  * boolean, number, string, null and non-class objects will be serialized and deserialized in a  * non-lossy manner.  *  * @publicApi  */ @Injectable({   providedIn: 'root',   useFactory: () => {     const doc = inject(DOCUMENT);     const appId = inject(APP_ID);     const state = new TransferState();     state.store = retrieveTransferredState(doc, appId);     return state;   } }) export class TransferState {   private store: {[k: string]: unknown|undefined} = {};   private onSerializeCallbacks: {[k: string]: () => unknown | undefined} = {};    /**    * Get the value corresponding to a key. Return `defaultValue` if key is not found.    */   get<T>(key: StateKey<T>, defaultValue: T): T {     return this.store[key] !== undefined ? this.store[key] as T : defaultValue;   }    /**    * Set the value corresponding to a key.    */   set<T>(key: StateKey<T>, value: T): void {     this.store[key] = value;   }    /**    * Remove a key from the store.    */   remove<T>(key: StateKey<T>): void {     delete this.store[key];   }    /**    * Test whether a key exists in the store.    */   hasKey<T>(key: StateKey<T>) {     return this.store.hasOwnProperty(key);   }    /**    * Indicates whether the state is empty.    */   get isEmpty(): boolean {     return Object.keys(this.store).length === 0;   }    /**    * Register a callback to provide the value for a key when `toJson` is called.    */   onSerialize<T>(key: StateKey<T>, callback: () => T): void {     this.onSerializeCallbacks[key] = callback;   }    /**    * Serialize the current state of the store to JSON.    */   toJson(): string {     // Call the onSerialize callbacks and put those values into the store.     for (const key in this.onSerializeCallbacks) {       if (this.onSerializeCallbacks.hasOwnProperty(key)) {         try {           this.store[key] = this.onSerializeCallbacks[key]();         } catch (e) {           console.warn('Exception in onSerialize callback: ', e);         }       }     }     return JSON.stringify(this.store);   } }  export function retrieveTransferredState(doc: Document, appId: string) {   // Locate the script tag with the JSON data transferred from the server.   // The id of the script tag is set to the Angular appId + 'state'.   const script = doc.getElementById(appId + '-state');   let initialState = {};   if (script && script.textContent) {     try {       // Avoid using any here as it triggers lint errors in google3 (any is not allowed).       initialState = JSON.parse(unescapeHtml(script.textContent)) as {};     } catch (e) {       console.warn('Exception while restoring TransferState for app ' + appId, e);     }   }   return initialState; }  /**  * NgModule to install on the client side while using the `TransferState` to transfer state from  * server to client.  *  * @publicApi  * @deprecated no longer needed, you can inject the `TransferState` in an app without providing  *     this module.  */ @NgModule({}) export class BrowserTransferStateModule { } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵgetDOM as getDOM} from '@angular/common'; import {DebugElement, DebugNode, Predicate, Type} from '@angular/core';    /**  * Predicates for use with {@link DebugElement}'s query functions.  *  * @publicApi  */ export class By {   /**    * Match all nodes.    *    * @usageNotes    * ### Example    *    * {@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}    */   static all(): Predicate<DebugNode> {     return () => true;   }    /**    * Match elements by the given CSS selector.    *    * @usageNotes    * ### Example    *    * {@example platform-browser/dom/debug/ts/by/by.ts region='by_css'}    */   static css(selector: string): Predicate<DebugElement> {     return (debugElement) => {       return debugElement.nativeElement != null ?           elementMatches(debugElement.nativeElement, selector) :           false;     };   }    /**    * Match nodes that have the given directive present.    *    * @usageNotes    * ### Example    *    * {@example platform-browser/dom/debug/ts/by/by.ts region='by_directive'}    */   static directive(type: Type<any>): Predicate<DebugNode> {     return (debugNode) => debugNode.providerTokens!.indexOf(type) !== -1;   } }  function elementMatches(n: any, selector: string): boolean {   if (getDOM().isElementNode(n)) {     return n.matches && n.matches(selector) ||         n.msMatchesSelector && n.msMatchesSelector(selector) ||         n.webkitMatchesSelector && n.webkitMatchesSelector(selector);   }    return false; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, InjectionToken, NgModule, Optional, Provider, ɵConsole as Console} from '@angular/core';  import {EVENT_MANAGER_PLUGINS, EventManagerPlugin} from './event_manager';    /**  * Supported HammerJS recognizer event names.  */ const EVENT_NAMES = {   // pan   'pan': true,   'panstart': true,   'panmove': true,   'panend': true,   'pancancel': true,   'panleft': true,   'panright': true,   'panup': true,   'pandown': true,   // pinch   'pinch': true,   'pinchstart': true,   'pinchmove': true,   'pinchend': true,   'pinchcancel': true,   'pinchin': true,   'pinchout': true,   // press   'press': true,   'pressup': true,   // rotate   'rotate': true,   'rotatestart': true,   'rotatemove': true,   'rotateend': true,   'rotatecancel': true,   // swipe   'swipe': true,   'swipeleft': true,   'swiperight': true,   'swipeup': true,   'swipedown': true,   // tap   'tap': true,   'doubletap': true };  /**  * DI token for providing [HammerJS](https://hammerjs.github.io/) support to Angular.  * @see `HammerGestureConfig`  *  * @ngModule HammerModule  * @publicApi  */ export const HAMMER_GESTURE_CONFIG = new InjectionToken<HammerGestureConfig>('HammerGestureConfig');   /**  * Function that loads HammerJS, returning a promise that is resolved once HammerJs is loaded.  *  * @publicApi  */ export type HammerLoader = () => Promise<void>;  /**  * Injection token used to provide a {@link HammerLoader} to Angular.  *  * @publicApi  */ export const HAMMER_LOADER = new InjectionToken<HammerLoader>('HammerLoader');  export interface HammerInstance {   on(eventName: string, callback?: Function): void;   off(eventName: string, callback?: Function): void;   destroy?(): void; }  /**  * An injectable [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)  * for gesture recognition. Configures specific event recognition.  * @publicApi  */ @Injectable() export class HammerGestureConfig {   /**    * A set of supported event names for gestures to be used in Angular.    * Angular supports all built-in recognizers, as listed in    * [HammerJS documentation](https://hammerjs.github.io/).    */   events: string[] = [];    /**    * Maps gesture event names to a set of configuration options    * that specify overrides to the default values for specific properties.    *    * The key is a supported event name to be configured,    * and the options object contains a set of properties, with override values    * to be applied to the named recognizer event.    * For example, to disable recognition of the rotate event, specify    *  `{\"rotate\": {\"enable\": false}}`.    *    * Properties that are not present take the HammerJS default values.    * For information about which properties are supported for which events,    * and their allowed and default values, see    * [HammerJS documentation](https://hammerjs.github.io/).    *    */   overrides: {[key: string]: Object} = {};    /**    * Properties whose default values can be overridden for a given event.    * Different sets of properties apply to different events.    * For information about which properties are supported for which events,    * and their allowed and default values, see    * [HammerJS documentation](https://hammerjs.github.io/).    */   options?: {     cssProps?: any;     domEvents?: boolean;     enable?: boolean | ((manager: any) => boolean);     preset?: any[];     touchAction?: string;     recognizers?: any[];     inputClass?: any;     inputTarget?: EventTarget;   };    /**    * Creates a [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)    * and attaches it to a given HTML element.    * @param element The element that will recognize gestures.    * @returns A HammerJS event-manager object.    */   buildHammer(element: HTMLElement): HammerInstance {     const mc = new Hammer!(element, this.options);      mc.get('pinch').set({enable: true});     mc.get('rotate').set({enable: true});      for (const eventName in this.overrides) {       mc.get(eventName).set(this.overrides[eventName]);     }      return mc;   } }  /**  * Event plugin that adds Hammer support to an application.  *  * @ngModule HammerModule  */ @Injectable() export class HammerGesturesPlugin extends EventManagerPlugin {   private _loaderPromise: Promise<void>|null = null;    constructor(       @Inject(DOCUMENT) doc: any,       @Inject(HAMMER_GESTURE_CONFIG) private _config: HammerGestureConfig, private console: Console,       @Optional() @Inject(HAMMER_LOADER) private loader?: HammerLoader|null) {     super(doc);   }    override supports(eventName: string): boolean {     if (!EVENT_NAMES.hasOwnProperty(eventName.toLowerCase()) && !this.isCustomEvent(eventName)) {       return false;     }      if (!(window as any).Hammer && !this.loader) {       if (typeof ngDevMode === 'undefined' || ngDevMode) {         this.console.warn(             `The \"${eventName}\" event cannot be bound because Hammer.JS is not ` +             `loaded and no custom loader has been specified.`);       }       return false;     }      return true;   }    override addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {     const zone = this.manager.getZone();     eventName = eventName.toLowerCase();      // If Hammer is not present but a loader is specified, we defer adding the event listener     // until Hammer is loaded.     if (!(window as any).Hammer && this.loader) {       this._loaderPromise = this._loaderPromise || zone.runOutsideAngular(() => this.loader!());       // This `addEventListener` method returns a function to remove the added listener.       // Until Hammer is loaded, the returned function needs to *cancel* the registration rather       // than remove anything.       let cancelRegistration = false;       let deregister: Function = () => {         cancelRegistration = true;       };        zone.runOutsideAngular(           () => this._loaderPromise!                     .then(() => {                       // If Hammer isn't actually loaded when the custom loader resolves, give up.                       if (!(window as any).Hammer) {                         if (typeof ngDevMode === 'undefined' || ngDevMode) {                           this.console.warn(                               `The custom HAMMER_LOADER completed, but Hammer.JS is not present.`);                         }                         deregister = () => {};                         return;                       }                        if (!cancelRegistration) {                         // Now that Hammer is loaded and the listener is being loaded for real,                         // the deregistration function changes from canceling registration to                         // removal.                         deregister = this.addEventListener(element, eventName, handler);                       }                     })                     .catch(() => {                       if (typeof ngDevMode === 'undefined' || ngDevMode) {                         this.console.warn(                             `The \"${eventName}\" event cannot be bound because the custom ` +                             `Hammer.JS loader failed.`);                       }                       deregister = () => {};                     }));        // Return a function that *executes* `deregister` (and not `deregister` itself) so that we       // can change the behavior of `deregister` once the listener is added. Using a closure in       // this way allows us to avoid any additional data structures to track listener removal.       return () => {         deregister();       };     }      return zone.runOutsideAngular(() => {       // Creating the manager bind events, must be done outside of angular       const mc = this._config.buildHammer(element);       const callback = function(eventObj: HammerInput) {         zone.runGuarded(function() {           handler(eventObj);         });       };       mc.on(eventName, callback);       return () => {         mc.off(eventName, callback);         // destroy mc to prevent memory leak         if (typeof mc.destroy === 'function') {           mc.destroy();         }       };     });   }    isCustomEvent(eventName: string): boolean {     return this._config.events.indexOf(eventName) > -1;   } }  /**  * Adds support for HammerJS.  *  * Import this module at the root of your application so that Angular can work with  * HammerJS to detect gesture events.  *  * Note that applications still need to include the HammerJS script itself. This module  * simply sets up the coordination layer between HammerJS and Angular's EventManager.  *  * @publicApi  */ @NgModule({   providers: [     {       provide: EVENT_MANAGER_PLUGINS,       useClass: HammerGesturesPlugin,       multi: true,       deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, Console, [new Optional(), HAMMER_LOADER]]     },     {provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig, deps: []},   ] }) export class HammerModule { } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DOCUMENT} from '@angular/common'; import {forwardRef, Inject, Injectable, Injector, Sanitizer, SecurityContext, ɵ_sanitizeHtml as _sanitizeHtml, ɵ_sanitizeUrl as _sanitizeUrl, ɵallowSanitizationBypassAndThrow as allowSanitizationBypassOrThrow, ɵbypassSanitizationTrustHtml as bypassSanitizationTrustHtml, ɵbypassSanitizationTrustResourceUrl as bypassSanitizationTrustResourceUrl, ɵbypassSanitizationTrustScript as bypassSanitizationTrustScript, ɵbypassSanitizationTrustStyle as bypassSanitizationTrustStyle, ɵbypassSanitizationTrustUrl as bypassSanitizationTrustUrl, ɵBypassType as BypassType, ɵgetSanitizationBypassType as getSanitizationBypassType, ɵunwrapSafeValue as unwrapSafeValue, ɵXSS_SECURITY_URL as XSS_SECURITY_URL} from '@angular/core';  export {SecurityContext};    /**  * Marker interface for a value that's safe to use in a particular context.  *  * @publicApi  */ export interface SafeValue {}  /**  * Marker interface for a value that's safe to use as HTML.  *  * @publicApi  */ export interface SafeHtml extends SafeValue {}  /**  * Marker interface for a value that's safe to use as style (CSS).  *  * @publicApi  */ export interface SafeStyle extends SafeValue {}  /**  * Marker interface for a value that's safe to use as JavaScript.  *  * @publicApi  */ export interface SafeScript extends SafeValue {}  /**  * Marker interface for a value that's safe to use as a URL linking to a document.  *  * @publicApi  */ export interface SafeUrl extends SafeValue {}  /**  * Marker interface for a value that's safe to use as a URL to load executable code from.  *  * @publicApi  */ export interface SafeResourceUrl extends SafeValue {}  /**  * DomSanitizer helps preventing Cross Site Scripting Security bugs (XSS) by sanitizing  * values to be safe to use in the different DOM contexts.  *  * For example, when binding a URL in an `<a [href]=\"someValue\">` hyperlink, `someValue` will be  * sanitized so that an attacker cannot inject e.g. a `javascript:` URL that would execute code on  * the website.  *  * In specific situations, it might be necessary to disable sanitization, for example if the  * application genuinely needs to produce a `javascript:` style link with a dynamic value in it.  * Users can bypass security by constructing a value with one of the `bypassSecurityTrust...`  * methods, and then binding to that value from the template.  *  * These situations should be very rare, and extraordinary care must be taken to avoid creating a  * Cross Site Scripting (XSS) security bug!  *  * When using `bypassSecurityTrust...`, make sure to call the method as early as possible and as  * close as possible to the source of the value, to make it easy to verify no security bug is  * created by its use.  *  * It is not required (and not recommended) to bypass security if the value is safe, e.g. a URL that  * does not start with a suspicious protocol, or an HTML snippet that does not contain dangerous  * code. The sanitizer leaves safe values intact.  *  * @security Calling any of the `bypassSecurityTrust...` APIs disables Angular's built-in  * sanitization for the value passed in. Carefully check and audit all values and code paths going  * into this call. Make sure any user data is appropriately escaped for this security context.  * For more detail, see the [Security Guide](https://g.co/ng/security).  *  * @publicApi  */ @Injectable({providedIn: 'root', useExisting: forwardRef(() => DomSanitizerImpl)}) export abstract class DomSanitizer implements Sanitizer {   /**    * Gets a safe value from either a known safe value or a value with unknown safety.    *    * If the given value is already a `SafeValue`, this method returns the unwrapped value.    * If the security context is HTML and the given value is a plain string, this method    * sanitizes the string, removing any potentially unsafe content.    * For any other security context, this method throws an error if provided    * with a plain string.    */   abstract sanitize(context: SecurityContext, value: SafeValue|string|null): string|null;    /**    * Bypass security and trust the given value to be safe HTML. Only use this when the bound HTML    * is unsafe (e.g. contains `<script>` tags) and the code should be executed. The sanitizer will    * leave safe HTML intact, so in most situations this method should not be used.    *    * **WARNING:** calling this method with untrusted user data exposes your application to XSS    * security risks!    */   abstract bypassSecurityTrustHtml(value: string): SafeHtml;    /**    * Bypass security and trust the given value to be safe style value (CSS).    *    * **WARNING:** calling this method with untrusted user data exposes your application to XSS    * security risks!    */   abstract bypassSecurityTrustStyle(value: string): SafeStyle;    /**    * Bypass security and trust the given value to be safe JavaScript.    *    * **WARNING:** calling this method with untrusted user data exposes your application to XSS    * security risks!    */   abstract bypassSecurityTrustScript(value: string): SafeScript;    /**    * Bypass security and trust the given value to be a safe style URL, i.e. a value that can be used    * in hyperlinks or `<img src>`.    *    * **WARNING:** calling this method with untrusted user data exposes your application to XSS    * security risks!    */   abstract bypassSecurityTrustUrl(value: string): SafeUrl;    /**    * Bypass security and trust the given value to be a safe resource URL, i.e. a location that may    * be used to load executable code from, like `<script src>`, or `<iframe src>`.    *    * **WARNING:** calling this method with untrusted user data exposes your application to XSS    * security risks!    */   abstract bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl; }  export function domSanitizerImplFactory(injector: Injector) {   return new DomSanitizerImpl(injector.get(DOCUMENT)); }  @Injectable({providedIn: 'root', useFactory: domSanitizerImplFactory, deps: [Injector]}) export class DomSanitizerImpl extends DomSanitizer {   constructor(@Inject(DOCUMENT) private _doc: any) {     super();   }    override sanitize(ctx: SecurityContext, value: SafeValue|string|null): string|null {     if (value == null) return null;     switch (ctx) {       case SecurityContext.NONE:         return value as string;       case SecurityContext.HTML:         if (allowSanitizationBypassOrThrow(value, BypassType.Html)) {           return unwrapSafeValue(value);         }         return _sanitizeHtml(this._doc, String(value)).toString();       case SecurityContext.STYLE:         if (allowSanitizationBypassOrThrow(value, BypassType.Style)) {           return unwrapSafeValue(value);         }         return value as string;       case SecurityContext.SCRIPT:         if (allowSanitizationBypassOrThrow(value, BypassType.Script)) {           return unwrapSafeValue(value);         }         throw new Error('unsafe value used in a script context');       case SecurityContext.URL:         if (allowSanitizationBypassOrThrow(value, BypassType.Url)) {           return unwrapSafeValue(value);         }         return _sanitizeUrl(String(value));       case SecurityContext.RESOURCE_URL:         if (allowSanitizationBypassOrThrow(value, BypassType.ResourceUrl)) {           return unwrapSafeValue(value);         }         throw new Error(`unsafe value used in a resource URL context (see ${XSS_SECURITY_URL})`);       default:         throw new Error(`Unexpected SecurityContext ${ctx} (see ${XSS_SECURITY_URL})`);     }   }    override bypassSecurityTrustHtml(value: string): SafeHtml {     return bypassSanitizationTrustHtml(value);   }   override bypassSecurityTrustStyle(value: string): SafeStyle {     return bypassSanitizationTrustStyle(value);   }   override bypassSecurityTrustScript(value: string): SafeScript {     return bypassSanitizationTrustScript(value);   }   override bypassSecurityTrustUrl(value: string): SafeUrl {     return bypassSanitizationTrustUrl(value);   }   override bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl {     return bypassSanitizationTrustResourceUrl(value);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the platform-browser package.  */  import {Version} from '@angular/core';  /**  * @publicApi  */ export const VERSION = new Version('15.2.0'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/platform-browser'; // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["DomAdapter","setRootDomAdapter","parseCookieValue","getDOM","global","NG_DEV_MODE","i1.EventManager","i2.DomSharedStylesHost","internalCreateApplication","PLATFORM_BROWSER_ID","TESTABILITY_GETTER","TESTABILITY","INJECTOR_SCOPE","window","Console","allowSanitizationBypassOrThrow","unwrapSafeValue","_sanitizeHtml","_sanitizeUrl","XSS_SECURITY_URL","bypassSanitizationTrustHtml","bypassSanitizationTrustStyle","bypassSanitizationTrustScript","bypassSanitizationTrustUrl","bypassSanitizationTrustResourceUrl"],"mappings":";;;;;;;;;;;AAYA;;;;;AAKG;AACG,MAAgB,wBAAyB,SAAQA,WAAU,CAAA;AAAjE,IAAA,WAAA,GAAA;;QACW,IAAiB,CAAA,iBAAA,GAAY,IAAI,CAAC;KAC5C;AAAA;;ACRD;;;;;AAKG;AACH;AACM,MAAO,iBAAkB,SAAQ,wBAAwB,CAAA;AAC7D,IAAA,OAAO,WAAW,GAAA;AAChB,QAAAC,kBAAiB,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;KAC5C;AAED,IAAA,WAAW,CAAC,EAAQ,EAAE,GAAQ,EAAE,QAAa,EAAA;QAC3C,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;;;AAG1C,QAAA,OAAO,MAAK;YACV,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC/C,SAAC,CAAC;KACH;IACD,aAAa,CAAC,EAAQ,EAAE,GAAQ,EAAA;AAC9B,QAAA,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;KACvB;AACD,IAAA,MAAM,CAAC,IAAU,EAAA;QACf,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACnC,SAAA;KACF;IACD,aAAa,CAAC,OAAe,EAAE,GAAc,EAAA;AAC3C,QAAA,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACvC,QAAA,OAAO,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KACnC;IACD,kBAAkB,GAAA;QAChB,OAAO,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;KAChE;IACD,kBAAkB,GAAA;AAChB,QAAA,OAAO,QAAQ,CAAC;KACjB;AAED,IAAA,aAAa,CAAC,IAAU,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC;KAC5C;AAED,IAAA,YAAY,CAAC,IAAS,EAAA;QACpB,OAAO,IAAI,YAAY,gBAAgB,CAAC;KACzC;;IAGD,oBAAoB,CAAC,GAAa,EAAE,MAAc,EAAA;QAChD,IAAI,MAAM,KAAK,QAAQ,EAAE;AACvB,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;QACD,IAAI,MAAM,KAAK,UAAU,EAAE;AACzB,YAAA,OAAO,GAAG,CAAC;AACZ,SAAA;QACD,IAAI,MAAM,KAAK,MAAM,EAAE;YACrB,OAAO,GAAG,CAAC,IAAI,CAAC;AACjB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AACD,IAAA,WAAW,CAAC,GAAa,EAAA;AACvB,QAAA,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;AAClC,QAAA,OAAO,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;KACjD;IACD,gBAAgB,GAAA;QACd,WAAW,GAAG,IAAI,CAAC;KACpB;IACD,YAAY,GAAA;AACV,QAAA,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;KACnC;AACD,IAAA,SAAS,CAAC,IAAY,EAAA;QACpB,OAAOC,iBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAChD;AACF,CAAA;AAED,IAAI,WAAW,GAAqB,IAAI,CAAC;AACzC,SAAS,kBAAkB,GAAA;IACzB,WAAW,GAAG,WAAW,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC5D,IAAA,OAAO,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAC/D,CAAC;AAED;AACA,IAAI,cAA2C,CAAC;AAChD,SAAS,YAAY,CAAC,GAAQ,EAAA;IAC5B,cAAc,GAAG,cAAc,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC/D,IAAA,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACzC,IAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;AACzC,IAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,QAAQ,GAAG,CAAI,CAAA,EAAA,QAAQ,EAAE,CAAC;AAChE;;ACzFA;;;AAGG;MACU,aAAa,GAAG,IAAI,cAAc,CAAC,eAAe,EAAE;SAEjD,qBAAqB,CAAC,YAAoB,EAAE,QAAa,EAAE,QAAkB,EAAA;AAC3F,IAAA,OAAO,MAAK;;;QAGV,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAK;AACxD,YAAA,MAAM,GAAG,GAAGC,OAAM,EAAE,CAAC;YACrB,MAAM,MAAM,GACR,QAAQ,CAAC,gBAAgB,CAAC,CAAwB,qBAAA,EAAA,YAAY,CAAI,EAAA,CAAA,CAAC,CAAC;AACxE,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,aAAA;AACH,SAAC,CAAC,CAAC;AACL,KAAC,CAAC;AACJ,CAAC;AAEM,MAAM,2BAA2B,GAAqB;AAC3D,IAAA;AACE,QAAA,OAAO,EAAE,eAAe;AACxB,QAAA,UAAU,EAAE,qBAAqB;AACjC,QAAA,IAAI,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACzC,QAAA,KAAK,EAAE,IAAI;AACZ,KAAA;CACF;;MC5BY,qBAAqB,CAAA;AAChC,IAAA,WAAW,CAAC,QAA6B,EAAA;QACvCC,OAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAS,EAAE,eAAA,GAA2B,IAAI,KAAI;YAC/E,MAAM,WAAW,GAAG,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YAC1E,IAAI,WAAW,IAAI,IAAI,EAAE;AACvB,gBAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC5D,aAAA;AACD,YAAA,OAAO,WAAW,CAAC;AACrB,SAAC,CAAC;QAEFA,OAAM,CAAC,4BAA4B,CAAC,GAAG,MAAM,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QAE5EA,OAAM,CAAC,2BAA2B,CAAC,GAAG,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;AAE1E,QAAA,MAAM,aAAa,GAAG,CAAC,QAAa,uBAAsB;AACxD,YAAA,MAAM,aAAa,GAAGA,OAAM,CAAC,4BAA4B,CAAC,EAAE,CAAC;AAC7D,YAAA,IAAI,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC;YACjC,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,YAAA,MAAM,SAAS,GAAG,UAAS,QAAa,oBAAkB;AACxD,gBAAA,OAAO,GAAG,OAAO,IAAI,QAAQ,CAAC;AAC9B,gBAAA,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,IAAI,CAAC,EAAE;oBACd,QAAQ,CAAC,OAAO,CAAC,CAAC;AACnB,iBAAA;AACH,aAAC,CAAC;AACF,YAAA,aAAa,CAAC,OAAO,CAAC,UAAS,WAAgB,oBAAkB;AAC/D,gBAAA,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACpC,aAAC,CAAC,CAAC;AACL,SAAC,CAAC;AAEF,QAAA,IAAI,CAACA,OAAM,CAAC,sBAAsB,CAAC,EAAE;AACnC,YAAAA,OAAM,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC;AACrC,SAAA;QACDA,OAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACpD;AAED,IAAA,qBAAqB,CAAC,QAA6B,EAAE,IAAS,EAAE,eAAwB,EAAA;QAEtF,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QACD,MAAM,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,YAAA,OAAO,CAAC,CAAC;AACV,SAAA;aAAM,IAAI,CAAC,eAAe,EAAE;AAC3B,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,IAAID,OAAM,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AAC/B,YAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAQ,IAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrE,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;KACvE;AACF;;ACpDD;;AAEG;MAEU,UAAU,CAAA;IACrB,KAAK,GAAA;QACH,OAAO,IAAI,cAAc,EAAE,CAAC;KAC7B;;kHAHU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;sHAAV,UAAU,EAAA,CAAA,CAAA;sGAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;;ACHX;;;;AAIG;MACU,qBAAqB,GAC9B,IAAI,cAAc,CAAuB,qBAAqB,EAAE;AAEpE;;;;;AAKG;MAEU,YAAY,CAAA;AAIvB;;AAEG;IACH,WAA2C,CAAA,OAA6B,EAAU,KAAa,EAAA;QAAb,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;AALvF,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,GAAG,EAA8B,CAAC;AAMjE,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;KAC3C;AAED;;;;;;;;AAQG;AACH,IAAA,gBAAgB,CAAC,OAAoB,EAAE,SAAiB,EAAE,OAAiB,EAAA;QACzE,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;KAC7D;AAED;;;;;;;;;AASG;AACH,IAAA,sBAAsB,CAAC,MAAc,EAAE,SAAiB,EAAE,OAAiB,EAAA;QACzE,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;KAClE;AAED;;AAEG;IACH,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;;AAGD,IAAA,cAAc,CAAC,SAAiB,EAAA;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACtD,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBAC9B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC/C,gBAAA,OAAO,MAAM,CAAC;AACf,aAAA;AACF,SAAA;AACD,QAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,SAAS,CAAA,CAAE,CAAC,CAAC;KACzE;;AAhEU,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,kBAOH,qBAAqB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAP9B,YAAY,EAAA,CAAA,CAAA;sGAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;0BAQI,MAAM;2BAAC,qBAAqB,CAAA;;MA4DrB,kBAAkB,CAAA;AACtC,IAAA,WAAA,CAAoB,IAAS,EAAA;QAAT,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;KAAI;AASjC,IAAA,sBAAsB,CAAC,OAAe,EAAE,SAAiB,EAAE,OAAiB,EAAA;AAC1E,QAAA,MAAM,MAAM,GAAgBA,OAAM,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,CAAA,yBAAA,EAA4B,MAAM,CAAc,WAAA,EAAA,SAAS,CAAE,CAAA,CAAC,CAAC;AAC9E,SAAA;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;KAC1D;AACF;;MClGY,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,GAAG,EAAyD,CAAC;AAmDhG,KAAA;AAjDC,IAAA,SAAS,CAAC,MAAgB,EAAA;AACxB,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAEnD,IAAI,UAAU,KAAK,CAAC,EAAE;AACpB,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1B,aAAA;AACF,SAAA;KACF;AAED,IAAA,YAAY,CAAC,MAAgB,EAAA;AAC3B,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YAEpD,IAAI,UAAU,KAAK,CAAC,EAAE;AACpB,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,aAAA;AACF,SAAA;KACF;IAED,cAAc,CAAC,KAAa,EAAA,GAAU;IAEtC,YAAY,CAAC,KAAa,EAAA,GAAU;IAEpC,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KAC/B;IAEO,gBAAgB,CAAC,KAAa,EAAE,KAAa,EAAA;AACnD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5B,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,KAAK,IAAI,KAAK,CAAC;QAEf,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACvB,SAAA;AAAM,aAAA;AACL,YAAA,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACd;IAED,WAAW,GAAA;AACT,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KACzB;;wHAnDU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4HAAhB,gBAAgB,EAAA,CAAA,CAAA;sGAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;AAwDL,MAAO,mBAAoB,SAAQ,gBAAgB,CAAA;AAKvD,IAAA,WAAA,CAA+C,GAAQ,EAAA;AACrD,QAAA,KAAK,EAAE,CAAC;QADqC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAK;;AAHtC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;AAC1D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,GAAG,EAAQ,CAAC;QAIlC,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;AAEQ,IAAA,YAAY,CAAC,KAAa,EAAA;AACjC,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClC,SAAA;KACF;AAEQ,IAAA,cAAc,CAAC,KAAa,EAAA;AACnC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,QAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACxB;IAEQ,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;AAED,IAAA,OAAO,CAAC,QAAc,EAAA;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAE7B,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACtC,SAAA;KACF;AAED,IAAA,UAAU,CAAC,QAAc,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KACjC;IAEO,cAAc,CAAC,IAAU,EAAE,KAAa,EAAA;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAChD,QAAA,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1B,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACrC,SAAA;KACF;IAEO,cAAc,GAAA;AACpB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,SAAS,CAAC,KAAK,EAAE,CAAC;;QAElB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC9B;;AA3DU,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBAKV,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+HALjB,mBAAmB,EAAA,CAAA,CAAA;sGAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;0BAMI,MAAM;2BAAC,QAAQ,CAAA;;;AC3DjB,MAAA,cAAc,GAA2B;AACpD,IAAA,KAAK,EAAE,4BAA4B;AACnC,IAAA,OAAO,EAAE,8BAA8B;AACvC,IAAA,OAAO,EAAE,8BAA8B;AACvC,IAAA,KAAK,EAAE,sCAAsC;AAC7C,IAAA,OAAO,EAAE,+BAA+B;AACxC,IAAA,MAAM,EAAE,gCAAgC;EACxC;AAEF,MAAM,eAAe,GAAG,SAAS,CAAC;AAClC,MAAME,aAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC;AAE7D,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AACpC,MAAM,SAAS,GAAG,CAAW,QAAA,EAAA,kBAAkB,EAAE,CAAC;AAClD,MAAM,YAAY,GAAG,CAAc,WAAA,EAAA,kBAAkB,EAAE,CAAC;AAE/D;;AAEG;AACH,MAAM,0CAA0C,GAAG,KAAK,CAAC;AAEzD;;;;;;AAMG;MACU,kCAAkC,GAC3C,IAAI,cAAc,CAAU,2BAA2B,EAAE;AACvD,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,0CAA0C;AAC1D,CAAA,EAAE;AAED,SAAU,oBAAoB,CAAC,gBAAwB,EAAA;IAC3D,OAAO,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AACjE,CAAC;AAEK,SAAU,iBAAiB,CAAC,gBAAwB,EAAA;IACxD,OAAO,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAC9D,CAAC;AAEe,SAAA,aAAa,CAAC,MAAc,EAAE,MAA8B,EAAA;;;IAG1E,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,sBAAsB,CAAC,YAAsB,EAAA;;;;;IAKpD,OAAO,CAAC,KAAU,KAAI;;;;;QAKpB,IAAI,KAAK,KAAK,cAAc,EAAE;AAC5B,YAAA,OAAO,YAAY,CAAC;AACrB,SAAA;AAED,QAAA,MAAM,oBAAoB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,oBAAoB,KAAK,KAAK,EAAE;;YAElC,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,YAAA,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;AACnB,KAAC,CAAC;AACJ,CAAC;MAGY,mBAAmB,CAAA;AAK9B,IAAA,WAAA,CACY,YAA0B,EAAU,gBAAqC,EACzD,KAAa,EACe,yBAAkC,EAAA;QAF9E,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAAU,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAqB;QACzD,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QACe,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAAS;AAPlF,QAAA,IAAA,CAAA,gBAAgB,GACpB,IAAI,GAAG,EAA0E,CAAC;QAOpF,IAAI,CAAC,eAAe,GAAG,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC;KAC9D;IAED,cAAc,CAAC,OAAY,EAAE,IAAwB,EAAA;AACnD,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE;YACrB,OAAO,IAAI,CAAC,eAAe,CAAC;AAC7B,SAAA;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;;;QAIzD,IAAI,QAAQ,YAAY,iCAAiC,EAAE;AACzD,YAAA,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC/B,SAAA;aAAM,IAAI,QAAQ,YAAY,4BAA4B,EAAE;YAC3D,QAAQ,CAAC,WAAW,EAAE,CAAC;AACxB,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC;KACjB;IAEO,mBAAmB,CAAC,OAAY,EAAE,IAAmB,EAAA;AAC3D,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC/C,IAAI,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACvC,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC/C,YAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC;YAEjE,QAAQ,IAAI,CAAC,aAAa;gBACxB,KAAK,iBAAiB,CAAC,QAAQ;AAC7B,oBAAA,QAAQ,GAAG,IAAI,iCAAiC,CAC5C,YAAY,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;oBACjF,MAAM;gBACR,KAAK,iBAAiB,CAAC,SAAS;oBAC9B,OAAO,IAAI,iBAAiB,CAAC,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC9E,gBAAA;AACE,oBAAA,QAAQ,GAAG,IAAI,4BAA4B,CACvC,YAAY,EAAE,gBAAgB,EAAE,IAAI,EAAE,yBAAyB,CAAC,CAAC;oBACrE,MAAM;AACT,aAAA;AAED,YAAA,QAAQ,CAAC,SAAS,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5D,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzC,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC;KACjB;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;KAC/B;AAED,IAAA,KAAK,MAAK;AACV,IAAA,GAAG,MAAK;;2HAhEG,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAOlB,MAAM,EAAA,EAAA,EAAA,KAAA,EACN,kCAAkC,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+HARnC,mBAAmB,EAAA,CAAA,CAAA;sGAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;0BAQJ,MAAM;2BAAC,MAAM,CAAA;;0BACb,MAAM;2BAAC,kCAAkC,CAAA;;AA2DhD,MAAM,mBAAmB,CAAA;AAGvB,IAAA,WAAA,CAAoB,YAA0B,EAAA;QAA1B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAF9C,QAAA,IAAA,CAAA,IAAI,GAAyB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAMjD,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;KAJ+B;AAElD,IAAA,OAAO,MAAW;IAIlB,aAAa,CAAC,IAAY,EAAE,SAAkB,EAAA;AAC5C,QAAA,IAAI,SAAS,EAAE;;;;;;;;;;AAUb,YAAA,OAAO,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,IAAI,CAAC,CAAC;AAC/E,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KACrC;AAED,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KACtC;AAED,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,OAAO,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KACvC;IAED,WAAW,CAAC,MAAW,EAAE,QAAa,EAAA;AACpC,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;AACtE,QAAA,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KACpC;AAED,IAAA,YAAY,CAAC,MAAW,EAAE,QAAa,EAAE,QAAa,EAAA;AACpD,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;AACtE,YAAA,YAAY,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/C,SAAA;KACF;IAED,WAAW,CAAC,MAAW,EAAE,QAAa,EAAA;AACpC,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC9B,SAAA;KACF;IAED,iBAAiB,CAAC,cAA0B,EAAE,eAAyB,EAAA;AACrE,QAAA,IAAI,EAAE,GAAQ,OAAO,cAAc,KAAK,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC;AACtC,YAAA,cAAc,CAAC;QAClE,IAAI,CAAC,EAAE,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,iBAAiB,cAAc,CAAA,4BAAA,CAA8B,CAAC,CAAC;AAChF,SAAA;QACD,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC;AACrB,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,UAAU,CAAC,IAAS,EAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAED,IAAA,WAAW,CAAC,IAAS,EAAA;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;AAED,IAAA,YAAY,CAAC,EAAO,EAAE,IAAY,EAAE,KAAa,EAAE,SAAkB,EAAA;AACnE,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,GAAG,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC;AAC9B,YAAA,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;AAC/C,YAAA,IAAI,YAAY,EAAE;gBAChB,EAAE,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9C,aAAA;AAAM,iBAAA;AACL,gBAAA,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9B,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9B,SAAA;KACF;AAED,IAAA,eAAe,CAAC,EAAO,EAAE,IAAY,EAAE,SAAkB,EAAA;AACvD,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;AAC/C,YAAA,IAAI,YAAY,EAAE;AAChB,gBAAA,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC1C,aAAA;AAAM,iBAAA;gBACL,EAAE,CAAC,eAAe,CAAC,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,IAAI,CAAE,CAAA,CAAC,CAAC;AAC5C,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAA;KACF;IAED,QAAQ,CAAC,EAAO,EAAE,IAAY,EAAA;AAC5B,QAAA,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACxB;IAED,WAAW,CAAC,EAAO,EAAE,IAAY,EAAA;AAC/B,QAAA,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC3B;AAED,IAAA,QAAQ,CAAC,EAAO,EAAE,KAAa,EAAE,KAAU,EAAE,KAA0B,EAAA;QACrE,IAAI,KAAK,IAAI,mBAAmB,CAAC,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,EAAE;YAC1E,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,mBAAmB,CAAC,SAAS,GAAG,WAAW,GAAG,EAAE,CAAC,CAAC;AAC9F,SAAA;AAAM,aAAA;AACL,YAAA,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACzB,SAAA;KACF;AAED,IAAA,WAAW,CAAC,EAAO,EAAE,KAAa,EAAE,KAA0B,EAAA;AAC5D,QAAA,IAAI,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE;AACxC,YAAA,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAChC,SAAA;AAAM,aAAA;;;AAGL,YAAA,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACtB,SAAA;KACF;AAED,IAAA,WAAW,CAAC,EAAO,EAAE,IAAY,EAAE,KAAU,EAAA;AAC3C,QAAAF,aAAW,IAAI,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACtD,QAAA,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;KAClB;IAED,QAAQ,CAAC,IAAS,EAAE,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;AAED,IAAA,MAAM,CAAC,MAAsC,EAAE,KAAa,EAAE,QAAiC,EAAA;AAE7F,QAAAA,aAAW,IAAI,oBAAoB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACvD,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,YAAA,OAAmB,IAAI,CAAC,YAAY,CAAC,sBAAsB,CACvD,MAAM,EAAE,KAAK,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtD,SAAA;AACD,QAAA,OAAmB,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAC1C,MAAM,EAAE,KAAK,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAe,CAAC;KAC3E;AACF,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;AAChD,SAAS,oBAAoB,CAAC,IAAY,EAAE,QAAgB,EAAA;IAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;AACtC,QAAA,MAAM,IAAI,KAAK,CAAC,CAAwB,qBAAA,EAAA,QAAQ,IAAI,IAAI,CAAA;;qEAGpD,IAAI,CAAA,8HAAA,CAAgI,CAAC,CAAC;AAC3I,KAAA;AACH,CAAC;AAGD,SAAS,cAAc,CAAC,IAAS,EAAA;IAC/B,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;AACnE,CAAC;AAED,MAAM,iBAAkB,SAAQ,mBAAmB,CAAA;AAGjD,IAAA,WAAA,CACI,YAA0B,EAAU,gBAAqC,EACjE,MAAW,EAAE,SAAwB,EAAA;QAC/C,KAAK,CAAC,YAAY,CAAC,CAAC;QAFkB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAqB;QACjE,IAAM,CAAA,MAAA,GAAN,MAAM,CAAK;AAErB,QAAA,IAAI,CAAC,UAAU,GAAI,MAAc,CAAC,YAAY,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;QAE/D,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/C,QAAA,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AAE7D,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAChD,YAAA,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACtC,SAAA;KACF;AAEO,IAAA,gBAAgB,CAAC,IAAS,EAAA;AAChC,QAAA,OAAO,IAAI,KAAK,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KACtD;IAEQ,WAAW,CAAC,MAAW,EAAE,QAAa,EAAA;AAC7C,QAAA,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;KACnE;AACQ,IAAA,YAAY,CAAC,MAAW,EAAE,QAAa,EAAE,QAAa,EAAA;AAC7D,QAAA,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;KAC9E;IACQ,WAAW,CAAC,MAAW,EAAE,QAAa,EAAA;AAC7C,QAAA,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;KACnE;AACQ,IAAA,UAAU,CAAC,IAAS,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC7E;IAEQ,OAAO,GAAA;QACd,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACnD;AACF,CAAA;AAED,MAAM,4BAA6B,SAAQ,mBAAmB,CAAA;AAK5D,IAAA,WAAA,CACI,YAA0B,EACT,gBAAqC,EACtD,SAAwB,EAChB,yBAAkC,EAC1C,MAAM,GAAG,SAAS,CAAC,EAAE,EAAA;QAEvB,KAAK,CAAC,YAAY,CAAC,CAAC;QALD,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAqB;QAE9C,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAAS;QAPtC,IAAkB,CAAA,kBAAA,GAAG,CAAC,CAAC;QAW7B,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;KACvD;IAED,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IAEQ,OAAO,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACnC,OAAO;AACR,SAAA;QAED,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,SAAS,IAAI,CAAC;AACpB,SAAA;KACF;AACF,CAAA;AAED,MAAM,iCAAkC,SAAQ,4BAA4B,CAAA;IAI1E,WACI,CAAA,YAA0B,EAAE,gBAAqC,EAAE,SAAwB,EAC3F,KAAa,EAAE,yBAAkC,EAAA;QACnD,MAAM,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC;QAC1C,KAAK,CAAC,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,yBAAyB,EAAE,MAAM,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;KAC3C;AAED,IAAA,WAAW,CAAC,OAAY,EAAA;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;KAC/C;IAEQ,aAAa,CAAC,MAAW,EAAE,IAAY,EAAA;QAC9C,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC7C,QAAA,OAAO,EAAE,CAAC;KACX;AACF;;AC/YK,MAAO,eAAgB,SAAQ,kBAAkB,CAAA;AACrD,IAAA,WAAA,CAA8B,GAAQ,EAAA;QACpC,KAAK,CAAC,GAAG,CAAC,CAAC;KACZ;;;AAIQ,IAAA,QAAQ,CAAC,SAAiB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC;KACb;AAEQ,IAAA,gBAAgB,CAAC,OAAoB,EAAE,SAAiB,EAAE,OAAiB,EAAA;QAClF,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAwB,EAAE,KAAK,CAAC,CAAC;AACrE,QAAA,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAwB,CAAC,CAAC;KACrF;AAED,IAAA,mBAAmB,CAAC,MAAW,EAAE,SAAiB,EAAE,QAAkB,EAAA;QACpE,OAAO,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAyB,CAAC,CAAC;KACzE;;AAlBU,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBACN,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2HADjB,eAAe,EAAA,CAAA,CAAA;sGAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;0BAEI,MAAM;2BAAC,QAAQ,CAAA;;;ACF9B;;AAEG;AACH,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D;AACA;AACA,MAAM,OAAO,GAA0B;AACrC,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,MAAM,EAAE,WAAW;AACnB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,MAAM,EAAE,WAAW;AACnB,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF;;AAEG;AACH,MAAM,oBAAoB,GAAuD;IAC/E,KAAK,EAAE,CAAC,KAAoB,KAAK,KAAK,CAAC,MAAM;IAC7C,SAAS,EAAE,CAAC,KAAoB,KAAK,KAAK,CAAC,OAAO;IAClD,MAAM,EAAE,CAAC,KAAoB,KAAK,KAAK,CAAC,OAAO;IAC/C,OAAO,EAAE,CAAC,KAAoB,KAAK,KAAK,CAAC,QAAQ;CAClD,CAAC;AAEF;;;AAGG;AAEG,MAAO,eAAgB,SAAQ,kBAAkB,CAAA;AACrD;;;AAGG;AACH,IAAA,WAAA,CAA8B,GAAQ,EAAA;QACpC,KAAK,CAAC,GAAG,CAAC,CAAC;KACZ;AAED;;;;AAIG;AACM,IAAA,QAAQ,CAAC,SAAiB,EAAA;QACjC,OAAO,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;KAC1D;AAED;;;;;;;AAOG;AACM,IAAA,gBAAgB,CAAC,OAAoB,EAAE,SAAiB,EAAE,OAAiB,EAAA;QAClF,MAAM,WAAW,GAAG,eAAe,CAAC,cAAc,CAAC,SAAS,CAAE,CAAC;QAE/D,MAAM,cAAc,GAChB,eAAe,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAE3F,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,iBAAiB,CAAC,MAAK;AACnD,YAAA,OAAOF,OAAM,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC;AACpF,SAAC,CAAC,CAAC;KACJ;AAED;;;;;;;;AAQG;IACH,OAAO,cAAc,CAAC,SAAiB,EAAA;QACrC,MAAM,KAAK,GAAa,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE3D,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,OAAO,CAAC,EAAE;AACrF,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,MAAM,GAAG,GAAG,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAG,CAAC,CAAC;QAExD,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACnC,QAAA,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE;AACf,YAAA,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACxB,OAAO,GAAG,OAAO,CAAC;AACnB,SAAA;AACD,QAAA,aAAa,CAAC,OAAO,CAAC,YAAY,IAAG;YACnC,MAAM,KAAK,GAAW,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAClD,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,gBAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvB,gBAAA,OAAO,IAAI,YAAY,GAAG,GAAG,CAAC;AAC/B,aAAA;AACH,SAAC,CAAC,CAAC;QACH,OAAO,IAAI,GAAG,CAAC;QAEf,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;;AAEzC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;;;;QAKD,MAAM,MAAM,GAA4C,EAAS,CAAC;AAClE,QAAA,MAAM,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC;AACtC,QAAA,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;AAC5B,QAAA,OAAO,MAAM,CAAC;KACf;AAED;;;;;;;;;AASG;AACH,IAAA,OAAO,qBAAqB,CAAC,KAAoB,EAAE,WAAmB,EAAA;AACpE,QAAA,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC;QAC9C,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;AACrC,YAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;YACrB,GAAG,GAAG,OAAO,CAAC;AACf,SAAA;;AAED,QAAA,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK,CAAC;AAC9C,QAAA,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,OAAO,KAAK,GAAG,EAAE;AACnB,YAAA,OAAO,GAAG,OAAO,CAAC;AACnB,SAAA;aAAM,IAAI,OAAO,KAAK,GAAG,EAAE;AAC1B,YAAA,OAAO,GAAG,KAAK,CAAC;AACjB,SAAA;AACD,QAAA,aAAa,CAAC,OAAO,CAAC,YAAY,IAAG;YACnC,IAAI,YAAY,KAAK,OAAO,EAAE;AAC5B,gBAAA,MAAM,cAAc,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAC1D,gBAAA,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;AACzB,oBAAA,GAAG,IAAI,YAAY,GAAG,GAAG,CAAC;AAC3B,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;QACH,GAAG,IAAI,OAAO,CAAC;QACf,OAAO,GAAG,KAAK,WAAW,CAAC;KAC5B;AAED;;;;;;AAMG;AACH,IAAA,OAAO,aAAa,CAAC,OAAe,EAAE,OAAiB,EAAE,IAAY,EAAA;QACnE,OAAO,CAAC,KAAoB,KAAI;YAC9B,IAAI,eAAe,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;gBACzD,IAAI,CAAC,UAAU,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,aAAA;AACH,SAAC,CAAC;KACH;;IAGD,OAAO,aAAa,CAAC,OAAe,EAAA;;AAElC,QAAA,QAAQ,OAAO;AACb,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,QAAQ,CAAC;AAClB,YAAA;AACE,gBAAA,OAAO,OAAO,CAAC;AAClB,SAAA;KACF;;AAlJU,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBAKN,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2HALjB,eAAe,EAAA,CAAA,CAAA;sGAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;0BAMI,MAAM;2BAAC,QAAQ,CAAA;;;ACnC9B,MAAM,WAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC;AAcpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DG;AACa,SAAA,oBAAoB,CAChC,aAA4B,EAAE,OAA2B,EAAA;AAC3D,IAAA,OAAOK,0BAAyB,CAAC,EAAC,aAAa,EAAE,GAAG,qBAAqB,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC;AACvF,CAAC;AAED;;;;;;;;;;;AAWG;AACG,SAAU,iBAAiB,CAAC,OAA2B,EAAA;AAC3D,IAAA,OAAOA,0BAAyB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,qBAAqB,CAAC,OAA2B,EAAA;IACxD,OAAO;AACL,QAAA,YAAY,EAAE;AACZ,YAAA,GAAG,wBAAwB;AAC3B,YAAA,IAAI,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC;AAC9B,SAAA;AACD,QAAA,iBAAiB,EAAE,mCAAmC;KACvD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;AAUG;SACa,+BAA+B,GAAA;;;AAG7C,IAAA,OAAO,CAAC,GAAG,qBAAqB,CAAC,CAAC;AACpC,CAAC;SAEe,cAAc,GAAA;IAC5B,iBAAiB,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;SAEe,YAAY,GAAA;IAC1B,OAAO,IAAI,YAAY,EAAE,CAAC;AAC5B,CAAC;SAEe,SAAS,GAAA;;IAEvB,YAAY,CAAC,QAAQ,CAAC,CAAC;AACvB,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAEY,MAAA,mCAAmC,GAAqB;AACnE,IAAA,EAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAEC,oBAAmB,EAAC;IACrD,EAAC,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAC;IACtE,EAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAC;EACpD;AAEF;;;;;AAKG;AACI,MAAM,eAAe,GACxB,qBAAqB,CAAC,YAAY,EAAE,SAAS,EAAE,mCAAmC,EAAE;AAExF;;;;;AAKG;AACH,MAAM,+BAA+B,GACjC,IAAI,cAAc,CAAC,WAAW,GAAG,gCAAgC,GAAG,EAAE,CAAC,CAAC;AAE5E,MAAM,qBAAqB,GAAG;AAC5B,IAAA;AACE,QAAA,OAAO,EAAEC,mBAAkB;AAC3B,QAAA,QAAQ,EAAE,qBAAqB;AAC/B,QAAA,IAAI,EAAE,EAAE;AACT,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAEC,YAAW;AACpB,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,IAAI,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAED,mBAAkB,CAAC;AACxD,KAAA;AACD,IAAA;AACE,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,IAAI,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAEA,mBAAkB,CAAC;AACxD,KAAA;CACF,CAAC;AAEF,MAAM,wBAAwB,GAAe;AAC3C,IAAA,EAAC,OAAO,EAAEE,eAAc,EAAE,QAAQ,EAAE,MAAM,EAAC;AAC3C,IAAA,EAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAC,EAAE;AAC3D,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,QAAQ,EAAE,eAAe;AACzB,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC;AACtC,KAAA;AACD,IAAA,EAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAC,EAAE;AAC1F,QAAA,OAAO,EAAE,mBAAmB;AAC5B,QAAA,QAAQ,EAAE,mBAAmB;QAC7B,IAAI,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAE,kCAAkC,CAAC;AACtF,KAAA;AACD,IAAA,EAAC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAC;AAC7D,IAAA,EAAC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAC;AAC7D,IAAA,EAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAC;AAC/E,IAAA,EAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAAC;IACtF,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAC;AACrD,IAAA,WAAW,GAAG,EAAC,OAAO,EAAE,+BAA+B,EAAE,QAAQ,EAAE,IAAI,EAAC,GAAG,EAAE;CAC9E,CAAC;AAEF;;;;;;;;AAQG;MAQU,aAAa,CAAA;AACxB,IAAA,WAAA,CACY,uBAAqC,EAAA;QAC/C,IAAI,WAAW,IAAI,uBAAuB,EAAE;YAC1C,MAAM,IAAI,KAAK,CACX,CAAoF,kFAAA,CAAA;AACpF,gBAAA,CAAA,iFAAA,CAAmF,CAAC,CAAC;AAC1F,SAAA;KACF;AAED;;;;;;;AAOG;IACH,OAAO,oBAAoB,CAAC,MAAuB,EAAA;QACjD,OAAO;AACL,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE;gBACT,EAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAC;AACzC,gBAAA,EAAC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAC;gBAC7C,2BAA2B;AAC5B,aAAA;SACF,CAAC;KACH;;AA3BU,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,kBACoB,+BAA+B,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;sHADhE,aAAa,EAAA,OAAA,EAAA,CAFd,YAAY,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAE9B,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EANb,SAAA,EAAA;AACT,QAAA,GAAG,wBAAwB;AAC3B,QAAA,GAAG,qBAAqB;KACzB,EACS,OAAA,EAAA,CAAA,YAAY,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;sGAE9B,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE;AACT,wBAAA,GAAG,wBAAwB;AAC3B,wBAAA,GAAG,qBAAqB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC;AAC3C,iBAAA,CAAA;;0BAEc,QAAQ;;0BAAI,QAAQ;;0BAAI,MAAM;2BAAC,+BAA+B,CAAA;;;ACzM7E;;AAEG;SACa,UAAU,GAAA;IACxB,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;AAqBG;MAEU,IAAI,CAAA;AAEf,IAAA,WAAA,CAAsC,IAAS,EAAA;QAAT,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;AAC7C,QAAA,IAAI,CAAC,IAAI,GAAGT,OAAM,EAAE,CAAC;KACtB;AACD;;;;;;;;;AASG;AACH,IAAA,MAAM,CAAC,GAAmB,EAAE,aAAA,GAAyB,KAAK,EAAA;AACxD,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;KACrD;AAED;;;;;;;AAOG;AACH,IAAA,OAAO,CAAC,IAAsB,EAAE,aAAA,GAAyB,KAAK,EAAA;AAC5D,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,MAAyB,EAAE,GAAmB,KAAI;AACpE,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;AAC3D,aAAA;AACD,YAAA,OAAO,MAAM,CAAC;SACf,EAAE,EAAE,CAAC,CAAC;KACR;AAED;;;;;AAKG;AACH,IAAA,MAAM,CAAC,YAAoB,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,IAAI,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAQ,KAAA,EAAA,YAAY,CAAG,CAAA,CAAA,CAAC,IAAI,IAAI,CAAC;KACjE;AAED;;;;;AAKG;AACH,IAAA,OAAO,CAAC,YAAoB,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,EAAE,CAAC;AAC7B,QAAA,MAAM,IAAI,gBAAgB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA,KAAA,EAAQ,YAAY,CAAA,CAAA,CAAG,CAAC,CAAC;AAC9E,QAAA,OAAO,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;KACxC;AAED;;;;;;;;AAQG;IACH,SAAS,CAAC,GAAmB,EAAE,QAAiB,EAAA;AAC9C,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,IAAI,CAAC;QACtB,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,IAAI,GAAoB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAE,CAAC;AACrD,QAAA,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAClD,SAAA;QACD,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KAC5C;AAED;;;;AAIG;AACH,IAAA,SAAS,CAAC,YAAoB,EAAA;QAC5B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAE,CAAC,CAAC;KACnD;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,IAAqB,EAAA;AACpC,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxB,SAAA;KACF;AAEO,IAAA,mBAAmB,CAAC,IAAoB,EAAE,aAAA,GAAyB,KAAK,EAAA;QAE9E,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,QAAQ,GAAW,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;;;;YAInD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5F,IAAI,IAAI,KAAK,SAAS;AAAE,gBAAA,OAAO,IAAI,CAAC;AACrC,SAAA;QACD,MAAM,OAAO,GAAoB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAoB,CAAC;AACpF,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC1B,QAAA,OAAO,OAAO,CAAC;KAChB;IAEO,yBAAyB,CAAC,GAAmB,EAAE,EAAmB,EAAA;AACxE,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CACpB,CAAC,IAAY,KAAK,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7E,QAAA,OAAO,EAAE,CAAC;KACX;AAEO,IAAA,cAAc,CAAC,GAAmB,EAAA;AACxC,QAAA,MAAM,IAAI,GAAW,GAAG,CAAC,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC;QACpD,OAAO,CAAA,EAAG,IAAI,CAAK,EAAA,EAAA,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;KACjC;IAEO,mBAAmB,CAAC,GAAmB,EAAE,IAAqB,EAAA;AACpE,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CACzB,CAAC,GAAW,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KAChF;AAEO,IAAA,cAAc,CAAC,IAAY,EAAA;AACjC,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;KACpC;;AAtIU,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAI,kBAEK,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAFjB,IAAI,EAAA,UAAA,EADQ,MAAM,EAAA,UAAA,EAAc,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAC1C,IAAI,EAAA,UAAA,EAAA,CAAA;kBADhB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAC,CAAA;;0BAGnD,MAAM;2BAAC,QAAQ,CAAA;;AAuI9B;;AAEG;AACH,MAAM,aAAa,GAA8B;AAC/C,IAAA,SAAS,EAAE,YAAY;CACxB;;ACnMD;;AAEG;SACa,WAAW,GAAA;IACzB,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;;AASG;MAEU,KAAK,CAAA;AAChB,IAAA,WAAA,CAAsC,IAAS,EAAA;QAAT,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;KAAI;AACnD;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KACxB;AAED;;;AAGG;AACH,IAAA,QAAQ,CAAC,QAAgB,EAAA;QACvB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,IAAI,EAAE,CAAC;KAClC;;AAfU,KAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,KAAK,kBACI,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHADjB,KAAK,EAAA,UAAA,EADO,MAAM,EAAA,UAAA,EAAc,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAC3C,KAAK,EAAA,UAAA,EAAA,CAAA;kBADjB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAC,CAAA;;0BAEpD,MAAM;2BAAC,QAAQ,CAAA;;;ACrB9B,MAAM,iBAAiB,GAAG,UAAU,CAAC;AACrC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAG/B,SAAU,mBAAmB,CAAC,KAAa,EAAA;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAW,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACxF,CAAC;AAEK,SAAU,mBAAmB,CAAC,KAAa,EAAA;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;AAMG;AACa,SAAA,WAAW,CAAC,IAAY,EAAE,KAAU,EAAA;AAClD,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAC,QAAQ,EAAE;;;;;AAKhD,QAAA,MAAM,EAAE,GAAGC,OAAM,CAAC,IAAI,CAAC,GAAIA,OAAM,CAAC,IAAI,CAAsC,IAAI,EAAE,CAAC;AACnF,QAAA,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAClB,KAAA;AACH;;AC9BA,MAAM,GAAG,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,IAAS,EAAE;;MCGjD,yBAAyB,CAAA;IACpC,WAAmB,CAAA,SAAiB,EAAS,QAAgB,EAAA;QAA1C,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;QAAS,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;KAAI;AAClE,CAAA;AAED;;;AAGG;MACU,eAAe,CAAA;AAG1B,IAAA,WAAA,CAAY,GAAsB,EAAA;QAChC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;KAChD;;AAGD;;;;;;;;;;;;;;;AAeG;AACH,IAAA,mBAAmB,CAAC,MAAW,EAAA;QAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,kBAAkB,CAAC;;QAEvC,MAAM,mBAAmB,GAAGS,GAAM,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;QAC3D,IAAI,MAAM,IAAI,mBAAmB,EAAE;AACjC,YAAAA,GAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACrC,SAAA;AACD,QAAA,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;QAC/B,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,QAAA,OAAO,QAAQ,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,KAAK,IAAI,GAAG,EAAE;AACvD,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACnB,YAAA,QAAQ,EAAE,CAAC;AACZ,SAAA;AACD,QAAA,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,IAAI,MAAM,IAAI,mBAAmB,EAAE;AACjC,YAAAA,GAAM,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACxC,SAAA;QACD,MAAM,SAAS,GAAG,CAAC,GAAG,GAAG,KAAK,IAAI,QAAQ,CAAC;QAC3CA,GAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAO,IAAA,EAAA,QAAQ,CAA0B,wBAAA,CAAA,CAAC,CAAC;AAC9D,QAAAA,GAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAG,EAAA,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,aAAA,CAAe,CAAC,CAAC;AAE3D,QAAA,OAAO,IAAI,yBAAyB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;KAC3D;AACF,CAAA;AAED,SAAS,cAAc,GAAA;AACrB,IAAA,OAAOA,GAAM,CAAC,WAAW,IAAIA,GAAM,CAAC,WAAW,CAAC,GAAG,GAAGA,GAAM,CAAC,WAAW,CAAC,GAAG,EAAE;AACxB,QAAA,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAC7E;;AC5DA,MAAM,oBAAoB,GAAG,UAAU,CAAC;AAExC;;;;;;;;;;;;AAYG;AACG,SAAU,gBAAgB,CAAI,GAAoB,EAAA;IACtD,WAAW,CAAC,oBAAoB,EAAE,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;AAIG;SACa,iBAAiB,GAAA;AAC/B,IAAA,WAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;AAC1C;;AC5BM,SAAU,UAAU,CAAC,IAAY,EAAA;AACrC,IAAA,MAAM,WAAW,GAA0B;AACzC,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,GAAG,EAAE,KAAK;KACX,CAAC;AACF,IAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAEK,SAAU,YAAY,CAAC,IAAY,EAAA;AACvC,IAAA,MAAM,aAAa,GAA0B;AAC3C,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,KAAK,EAAE,GAAG;KACX,CAAC;AACF,IAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAqBD;;;;;;;;;;;;;AAaG;AACG,SAAU,YAAY,CAAW,GAAW,EAAA;AAChD,IAAA,OAAO,GAAkB,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;;;;AAcG;MAWU,aAAa,CAAA;AAV1B,IAAA,WAAA,GAAA;QAWU,IAAK,CAAA,KAAA,GAAqC,EAAE,CAAC;QAC7C,IAAoB,CAAA,oBAAA,GAA6C,EAAE,CAAC;AA4D7E,KAAA;AA1DC;;AAEG;IACH,GAAG,CAAI,GAAgB,EAAE,YAAe,EAAA;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,GAAG,YAAY,CAAC;KAC5E;AAED;;AAEG;IACH,GAAG,CAAI,GAAgB,EAAE,KAAQ,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;KACzB;AAED;;AAEG;AACH,IAAA,MAAM,CAAI,GAAgB,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACxB;AAED;;AAEG;AACH,IAAA,MAAM,CAAI,GAAgB,EAAA;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;KACvC;AAED;;AAEG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;KAC7C;AAED;;AAEG;IACH,WAAW,CAAI,GAAgB,EAAE,QAAiB,EAAA;AAChD,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;KAC3C;AAED;;AAEG;IACH,MAAM,GAAA;;AAEJ,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3C,IAAI,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBACjD,IAAI;AACF,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;AACpD,iBAAA;AAAC,gBAAA,OAAO,CAAC,EAAE;AACV,oBAAA,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAC;AACxD,iBAAA;AACF,aAAA;AACF,SAAA;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;;qHA7DU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EATZ,UAAA,EAAA,MAAM,EACN,UAAA,EAAA,MAAK;AACf,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7B,QAAA,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;QAClC,KAAK,CAAC,KAAK,GAAG,wBAAwB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACnD,QAAA,OAAO,KAAK,CAAC;KACd,EAAA,CAAA,CAAA;sGAEU,aAAa,EAAA,UAAA,EAAA,CAAA;kBAVzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;oBAClB,UAAU,EAAE,MAAK;AACf,wBAAA,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,wBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;wBAC7B,MAAM,KAAK,GAAG,IAAA,aAAA,EAAmB,CAAC;wBAClC,KAAK,CAAC,KAAK,GAAG,wBAAwB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACnD,wBAAA,OAAO,KAAK,CAAC;qBACd;AACF,iBAAA,CAAA;;AAiEe,SAAA,wBAAwB,CAAC,GAAa,EAAE,KAAa,EAAA;;;IAGnE,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;IACpD,IAAI,YAAY,GAAG,EAAE,CAAC;AACtB,IAAA,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE;QAChC,IAAI;;AAEF,YAAA,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAO,CAAC;AACnE,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,IAAI,CAAC,kDAAkD,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7E,SAAA;AACF,KAAA;AACD,IAAA,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;AAOG;MAEU,0BAA0B,CAAA;;kIAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;mIAA1B,0BAA0B,EAAA,CAAA,CAAA;mIAA1B,0BAA0B,EAAA,CAAA,CAAA;sGAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,QAAQ;mBAAC,EAAE,CAAA;;;AC1KZ;;;;AAIG;MACU,EAAE,CAAA;AACb;;;;;;;AAOG;AACH,IAAA,OAAO,GAAG,GAAA;AACR,QAAA,OAAO,MAAM,IAAI,CAAC;KACnB;AAED;;;;;;;AAOG;IACH,OAAO,GAAG,CAAC,QAAgB,EAAA;QACzB,OAAO,CAAC,YAAY,KAAI;AACtB,YAAA,OAAO,YAAY,CAAC,aAAa,IAAI,IAAI;gBACrC,cAAc,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC;AACpD,gBAAA,KAAK,CAAC;AACZ,SAAC,CAAC;KACH;AAED;;;;;;;AAOG;IACH,OAAO,SAAS,CAAC,IAAe,EAAA;AAC9B,QAAA,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,cAAe,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KACtE;AACF,CAAA;AAED,SAAS,cAAc,CAAC,CAAM,EAAE,QAAgB,EAAA;AAC9C,IAAA,IAAIV,OAAM,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;QAC7B,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACnC,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YACpD,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAClE,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACf;;ACrDA;;AAEG;AACH,MAAM,WAAW,GAAG;;AAElB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,SAAS,EAAE,IAAI;;AAEf,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,UAAU,EAAE,IAAI;;AAEhB,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,SAAS,EAAE,IAAI;;AAEf,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,cAAc,EAAE,IAAI;;AAEpB,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,WAAW,EAAE,IAAI;;AAEjB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF;;;;;;AAMG;MACU,qBAAqB,GAAG,IAAI,cAAc,CAAsB,qBAAqB,EAAE;AAUpG;;;;AAIG;MACU,aAAa,GAAG,IAAI,cAAc,CAAe,cAAc,EAAE;AAQ9E;;;;AAIG;MAEU,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAEE;;;;AAIG;QACH,IAAM,CAAA,MAAA,GAAa,EAAE,CAAC;AAEtB;;;;;;;;;;;;;;;AAeG;QACH,IAAS,CAAA,SAAA,GAA4B,EAAE,CAAC;AAsCzC,KAAA;AAlBC;;;;;AAKG;AACH,IAAA,WAAW,CAAC,OAAoB,EAAA;QAC9B,MAAM,EAAE,GAAG,IAAI,MAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAE9C,QAAA,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;AACpC,QAAA,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;AAErC,QAAA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;AACtC,YAAA,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AAClD,SAAA;AAED,QAAA,OAAO,EAAE,CAAC;KACX;;2HA7DU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+HAAnB,mBAAmB,EAAA,CAAA,CAAA;sGAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;AAiEX;;;;AAIG;AAEG,MAAO,oBAAqB,SAAQ,kBAAkB,CAAA;AAG1D,IAAA,WAAA,CACsB,GAAQ,EACa,OAA4B,EAAU,OAAgB,EAClD,MAA0B,EAAA;QACvE,KAAK,CAAC,GAAG,CAAC,CAAC;QAF8B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAqB;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAClD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAoB;QALjE,IAAc,CAAA,cAAA,GAAuB,IAAI,CAAC;KAOjD;AAEQ,IAAA,QAAQ,CAAC,SAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;AAC1F,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QAED,IAAI,CAAE,MAAc,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC3C,YAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CACb,CAAA,KAAA,EAAQ,SAAS,CAAmD,iDAAA,CAAA;AACpE,oBAAA,CAAA,+CAAA,CAAiD,CAAC,CAAC;AACxD,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAEQ,IAAA,gBAAgB,CAAC,OAAoB,EAAE,SAAiB,EAAE,OAAiB,EAAA;QAClF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACpC,QAAA,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;;;QAIpC,IAAI,CAAE,MAAc,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AAC1C,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,MAAO,EAAE,CAAC,CAAC;;;;YAI1F,IAAI,kBAAkB,GAAG,KAAK,CAAC;YAC/B,IAAI,UAAU,GAAa,MAAK;gBAC9B,kBAAkB,GAAG,IAAI,CAAC;AAC5B,aAAC,CAAC;YAEF,IAAI,CAAC,iBAAiB,CAClB,MAAM,IAAI,CAAC,cAAe;iBACf,IAAI,CAAC,MAAK;;AAET,gBAAA,IAAI,CAAE,MAAc,CAAC,MAAM,EAAE;AAC3B,oBAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,wBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CACb,CAAA,iEAAA,CAAmE,CAAC,CAAC;AAC1E,qBAAA;AACD,oBAAA,UAAU,GAAG,MAAK,GAAG,CAAC;oBACtB,OAAO;AACR,iBAAA;gBAED,IAAI,CAAC,kBAAkB,EAAE;;;;oBAIvB,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACjE,iBAAA;AACH,aAAC,CAAC;iBACD,KAAK,CAAC,MAAK;AACV,gBAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CACb,CAAA,KAAA,EAAQ,SAAS,CAA6C,2CAAA,CAAA;AAC9D,wBAAA,CAAA,wBAAA,CAA0B,CAAC,CAAC;AACjC,iBAAA;AACD,gBAAA,UAAU,GAAG,MAAK,GAAG,CAAC;aACvB,CAAC,CAAC,CAAC;;;;AAKlB,YAAA,OAAO,MAAK;AACV,gBAAA,UAAU,EAAE,CAAC;AACf,aAAC,CAAC;AACH,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAK;;YAEjC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,UAAS,QAAqB,EAAA;gBAC7C,IAAI,CAAC,UAAU,CAAC,YAAA;oBACd,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpB,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC;AACF,YAAA,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC3B,YAAA,OAAO,MAAK;AACV,gBAAA,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;;AAE5B,gBAAA,IAAI,OAAO,EAAE,CAAC,OAAO,KAAK,UAAU,EAAE;oBACpC,EAAE,CAAC,OAAO,EAAE,CAAC;AACd,iBAAA;AACH,aAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,aAAa,CAAC,SAAiB,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;KACpD;;AArGU,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAInB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,QAAQ,EACR,EAAA,EAAA,KAAA,EAAA,qBAAqB,qCACT,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gIAN1B,oBAAoB,EAAA,CAAA,CAAA;sGAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;0BAKJ,MAAM;2BAAC,QAAQ,CAAA;;0BACf,MAAM;2BAAC,qBAAqB,CAAA;;0BAC5B,QAAQ;;0BAAI,MAAM;2BAAC,aAAa,CAAA;;AAkGvC;;;;;;;;;;AAUG;MAYU,YAAY,CAAA;;oHAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;qHAAZ,YAAY,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EAVZ,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,IAAI,EAAE,CAAC,QAAQ,EAAE,qBAAqB,EAAEW,QAAO,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC;AAClF,SAAA;QACD,EAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAC;AAC1E,KAAA,EAAA,CAAA,CAAA;sGAEU,YAAY,EAAA,UAAA,EAAA,CAAA;kBAXxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,QAAQ,EAAE,oBAAoB;AAC9B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,IAAI,EAAE,CAAC,QAAQ,EAAE,qBAAqB,EAAEA,QAAO,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC;AAClF,yBAAA;wBACD,EAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAC;AAC1E,qBAAA;AACF,iBAAA,CAAA;;;ACvOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;MAEmB,YAAY,CAAA;;oHAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAAZ,YAAY,EAAA,UAAA,EADT,MAAM,EAAA,WAAA,EAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,OAAgC,gBAAgB,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;sGACzD,YAAY,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA,EAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC,EAAC,CAAA;;AA0D3E,SAAU,uBAAuB,CAAC,QAAkB,EAAA;IACxD,OAAO,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtD,CAAC;AAGK,MAAO,gBAAiB,SAAQ,YAAY,CAAA;AAChD,IAAA,WAAA,CAAsC,IAAS,EAAA;AAC7C,QAAA,KAAK,EAAE,CAAC;QAD4B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;KAE9C;IAEQ,QAAQ,CAAC,GAAoB,EAAE,KAA4B,EAAA;QAClE,IAAI,KAAK,IAAI,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;AAC/B,QAAA,QAAQ,GAAG;YACT,KAAK,eAAe,CAAC,IAAI;AACvB,gBAAA,OAAO,KAAe,CAAC;YACzB,KAAK,eAAe,CAAC,IAAI;AACvB,gBAAA,IAAIC,gCAA8B,CAAC,KAAK,EAAA,MAAA,uBAAkB,EAAE;AAC1D,oBAAA,OAAOC,gBAAe,CAAC,KAAK,CAAC,CAAC;AAC/B,iBAAA;AACD,gBAAA,OAAOC,cAAa,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC5D,KAAK,eAAe,CAAC,KAAK;AACxB,gBAAA,IAAIF,gCAA8B,CAAC,KAAK,EAAA,OAAA,wBAAmB,EAAE;AAC3D,oBAAA,OAAOC,gBAAe,CAAC,KAAK,CAAC,CAAC;AAC/B,iBAAA;AACD,gBAAA,OAAO,KAAe,CAAC;YACzB,KAAK,eAAe,CAAC,MAAM;AACzB,gBAAA,IAAID,gCAA8B,CAAC,KAAK,EAAA,QAAA,yBAAoB,EAAE;AAC5D,oBAAA,OAAOC,gBAAe,CAAC,KAAK,CAAC,CAAC;AAC/B,iBAAA;AACD,gBAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,KAAK,eAAe,CAAC,GAAG;AACtB,gBAAA,IAAID,gCAA8B,CAAC,KAAK,EAAA,KAAA,sBAAiB,EAAE;AACzD,oBAAA,OAAOC,gBAAe,CAAC,KAAK,CAAC,CAAC;AAC/B,iBAAA;AACD,gBAAA,OAAOE,aAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACrC,KAAK,eAAe,CAAC,YAAY;AAC/B,gBAAA,IAAIH,gCAA8B,CAAC,KAAK,EAAA,aAAA,8BAAyB,EAAE;AACjE,oBAAA,OAAOC,gBAAe,CAAC,KAAK,CAAC,CAAC;AAC/B,iBAAA;AACD,gBAAA,MAAM,IAAI,KAAK,CAAC,oDAAoDG,iBAAgB,CAAA,CAAA,CAAG,CAAC,CAAC;AAC3F,YAAA;gBACE,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,GAAG,CAAS,MAAA,EAAAA,iBAAgB,CAAG,CAAA,CAAA,CAAC,CAAC;AAClF,SAAA;KACF;AAEQ,IAAA,uBAAuB,CAAC,KAAa,EAAA;AAC5C,QAAA,OAAOC,4BAA2B,CAAC,KAAK,CAAC,CAAC;KAC3C;AACQ,IAAA,wBAAwB,CAAC,KAAa,EAAA;AAC7C,QAAA,OAAOC,6BAA4B,CAAC,KAAK,CAAC,CAAC;KAC5C;AACQ,IAAA,yBAAyB,CAAC,KAAa,EAAA;AAC9C,QAAA,OAAOC,8BAA6B,CAAC,KAAK,CAAC,CAAC;KAC7C;AACQ,IAAA,sBAAsB,CAAC,KAAa,EAAA;AAC3C,QAAA,OAAOC,2BAA0B,CAAC,KAAK,CAAC,CAAC;KAC1C;AACQ,IAAA,8BAA8B,CAAC,KAAa,EAAA;AACnD,QAAA,OAAOC,mCAAkC,CAAC,KAAK,CAAC,CAAC;KAClD;;AAtDU,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBACP,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AADjB,gBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EADJ,UAAA,EAAA,MAAM,EAAc,UAAA,EAAA,uBAAuB,kBAAS,QAAQ,EAAA,CAAA,EAAA,CAAA,CAAA;sGACxE,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA,EAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAC,CAAA;;0BAExE,MAAM;2BAAC,QAAQ,CAAA;;;AChJ9B;;;;AAIG;AAIH;;AAEG;MACU,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB;;ACXtD;;;;AAIG;AAEH;;ACNA;;ACRA;;AAEG;;;;"}
-------------------- SECTION 229 --------------------
{"version":3,"file":"platform-browser-dynamic.mjs","sources":["../../../../../../packages/platform-browser-dynamic/src/compiler_factory.ts","../../../../../../packages/platform-browser-dynamic/src/platform_core_dynamic.ts","../../../../../../packages/platform-browser-dynamic/src/resource_loader/resource_loader_impl.ts","../../../../../../packages/platform-browser-dynamic/src/platform_providers.ts","../../../../../../packages/platform-browser-dynamic/src/resource_loader/resource_loader_cache.ts","../../../../../../packages/platform-browser-dynamic/src/version.ts","../../../../../../packages/platform-browser-dynamic/src/platform-browser-dynamic.ts","../../../../../../packages/platform-browser-dynamic/public_api.ts","../../../../../../packages/platform-browser-dynamic/index.ts","../../../../../../packages/platform-browser-dynamic/platform-browser-dynamic.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {CompilerConfig} from '@angular/compiler'; import {Compiler, CompilerFactory, CompilerOptions, InjectionToken, Injector, MissingTranslationStrategy, PACKAGE_ROOT_URL, StaticProvider, ViewEncapsulation} from '@angular/core';  export const ERROR_COLLECTOR_TOKEN = new InjectionToken('ErrorCollector');  /**  * A default provider for {@link PACKAGE_ROOT_URL} that maps to '/'.  */ export const DEFAULT_PACKAGE_URL_PROVIDER = {   provide: PACKAGE_ROOT_URL,   useValue: '/' };  export const COMPILER_PROVIDERS =     <StaticProvider[]>[{provide: Compiler, useFactory: () => new Compiler()}]; /**  * @publicApi  *  * @deprecated  * Ivy JIT mode doesn't require accessing this symbol.  * See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes) for  * additional context.  */ export class JitCompilerFactory implements CompilerFactory {   private _defaultOptions: CompilerOptions[];    /* @internal */   constructor(defaultOptions: CompilerOptions[]) {     const compilerOptions: CompilerOptions = {       useJit: true,       defaultEncapsulation: ViewEncapsulation.Emulated,       missingTranslation: MissingTranslationStrategy.Warning,     };      this._defaultOptions = [compilerOptions, ...defaultOptions];   }   createCompiler(options: CompilerOptions[] = []): Compiler {     const opts = _mergeOptions(this._defaultOptions.concat(options));     const injector = Injector.create([       COMPILER_PROVIDERS, {         provide: CompilerConfig,         useFactory: () => {           return new CompilerConfig({             // let explicit values from the compiler options overwrite options             // from the app providers             useJit: opts.useJit,             // let explicit values from the compiler options overwrite options             // from the app providers             defaultEncapsulation: opts.defaultEncapsulation,             missingTranslation: opts.missingTranslation,             preserveWhitespaces: opts.preserveWhitespaces,           });         },         deps: []       },       opts.providers!     ]);     return injector.get(Compiler);   } }  function _mergeOptions(optionsArr: CompilerOptions[]): CompilerOptions {   return {     useJit: _lastDefined(optionsArr.map(options => options.useJit)),     defaultEncapsulation: _lastDefined(optionsArr.map(options => options.defaultEncapsulation)),     providers: _mergeArrays(optionsArr.map(options => options.providers!)),     missingTranslation: _lastDefined(optionsArr.map(options => options.missingTranslation)),     preserveWhitespaces: _lastDefined(optionsArr.map(options => options.preserveWhitespaces)),   }; }  function _lastDefined<T>(args: T[]): T|undefined {   for (let i = args.length - 1; i >= 0; i--) {     if (args[i] !== undefined) {       return args[i];     }   }   return undefined; }  function _mergeArrays(parts: any[][]): any[] {   const result: any[] = [];   parts.forEach((part) => part && result.push(...part));   return result; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {COMPILER_OPTIONS, CompilerFactory, createPlatformFactory, platformCore, PlatformRef, StaticProvider} from '@angular/core';  import {JitCompilerFactory} from './compiler_factory';  /**  * A platform that included corePlatform and the compiler.  *  * @publicApi  */ export const platformCoreDynamic = createPlatformFactory(platformCore, 'coreDynamic', [   {provide: COMPILER_OPTIONS, useValue: {}, multi: true},   {provide: CompilerFactory, useClass: JitCompilerFactory, deps: [COMPILER_OPTIONS]}, ]); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {ResourceLoader} from '@angular/compiler'; import {Injectable} from '@angular/core';   @Injectable() export class ResourceLoaderImpl extends ResourceLoader {   override get(url: string): Promise<string> {     let resolve: (result: any) => void;     let reject: (error: any) => void;     const promise = new Promise<string>((res, rej) => {       resolve = res;       reject = rej;     });     const xhr = new XMLHttpRequest();     xhr.open('GET', url, true);     xhr.responseType = 'text';      xhr.onload = function() {       // responseText is the old-school way of retrieving response (supported by IE8 & 9)       // response/responseType properties were introduced in ResourceLoader Level2 spec (supported       // by IE10)       const response = xhr.response || xhr.responseText;        // normalize IE9 bug (https://bugs.jquery.com/ticket/1450)       let status = xhr.status === 1223 ? 204 : xhr.status;        // fix status code when it is 0 (0 status is undocumented).       // Occurs when accessing file resources or on Android 4.1 stock browser       // while retrieving files from application cache.       if (status === 0) {         status = response ? 200 : 0;       }        if (200 <= status && status <= 300) {         resolve(response);       } else {         reject(`Failed to load ${url}`);       }     };      xhr.onerror = function() {       reject(`Failed to load ${url}`);     };      xhr.send();     return promise;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵPLATFORM_BROWSER_ID as PLATFORM_BROWSER_ID} from '@angular/common'; import {ResourceLoader} from '@angular/compiler'; import {COMPILER_OPTIONS, PLATFORM_ID, StaticProvider} from '@angular/core';  import {ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS as INTERNAL_BROWSER_PLATFORM_PROVIDERS} from '@angular/platform-browser';  import {ResourceLoaderImpl} from './resource_loader/resource_loader_impl';  /**  * @publicApi  */ export const INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS: StaticProvider[] = [   INTERNAL_BROWSER_PLATFORM_PROVIDERS,   {     provide: COMPILER_OPTIONS,     useValue: {providers: [{provide: ResourceLoader, useClass: ResourceLoaderImpl, deps: []}]},     multi: true   },   {provide: PLATFORM_ID, useValue: PLATFORM_BROWSER_ID}, ]; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ResourceLoader} from '@angular/compiler'; import {ɵglobal as global} from '@angular/core';  /**  * An implementation of ResourceLoader that uses a template cache to avoid doing an actual  * ResourceLoader.  *  * The template cache needs to be built and loaded into window.$templateCache  * via a separate mechanism.  *  * @publicApi  *  * @deprecated This was previously necessary in some cases to test AOT-compiled components with View  *     Engine, but is no longer since Ivy.  */ export class CachedResourceLoader extends ResourceLoader {   private _cache: {[url: string]: string};    constructor() {     super();     this._cache = (<any>global).$templateCache;     if (this._cache == null) {       throw new Error('CachedResourceLoader: Template cache was not found in $templateCache.');     }   }    override get(url: string): Promise<string> {     if (this._cache.hasOwnProperty(url)) {       return Promise.resolve(this._cache[url]);     } else {       return <Promise<any>>Promise.reject(           'CachedResourceLoader: Did not find cached template for ' + url);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the platform-browser-dynamic package.  */  import {Version} from '@angular/core';  /**  * @publicApi  */ export const VERSION = new Version('15.2.0'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ResourceLoader} from '@angular/compiler'; import {CompilerFactory, createPlatformFactory, platformCore, PlatformRef, Provider, StaticProvider} from '@angular/core';  import {platformCoreDynamic} from './platform_core_dynamic'; import {INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS} from './platform_providers'; import {CachedResourceLoader} from './resource_loader/resource_loader_cache';  export * from './private_export'; export {VERSION} from './version'; export {JitCompilerFactory} from './compiler_factory';  /**  * @publicApi  *  * @deprecated This was previously necessary in some cases to test AOT-compiled components with View  *     Engine, but is no longer since Ivy.   */ export const RESOURCE_CACHE_PROVIDER: Provider[] =     [{provide: ResourceLoader, useClass: CachedResourceLoader, deps: []}];  /**  * @publicApi  */ export const platformBrowserDynamic = createPlatformFactory(     platformCoreDynamic, 'browserDynamic', INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/platform-browser-dynamic';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["INTERNAL_BROWSER_PLATFORM_PROVIDERS","PLATFORM_BROWSER_ID","global"],"mappings":"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"}
-------------------- SECTION 230 --------------------
{"version":3,"file":"common.mjs","sources":["../../../../../../packages/common/src/dom_adapter.ts","../../../../../../packages/common/src/dom_tokens.ts","../../../../../../packages/common/src/location/platform_location.ts","../../../../../../packages/common/src/location/util.ts","../../../../../../packages/common/src/location/location_strategy.ts","../../../../../../packages/common/src/location/hash_location_strategy.ts","../../../../../../packages/common/src/location/location.ts","../../../../../../packages/common/src/i18n/currencies.ts","../../../../../../packages/common/src/i18n/locale_data_api.ts","../../../../../../packages/common/src/i18n/format_date.ts","../../../../../../packages/common/src/i18n/format_number.ts","../../../../../../packages/common/src/i18n/localization.ts","../../../../../../packages/common/src/i18n/locale_data.ts","../../../../../../packages/common/src/cookie.ts","../../../../../../packages/common/src/directives/ng_class.ts","../../../../../../packages/common/src/directives/ng_component_outlet.ts","../../../../../../packages/common/src/directives/ng_for_of.ts","../../../../../../packages/common/src/directives/ng_if.ts","../../../../../../packages/common/src/directives/ng_switch.ts","../../../../../../packages/common/src/directives/ng_plural.ts","../../../../../../packages/common/src/directives/ng_style.ts","../../../../../../packages/common/src/directives/ng_template_outlet.ts","../../../../../../packages/common/src/directives/index.ts","../../../../../../packages/common/src/pipes/invalid_pipe_argument_error.ts","../../../../../../packages/common/src/pipes/async_pipe.ts","../../../../../../packages/common/src/pipes/case_conversion_pipes.ts","../../../../../../packages/common/src/pipes/date_pipe_config.ts","../../../../../../packages/common/src/pipes/date_pipe.ts","../../../../../../packages/common/src/pipes/i18n_plural_pipe.ts","../../../../../../packages/common/src/pipes/i18n_select_pipe.ts","../../../../../../packages/common/src/pipes/json_pipe.ts","../../../../../../packages/common/src/pipes/keyvalue_pipe.ts","../../../../../../packages/common/src/pipes/number_pipe.ts","../../../../../../packages/common/src/pipes/slice_pipe.ts","../../../../../../packages/common/src/pipes/index.ts","../../../../../../packages/common/src/common_module.ts","../../../../../../packages/common/src/platform_id.ts","../../../../../../packages/common/src/version.ts","../../../../../../packages/common/src/viewport_scroller.ts","../../../../../../packages/common/src/xhr.ts","../../../../../../packages/common/src/directives/ng_optimized_image/url.ts","../../../../../../packages/common/src/directives/ng_optimized_image/image_loaders/image_loader.ts","../../../../../../packages/common/src/directives/ng_optimized_image/image_loaders/cloudflare_loader.ts","../../../../../../packages/common/src/directives/ng_optimized_image/image_loaders/cloudinary_loader.ts","../../../../../../packages/common/src/directives/ng_optimized_image/image_loaders/imagekit_loader.ts","../../../../../../packages/common/src/directives/ng_optimized_image/image_loaders/imgix_loader.ts","../../../../../../packages/common/src/directives/ng_optimized_image/error_helper.ts","../../../../../../packages/common/src/directives/ng_optimized_image/asserts.ts","../../../../../../packages/common/src/directives/ng_optimized_image/lcp_image_observer.ts","../../../../../../packages/common/src/directives/ng_optimized_image/preconnect_link_checker.ts","../../../../../../packages/common/src/directives/ng_optimized_image/tokens.ts","../../../../../../packages/common/src/directives/ng_optimized_image/preload-link-creator.ts","../../../../../../packages/common/src/directives/ng_optimized_image/ng_optimized_image.ts","../../../../../../packages/common/src/directives/ng_optimized_image/index.ts","../../../../../../packages/common/src/common.ts","../../../../../../packages/common/public_api.ts","../../../../../../packages/common/index.ts","../../../../../../packages/common/common.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  let _DOM: DomAdapter = null!;  export function getDOM(): DomAdapter {   return _DOM; }  export function setRootDomAdapter(adapter: DomAdapter) {   if (!_DOM) {     _DOM = adapter;   } }  /* tslint:disable:requireParameterType */ /**  * Provides DOM operations in an environment-agnostic way.  *  * @security Tread carefully! Interacting with the DOM directly is dangerous and  * can introduce XSS risks.  */ export abstract class DomAdapter {   // Needs Domino-friendly test utility   abstract dispatchEvent(el: any, evt: any): any;   abstract readonly supportsDOMEvents: boolean;    // Used by Meta   abstract remove(el: any): void;   abstract createElement(tagName: any, doc?: any): HTMLElement;   abstract createHtmlDocument(): Document;   abstract getDefaultDocument(): Document;    // Used by By.css   abstract isElementNode(node: any): boolean;    // Used by Testability   abstract isShadowRoot(node: any): boolean;    // Used by KeyEventsPlugin   abstract onAndCancel(el: any, evt: any, listener: any): Function;    // Used by PlatformLocation and ServerEventManagerPlugin   abstract getGlobalEventTarget(doc: Document, target: string): any;    // Used by PlatformLocation   abstract getBaseHref(doc: Document): string|null;   abstract resetBaseElement(): void;    // TODO: remove dependency in DefaultValueAccessor   abstract getUserAgent(): string;    // Used in the legacy @angular/http package which has some usage in g3.   abstract getCookie(name: string): string|null; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core';  /**  * A DI Token representing the main rendering context. In a browser this is the DOM Document.  *  * Note: Document might not be available in the Application Context when Application and Rendering  * Contexts are not the same (e.g. when running the application in a Web Worker).  *  * @publicApi  */ export const DOCUMENT = new InjectionToken<Document>('DocumentToken'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, Injectable, InjectionToken, ɵɵinject} from '@angular/core';  import {getDOM} from '../dom_adapter'; import {DOCUMENT} from '../dom_tokens';  /**  * This class should not be used directly by an application developer. Instead, use  * {@link Location}.  *  * `PlatformLocation` encapsulates all calls to DOM APIs, which allows the Router to be  * platform-agnostic.  * This means that we can have different implementation of `PlatformLocation` for the different  * platforms that Angular supports. For example, `@angular/platform-browser` provides an  * implementation specific to the browser environment, while `@angular/platform-server` provides  * one suitable for use with server-side rendering.  *  * The `PlatformLocation` class is used directly by all implementations of {@link LocationStrategy}  * when they need to interact with the DOM APIs like pushState, popState, etc.  *  * {@link LocationStrategy} in turn is used by the {@link Location} service which is used directly  * by the {@link Router} in order to navigate between routes. Since all interactions between {@link  * Router} /  * {@link Location} / {@link LocationStrategy} and DOM APIs flow through the `PlatformLocation`  * class, they are all platform-agnostic.  *  * @publicApi  */ @Injectable({   providedIn: 'platform',   // See #23917   useFactory: useBrowserPlatformLocation }) export abstract class PlatformLocation {   abstract getBaseHrefFromDOM(): string;   abstract getState(): unknown;   /**    * Returns a function that, when executed, removes the `popstate` event handler.    */   abstract onPopState(fn: LocationChangeListener): VoidFunction;   /**    * Returns a function that, when executed, removes the `hashchange` event handler.    */   abstract onHashChange(fn: LocationChangeListener): VoidFunction;    abstract get href(): string;   abstract get protocol(): string;   abstract get hostname(): string;   abstract get port(): string;   abstract get pathname(): string;   abstract get search(): string;   abstract get hash(): string;    abstract replaceState(state: any, title: string, url: string): void;    abstract pushState(state: any, title: string, url: string): void;    abstract forward(): void;    abstract back(): void;    historyGo?(relativePosition: number): void {     throw new Error('Not implemented');   } }  export function useBrowserPlatformLocation() {   return ɵɵinject(BrowserPlatformLocation); }  /**  * @description  * Indicates when a location is initialized.  *  * @publicApi  */ export const LOCATION_INITIALIZED = new InjectionToken<Promise<any>>('Location Initialized');  /**  * @description  * A serializable version of the event from `onPopState` or `onHashChange`  *  * @publicApi  */ export interface LocationChangeEvent {   type: string;   state: any; }  /**  * @publicApi  */ export interface LocationChangeListener {   (event: LocationChangeEvent): any; }    /**  * `PlatformLocation` encapsulates all of the direct calls to platform APIs.  * This class should not be used directly by an application developer. Instead, use  * {@link Location}.  *  * @publicApi  */ @Injectable({   providedIn: 'platform',   // See #23917   useFactory: createBrowserPlatformLocation, }) export class BrowserPlatformLocation extends PlatformLocation {   private _location: Location;   private _history: History;    constructor(@Inject(DOCUMENT) private _doc: any) {     super();     this._location = window.location;     this._history = window.history;   }    override getBaseHrefFromDOM(): string {     return getDOM().getBaseHref(this._doc)!;   }    override onPopState(fn: LocationChangeListener): VoidFunction {     const window = getDOM().getGlobalEventTarget(this._doc, 'window');     window.addEventListener('popstate', fn, false);     return () => window.removeEventListener('popstate', fn);   }    override onHashChange(fn: LocationChangeListener): VoidFunction {     const window = getDOM().getGlobalEventTarget(this._doc, 'window');     window.addEventListener('hashchange', fn, false);     return () => window.removeEventListener('hashchange', fn);   }    override get href(): string {     return this._location.href;   }   override get protocol(): string {     return this._location.protocol;   }   override get hostname(): string {     return this._location.hostname;   }   override get port(): string {     return this._location.port;   }   override get pathname(): string {     return this._location.pathname;   }   override get search(): string {     return this._location.search;   }   override get hash(): string {     return this._location.hash;   }   override set pathname(newPath: string) {     this._location.pathname = newPath;   }    override pushState(state: any, title: string, url: string): void {     if (supportsState()) {       this._history.pushState(state, title, url);     } else {       this._location.hash = url;     }   }    override replaceState(state: any, title: string, url: string): void {     if (supportsState()) {       this._history.replaceState(state, title, url);     } else {       this._location.hash = url;     }   }    override forward(): void {     this._history.forward();   }    override back(): void {     this._history.back();   }    override historyGo(relativePosition: number = 0): void {     this._history.go(relativePosition);   }    override getState(): unknown {     return this._history.state;   } }  export function supportsState(): boolean {   return !!window.history.pushState; } export function createBrowserPlatformLocation() {   return new BrowserPlatformLocation(ɵɵinject(DOCUMENT)); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */   /**  * Joins two parts of a URL with a slash if needed.  *  * @param start  URL string  * @param end    URL string  *  *  * @returns The joined URL string.  */ export function joinWithSlash(start: string, end: string): string {   if (start.length == 0) {     return end;   }   if (end.length == 0) {     return start;   }   let slashes = 0;   if (start.endsWith('/')) {     slashes++;   }   if (end.startsWith('/')) {     slashes++;   }   if (slashes == 2) {     return start + end.substring(1);   }   if (slashes == 1) {     return start + end;   }   return start + '/' + end; }  /**  * Removes a trailing slash from a URL string if needed.  * Looks for the first occurrence of either `#`, `?`, or the end of the  * line as `/` characters and removes the trailing slash if one exists.  *  * @param url URL string.  *  * @returns The URL string, modified if needed.  */ export function stripTrailingSlash(url: string): string {   const match = url.match(/#|\\?|$/);   const pathEndIdx = match && match.index || url.length;   const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);   return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx); }  /**  * Normalizes URL parameters by prepending with `?` if needed.  *  * @param  params String of URL parameters.  *  * @returns The normalized URL parameters string.  */ export function normalizeQueryParams(params: string): string {   return params && params[0] !== '?' ? '?' + params : params; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, inject, Injectable, InjectionToken, OnDestroy, Optional} from '@angular/core';  import {DOCUMENT} from '../dom_tokens';  import {LocationChangeListener, PlatformLocation} from './platform_location'; import {joinWithSlash, normalizeQueryParams} from './util';  /**  * Enables the `Location` service to read route state from the browser's URL.  * Angular provides two strategies:  * `HashLocationStrategy` and `PathLocationStrategy`.  *  * Applications should use the `Router` or `Location` services to  * interact with application route state.  *  * For instance, `HashLocationStrategy` produces URLs like  * <code class=\"no-auto-link\">http://example.com#/foo</code>,  * and `PathLocationStrategy` produces  * <code class=\"no-auto-link\">http://example.com/foo</code> as an equivalent URL.  *  * See these two classes for more.  *  * @publicApi  */ @Injectable({providedIn: 'root', useFactory: () => inject(PathLocationStrategy)}) export abstract class LocationStrategy {   abstract path(includeHash?: boolean): string;   abstract prepareExternalUrl(internal: string): string;   abstract getState(): unknown;   abstract pushState(state: any, title: string, url: string, queryParams: string): void;   abstract replaceState(state: any, title: string, url: string, queryParams: string): void;   abstract forward(): void;   abstract back(): void;   historyGo?(relativePosition: number): void {     throw new Error('Not implemented');   }   abstract onPopState(fn: LocationChangeListener): void;   abstract getBaseHref(): string; }  /**  * A predefined [DI token](guide/glossary#di-token) for the base href  * to be used with the `PathLocationStrategy`.  * The base href is the URL prefix that should be preserved when generating  * and recognizing URLs.  *  * @usageNotes  *  * The following example shows how to use this token to configure the root app injector  * with a base href value, so that the DI framework can supply the dependency anywhere in the app.  *  * ```typescript  * import {Component, NgModule} from '@angular/core';  * import {APP_BASE_HREF} from '@angular/common';  *  * @NgModule({  *   providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]  * })  * class AppModule {}  * ```  *  * @publicApi  */ export const APP_BASE_HREF = new InjectionToken<string>('appBaseHref');  /**  * @description  * A {@link LocationStrategy} used to configure the {@link Location} service to  * represent its state in the  * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the  * browser's URL.  *  * If you're using `PathLocationStrategy`, you may provide a {@link APP_BASE_HREF}  * or add a `<base href>` element to the document to override the default.  *  * For instance, if you provide an `APP_BASE_HREF` of `'/my/app/'` and call  * `location.go('/foo')`, the browser's URL will become  * `example.com/my/app/foo`. To ensure all relative URIs resolve correctly,  * the `<base href>` and/or `APP_BASE_HREF` should end with a `/`.  *  * Similarly, if you add `<base href='/my/app/'/>` to the document and call  * `location.go('/foo')`, the browser's URL will become  * `example.com/my/app/foo`.  *  * Note that when using `PathLocationStrategy`, neither the query nor  * the fragment in the `<base href>` will be preserved, as outlined  * by the [RFC](https://tools.ietf.org/html/rfc3986#section-5.2.2).  *  * @usageNotes  *  * ### Example  *  * {@example common/location/ts/path_location_component.ts region='LocationComponent'}  *  * @publicApi  */ @Injectable({providedIn: 'root'}) export class PathLocationStrategy extends LocationStrategy implements OnDestroy {   private _baseHref: string;   private _removeListenerFns: (() => void)[] = [];    constructor(       private _platformLocation: PlatformLocation,       @Optional() @Inject(APP_BASE_HREF) href?: string) {     super();      this._baseHref = href ?? this._platformLocation.getBaseHrefFromDOM() ??         inject(DOCUMENT).location?.origin ?? '';   }    /** @nodoc */   ngOnDestroy(): void {     while (this._removeListenerFns.length) {       this._removeListenerFns.pop()!();     }   }    override onPopState(fn: LocationChangeListener): void {     this._removeListenerFns.push(         this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));   }    override getBaseHref(): string {     return this._baseHref;   }    override prepareExternalUrl(internal: string): string {     return joinWithSlash(this._baseHref, internal);   }    override path(includeHash: boolean = false): string {     const pathname =         this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search);     const hash = this._platformLocation.hash;     return hash && includeHash ? `${pathname}${hash}` : pathname;   }    override pushState(state: any, title: string, url: string, queryParams: string) {     const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));     this._platformLocation.pushState(state, title, externalUrl);   }    override replaceState(state: any, title: string, url: string, queryParams: string) {     const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));     this._platformLocation.replaceState(state, title, externalUrl);   }    override forward(): void {     this._platformLocation.forward();   }    override back(): void {     this._platformLocation.back();   }    override getState(): unknown {     return this._platformLocation.getState();   }    override historyGo(relativePosition: number = 0): void {     this._platformLocation.historyGo?.(relativePosition);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, Injectable, OnDestroy, Optional} from '@angular/core';  import {APP_BASE_HREF, LocationStrategy} from './location_strategy'; import {LocationChangeListener, PlatformLocation} from './platform_location'; import {joinWithSlash, normalizeQueryParams} from './util';    /**  * @description  * A {@link LocationStrategy} used to configure the {@link Location} service to  * represent its state in the  * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax)  * of the browser's URL.  *  * For instance, if you call `location.go('/foo')`, the browser's URL will become  * `example.com#/foo`.  *  * @usageNotes  *  * ### Example  *  * {@example common/location/ts/hash_location_component.ts region='LocationComponent'}  *  * @publicApi  */ @Injectable() export class HashLocationStrategy extends LocationStrategy implements OnDestroy {   private _baseHref: string = '';   private _removeListenerFns: (() => void)[] = [];    constructor(       private _platformLocation: PlatformLocation,       @Optional() @Inject(APP_BASE_HREF) _baseHref?: string) {     super();     if (_baseHref != null) {       this._baseHref = _baseHref;     }   }    /** @nodoc */   ngOnDestroy(): void {     while (this._removeListenerFns.length) {       this._removeListenerFns.pop()!();     }   }    override onPopState(fn: LocationChangeListener): void {     this._removeListenerFns.push(         this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));   }    override getBaseHref(): string {     return this._baseHref;   }    override path(includeHash: boolean = false): string {     // the hash value is always prefixed with a `#`     // and if it is empty then it will stay empty     let path = this._platformLocation.hash;     if (path == null) path = '#';      return path.length > 0 ? path.substring(1) : path;   }    override prepareExternalUrl(internal: string): string {     const url = joinWithSlash(this._baseHref, internal);     return url.length > 0 ? ('#' + url) : url;   }    override pushState(state: any, title: string, path: string, queryParams: string) {     let url: string|null = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));     if (url.length == 0) {       url = this._platformLocation.pathname;     }     this._platformLocation.pushState(state, title, url);   }    override replaceState(state: any, title: string, path: string, queryParams: string) {     let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));     if (url.length == 0) {       url = this._platformLocation.pathname;     }     this._platformLocation.replaceState(state, title, url);   }    override forward(): void {     this._platformLocation.forward();   }    override back(): void {     this._platformLocation.back();   }    override getState(): unknown {     return this._platformLocation.getState();   }    override historyGo(relativePosition: number = 0): void {     this._platformLocation.historyGo?.(relativePosition);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EventEmitter, Injectable, OnDestroy, ɵɵinject} from '@angular/core'; import {SubscriptionLike} from 'rxjs';  import {LocationStrategy} from './location_strategy'; import {joinWithSlash, normalizeQueryParams, stripTrailingSlash} from './util';  /** @publicApi */ export interface PopStateEvent {   pop?: boolean;   state?: any;   type?: string;   url?: string; }  /**  * @description  *  * A service that applications can use to interact with a browser's URL.  *  * Depending on the `LocationStrategy` used, `Location` persists  * to the URL's path or the URL's hash segment.  *  * @usageNotes  *  * It's better to use the `Router.navigate()` service to trigger route changes. Use  * `Location` only if you need to interact with or create normalized URLs outside of  * routing.  *  * `Location` is responsible for normalizing the URL against the application's base href.  * A normalized URL is absolute from the URL host, includes the application's base href, and has no  * trailing slash:  * - `/my/app/user/123` is normalized  * - `my/app/user/123` **is not** normalized  * - `/my/app/user/123/` **is not** normalized  *  * ### Example  *  * <code-example path='common/location/ts/path_location_component.ts'  * region='LocationComponent'></code-example>  *  * @publicApi  */ @Injectable({   providedIn: 'root',   // See #23917   useFactory: createLocation, }) export class Location implements OnDestroy {   /** @internal */   _subject: EventEmitter<any> = new EventEmitter();   /** @internal */   _basePath: string;   /** @internal */   _locationStrategy: LocationStrategy;   /** @internal */   _urlChangeListeners: ((url: string, state: unknown) => void)[] = [];   /** @internal */   _urlChangeSubscription: SubscriptionLike|null = null;    constructor(locationStrategy: LocationStrategy) {     this._locationStrategy = locationStrategy;     const baseHref = this._locationStrategy.getBaseHref();     // Note: This class's interaction with base HREF does not fully follow the rules     // outlined in the spec https://www.freesoft.org/CIE/RFC/1808/18.htm.     // Instead of trying to fix individual bugs with more and more code, we should     // investigate using the URL constructor and providing the base as a second     // argument.     // https://developer.mozilla.org/en-US/docs/Web/API/URL/URL#parameters     this._basePath = _stripOrigin(stripTrailingSlash(_stripIndexHtml(baseHref)));     this._locationStrategy.onPopState((ev) => {       this._subject.emit({         'url': this.path(true),         'pop': true,         'state': ev.state,         'type': ev.type,       });     });   }    /** @nodoc */   ngOnDestroy(): void {     this._urlChangeSubscription?.unsubscribe();     this._urlChangeListeners = [];   }    /**    * Normalizes the URL path for this location.    *    * @param includeHash True to include an anchor fragment in the path.    *    * @returns The normalized URL path.    */   // TODO: vsavkin. Remove the boolean flag and always include hash once the deprecated router is   // removed.   path(includeHash: boolean = false): string {     return this.normalize(this._locationStrategy.path(includeHash));   }    /**    * Reports the current state of the location history.    * @returns The current value of the `history.state` object.    */   getState(): unknown {     return this._locationStrategy.getState();   }    /**    * Normalizes the given path and compares to the current normalized path.    *    * @param path The given URL path.    * @param query Query parameters.    *    * @returns True if the given URL path is equal to the current normalized path, false    * otherwise.    */   isCurrentPathEqualTo(path: string, query: string = ''): boolean {     return this.path() == this.normalize(path + normalizeQueryParams(query));   }    /**    * Normalizes a URL path by stripping any trailing slashes.    *    * @param url String representing a URL.    *    * @returns The normalized URL string.    */   normalize(url: string): string {     return Location.stripTrailingSlash(_stripBasePath(this._basePath, _stripIndexHtml(url)));   }    /**    * Normalizes an external URL path.    * If the given URL doesn't begin with a leading slash (`'/'`), adds one    * before normalizing. Adds a hash if `HashLocationStrategy` is    * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use.    *    * @param url String representing a URL.    *    * @returns  A normalized platform-specific URL.    */   prepareExternalUrl(url: string): string {     if (url && url[0] !== '/') {       url = '/' + url;     }     return this._locationStrategy.prepareExternalUrl(url);   }    // TODO: rename this method to pushState   /**    * Changes the browser's URL to a normalized version of a given URL, and pushes a    * new item onto the platform's history.    *    * @param path  URL path to normalize.    * @param query Query parameters.    * @param state Location history state.    *    */   go(path: string, query: string = '', state: any = null): void {     this._locationStrategy.pushState(state, '', path, query);     this._notifyUrlChangeListeners(         this.prepareExternalUrl(path + normalizeQueryParams(query)), state);   }    /**    * Changes the browser's URL to a normalized version of the given URL, and replaces    * the top item on the platform's history stack.    *    * @param path  URL path to normalize.    * @param query Query parameters.    * @param state Location history state.    */   replaceState(path: string, query: string = '', state: any = null): void {     this._locationStrategy.replaceState(state, '', path, query);     this._notifyUrlChangeListeners(         this.prepareExternalUrl(path + normalizeQueryParams(query)), state);   }    /**    * Navigates forward in the platform's history.    */   forward(): void {     this._locationStrategy.forward();   }    /**    * Navigates back in the platform's history.    */   back(): void {     this._locationStrategy.back();   }    /**    * Navigate to a specific page from session history, identified by its relative position to the    * current page.    *    * @param relativePosition  Position of the target page in the history relative to the current    *     page.    * A negative value moves backwards, a positive value moves forwards, e.g. `location.historyGo(2)`    * moves forward two pages and `location.historyGo(-2)` moves back two pages. When we try to go    * beyond what's stored in the history session, we stay in the current page. Same behaviour occurs    * when `relativePosition` equals 0.    * @see https://developer.mozilla.org/en-US/docs/Web/API/History_API#Moving_to_a_specific_point_in_history    */   historyGo(relativePosition: number = 0): void {     this._locationStrategy.historyGo?.(relativePosition);   }    /**    * Registers a URL change listener. Use to catch updates performed by the Angular    * framework that are not detectible through \"popstate\" or \"hashchange\" events.    *    * @param fn The change handler function, which take a URL and a location history state.    * @returns A function that, when executed, unregisters a URL change listener.    */   onUrlChange(fn: (url: string, state: unknown) => void): VoidFunction {     this._urlChangeListeners.push(fn);      if (!this._urlChangeSubscription) {       this._urlChangeSubscription = this.subscribe(v => {         this._notifyUrlChangeListeners(v.url, v.state);       });     }      return () => {       const fnIndex = this._urlChangeListeners.indexOf(fn);       this._urlChangeListeners.splice(fnIndex, 1);        if (this._urlChangeListeners.length === 0) {         this._urlChangeSubscription?.unsubscribe();         this._urlChangeSubscription = null;       }     };   }    /** @internal */   _notifyUrlChangeListeners(url: string = '', state: unknown) {     this._urlChangeListeners.forEach(fn => fn(url, state));   }    /**    * Subscribes to the platform's `popState` events.    *    * Note: `Location.go()` does not trigger the `popState` event in the browser. Use    * `Location.onUrlChange()` to subscribe to URL changes instead.    *    * @param value Event that is triggered when the state history changes.    * @param exception The exception to throw.    *    * @see [onpopstate](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate)    *    * @returns Subscribed events.    */   subscribe(       onNext: (value: PopStateEvent) => void, onThrow?: ((exception: any) => void)|null,       onReturn?: (() => void)|null): SubscriptionLike {     return this._subject.subscribe({next: onNext, error: onThrow, complete: onReturn});   }    /**    * Normalizes URL parameters by prepending with `?` if needed.    *    * @param  params String of URL parameters.    *    * @returns The normalized URL parameters string.    */   public static normalizeQueryParams: (params: string) => string = normalizeQueryParams;    /**    * Joins two parts of a URL with a slash if needed.    *    * @param start  URL string    * @param end    URL string    *    *    * @returns The joined URL string.    */   public static joinWithSlash: (start: string, end: string) => string = joinWithSlash;    /**    * Removes a trailing slash from a URL string if needed.    * Looks for the first occurrence of either `#`, `?`, or the end of the    * line as `/` characters and removes the trailing slash if one exists.    *    * @param url URL string.    *    * @returns The URL string, modified if needed.    */   public static stripTrailingSlash: (url: string) => string = stripTrailingSlash; }  export function createLocation() {   return new Location(ɵɵinject(LocationStrategy as any)); }  function _stripBasePath(basePath: string, url: string): string {   return basePath && new RegExp(`^${basePath}([/;?#]|$)`).test(url) ?       url.substring(basePath.length) :       url; }  function _stripIndexHtml(url: string): string {   return url.replace(/\\/index.html$/, ''); }  function _stripOrigin(baseHref: string): string {   // DO NOT REFACTOR! Previously, this check looked like this:   // `/^(https?:)?\\/\\//.test(baseHref)`, but that resulted in   // syntactically incorrect code after Closure Compiler minification.   // This was likely caused by a bug in Closure Compiler, but   // for now, the check is rewritten to use `new RegExp` instead.   const isAbsoluteUrl = (new RegExp('^(https?:)?//')).test(baseHref);   if (isAbsoluteUrl) {     const [, pathname] = baseHref.split(/\\/\\/[^\\/]+/);     return pathname;   }   return baseHref; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // THIS CODE IS GENERATED - DO NOT MODIFY. export type CurrenciesSymbols = [string] | [string | undefined, string];  /** @internal */ export const CURRENCIES_EN: {[code: string]: CurrenciesSymbols | [string | undefined, string | undefined, number]} = {\"ADP\":[undefined,undefined,0],\"AFN\":[undefined,\"؋\",0],\"ALL\":[undefined,undefined,0],\"AMD\":[undefined,\"֏\",2],\"AOA\":[undefined,\"Kz\"],\"ARS\":[undefined,\"$\"],\"AUD\":[\"A$\",\"$\"],\"AZN\":[undefined,\"₼\"],\"BAM\":[undefined,\"KM\"],\"BBD\":[undefined,\"$\"],\"BDT\":[undefined,\"৳\"],\"BHD\":[undefined,undefined,3],\"BIF\":[undefined,undefined,0],\"BMD\":[undefined,\"$\"],\"BND\":[undefined,\"$\"],\"BOB\":[undefined,\"Bs\"],\"BRL\":[\"R$\"],\"BSD\":[undefined,\"$\"],\"BWP\":[undefined,\"P\"],\"BYN\":[undefined,undefined,2],\"BYR\":[undefined,undefined,0],\"BZD\":[undefined,\"$\"],\"CAD\":[\"CA$\",\"$\",2],\"CHF\":[undefined,undefined,2],\"CLF\":[undefined,undefined,4],\"CLP\":[undefined,\"$\",0],\"CNY\":[\"CN¥\",\"¥\"],\"COP\":[undefined,\"$\",2],\"CRC\":[undefined,\"₡\",2],\"CUC\":[undefined,\"$\"],\"CUP\":[undefined,\"$\"],\"CZK\":[undefined,\"Kč\",2],\"DJF\":[undefined,undefined,0],\"DKK\":[undefined,\"kr\",2],\"DOP\":[undefined,\"$\"],\"EGP\":[undefined,\"E£\"],\"ESP\":[undefined,\"₧\",0],\"EUR\":[\"€\"],\"FJD\":[undefined,\"$\"],\"FKP\":[undefined,\"£\"],\"GBP\":[\"£\"],\"GEL\":[undefined,\"₾\"],\"GHS\":[undefined,\"GH₵\"],\"GIP\":[undefined,\"£\"],\"GNF\":[undefined,\"FG\",0],\"GTQ\":[undefined,\"Q\"],\"GYD\":[undefined,\"$\",2],\"HKD\":[\"HK$\",\"$\"],\"HNL\":[undefined,\"L\"],\"HRK\":[undefined,\"kn\"],\"HUF\":[undefined,\"Ft\",2],\"IDR\":[undefined,\"Rp\",2],\"ILS\":[\"₪\"],\"INR\":[\"₹\"],\"IQD\":[undefined,undefined,0],\"IRR\":[undefined,undefined,0],\"ISK\":[undefined,\"kr\",0],\"ITL\":[undefined,undefined,0],\"JMD\":[undefined,\"$\"],\"JOD\":[undefined,undefined,3],\"JPY\":[\"¥\",undefined,0],\"KHR\":[undefined,\"៛\"],\"KMF\":[undefined,\"CF\",0],\"KPW\":[undefined,\"₩\",0],\"KRW\":[\"₩\",undefined,0],\"KWD\":[undefined,undefined,3],\"KYD\":[undefined,\"$\"],\"KZT\":[undefined,\"₸\"],\"LAK\":[undefined,\"₭\",0],\"LBP\":[undefined,\"L£\",0],\"LKR\":[undefined,\"Rs\"],\"LRD\":[undefined,\"$\"],\"LTL\":[undefined,\"Lt\"],\"LUF\":[undefined,undefined,0],\"LVL\":[undefined,\"Ls\"],\"LYD\":[undefined,undefined,3],\"MGA\":[undefined,\"Ar\",0],\"MGF\":[undefined,undefined,0],\"MMK\":[undefined,\"K\",0],\"MNT\":[undefined,\"₮\",2],\"MRO\":[undefined,undefined,0],\"MUR\":[undefined,\"Rs\",2],\"MXN\":[\"MX$\",\"$\"],\"MYR\":[undefined,\"RM\"],\"NAD\":[undefined,\"$\"],\"NGN\":[undefined,\"₦\"],\"NIO\":[undefined,\"C$\"],\"NOK\":[undefined,\"kr\",2],\"NPR\":[undefined,\"Rs\"],\"NZD\":[\"NZ$\",\"$\"],\"OMR\":[undefined,undefined,3],\"PHP\":[\"₱\"],\"PKR\":[undefined,\"Rs\",2],\"PLN\":[undefined,\"zł\"],\"PYG\":[undefined,\"₲\",0],\"RON\":[undefined,\"lei\"],\"RSD\":[undefined,undefined,0],\"RUB\":[undefined,\"₽\"],\"RWF\":[undefined,\"RF\",0],\"SBD\":[undefined,\"$\"],\"SEK\":[undefined,\"kr\",2],\"SGD\":[undefined,\"$\"],\"SHP\":[undefined,\"£\"],\"SLE\":[undefined,undefined,2],\"SLL\":[undefined,undefined,0],\"SOS\":[undefined,undefined,0],\"SRD\":[undefined,\"$\"],\"SSP\":[undefined,\"£\"],\"STD\":[undefined,undefined,0],\"STN\":[undefined,\"Db\"],\"SYP\":[undefined,\"£\",0],\"THB\":[undefined,\"฿\"],\"TMM\":[undefined,undefined,0],\"TND\":[undefined,undefined,3],\"TOP\":[undefined,\"T$\"],\"TRL\":[undefined,undefined,0],\"TRY\":[undefined,\"₺\"],\"TTD\":[undefined,\"$\"],\"TWD\":[\"NT$\",\"$\",2],\"TZS\":[undefined,undefined,2],\"UAH\":[undefined,\"₴\"],\"UGX\":[undefined,undefined,0],\"USD\":[\"$\"],\"UYI\":[undefined,undefined,0],\"UYU\":[undefined,\"$\"],\"UYW\":[undefined,undefined,4],\"UZS\":[undefined,undefined,2],\"VEF\":[undefined,\"Bs\",2],\"VND\":[\"₫\",undefined,0],\"VUV\":[undefined,undefined,0],\"XAF\":[\"FCFA\",undefined,0],\"XCD\":[\"EC$\",\"$\"],\"XOF\":[\"F CFA\",undefined,0],\"XPF\":[\"CFPF\",undefined,0],\"XXX\":[\"¤\"],\"YER\":[undefined,undefined,0],\"ZAR\":[undefined,\"R\"],\"ZMK\":[undefined,undefined,0],\"ZMW\":[undefined,\"ZK\"],\"ZWD\":[undefined,undefined,0]}; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵCurrencyIndex, ɵExtraLocaleDataIndex, ɵfindLocaleData, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, ɵLocaleDataIndex} from '@angular/core';  import {CURRENCIES_EN, CurrenciesSymbols} from './currencies';   /**  * Format styles that can be used to represent numbers.  * @see `getLocaleNumberFormat()`.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export enum NumberFormatStyle {   Decimal,   Percent,   Currency,   Scientific }  /**  * Plurality cases used for translating plurals to different languages.  *  * @see `NgPlural`  * @see `NgPluralCase`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export enum Plural {   Zero = 0,   One = 1,   Two = 2,   Few = 3,   Many = 4,   Other = 5, }  /**  * Context-dependant translation forms for strings.  * Typically the standalone version is for the nominative form of the word,  * and the format version is used for the genitive case.  * @see [CLDR website](http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles)  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export enum FormStyle {   Format,   Standalone }  /**  * String widths available for translations.  * The specific character widths are locale-specific.  * Examples are given for the word \"Sunday\" in English.  *  * @publicApi  */ export enum TranslationWidth {   /** 1 character for `en-US`. For example: 'S' */   Narrow,   /** 3 characters for `en-US`. For example: 'Sun' */   Abbreviated,   /** Full length for `en-US`. For example: \"Sunday\" */   Wide,   /** 2 characters for `en-US`, For example: \"Su\" */   Short }  /**  * String widths available for date-time formats.  * The specific character widths are locale-specific.  * Examples are given for `en-US`.  *  * @see `getLocaleDateFormat()`  * @see `getLocaleTimeFormat()`  * @see `getLocaleDateTimeFormat()`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  * @publicApi  */ export enum FormatWidth {   /**    * For `en-US`, 'M/d/yy, h:mm a'`    * (Example: `6/15/15, 9:03 AM`)    */   Short,   /**    * For `en-US`, `'MMM d, y, h:mm:ss a'`    * (Example: `Jun 15, 2015, 9:03:01 AM`)    */   Medium,   /**    * For `en-US`, `'MMMM d, y, h:mm:ss a z'`    * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`)    */   Long,   /**    * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'`    * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`)    */   Full }  /**  * Symbols that can be used to replace placeholders in number patterns.  * Examples are based on `en-US` values.  *  * @see `getLocaleNumberSymbol()`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export enum NumberSymbol {   /**    * Decimal separator.    * For `en-US`, the dot character.    * Example: 2,345`.`67    */   Decimal,   /**    * Grouping separator, typically for thousands.    * For `en-US`, the comma character.    * Example: 2`,`345.67    */   Group,   /**    * List-item separator.    * Example: \"one, two, and three\"    */   List,   /**    * Sign for percentage (out of 100).    * Example: 23.4%    */   PercentSign,   /**    * Sign for positive numbers.    * Example: +23    */   PlusSign,   /**    * Sign for negative numbers.    * Example: -23    */   MinusSign,   /**    * Computer notation for exponential value (n times a power of 10).    * Example: 1.2E3    */   Exponential,   /**    * Human-readable format of exponential.    * Example: 1.2x103    */   SuperscriptingExponent,   /**    * Sign for permille (out of 1000).    * Example: 23.4‰    */   PerMille,   /**    * Infinity, can be used with plus and minus.    * Example: ∞, +∞, -∞    */   Infinity,   /**    * Not a number.    * Example: NaN    */   NaN,   /**    * Symbol used between time units.    * Example: 10:52    */   TimeSeparator,   /**    * Decimal separator for currency values (fallback to `Decimal`).    * Example: $2,345.67    */   CurrencyDecimal,   /**    * Group separator for currency values (fallback to `Group`).    * Example: $2,345.67    */   CurrencyGroup }  /**  * The value for each day of the week, based on the `en-US` locale  *  * @publicApi  */ export enum WeekDay {   Sunday = 0,   Monday,   Tuesday,   Wednesday,   Thursday,   Friday,   Saturday }  /**  * Retrieves the locale ID from the currently loaded locale.  * The loaded locale could be, for example, a global one rather than a regional one.  * @param locale A locale code, such as `fr-FR`.  * @returns The locale code. For example, `fr`.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleId(locale: string): string {   return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId]; }  /**  * Retrieves day period strings for the given locale.  *  * @param locale A locale code for the locale format rules to use.  * @param formStyle The required grammatical form.  * @param width The required character width.  * @returns An array of localized period strings. For example, `[AM, PM]` for `en-US`.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleDayPeriods(     locale: string, formStyle: FormStyle, width: TranslationWidth): Readonly<[string, string]> {   const data = ɵfindLocaleData(locale);   const amPmData = <[string, string][][]>[     data[ɵLocaleDataIndex.DayPeriodsFormat], data[ɵLocaleDataIndex.DayPeriodsStandalone]   ];   const amPm = getLastDefinedValue(amPmData, formStyle);   return getLastDefinedValue(amPm, width); }  /**  * Retrieves days of the week for the given locale, using the Gregorian calendar.  *  * @param locale A locale code for the locale format rules to use.  * @param formStyle The required grammatical form.  * @param width The required character width.  * @returns An array of localized name strings.  * For example,`[Sunday, Monday, ... Saturday]` for `en-US`.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleDayNames(     locale: string, formStyle: FormStyle, width: TranslationWidth): ReadonlyArray<string> {   const data = ɵfindLocaleData(locale);   const daysData =       <string[][][]>[data[ɵLocaleDataIndex.DaysFormat], data[ɵLocaleDataIndex.DaysStandalone]];   const days = getLastDefinedValue(daysData, formStyle);   return getLastDefinedValue(days, width); }  /**  * Retrieves months of the year for the given locale, using the Gregorian calendar.  *  * @param locale A locale code for the locale format rules to use.  * @param formStyle The required grammatical form.  * @param width The required character width.  * @returns An array of localized name strings.  * For example,  `[January, February, ...]` for `en-US`.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleMonthNames(     locale: string, formStyle: FormStyle, width: TranslationWidth): ReadonlyArray<string> {   const data = ɵfindLocaleData(locale);   const monthsData =       <string[][][]>[data[ɵLocaleDataIndex.MonthsFormat], data[ɵLocaleDataIndex.MonthsStandalone]];   const months = getLastDefinedValue(monthsData, formStyle);   return getLastDefinedValue(months, width); }  /**  * Retrieves Gregorian-calendar eras for the given locale.  * @param locale A locale code for the locale format rules to use.  * @param width The required character width.   * @returns An array of localized era strings.  * For example, `[AD, BC]` for `en-US`.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleEraNames(     locale: string, width: TranslationWidth): Readonly<[string, string]> {   const data = ɵfindLocaleData(locale);   const erasData = <[string, string][]>data[ɵLocaleDataIndex.Eras];   return getLastDefinedValue(erasData, width); }  /**  * Retrieves the first day of the week for the given locale.  *  * @param locale A locale code for the locale format rules to use.  * @returns A day index number, using the 0-based week-day index for `en-US`  * (Sunday = 0, Monday = 1, ...).  * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleFirstDayOfWeek(locale: string): WeekDay {   const data = ɵfindLocaleData(locale);   return data[ɵLocaleDataIndex.FirstDayOfWeek]; }  /**  * Range of week days that are considered the week-end for the given locale.  *  * @param locale A locale code for the locale format rules to use.  * @returns The range of day values, `[startDay, endDay]`.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleWeekEndRange(locale: string): [WeekDay, WeekDay] {   const data = ɵfindLocaleData(locale);   return data[ɵLocaleDataIndex.WeekendRange]; }  /**  * Retrieves a localized date-value formatting string.  *  * @param locale A locale code for the locale format rules to use.  * @param width The format type.  * @returns The localized formatting string.  * @see `FormatWidth`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleDateFormat(locale: string, width: FormatWidth): string {   const data = ɵfindLocaleData(locale);   return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width); }  /**  * Retrieves a localized time-value formatting string.  *  * @param locale A locale code for the locale format rules to use.  * @param width The format type.  * @returns The localized formatting string.  * @see `FormatWidth`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)   * @publicApi  */ export function getLocaleTimeFormat(locale: string, width: FormatWidth): string {   const data = ɵfindLocaleData(locale);   return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width); }  /**  * Retrieves a localized date-time formatting string.  *  * @param locale A locale code for the locale format rules to use.  * @param width The format type.  * @returns The localized formatting string.  * @see `FormatWidth`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleDateTimeFormat(locale: string, width: FormatWidth): string {   const data = ɵfindLocaleData(locale);   const dateTimeFormatData = <string[]>data[ɵLocaleDataIndex.DateTimeFormat];   return getLastDefinedValue(dateTimeFormatData, width); }  /**  * Retrieves a localized number symbol that can be used to replace placeholders in number formats.  * @param locale The locale code.  * @param symbol The symbol to localize.  * @returns The character for the localized symbol.  * @see `NumberSymbol`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleNumberSymbol(locale: string, symbol: NumberSymbol): string {   const data = ɵfindLocaleData(locale);   const res = data[ɵLocaleDataIndex.NumberSymbols][symbol];   if (typeof res === 'undefined') {     if (symbol === NumberSymbol.CurrencyDecimal) {       return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Decimal];     } else if (symbol === NumberSymbol.CurrencyGroup) {       return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];     }   }   return res; }  /**  * Retrieves a number format for a given locale.  *  * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00`  * when used to format the number 12345.678 could result in \"12'345,678\". That would happen if the  * grouping separator for your language is an apostrophe, and the decimal separator is a comma.  *  * <b>Important:</b> The characters `.` `,` `0` `#` (and others below) are special placeholders  * that stand for the decimal separator, and so on, and are NOT real characters.  * You must NOT \"translate\" the placeholders. For example, don't change `.` to `,` even though in  * your language the decimal point is written with a comma. The symbols should be replaced by the  * local equivalents, using the appropriate `NumberSymbol` for your language.  *  * Here are the special characters used in number patterns:  *  * | Symbol | Meaning |  * |--------|---------|  * | . | Replaced automatically by the character used for the decimal point. |  * | , | Replaced by the \"grouping\" (thousands) separator. |  * | 0 | Replaced by a digit (or zero if there aren't enough digits). |  * | # | Replaced by a digit (or nothing if there aren't enough). |  * | ¤ | Replaced by a currency symbol, such as $ or USD. |  * | % | Marks a percent format. The % symbol may change position, but must be retained. |  * | E | Marks a scientific format. The E symbol may change position, but must be retained. |  * | ' | Special characters used as literal characters are quoted with ASCII single quotes. |  *  * @param locale A locale code for the locale format rules to use.  * @param type The type of numeric value to be formatted (such as `Decimal` or `Currency`.)  * @returns The localized format string.  * @see `NumberFormatStyle`  * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns)  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleNumberFormat(locale: string, type: NumberFormatStyle): string {   const data = ɵfindLocaleData(locale);   return data[ɵLocaleDataIndex.NumberFormats][type]; }  /**  * Retrieves the symbol used to represent the currency for the main country  * corresponding to a given locale. For example, '$' for `en-US`.  *  * @param locale A locale code for the locale format rules to use.  * @returns The localized symbol character,  * or `null` if the main country cannot be determined.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleCurrencySymbol(locale: string): string|null {   const data = ɵfindLocaleData(locale);   return data[ɵLocaleDataIndex.CurrencySymbol] || null; }  /**  * Retrieves the name of the currency for the main country corresponding  * to a given locale. For example, 'US Dollar' for `en-US`.  * @param locale A locale code for the locale format rules to use.  * @returns The currency name,  * or `null` if the main country cannot be determined.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleCurrencyName(locale: string): string|null {   const data = ɵfindLocaleData(locale);   return data[ɵLocaleDataIndex.CurrencyName] || null; }  /**  * Retrieves the default currency code for the given locale.  *  * The default is defined as the first currency which is still in use.  *  * @param locale The code of the locale whose currency code we want.  * @returns The code of the default currency for the given locale.  *  * @publicApi  */ export function getLocaleCurrencyCode(locale: string): string|null {   return ɵgetLocaleCurrencyCode(locale); }  /**  * Retrieves the currency values for a given locale.  * @param locale A locale code for the locale format rules to use.  * @returns The currency values.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  */ function getLocaleCurrencies(locale: string): {[code: string]: CurrenciesSymbols} {   const data = ɵfindLocaleData(locale);   return data[ɵLocaleDataIndex.Currencies]; }  /**  * @alias core/ɵgetLocalePluralCase  * @publicApi  */ export const getLocalePluralCase: (locale: string) => ((value: number) => Plural) =     ɵgetLocalePluralCase;  function checkFullData(data: any) {   if (!data[ɵLocaleDataIndex.ExtraData]) {     throw new Error(`Missing extra locale data for the locale \"${         data[ɵLocaleDataIndex                  .LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);   } }  /**  * Retrieves locale-specific rules used to determine which day period to use  * when more than one period is defined for a locale.  *  * There is a rule for each defined day period. The  * first rule is applied to the first day period and so on.  * Fall back to AM/PM when no rules are available.  *  * A rule can specify a period as time range, or as a single time value.  *  * This functionality is only available when you have loaded the full locale data.  * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).  *  * @param locale A locale code for the locale format rules to use.  * @returns The rules for the locale, a single time value or array of *from-time, to-time*,  * or null if no periods are available.  *  * @see `getLocaleExtraDayPeriods()`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleExtraDayPeriodRules(locale: string): (Time|[Time, Time])[] {   const data = ɵfindLocaleData(locale);   checkFullData(data);   const rules = data[ɵLocaleDataIndex.ExtraData][ɵExtraLocaleDataIndex.ExtraDayPeriodsRules] || [];   return rules.map((rule: string|[string, string]) => {     if (typeof rule === 'string') {       return extractTime(rule);     }     return [extractTime(rule[0]), extractTime(rule[1])];   }); }  /**  * Retrieves locale-specific day periods, which indicate roughly how a day is broken up  * in different languages.  * For example, for `en-US`, periods are morning, noon, afternoon, evening, and midnight.  *  * This functionality is only available when you have loaded the full locale data.  * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).  *  * @param locale A locale code for the locale format rules to use.  * @param formStyle The required grammatical form.  * @param width The required character width.  * @returns The translated day-period strings.  * @see `getLocaleExtraDayPeriodRules()`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleExtraDayPeriods(     locale: string, formStyle: FormStyle, width: TranslationWidth): string[] {   const data = ɵfindLocaleData(locale);   checkFullData(data);   const dayPeriodsData = <string[][][]>[     data[ɵLocaleDataIndex.ExtraData][ɵExtraLocaleDataIndex.ExtraDayPeriodFormats],     data[ɵLocaleDataIndex.ExtraData][ɵExtraLocaleDataIndex.ExtraDayPeriodStandalone]   ];   const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || [];   return getLastDefinedValue(dayPeriods, width) || []; }  /**  * Retrieves the writing direction of a specified locale  * @param locale A locale code for the locale format rules to use.  * @publicApi  * @returns 'rtl' or 'ltr'  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  */ export function getLocaleDirection(locale: string): 'ltr'|'rtl' {   const data = ɵfindLocaleData(locale);   return data[ɵLocaleDataIndex.Directionality]; }  /**  * Retrieves the first value that is defined in an array, going backwards from an index position.  *  * To avoid repeating the same data (as when the \"format\" and \"standalone\" forms are the same)  * add the first value to the locale data arrays, and add other values only if they are different.  *  * @param data The data array to retrieve from.  * @param index A 0-based index into the array to start from.  * @returns The value immediately before the given index position.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ function getLastDefinedValue<T>(data: T[], index: number): T {   for (let i = index; i > -1; i--) {     if (typeof data[i] !== 'undefined') {       return data[i];     }   }   throw new Error('Locale data API: locale data undefined'); }  /**  * Represents a time value with hours and minutes.  *  * @publicApi  */ export type Time = {   hours: number,   minutes: number };  /**  * Extracts the hours and minutes from a string like \"15:45\"  */ function extractTime(time: string): Time {   const [h, m] = time.split(':');   return {hours: +h, minutes: +m}; }    /**  * Retrieves the currency symbol for a given currency code.  *  * For example, for the default `en-US` locale, the code `USD` can  * be represented by the narrow symbol `$` or the wide symbol `US$`.  *  * @param code The currency code.  * @param format The format, `wide` or `narrow`.  * @param locale A locale code for the locale format rules to use.  *  * @returns The symbol, or the currency code if no symbol is available.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getCurrencySymbol(code: string, format: 'wide'|'narrow', locale = 'en'): string {   const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];   const symbolNarrow = currency[ɵCurrencyIndex.SymbolNarrow];    if (format === 'narrow' && typeof symbolNarrow === 'string') {     return symbolNarrow;   }    return currency[ɵCurrencyIndex.Symbol] || code; }  // Most currencies have cents, that's why the default is 2 const DEFAULT_NB_OF_CURRENCY_DIGITS = 2;  /**  * Reports the number of decimal digits for a given currency.  * The value depends upon the presence of cents in that particular currency.  *  * @param code The currency code.  * @returns The number of decimal digits, typically 0 or 2.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getNumberOfCurrencyDigits(code: string): number {   let digits;   const currency = CURRENCIES_EN[code];   if (currency) {     digits = currency[ɵCurrencyIndex.NbOfDigits];   }   return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {FormatWidth, FormStyle, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleId, getLocaleMonthNames, getLocaleNumberSymbol, getLocaleTimeFormat, NumberSymbol, Time, TranslationWidth} from './locale_data_api';  export const ISO8601_DATE_REGEX =     /^(\\d{4,})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/; //    1        2       3         4          5          6          7          8  9     10      11 const NAMED_FORMATS: {[localeId: string]: {[format: string]: string}} = {}; const DATE_FORMATS_SPLIT =     /((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;  enum ZoneWidth {   Short,   ShortGMT,   Long,   Extended }  enum DateType {   FullYear,   Month,   Date,   Hours,   Minutes,   Seconds,   FractionalSeconds,   Day }  enum TranslationType {   DayPeriods,   Days,   Months,   Eras }  /**  * @ngModule CommonModule  * @description  *  * Formats a date according to locale rules.  *  * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch)  * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime).  * @param format The date-time components to include. See `DatePipe` for details.  * @param locale A locale code for the locale format rules to use.  * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`),  * or a standard UTC/GMT or continental US time zone abbreviation.  * If not specified, uses host system settings.  *  * @returns The formatted date string.  *  * @see `DatePipe`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function formatDate(     value: string|number|Date, format: string, locale: string, timezone?: string): string {   let date = toDate(value);   const namedFormat = getNamedFormat(locale, format);   format = namedFormat || format;    let parts: string[] = [];   let match;   while (format) {     match = DATE_FORMATS_SPLIT.exec(format);     if (match) {       parts = parts.concat(match.slice(1));       const part = parts.pop();       if (!part) {         break;       }       format = part;     } else {       parts.push(format);       break;     }   }    let dateTimezoneOffset = date.getTimezoneOffset();   if (timezone) {     dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);     date = convertTimezoneToLocal(date, timezone, true);   }    let text = '';   parts.forEach(value => {     const dateFormatter = getDateFormatter(value);     text += dateFormatter ? dateFormatter(date, locale, dateTimezoneOffset) :         value === '\\'\\''  ? '\\'' :                             value.replace(/(^'|'$)/g, '').replace(/''/g, '\\'');   });    return text; }  /**  * Create a new Date object with the given date value, and the time set to midnight.  *  * We cannot use `new Date(year, month, date)` because it maps years between 0 and 99 to 1900-1999.  * See: https://github.com/angular/angular/issues/40377  *  * Note that this function returns a Date object whose time is midnight in the current locale's  * timezone. In the future we might want to change this to be midnight in UTC, but this would be a  * considerable breaking change.  */ function createDate(year: number, month: number, date: number): Date {   // The `newDate` is set to midnight (UTC) on January 1st 1970.   // - In PST this will be December 31st 1969 at 4pm.   // - In GMT this will be January 1st 1970 at 1am.   // Note that they even have different years, dates and months!   const newDate = new Date(0);    // `setFullYear()` allows years like 0001 to be set correctly. This function does not   // change the internal time of the date.   // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).   // - In PST this will now be September 20, 2019 at 4pm   // - In GMT this will now be September 20, 2019 at 1am    newDate.setFullYear(year, month, date);   // We want the final date to be at local midnight, so we reset the time.   // - In PST this will now be September 20, 2019 at 12am   // - In GMT this will now be September 20, 2019 at 12am   newDate.setHours(0, 0, 0);    return newDate; }  function getNamedFormat(locale: string, format: string): string {   const localeId = getLocaleId(locale);   NAMED_FORMATS[localeId] = NAMED_FORMATS[localeId] || {};    if (NAMED_FORMATS[localeId][format]) {     return NAMED_FORMATS[localeId][format];   }    let formatValue = '';   switch (format) {     case 'shortDate':       formatValue = getLocaleDateFormat(locale, FormatWidth.Short);       break;     case 'mediumDate':       formatValue = getLocaleDateFormat(locale, FormatWidth.Medium);       break;     case 'longDate':       formatValue = getLocaleDateFormat(locale, FormatWidth.Long);       break;     case 'fullDate':       formatValue = getLocaleDateFormat(locale, FormatWidth.Full);       break;     case 'shortTime':       formatValue = getLocaleTimeFormat(locale, FormatWidth.Short);       break;     case 'mediumTime':       formatValue = getLocaleTimeFormat(locale, FormatWidth.Medium);       break;     case 'longTime':       formatValue = getLocaleTimeFormat(locale, FormatWidth.Long);       break;     case 'fullTime':       formatValue = getLocaleTimeFormat(locale, FormatWidth.Full);       break;     case 'short':       const shortTime = getNamedFormat(locale, 'shortTime');       const shortDate = getNamedFormat(locale, 'shortDate');       formatValue = formatDateTime(           getLocaleDateTimeFormat(locale, FormatWidth.Short), [shortTime, shortDate]);       break;     case 'medium':       const mediumTime = getNamedFormat(locale, 'mediumTime');       const mediumDate = getNamedFormat(locale, 'mediumDate');       formatValue = formatDateTime(           getLocaleDateTimeFormat(locale, FormatWidth.Medium), [mediumTime, mediumDate]);       break;     case 'long':       const longTime = getNamedFormat(locale, 'longTime');       const longDate = getNamedFormat(locale, 'longDate');       formatValue =           formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Long), [longTime, longDate]);       break;     case 'full':       const fullTime = getNamedFormat(locale, 'fullTime');       const fullDate = getNamedFormat(locale, 'fullDate');       formatValue =           formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Full), [fullTime, fullDate]);       break;   }   if (formatValue) {     NAMED_FORMATS[localeId][format] = formatValue;   }   return formatValue; }  function formatDateTime(str: string, opt_values: string[]) {   if (opt_values) {     str = str.replace(/\\{([^}]+)}/g, function(match, key) {       return (opt_values != null && key in opt_values) ? opt_values[key] : match;     });   }   return str; }  function padNumber(     num: number, digits: number, minusSign = '-', trim?: boolean, negWrap?: boolean): string {   let neg = '';   if (num < 0 || (negWrap && num <= 0)) {     if (negWrap) {       num = -num + 1;     } else {       num = -num;       neg = minusSign;     }   }   let strNum = String(num);   while (strNum.length < digits) {     strNum = '0' + strNum;   }   if (trim) {     strNum = strNum.slice(strNum.length - digits);   }   return neg + strNum; }  function formatFractionalSeconds(milliseconds: number, digits: number): string {   const strMs = padNumber(milliseconds, 3);   return strMs.substring(0, digits); }  /**  * Returns a date formatter that transforms a date into its locale digit representation  */ function dateGetter(     name: DateType, size: number, offset: number = 0, trim = false,     negWrap = false): DateFormatter {   return function(date: Date, locale: string): string {     let part = getDatePart(name, date);     if (offset > 0 || part > -offset) {       part += offset;     }      if (name === DateType.Hours) {       if (part === 0 && offset === -12) {         part = 12;       }     } else if (name === DateType.FractionalSeconds) {       return formatFractionalSeconds(part, size);     }      const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);     return padNumber(part, size, localeMinus, trim, negWrap);   }; }  function getDatePart(part: DateType, date: Date): number {   switch (part) {     case DateType.FullYear:       return date.getFullYear();     case DateType.Month:       return date.getMonth();     case DateType.Date:       return date.getDate();     case DateType.Hours:       return date.getHours();     case DateType.Minutes:       return date.getMinutes();     case DateType.Seconds:       return date.getSeconds();     case DateType.FractionalSeconds:       return date.getMilliseconds();     case DateType.Day:       return date.getDay();     default:       throw new Error(`Unknown DateType value \"${part}\".`);   } }  /**  * Returns a date formatter that transforms a date into its locale string representation  */ function dateStrGetter(     name: TranslationType, width: TranslationWidth, form: FormStyle = FormStyle.Format,     extended = false): DateFormatter {   return function(date: Date, locale: string): string {     return getDateTranslation(date, locale, name, width, form, extended);   }; }  /**  * Returns the locale translation of a date for a given form, type and width  */ function getDateTranslation(     date: Date, locale: string, name: TranslationType, width: TranslationWidth, form: FormStyle,     extended: boolean) {   switch (name) {     case TranslationType.Months:       return getLocaleMonthNames(locale, form, width)[date.getMonth()];     case TranslationType.Days:       return getLocaleDayNames(locale, form, width)[date.getDay()];     case TranslationType.DayPeriods:       const currentHours = date.getHours();       const currentMinutes = date.getMinutes();       if (extended) {         const rules = getLocaleExtraDayPeriodRules(locale);         const dayPeriods = getLocaleExtraDayPeriods(locale, form, width);         const index = rules.findIndex(rule => {           if (Array.isArray(rule)) {             // morning, afternoon, evening, night             const [from, to] = rule;             const afterFrom = currentHours >= from.hours && currentMinutes >= from.minutes;             const beforeTo =                 (currentHours < to.hours ||                  (currentHours === to.hours && currentMinutes < to.minutes));             // We must account for normal rules that span a period during the day (e.g. 6am-9am)             // where `from` is less (earlier) than `to`. But also rules that span midnight (e.g.             // 10pm - 5am) where `from` is greater (later!) than `to`.             //             // In the first case the current time must be BOTH after `from` AND before `to`             // (e.g. 8am is after 6am AND before 10am).             //             // In the second case the current time must be EITHER after `from` OR before `to`             // (e.g. 4am is before 5am but not after 10pm; and 11pm is not before 5am but it is             // after 10pm).             if (from.hours < to.hours) {               if (afterFrom && beforeTo) {                 return true;               }             } else if (afterFrom || beforeTo) {               return true;             }           } else {  // noon or midnight             if (rule.hours === currentHours && rule.minutes === currentMinutes) {               return true;             }           }           return false;         });         if (index !== -1) {           return dayPeriods[index];         }       }       // if no rules for the day periods, we use am/pm by default       return getLocaleDayPeriods(locale, form, <TranslationWidth>width)[currentHours < 12 ? 0 : 1];     case TranslationType.Eras:       return getLocaleEraNames(locale, <TranslationWidth>width)[date.getFullYear() <= 0 ? 0 : 1];     default:       // This default case is not needed by TypeScript compiler, as the switch is exhaustive.       // However Closure Compiler does not understand that and reports an error in typed mode.       // The `throw new Error` below works around the problem, and the unexpected: never variable       // makes sure tsc still checks this code is unreachable.       const unexpected: never = name;       throw new Error(`unexpected translation type ${unexpected}`);   } }  /**  * Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or  * GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30,  * extended = +04:30)  */ function timeZoneGetter(width: ZoneWidth): DateFormatter {   return function(date: Date, locale: string, offset: number) {     const zone = -1 * offset;     const minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);     const hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60);     switch (width) {       case ZoneWidth.Short:         return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) +             padNumber(Math.abs(zone % 60), 2, minusSign);       case ZoneWidth.ShortGMT:         return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 1, minusSign);       case ZoneWidth.Long:         return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +             padNumber(Math.abs(zone % 60), 2, minusSign);       case ZoneWidth.Extended:         if (offset === 0) {           return 'Z';         } else {           return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +               padNumber(Math.abs(zone % 60), 2, minusSign);         }       default:         throw new Error(`Unknown zone width \"${width}\"`);     }   }; }  const JANUARY = 0; const THURSDAY = 4; function getFirstThursdayOfYear(year: number) {   const firstDayOfYear = createDate(year, JANUARY, 1).getDay();   return createDate(       year, 0, 1 + ((firstDayOfYear <= THURSDAY) ? THURSDAY : THURSDAY + 7) - firstDayOfYear); }  function getThursdayThisWeek(datetime: Date) {   return createDate(       datetime.getFullYear(), datetime.getMonth(),       datetime.getDate() + (THURSDAY - datetime.getDay())); }  function weekGetter(size: number, monthBased = false): DateFormatter {   return function(date: Date, locale: string) {     let result;     if (monthBased) {       const nbDaysBefore1stDayOfMonth =           new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1;       const today = date.getDate();       result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7);     } else {       const thisThurs = getThursdayThisWeek(date);       // Some days of a year are part of next year according to ISO 8601.       // Compute the firstThurs from the year of this week's Thursday       const firstThurs = getFirstThursdayOfYear(thisThurs.getFullYear());       const diff = thisThurs.getTime() - firstThurs.getTime();       result = 1 + Math.round(diff / 6.048e8);  // 6.048e8 ms per week     }      return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));   }; }  /**  * Returns a date formatter that provides the week-numbering year for the input date.  */ function weekNumberingYearGetter(size: number, trim = false): DateFormatter {   return function(date: Date, locale: string) {     const thisThurs = getThursdayThisWeek(date);     const weekNumberingYear = thisThurs.getFullYear();     return padNumber(         weekNumberingYear, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign), trim);   }; }  type DateFormatter = (date: Date, locale: string, offset: number) => string;  const DATE_FORMATS: {[format: string]: DateFormatter} = {};  // Based on CLDR formats: // See complete list: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table // See also explanations: http://cldr.unicode.org/translation/date-time // TODO(ocombe): support all missing cldr formats: U, Q, D, F, e, j, J, C, A, v, V, X, x function getDateFormatter(format: string): DateFormatter|null {   if (DATE_FORMATS[format]) {     return DATE_FORMATS[format];   }   let formatter;   switch (format) {     // Era name (AD/BC)     case 'G':     case 'GG':     case 'GGG':       formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Abbreviated);       break;     case 'GGGG':       formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Wide);       break;     case 'GGGGG':       formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Narrow);       break;      // 1 digit representation of the year, e.g. (AD 1 => 1, AD 199 => 199)     case 'y':       formatter = dateGetter(DateType.FullYear, 1, 0, false, true);       break;     // 2 digit representation of the year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)     case 'yy':       formatter = dateGetter(DateType.FullYear, 2, 0, true, true);       break;     // 3 digit representation of the year, padded (000-999). (e.g. AD 2001 => 01, AD 2010 => 10)     case 'yyy':       formatter = dateGetter(DateType.FullYear, 3, 0, false, true);       break;     // 4 digit representation of the year (e.g. AD 1 => 0001, AD 2010 => 2010)     case 'yyyy':       formatter = dateGetter(DateType.FullYear, 4, 0, false, true);       break;      // 1 digit representation of the week-numbering year, e.g. (AD 1 => 1, AD 199 => 199)     case 'Y':       formatter = weekNumberingYearGetter(1);       break;     // 2 digit representation of the week-numbering year, padded (00-99). (e.g. AD 2001 => 01, AD     // 2010 => 10)     case 'YY':       formatter = weekNumberingYearGetter(2, true);       break;     // 3 digit representation of the week-numbering year, padded (000-999). (e.g. AD 1 => 001, AD     // 2010 => 2010)     case 'YYY':       formatter = weekNumberingYearGetter(3);       break;     // 4 digit representation of the week-numbering year (e.g. AD 1 => 0001, AD 2010 => 2010)     case 'YYYY':       formatter = weekNumberingYearGetter(4);       break;      // Month of the year (1-12), numeric     case 'M':     case 'L':       formatter = dateGetter(DateType.Month, 1, 1);       break;     case 'MM':     case 'LL':       formatter = dateGetter(DateType.Month, 2, 1);       break;      // Month of the year (January, ...), string, format     case 'MMM':       formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated);       break;     case 'MMMM':       formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide);       break;     case 'MMMMM':       formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow);       break;      // Month of the year (January, ...), string, standalone     case 'LLL':       formatter =           dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated, FormStyle.Standalone);       break;     case 'LLLL':       formatter =           dateStrGetter(TranslationType.Months, TranslationWidth.Wide, FormStyle.Standalone);       break;     case 'LLLLL':       formatter =           dateStrGetter(TranslationType.Months, TranslationWidth.Narrow, FormStyle.Standalone);       break;      // Week of the year (1, ... 52)     case 'w':       formatter = weekGetter(1);       break;     case 'ww':       formatter = weekGetter(2);       break;      // Week of the month (1, ...)     case 'W':       formatter = weekGetter(1, true);       break;      // Day of the month (1-31)     case 'd':       formatter = dateGetter(DateType.Date, 1);       break;     case 'dd':       formatter = dateGetter(DateType.Date, 2);       break;      // Day of the Week StandAlone (1, 1, Mon, Monday, M, Mo)     case 'c':     case 'cc':       formatter = dateGetter(DateType.Day, 1);       break;     case 'ccc':       formatter =           dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated, FormStyle.Standalone);       break;     case 'cccc':       formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide, FormStyle.Standalone);       break;     case 'ccccc':       formatter =           dateStrGetter(TranslationType.Days, TranslationWidth.Narrow, FormStyle.Standalone);       break;     case 'cccccc':       formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short, FormStyle.Standalone);       break;      // Day of the Week     case 'E':     case 'EE':     case 'EEE':       formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated);       break;     case 'EEEE':       formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide);       break;     case 'EEEEE':       formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow);       break;     case 'EEEEEE':       formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short);       break;      // Generic period of the day (am-pm)     case 'a':     case 'aa':     case 'aaa':       formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated);       break;     case 'aaaa':       formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide);       break;     case 'aaaaa':       formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow);       break;      // Extended period of the day (midnight, at night, ...), standalone     case 'b':     case 'bb':     case 'bbb':       formatter = dateStrGetter(           TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true);       break;     case 'bbbb':       formatter = dateStrGetter(           TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true);       break;     case 'bbbbb':       formatter = dateStrGetter(           TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true);       break;      // Extended period of the day (midnight, night, ...), standalone     case 'B':     case 'BB':     case 'BBB':       formatter = dateStrGetter(           TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Format, true);       break;     case 'BBBB':       formatter =           dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Format, true);       break;     case 'BBBBB':       formatter = dateStrGetter(           TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true);       break;      // Hour in AM/PM, (1-12)     case 'h':       formatter = dateGetter(DateType.Hours, 1, -12);       break;     case 'hh':       formatter = dateGetter(DateType.Hours, 2, -12);       break;      // Hour of the day (0-23)     case 'H':       formatter = dateGetter(DateType.Hours, 1);       break;     // Hour in day, padded (00-23)     case 'HH':       formatter = dateGetter(DateType.Hours, 2);       break;      // Minute of the hour (0-59)     case 'm':       formatter = dateGetter(DateType.Minutes, 1);       break;     case 'mm':       formatter = dateGetter(DateType.Minutes, 2);       break;      // Second of the minute (0-59)     case 's':       formatter = dateGetter(DateType.Seconds, 1);       break;     case 'ss':       formatter = dateGetter(DateType.Seconds, 2);       break;      // Fractional second     case 'S':       formatter = dateGetter(DateType.FractionalSeconds, 1);       break;     case 'SS':       formatter = dateGetter(DateType.FractionalSeconds, 2);       break;     case 'SSS':       formatter = dateGetter(DateType.FractionalSeconds, 3);       break;       // Timezone ISO8601 short format (-0430)     case 'Z':     case 'ZZ':     case 'ZZZ':       formatter = timeZoneGetter(ZoneWidth.Short);       break;     // Timezone ISO8601 extended format (-04:30)     case 'ZZZZZ':       formatter = timeZoneGetter(ZoneWidth.Extended);       break;      // Timezone GMT short format (GMT+4)     case 'O':     case 'OO':     case 'OOO':     // Should be location, but fallback to format O instead because we don't have the data yet     case 'z':     case 'zz':     case 'zzz':       formatter = timeZoneGetter(ZoneWidth.ShortGMT);       break;     // Timezone GMT long format (GMT+0430)     case 'OOOO':     case 'ZZZZ':     // Should be location, but fallback to format O instead because we don't have the data yet     case 'zzzz':       formatter = timeZoneGetter(ZoneWidth.Long);       break;     default:       return null;   }   DATE_FORMATS[format] = formatter;   return formatter; }  function timezoneToOffset(timezone: string, fallback: number): number {   // Support: IE 11 only, Edge 13-15+   // IE/Edge do not \"understand\" colon (`:`) in timezone   timezone = timezone.replace(/:/g, '');   const requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;   return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset; }  function addDateMinutes(date: Date, minutes: number) {   date = new Date(date.getTime());   date.setMinutes(date.getMinutes() + minutes);   return date; }  function convertTimezoneToLocal(date: Date, timezone: string, reverse: boolean): Date {   const reverseValue = reverse ? -1 : 1;   const dateTimezoneOffset = date.getTimezoneOffset();   const timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);   return addDateMinutes(date, reverseValue * (timezoneOffset - dateTimezoneOffset)); }  /**  * Converts a value to date.  *  * Supported input formats:  * - `Date`  * - number: timestamp  * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by  *   [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).  *   Note: ISO strings without time return a date without timeoffset.  *  * Throws if unable to convert to a date.  */ export function toDate(value: string|number|Date): Date {   if (isDate(value)) {     return value;   }    if (typeof value === 'number' && !isNaN(value)) {     return new Date(value);   }    if (typeof value === 'string') {     value = value.trim();      if (/^(\\d{4}(-\\d{1,2}(-\\d{1,2})?)?)$/.test(value)) {       /* For ISO Strings without time the day, month and year must be extracted from the ISO String       before Date creation to avoid time offset and errors in the new Date.       If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new       date, some browsers (e.g. IE 9) will throw an invalid Date error.       If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset       is applied.       Note: ISO months are 0 for January, 1 for February, ... */       const [y, m = 1, d = 1] = value.split('-').map((val: string) => +val);       return createDate(y, m - 1, d);     }      const parsedNb = parseFloat(value);      // any string that only contains numbers, like \"1234\" but not like \"1234hello\"     if (!isNaN(value as any - parsedNb)) {       return new Date(parsedNb);     }      let match: RegExpMatchArray|null;     if (match = value.match(ISO8601_DATE_REGEX)) {       return isoStringToDate(match);     }   }    const date = new Date(value as any);   if (!isDate(date)) {     throw new Error(`Unable to convert \"${value}\" into a date`);   }   return date; }  /**  * Converts a date in ISO8601 to a Date.  * Used instead of `Date.parse` because of browser discrepancies.  */ export function isoStringToDate(match: RegExpMatchArray): Date {   const date = new Date(0);   let tzHour = 0;   let tzMin = 0;    // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"   const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;   const timeSetter = match[8] ? date.setUTCHours : date.setHours;    // if there is a timezone defined like \"+01:00\" or \"+0100\"   if (match[9]) {     tzHour = Number(match[9] + match[10]);     tzMin = Number(match[9] + match[11]);   }   dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));   const h = Number(match[4] || 0) - tzHour;   const m = Number(match[5] || 0) - tzMin;   const s = Number(match[6] || 0);   // The ECMAScript specification (https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.11)   // defines that `DateTime` milliseconds should always be rounded down, so that `999.9ms`   // becomes `999ms`.   const ms = Math.floor(parseFloat('0.' + (match[7] || 0)) * 1000);   timeSetter.call(date, h, m, s, ms);   return date; }  export function isDate(value: any): value is Date {   return value instanceof Date && !isNaN(value.valueOf()); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {getLocaleNumberFormat, getLocaleNumberSymbol, getNumberOfCurrencyDigits, NumberFormatStyle, NumberSymbol} from './locale_data_api';  export const NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/; const MAX_DIGITS = 22; const DECIMAL_SEP = '.'; const ZERO_CHAR = '0'; const PATTERN_SEP = ';'; const GROUP_SEP = ','; const DIGIT_CHAR = '#'; const CURRENCY_CHAR = '¤'; const PERCENT_CHAR = '%';  /**  * Transforms a number to a locale string based on a style and a format.  */ function formatNumberToLocaleString(     value: number, pattern: ParsedNumberFormat, locale: string, groupSymbol: NumberSymbol,     decimalSymbol: NumberSymbol, digitsInfo?: string, isPercent = false): string {   let formattedText = '';   let isZero = false;    if (!isFinite(value)) {     formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);   } else {     let parsedNumber = parseNumber(value);      if (isPercent) {       parsedNumber = toPercent(parsedNumber);     }      let minInt = pattern.minInt;     let minFraction = pattern.minFrac;     let maxFraction = pattern.maxFrac;      if (digitsInfo) {       const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);       if (parts === null) {         throw new Error(`${digitsInfo} is not a valid digit info`);       }       const minIntPart = parts[1];       const minFractionPart = parts[3];       const maxFractionPart = parts[5];       if (minIntPart != null) {         minInt = parseIntAutoRadix(minIntPart);       }       if (minFractionPart != null) {         minFraction = parseIntAutoRadix(minFractionPart);       }       if (maxFractionPart != null) {         maxFraction = parseIntAutoRadix(maxFractionPart);       } else if (minFractionPart != null && minFraction > maxFraction) {         maxFraction = minFraction;       }     }      roundNumber(parsedNumber, minFraction, maxFraction);      let digits = parsedNumber.digits;     let integerLen = parsedNumber.integerLen;     const exponent = parsedNumber.exponent;     let decimals = [];     isZero = digits.every(d => !d);      // pad zeros for small numbers     for (; integerLen < minInt; integerLen++) {       digits.unshift(0);     }      // pad zeros for small numbers     for (; integerLen < 0; integerLen++) {       digits.unshift(0);     }      // extract decimals digits     if (integerLen > 0) {       decimals = digits.splice(integerLen, digits.length);     } else {       decimals = digits;       digits = [0];     }      // format the integer digits with grouping separators     const groups = [];     if (digits.length >= pattern.lgSize) {       groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));     }      while (digits.length > pattern.gSize) {       groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));     }      if (digits.length) {       groups.unshift(digits.join(''));     }      formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol));      // append the decimal digits     if (decimals.length) {       formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join('');     }      if (exponent) {       formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent;     }   }    if (value < 0 && !isZero) {     formattedText = pattern.negPre + formattedText + pattern.negSuf;   } else {     formattedText = pattern.posPre + formattedText + pattern.posSuf;   }    return formattedText; }  /**  * @ngModule CommonModule  * @description  *  * Formats a number as currency using locale rules.  *  * @param value The number to format.  * @param locale A locale code for the locale format rules to use.  * @param currency A string containing the currency symbol or its name,  * such as \"$\" or \"Canadian Dollar\". Used in output string, but does not affect the operation  * of the function.  * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)  * currency code, such as `USD` for the US dollar and `EUR` for the euro.  * Used to determine the number of digits in the decimal part.  * @param digitsInfo Decimal representation options, specified by a string in the following format:  * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.  *  * @returns The formatted currency value.  *  * @see `formatNumber()`  * @see `DecimalPipe`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function formatCurrency(     value: number, locale: string, currency: string, currencyCode?: string,     digitsInfo?: string): string {   const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency);   const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));    pattern.minFrac = getNumberOfCurrencyDigits(currencyCode!);   pattern.maxFrac = pattern.minFrac;    const res = formatNumberToLocaleString(       value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo);   return res       .replace(CURRENCY_CHAR, currency)       // if we have 2 time the currency character, the second one is ignored       .replace(CURRENCY_CHAR, '')       // If there is a spacing between currency character and the value and       // the currency character is suppressed by passing an empty string, the       // spacing character would remain as part of the string. Then we       // should remove it.       .trim(); }  /**  * @ngModule CommonModule  * @description  *  * Formats a number as a percentage according to locale rules.  *  * @param value The number to format.  * @param locale A locale code for the locale format rules to use.  * @param digitsInfo Decimal representation options, specified by a string in the following format:  * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.  *  * @returns The formatted percentage value.  *  * @see `formatNumber()`  * @see `DecimalPipe`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  * @publicApi  *  */ export function formatPercent(value: number, locale: string, digitsInfo?: string): string {   const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent);   const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));   const res = formatNumberToLocaleString(       value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true);   return res.replace(       new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign)); }  /**  * @ngModule CommonModule  * @description  *  * Formats a number as text, with group sizing, separator, and other  * parameters based on the locale.  *  * @param value The number to format.  * @param locale A locale code for the locale format rules to use.  * @param digitsInfo Decimal representation options, specified by a string in the following format:  * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.  *  * @returns The formatted text string.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function formatNumber(value: number, locale: string, digitsInfo?: string): string {   const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);   const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));   return formatNumberToLocaleString(       value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo); }  interface ParsedNumberFormat {   minInt: number;   // the minimum number of digits required in the fraction part of the number   minFrac: number;   // the maximum number of digits required in the fraction part of the number   maxFrac: number;   // the prefix for a positive number   posPre: string;   // the suffix for a positive number   posSuf: string;   // the prefix for a negative number (e.g. `-` or `(`))   negPre: string;   // the suffix for a negative number (e.g. `)`)   negSuf: string;   // number of digits in each group of separated digits   gSize: number;   // number of digits in the last group of digits before the decimal separator   lgSize: number; }  function parseNumberFormat(format: string, minusSign = '-'): ParsedNumberFormat {   const p = {     minInt: 1,     minFrac: 0,     maxFrac: 0,     posPre: '',     posSuf: '',     negPre: '',     negSuf: '',     gSize: 0,     lgSize: 0   };    const patternParts = format.split(PATTERN_SEP);   const positive = patternParts[0];   const negative = patternParts[1];    const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1 ?       positive.split(DECIMAL_SEP) :       [         positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1),         positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1)       ],         integer = positiveParts[0], fraction = positiveParts[1] || '';    p.posPre = integer.substring(0, integer.indexOf(DIGIT_CHAR));    for (let i = 0; i < fraction.length; i++) {     const ch = fraction.charAt(i);     if (ch === ZERO_CHAR) {       p.minFrac = p.maxFrac = i + 1;     } else if (ch === DIGIT_CHAR) {       p.maxFrac = i + 1;     } else {       p.posSuf += ch;     }   }    const groups = integer.split(GROUP_SEP);   p.gSize = groups[1] ? groups[1].length : 0;   p.lgSize = (groups[2] || groups[1]) ? (groups[2] || groups[1]).length : 0;    if (negative) {     const trunkLen = positive.length - p.posPre.length - p.posSuf.length,           pos = negative.indexOf(DIGIT_CHAR);      p.negPre = negative.substring(0, pos).replace(/'/g, '');     p.negSuf = negative.slice(pos + trunkLen).replace(/'/g, '');   } else {     p.negPre = minusSign + p.posPre;     p.negSuf = p.posSuf;   }    return p; }  interface ParsedNumber {   // an array of digits containing leading zeros as necessary   digits: number[];   // the exponent for numbers that would need more than `MAX_DIGITS` digits in `d`   exponent: number;   // the number of the digits in `d` that are to the left of the decimal point   integerLen: number; }  // Transforms a parsed number into a percentage by multiplying it by 100 function toPercent(parsedNumber: ParsedNumber): ParsedNumber {   // if the number is 0, don't do anything   if (parsedNumber.digits[0] === 0) {     return parsedNumber;   }    // Getting the current number of decimals   const fractionLen = parsedNumber.digits.length - parsedNumber.integerLen;   if (parsedNumber.exponent) {     parsedNumber.exponent += 2;   } else {     if (fractionLen === 0) {       parsedNumber.digits.push(0, 0);     } else if (fractionLen === 1) {       parsedNumber.digits.push(0);     }     parsedNumber.integerLen += 2;   }    return parsedNumber; }  /**  * Parses a number.  * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/  */ function parseNumber(num: number): ParsedNumber {   let numStr = Math.abs(num) + '';   let exponent = 0, digits, integerLen;   let i, j, zeros;    // Decimal point?   if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) {     numStr = numStr.replace(DECIMAL_SEP, '');   }    // Exponential form?   if ((i = numStr.search(/e/i)) > 0) {     // Work out the exponent.     if (integerLen < 0) integerLen = i;     integerLen += +numStr.slice(i + 1);     numStr = numStr.substring(0, i);   } else if (integerLen < 0) {     // There was no decimal point or exponent so it is an integer.     integerLen = numStr.length;   }    // Count the number of leading zeros.   for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */   }    if (i === (zeros = numStr.length)) {     // The digits are all zero.     digits = [0];     integerLen = 1;   } else {     // Count the number of trailing zeros     zeros--;     while (numStr.charAt(zeros) === ZERO_CHAR) zeros--;      // Trailing zeros are insignificant so ignore them     integerLen -= i;     digits = [];     // Convert string to array of digits without leading/trailing zeros.     for (j = 0; i <= zeros; i++, j++) {       digits[j] = Number(numStr.charAt(i));     }   }    // If the number overflows the maximum allowed digits then use an exponent.   if (integerLen > MAX_DIGITS) {     digits = digits.splice(0, MAX_DIGITS - 1);     exponent = integerLen - 1;     integerLen = 1;   }    return {digits, exponent, integerLen}; }  /**  * Round the parsed number to the specified number of decimal places  * This function changes the parsedNumber in-place  */ function roundNumber(parsedNumber: ParsedNumber, minFrac: number, maxFrac: number) {   if (minFrac > maxFrac) {     throw new Error(`The minimum number of digits after fraction (${         minFrac}) is higher than the maximum (${maxFrac}).`);   }    let digits = parsedNumber.digits;   let fractionLen = digits.length - parsedNumber.integerLen;   const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac);    // The index of the digit to where rounding is to occur   let roundAt = fractionSize + parsedNumber.integerLen;   let digit = digits[roundAt];    if (roundAt > 0) {     // Drop fractional digits beyond `roundAt`     digits.splice(Math.max(parsedNumber.integerLen, roundAt));      // Set non-fractional digits beyond `roundAt` to 0     for (let j = roundAt; j < digits.length; j++) {       digits[j] = 0;     }   } else {     // We rounded to zero so reset the parsedNumber     fractionLen = Math.max(0, fractionLen);     parsedNumber.integerLen = 1;     digits.length = Math.max(1, roundAt = fractionSize + 1);     digits[0] = 0;     for (let i = 1; i < roundAt; i++) digits[i] = 0;   }    if (digit >= 5) {     if (roundAt - 1 < 0) {       for (let k = 0; k > roundAt; k--) {         digits.unshift(0);         parsedNumber.integerLen++;       }       digits.unshift(1);       parsedNumber.integerLen++;     } else {       digits[roundAt - 1]++;     }   }    // Pad out with zeros to get the required fraction length   for (; fractionLen < Math.max(0, fractionSize); fractionLen++) digits.push(0);    let dropTrailingZeros = fractionSize !== 0;   // Minimal length = nb of decimals required + current nb of integers   // Any number besides that is optional and can be removed if it's a trailing 0   const minLen = minFrac + parsedNumber.integerLen;   // Do any carrying, e.g. a digit was rounded up to 10   const carry = digits.reduceRight(function(carry, d, i, digits) {     d = d + carry;     digits[i] = d < 10 ? d : d - 10;  // d % 10     if (dropTrailingZeros) {       // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52)       if (digits[i] === 0 && i >= minLen) {         digits.pop();       } else {         dropTrailingZeros = false;       }     }     return d >= 10 ? 1 : 0;  // Math.floor(d / 10);   }, 0);   if (carry) {     digits.unshift(carry);     parsedNumber.integerLen++;   } }  export function parseIntAutoRadix(text: string): number {   const result: number = parseInt(text);   if (isNaN(result)) {     throw new Error('Invalid integer literal when parsing ' + text);   }   return result; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, Injectable, LOCALE_ID} from '@angular/core';  import {getLocalePluralCase, Plural} from './locale_data_api';  /**  * @publicApi  */ @Injectable({   providedIn: 'root',   useFactory: (locale: string) => new NgLocaleLocalization(locale),   deps: [LOCALE_ID], }) export abstract class NgLocalization {   abstract getPluralCategory(value: any, locale?: string): string; }  /**  * Returns the plural category for a given value.  * - \"=value\" when the case exists,  * - the plural category otherwise  */ export function getPluralCategory(     value: number, cases: string[], ngLocalization: NgLocalization, locale?: string): string {   let key = `=${value}`;    if (cases.indexOf(key) > -1) {     return key;   }    key = ngLocalization.getPluralCategory(value, locale);    if (cases.indexOf(key) > -1) {     return key;   }    if (cases.indexOf('other') > -1) {     return 'other';   }    throw new Error(`No plural message found for value \"${value}\"`); }  /**  * Returns the plural case based on the locale  *  * @publicApi  */ @Injectable() export class NgLocaleLocalization extends NgLocalization {   constructor(@Inject(LOCALE_ID) protected locale: string) {     super();   }    override getPluralCategory(value: any, locale?: string): string {     const plural = getLocalePluralCase(locale || this.locale)(value);      switch (plural) {       case Plural.Zero:         return 'zero';       case Plural.One:         return 'one';       case Plural.Two:         return 'two';       case Plural.Few:         return 'few';       case Plural.Many:         return 'many';       default:         return 'other';     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵregisterLocaleData} from '@angular/core';  /**  * Register global data to be used internally by Angular. See the  * [\"I18n guide\"](guide/i18n-common-format-data-locale) to know how to import additional locale  * data.  *  * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1  *  * @publicApi  */ export function registerLocaleData(data: any, localeId?: string|any, extraData?: any): void {   return ɵregisterLocaleData(data, localeId, extraData); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export function parseCookieValue(cookieStr: string, name: string): string|null {   name = encodeURIComponent(name);   for (const cookie of cookieStr.split(';')) {     const eqIndex = cookie.indexOf('=');     const [cookieName, cookieValue]: string[] =         eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];     if (cookieName.trim() === name) {       return decodeURIComponent(cookieValue);     }   }   return null; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {Directive, DoCheck, ElementRef, Input, IterableDiffers, KeyValueDiffers, Renderer2, ɵstringify as stringify} from '@angular/core';  type NgClassSupportedTypes = string[]|Set<string>|{[klass: string]: any}|null|undefined;  const WS_REGEXP = /\\s+/;  const EMPTY_ARRAY: string[] = [];  /**  * Represents internal object used to track state of each CSS class. There are 3 different (boolean)  * flags that, combined together, indicate state of a given CSS class:  * - enabled: indicates if a class should be present in the DOM (true) or not (false);  * - changed: tracks if a class was toggled (added or removed) during the custom dirty-checking  * process; changed classes must be synchronized with the DOM;  * - touched: tracks if a class is present in the current object bound to the class / ngClass input;  * classes that are not present any more can be removed from the internal data structures;  */ interface CssClassState {   // PERF: could use a bit mask to represent state as all fields are boolean flags   enabled: boolean;   changed: boolean;   touched: boolean; }  /**  * @ngModule CommonModule  *  * @usageNotes  * ```  *     <some-element [ngClass]=\"'first second'\">...</some-element>  *  *     <some-element [ngClass]=\"['first', 'second']\">...</some-element>  *  *     <some-element [ngClass]=\"{'first': true, 'second': true, 'third': false}\">...</some-element>  *  *     <some-element [ngClass]=\"stringExp|arrayExp|objExp\">...</some-element>  *  *     <some-element [ngClass]=\"{'class1 class2 class3' : true}\">...</some-element>  * ```  *  * @description  *  * Adds and removes CSS classes on an HTML element.  *  * The CSS classes are updated as follows, depending on the type of the expression evaluation:  * - `string` - the CSS classes listed in the string (space delimited) are added,  * - `Array` - the CSS classes declared as Array elements are added,  * - `Object` - keys are CSS classes that get added when the expression given in the value  *              evaluates to a truthy value, otherwise they are removed.  *  * @publicApi  */ @Directive({   selector: '[ngClass]',   standalone: true, }) export class NgClass implements DoCheck {   private initialClasses = EMPTY_ARRAY;   private rawClass: NgClassSupportedTypes;    private stateMap = new Map<string, CssClassState>();    constructor(       // leaving references to differs in place since flex layout is extending NgClass...       private _iterableDiffers: IterableDiffers, private _keyValueDiffers: KeyValueDiffers,       private _ngEl: ElementRef, private _renderer: Renderer2) {}    @Input('class')   set klass(value: string) {     this.initialClasses = value != null ? value.trim().split(WS_REGEXP) : EMPTY_ARRAY;   }    @Input('ngClass')   set ngClass(value: string|string[]|Set<string>|{[klass: string]: any}|null|undefined) {     this.rawClass = typeof value === 'string' ? value.trim().split(WS_REGEXP) : value;   }    /*   The NgClass directive uses the custom change detection algorithm for its inputs. The custom   algorithm is necessary since inputs are represented as complex object or arrays that need to be   deeply-compared.    This algorithm is perf-sensitive since NgClass is used very frequently and its poor performance   might negatively impact runtime performance of the entire change detection cycle. The design of   this algorithm is making sure that:   - there is no unnecessary DOM manipulation (CSS classes are added / removed from the DOM only when   needed), even if references to bound objects change;   - there is no memory allocation if nothing changes (even relatively modest memory allocation   during the change detection cycle can result in GC pauses for some of the CD cycles).    The algorithm works by iterating over the set of bound classes, staring with [class] binding and   then going over [ngClass] binding. For each CSS class name:   - check if it was seen before (this information is tracked in the state map) and if its value   changed;   - mark it as \"touched\" - names that are not marked are not present in the latest set of binding   and we can remove such class name from the internal data structures;    After iteration over all the CSS class names we've got data structure with all the information   necessary to synchronize changes to the DOM - it is enough to iterate over the state map, flush   changes to the DOM and reset internal data structures so those are ready for the next change   detection cycle.    */   ngDoCheck(): void {     // classes from the [class] binding     for (const klass of this.initialClasses) {       this._updateState(klass, true);     }      // classes from the [ngClass] binding     const rawClass = this.rawClass;     if (Array.isArray(rawClass) || rawClass instanceof Set) {       for (const klass of rawClass) {         this._updateState(klass, true);       }     } else if (rawClass != null) {       for (const klass of Object.keys(rawClass)) {         this._updateState(klass, Boolean(rawClass[klass]));       }     }      this._applyStateDiff();   }    private _updateState(klass: string, nextEnabled: boolean) {     const state = this.stateMap.get(klass);     if (state !== undefined) {       if (state.enabled !== nextEnabled) {         state.changed = true;         state.enabled = nextEnabled;       }       state.touched = true;     } else {       this.stateMap.set(klass, {enabled: nextEnabled, changed: true, touched: true});     }   }    private _applyStateDiff() {     for (const stateEntry of this.stateMap) {       const klass = stateEntry[0];       const state = stateEntry[1];        if (state.changed) {         this._toggleClass(klass, state.enabled);         state.changed = false;       } else if (!state.touched) {         // A class that was previously active got removed from the new collection of classes -         // remove from the DOM as well.         if (state.enabled) {           this._toggleClass(klass, false);         }         this.stateMap.delete(klass);       }        state.touched = false;     }   }    private _toggleClass(klass: string, enabled: boolean): void {     if (ngDevMode) {       if (typeof klass !== 'string') {         throw new Error(             `NgClass can only toggle CSS classes expressed as strings, got ${stringify(klass)}`);       }     }     klass = klass.trim();     if (klass.length > 0) {       klass.split(WS_REGEXP).forEach(klass => {         if (enabled) {           this._renderer.addClass(this._ngEl.nativeElement, klass);         } else {           this._renderer.removeClass(this._ngEl.nativeElement, klass);         }       });     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ComponentRef, createNgModule, Directive, Injector, Input, NgModuleFactory, NgModuleRef, OnChanges, OnDestroy, SimpleChanges, Type, ViewContainerRef} from '@angular/core';   /**  * Instantiates a {@link Component} type and inserts its Host View into the current View.  * `NgComponentOutlet` provides a declarative approach for dynamic component creation.  *  * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and  * any existing component will be destroyed.  *  * @usageNotes  *  * ### Fine tune control  *  * You can control the component creation process by using the following optional attributes:  *  * * `ngComponentOutletInjector`: Optional custom {@link Injector} that will be used as parent for  * the Component. Defaults to the injector of the current view container.  *  * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content  * section of the component, if it exists.  *  * * `ngComponentOutletNgModule`: Optional NgModule class reference to allow loading another  * module dynamically, then loading a component from that module.  *  * * `ngComponentOutletNgModuleFactory`: Deprecated config option that allows providing optional  * NgModule factory to allow loading another module dynamically, then loading a component from that  * module. Use `ngComponentOutletNgModule` instead.  *  * ### Syntax  *  * Simple  * ```  * <ng-container *ngComponentOutlet=\"componentTypeExpression\"></ng-container>  * ```  *  * Customized injector/content  * ```  * <ng-container *ngComponentOutlet=\"componentTypeExpression;  *                                   injector: injectorExpression;  *                                   content: contentNodesExpression;\">  * </ng-container>  * ```  *  * Customized NgModule reference  * ```  * <ng-container *ngComponentOutlet=\"componentTypeExpression;  *                                   ngModule: ngModuleClass;\">  * </ng-container>  * ```  *  * ### A simple example  *  * {@example common/ngComponentOutlet/ts/module.ts region='SimpleExample'}  *  * A more complete example with additional options:  *  * {@example common/ngComponentOutlet/ts/module.ts region='CompleteExample'}  *  * @publicApi  * @ngModule CommonModule  */ @Directive({   selector: '[ngComponentOutlet]',   standalone: true, }) export class NgComponentOutlet implements OnChanges, OnDestroy {   @Input() ngComponentOutlet: Type<any>|null = null;    @Input() ngComponentOutletInjector?: Injector;   @Input() ngComponentOutletContent?: any[][];    @Input() ngComponentOutletNgModule?: Type<any>;   /**    * @deprecated This input is deprecated, use `ngComponentOutletNgModule` instead.    */   @Input() ngComponentOutletNgModuleFactory?: NgModuleFactory<any>;    private _componentRef: ComponentRef<any>|undefined;   private _moduleRef: NgModuleRef<any>|undefined;    constructor(private _viewContainerRef: ViewContainerRef) {}    /** @nodoc */   ngOnChanges(changes: SimpleChanges) {     const {       _viewContainerRef: viewContainerRef,       ngComponentOutletNgModule: ngModule,       ngComponentOutletNgModuleFactory: ngModuleFactory,     } = this;     viewContainerRef.clear();     this._componentRef = undefined;      if (this.ngComponentOutlet) {       const injector = this.ngComponentOutletInjector || viewContainerRef.parentInjector;        if (changes['ngComponentOutletNgModule'] || changes['ngComponentOutletNgModuleFactory']) {         if (this._moduleRef) this._moduleRef.destroy();          if (ngModule) {           this._moduleRef = createNgModule(ngModule, getParentInjector(injector));         } else if (ngModuleFactory) {           this._moduleRef = ngModuleFactory.create(getParentInjector(injector));         } else {           this._moduleRef = undefined;         }       }        this._componentRef = viewContainerRef.createComponent(this.ngComponentOutlet, {         index: viewContainerRef.length,         injector,         ngModuleRef: this._moduleRef,         projectableNodes: this.ngComponentOutletContent,       });     }   }    /** @nodoc */   ngOnDestroy() {     if (this._moduleRef) this._moduleRef.destroy();   } }  // Helper function that returns an Injector instance of a parent NgModule. function getParentInjector(injector: Injector): Injector {   const parentNgModule = injector.get(NgModuleRef);   return parentNgModule.injector; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, DoCheck, EmbeddedViewRef, Input, IterableChangeRecord, IterableChanges, IterableDiffer, IterableDiffers, NgIterable, TemplateRef, TrackByFunction, ViewContainerRef, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  /**  * @publicApi  */ export class NgForOfContext<T, U extends NgIterable<T> = NgIterable<T>> {   constructor(public $implicit: T, public ngForOf: U, public index: number, public count: number) {}    get first(): boolean {     return this.index === 0;   }    get last(): boolean {     return this.index === this.count - 1;   }    get even(): boolean {     return this.index % 2 === 0;   }    get odd(): boolean {     return !this.even;   } }  /**  * A [structural directive](guide/structural-directives) that renders  * a template for each item in a collection.  * The directive is placed on an element, which becomes the parent  * of the cloned templates.  *  * The `ngForOf` directive is generally used in the  * [shorthand form](guide/structural-directives#asterisk) `*ngFor`.  * In this form, the template to be rendered for each iteration is the content  * of an anchor element containing the directive.  *  * The following example shows the shorthand syntax with some options,  * contained in an `<li>` element.  *  * ```  * <li *ngFor=\"let item of items; index as i; trackBy: trackByFn\">...</li>  * ```  *  * The shorthand form expands into a long form that uses the `ngForOf` selector  * on an `<ng-template>` element.  * The content of the `<ng-template>` element is the `<li>` element that held the  * short-form directive.  *  * Here is the expanded version of the short-form example.  *  * ```  * <ng-template ngFor let-item [ngForOf]=\"items\" let-i=\"index\" [ngForTrackBy]=\"trackByFn\">  *   <li>...</li>  * </ng-template>  * ```  *  * Angular automatically expands the shorthand syntax as it compiles the template.  * The context for each embedded view is logically merged to the current component  * context according to its lexical position.  *  * When using the shorthand syntax, Angular allows only [one structural directive  * on an element](guide/structural-directives#one-per-element).  * If you want to iterate conditionally, for example,  * put the `*ngIf` on a container element that wraps the `*ngFor` element.  * For further discussion, see  * [Structural Directives](guide/structural-directives#one-per-element).  *  * @usageNotes  *  * ### Local variables  *  * `NgForOf` provides exported values that can be aliased to local variables.  * For example:  *  *  ```  * <li *ngFor=\"let user of users; index as i; first as isFirst\">  *    {{i}}/{{users.length}}. {{user}} <span *ngIf=\"isFirst\">default</span>  * </li>  * ```  *  * The following exported values can be aliased to local variables:  *  * - `$implicit: T`: The value of the individual items in the iterable (`ngForOf`).  * - `ngForOf: NgIterable<T>`: The value of the iterable expression. Useful when the expression is  * more complex then a property access, for example when using the async pipe (`userStreams |  * async`).  * - `index: number`: The index of the current item in the iterable.  * - `count: number`: The length of the iterable.  * - `first: boolean`: True when the item is the first item in the iterable.  * - `last: boolean`: True when the item is the last item in the iterable.  * - `even: boolean`: True when the item has an even index in the iterable.  * - `odd: boolean`: True when the item has an odd index in the iterable.  *  * ### Change propagation  *  * When the contents of the iterator changes, `NgForOf` makes the corresponding changes to the DOM:  *  * * When an item is added, a new instance of the template is added to the DOM.  * * When an item is removed, its template instance is removed from the DOM.  * * When items are reordered, their respective templates are reordered in the DOM.  *  * Angular uses object identity to track insertions and deletions within the iterator and reproduce  * those changes in the DOM. This has important implications for animations and any stateful  * controls that are present, such as `<input>` elements that accept user input. Inserted rows can  * be animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state  * such as user input.  * For more on animations, see [Transitions and Triggers](guide/transition-and-triggers).  *  * The identities of elements in the iterator can change while the data does not.  * This can happen, for example, if the iterator is produced from an RPC to the server, and that  * RPC is re-run. Even if the data hasn't changed, the second response produces objects with  * different identities, and Angular must tear down the entire DOM and rebuild it (as if all old  * elements were deleted and all new elements inserted).  *  * To avoid this expensive operation, you can customize the default tracking algorithm.  * by supplying the `trackBy` option to `NgForOf`.  * `trackBy` takes a function that has two arguments: `index` and `item`.  * If `trackBy` is given, Angular tracks changes by the return value of the function.  *  * @see [Structural Directives](guide/structural-directives)  * @ngModule CommonModule  * @publicApi  */ @Directive({   selector: '[ngFor][ngForOf]',   standalone: true, }) export class NgForOf<T, U extends NgIterable<T> = NgIterable<T>> implements DoCheck {   /**    * The value of the iterable expression, which can be used as a    * [template input variable](guide/structural-directives#shorthand).    */   @Input()   set ngForOf(ngForOf: U&NgIterable<T>|undefined|null) {     this._ngForOf = ngForOf;     this._ngForOfDirty = true;   }   /**    * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable.    *    * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object    * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)    * as the key.    *    * `NgForOf` uses the computed key to associate items in an iterable with DOM elements    * it produces for these items.    *    * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an    * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a    * primary key), and this iterable could be updated with new object instances that still    * represent the same underlying entity (for example, when data is re-fetched from the server,    * and the iterable is recreated and re-rendered, but most of the data is still the same).    *    * @see `TrackByFunction`    */   @Input()   set ngForTrackBy(fn: TrackByFunction<T>) {     if (NG_DEV_MODE && fn != null && typeof fn !== 'function') {       console.warn(           `trackBy must be a function, but received ${JSON.stringify(fn)}. ` +           `See https://angular.io/api/common/NgForOf#change-propagation for more information.`);     }     this._trackByFn = fn;   }    get ngForTrackBy(): TrackByFunction<T> {     return this._trackByFn;   }    private _ngForOf: U|undefined|null = null;   private _ngForOfDirty: boolean = true;   private _differ: IterableDiffer<T>|null = null;   // TODO(issue/24571): remove '!'   // waiting for microsoft/typescript#43662 to allow the return type `TrackByFunction|undefined` for   // the getter   private _trackByFn!: TrackByFunction<T>;    constructor(       private _viewContainer: ViewContainerRef,       private _template: TemplateRef<NgForOfContext<T, U>>, private _differs: IterableDiffers) {}    /**    * A reference to the template that is stamped out for each item in the iterable.    * @see [template reference variable](guide/template-reference-variables)    */   @Input()   set ngForTemplate(value: TemplateRef<NgForOfContext<T, U>>) {     // TODO(TS2.1): make TemplateRef<Partial<NgForRowOf<T>>> once we move to TS v2.1     // The current type is too restrictive; a template that just uses index, for example,     // should be acceptable.     if (value) {       this._template = value;     }   }    /**    * Applies the changes when needed.    * @nodoc    */   ngDoCheck(): void {     if (this._ngForOfDirty) {       this._ngForOfDirty = false;       // React on ngForOf changes only once all inputs have been initialized       const value = this._ngForOf;       if (!this._differ && value) {         if (NG_DEV_MODE) {           try {             // CAUTION: this logic is duplicated for production mode below, as the try-catch             // is only present in development builds.             this._differ = this._differs.find(value).create(this.ngForTrackBy);           } catch {             let errorMessage = `Cannot find a differ supporting object '${value}' of type '` +                 `${getTypeName(value)}'. NgFor only supports binding to Iterables, such as Arrays.`;             if (typeof value === 'object') {               errorMessage += ' Did you mean to use the keyvalue pipe?';             }             throw new RuntimeError(RuntimeErrorCode.NG_FOR_MISSING_DIFFER, errorMessage);           }         } else {           // CAUTION: this logic is duplicated for development mode above, as the try-catch           // is only present in development builds.           this._differ = this._differs.find(value).create(this.ngForTrackBy);         }       }     }     if (this._differ) {       const changes = this._differ.diff(this._ngForOf);       if (changes) this._applyChanges(changes);     }   }    private _applyChanges(changes: IterableChanges<T>) {     const viewContainer = this._viewContainer;     changes.forEachOperation(         (item: IterableChangeRecord<T>, adjustedPreviousIndex: number|null,          currentIndex: number|null) => {           if (item.previousIndex == null) {             // NgForOf is never \"null\" or \"undefined\" here because the differ detected             // that a new item needs to be inserted from the iterable. This implies that             // there is an iterable value for \"_ngForOf\".             viewContainer.createEmbeddedView(                 this._template, new NgForOfContext<T, U>(item.item, this._ngForOf!, -1, -1),                 currentIndex === null ? undefined : currentIndex);           } else if (currentIndex == null) {             viewContainer.remove(                 adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);           } else if (adjustedPreviousIndex !== null) {             const view = viewContainer.get(adjustedPreviousIndex)!;             viewContainer.move(view, currentIndex);             applyViewChange(view as EmbeddedViewRef<NgForOfContext<T, U>>, item);           }         });      for (let i = 0, ilen = viewContainer.length; i < ilen; i++) {       const viewRef = <EmbeddedViewRef<NgForOfContext<T, U>>>viewContainer.get(i);       const context = viewRef.context;       context.index = i;       context.count = ilen;       context.ngForOf = this._ngForOf!;     }      changes.forEachIdentityChange((record: any) => {       const viewRef = <EmbeddedViewRef<NgForOfContext<T, U>>>viewContainer.get(record.currentIndex);       applyViewChange(viewRef, record);     });   }    /**    * Asserts the correct type of the context for the template that `NgForOf` will render.    *    * The presence of this method is a signal to the Ivy template type-check compiler that the    * `NgForOf` structural directive renders its template with a specific context type.    */   static ngTemplateContextGuard<T, U extends NgIterable<T>>(dir: NgForOf<T, U>, ctx: any):       ctx is NgForOfContext<T, U> {     return true;   } }  // Also export the `NgForOf` class as `NgFor` to improve the DX for // cases when the directive is used as standalone, so the class name // matches the CSS selector (*ngFor). export {NgForOf as NgFor};  function applyViewChange<T>(     view: EmbeddedViewRef<NgForOfContext<T>>, record: IterableChangeRecord<T>) {   view.context.$implicit = record.item; }  function getTypeName(type: any): string {   return type['name'] || typeof type; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, EmbeddedViewRef, Input, TemplateRef, ViewContainerRef, ɵstringify as stringify} from '@angular/core';   /**  * A structural directive that conditionally includes a template based on the value of  * an expression coerced to Boolean.  * When the expression evaluates to true, Angular renders the template  * provided in a `then` clause, and when  false or null,  * Angular renders the template provided in an optional `else` clause. The default  * template for the `else` clause is blank.  *  * A [shorthand form](guide/structural-directives#asterisk) of the directive,  * `*ngIf=\"condition\"`, is generally used, provided  * as an attribute of the anchor element for the inserted template.  * Angular expands this into a more explicit version, in which the anchor element  * is contained in an `<ng-template>` element.  *  * Simple form with shorthand syntax:  *  * ```  * <div *ngIf=\"condition\">Content to render when condition is true.</div>  * ```  *  * Simple form with expanded syntax:  *  * ```  * <ng-template [ngIf]=\"condition\"><div>Content to render when condition is  * true.</div></ng-template>  * ```  *  * Form with an \"else\" block:  *  * ```  * <div *ngIf=\"condition; else elseBlock\">Content to render when condition is true.</div>  * <ng-template #elseBlock>Content to render when condition is false.</ng-template>  * ```  *  * Shorthand form with \"then\" and \"else\" blocks:  *  * ```  * <div *ngIf=\"condition; then thenBlock else elseBlock\"></div>  * <ng-template #thenBlock>Content to render when condition is true.</ng-template>  * <ng-template #elseBlock>Content to render when condition is false.</ng-template>  * ```  *  * Form with storing the value locally:  *  * ```  * <div *ngIf=\"condition as value; else elseBlock\">{{value}}</div>  * <ng-template #elseBlock>Content to render when value is null.</ng-template>  * ```  *  * @usageNotes  *  * The `*ngIf` directive is most commonly used to conditionally show an inline template,  * as seen in the following  example.  * The default `else` template is blank.  *  * {@example common/ngIf/ts/module.ts region='NgIfSimple'}  *  * ### Showing an alternative template using `else`  *  * To display a template when `expression` evaluates to false, use an `else` template  * binding as shown in the following example.  * The `else` binding points to an `<ng-template>`  element labeled `#elseBlock`.  * The template can be defined anywhere in the component view, but is typically placed right after  * `ngIf` for readability.  *  * {@example common/ngIf/ts/module.ts region='NgIfElse'}  *  * ### Using an external `then` template  *  * In the previous example, the then-clause template is specified inline, as the content of the  * tag that contains the `ngIf` directive. You can also specify a template that is defined  * externally, by referencing a labeled `<ng-template>` element. When you do this, you can  * change which template to use at runtime, as shown in the following example.  *  * {@example common/ngIf/ts/module.ts region='NgIfThenElse'}  *  * ### Storing a conditional result in a variable  *  * You might want to show a set of properties from the same object. If you are waiting  * for asynchronous data, the object can be undefined.  * In this case, you can use `ngIf` and store the result of the condition in a local  * variable as shown in the following example.  *  * {@example common/ngIf/ts/module.ts region='NgIfAs'}  *  * This code uses only one `AsyncPipe`, so only one subscription is created.  * The conditional statement stores the result of `userStream|async` in the local variable `user`.  * You can then bind the local `user` repeatedly.  *  * The conditional displays the data only if `userStream` returns a value,  * so you don't need to use the  * safe-navigation-operator (`?.`)  * to guard against null values when accessing properties.  * You can display an alternative template while waiting for the data.  *  * ### Shorthand syntax  *  * The shorthand syntax `*ngIf` expands into two separate template specifications  * for the \"then\" and \"else\" clauses. For example, consider the following shorthand statement,  * that is meant to show a loading page while waiting for data to be loaded.  *  * ```  * <div class=\"hero-list\" *ngIf=\"heroes else loading\">  *  ...  * </div>  *  * <ng-template #loading>  *  <div>Loading...</div>  * </ng-template>  * ```  *  * You can see that the \"else\" clause references the `<ng-template>`  * with the `#loading` label, and the template for the \"then\" clause  * is provided as the content of the anchor element.  *  * However, when Angular expands the shorthand syntax, it creates  * another `<ng-template>` tag, with `ngIf` and `ngIfElse` directives.  * The anchor element containing the template for the \"then\" clause becomes  * the content of this unlabeled `<ng-template>` tag.  *  * ```  * <ng-template [ngIf]=\"heroes\" [ngIfElse]=\"loading\">  *  <div class=\"hero-list\">  *   ...  *  </div>  * </ng-template>  *  * <ng-template #loading>  *  <div>Loading...</div>  * </ng-template>  * ```  *  * The presence of the implicit template object has implications for the nesting of  * structural directives. For more on this subject, see  * [Structural Directives](guide/structural-directives#one-per-element).  *  * @ngModule CommonModule  * @publicApi  */ @Directive({   selector: '[ngIf]',   standalone: true, }) export class NgIf<T = unknown> {   private _context: NgIfContext<T> = new NgIfContext<T>();   private _thenTemplateRef: TemplateRef<NgIfContext<T>>|null = null;   private _elseTemplateRef: TemplateRef<NgIfContext<T>>|null = null;   private _thenViewRef: EmbeddedViewRef<NgIfContext<T>>|null = null;   private _elseViewRef: EmbeddedViewRef<NgIfContext<T>>|null = null;    constructor(private _viewContainer: ViewContainerRef, templateRef: TemplateRef<NgIfContext<T>>) {     this._thenTemplateRef = templateRef;   }    /**    * The Boolean expression to evaluate as the condition for showing a template.    */   @Input()   set ngIf(condition: T) {     this._context.$implicit = this._context.ngIf = condition;     this._updateView();   }    /**    * A template to show if the condition expression evaluates to true.    */   @Input()   set ngIfThen(templateRef: TemplateRef<NgIfContext<T>>|null) {     assertTemplate('ngIfThen', templateRef);     this._thenTemplateRef = templateRef;     this._thenViewRef = null;  // clear previous view if any.     this._updateView();   }    /**    * A template to show if the condition expression evaluates to false.    */   @Input()   set ngIfElse(templateRef: TemplateRef<NgIfContext<T>>|null) {     assertTemplate('ngIfElse', templateRef);     this._elseTemplateRef = templateRef;     this._elseViewRef = null;  // clear previous view if any.     this._updateView();   }    private _updateView() {     if (this._context.$implicit) {       if (!this._thenViewRef) {         this._viewContainer.clear();         this._elseViewRef = null;         if (this._thenTemplateRef) {           this._thenViewRef =               this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);         }       }     } else {       if (!this._elseViewRef) {         this._viewContainer.clear();         this._thenViewRef = null;         if (this._elseTemplateRef) {           this._elseViewRef =               this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);         }       }     }   }    /** @internal */   public static ngIfUseIfTypeGuard: void;    /**    * Assert the correct type of the expression bound to the `ngIf` input within the template.    *    * The presence of this static field is a signal to the Ivy template type check compiler that    * when the `NgIf` structural directive renders its template, the type of the expression bound    * to `ngIf` should be narrowed in some way. For `NgIf`, the binding expression itself is used to    * narrow its type, which allows the strictNullChecks feature of TypeScript to work with `NgIf`.    */   static ngTemplateGuard_ngIf: 'binding';    /**    * Asserts the correct type of the context for the template that `NgIf` will render.    *    * The presence of this method is a signal to the Ivy template type-check compiler that the    * `NgIf` structural directive renders its template with a specific context type.    */   static ngTemplateContextGuard<T>(dir: NgIf<T>, ctx: any):       ctx is NgIfContext<Exclude<T, false|0|''|null|undefined>> {     return true;   } }  /**  * @publicApi  */ export class NgIfContext<T = unknown> {   public $implicit: T = null!;   public ngIf: T = null!; }  function assertTemplate(property: string, templateRef: TemplateRef<any>|null): void {   const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);   if (!isTemplateRefOrNull) {     throw new Error(`${property} must be a TemplateRef, but received '${stringify(templateRef)}'.`);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, DoCheck, Host, Input, Optional, TemplateRef, ViewContainerRef, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  export class SwitchView {   private _created = false;    constructor(       private _viewContainerRef: ViewContainerRef, private _templateRef: TemplateRef<Object>) {}    create(): void {     this._created = true;     this._viewContainerRef.createEmbeddedView(this._templateRef);   }    destroy(): void {     this._created = false;     this._viewContainerRef.clear();   }    enforceState(created: boolean) {     if (created && !this._created) {       this.create();     } else if (!created && this._created) {       this.destroy();     }   } }  /**  * @ngModule CommonModule  *  * @description  * The `[ngSwitch]` directive on a container specifies an expression to match against.  * The expressions to match are provided by `ngSwitchCase` directives on views within the container.  * - Every view that matches is rendered.  * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered.  * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase`  * or `ngSwitchDefault` directive are preserved at the location.  *  * @usageNotes  * Define a container element for the directive, and specify the switch expression  * to match against as an attribute:  *  * ```  * <container-element [ngSwitch]=\"switch_expression\">  * ```  *  * Within the container, `*ngSwitchCase` statements specify the match expressions  * as attributes. Include `*ngSwitchDefault` as the final case.  *  * ```  * <container-element [ngSwitch]=\"switch_expression\">  *    <some-element *ngSwitchCase=\"match_expression_1\">...</some-element>  * ...  *    <some-element *ngSwitchDefault>...</some-element>  * </container-element>  * ```  *  * ### Usage Examples  *  * The following example shows how to use more than one case to display the same view:  *  * ```  * <container-element [ngSwitch]=\"switch_expression\">  *   <!-- the same view can be shown in more than one case -->  *   <some-element *ngSwitchCase=\"match_expression_1\">...</some-element>  *   <some-element *ngSwitchCase=\"match_expression_2\">...</some-element>  *   <some-other-element *ngSwitchCase=\"match_expression_3\">...</some-other-element>  *   <!--default case when there are no matches -->  *   <some-element *ngSwitchDefault>...</some-element>  * </container-element>  * ```  *  * The following example shows how cases can be nested:  * ```  * <container-element [ngSwitch]=\"switch_expression\">  *       <some-element *ngSwitchCase=\"match_expression_1\">...</some-element>  *       <some-element *ngSwitchCase=\"match_expression_2\">...</some-element>  *       <some-other-element *ngSwitchCase=\"match_expression_3\">...</some-other-element>  *       <ng-container *ngSwitchCase=\"match_expression_3\">  *         <!-- use a ng-container to group multiple root nodes -->  *         <inner-element></inner-element>  *         <inner-other-element></inner-other-element>  *       </ng-container>  *       <some-element *ngSwitchDefault>...</some-element>  *     </container-element>  * ```  *  * @publicApi  * @see `NgSwitchCase`  * @see `NgSwitchDefault`  * @see [Structural Directives](guide/structural-directives)  *  */ @Directive({   selector: '[ngSwitch]',   standalone: true, }) export class NgSwitch {   private _defaultViews: SwitchView[] = [];   private _defaultUsed = false;   private _caseCount = 0;   private _lastCaseCheckIndex = 0;   private _lastCasesMatched = false;   private _ngSwitch: any;    @Input()   set ngSwitch(newValue: any) {     this._ngSwitch = newValue;     if (this._caseCount === 0) {       this._updateDefaultCases(true);     }   }    /** @internal */   _addCase(): number {     return this._caseCount++;   }    /** @internal */   _addDefault(view: SwitchView) {     this._defaultViews.push(view);   }    /** @internal */   _matchCase(value: any): boolean {     const matched = value == this._ngSwitch;     this._lastCasesMatched = this._lastCasesMatched || matched;     this._lastCaseCheckIndex++;     if (this._lastCaseCheckIndex === this._caseCount) {       this._updateDefaultCases(!this._lastCasesMatched);       this._lastCaseCheckIndex = 0;       this._lastCasesMatched = false;     }     return matched;   }    private _updateDefaultCases(useDefault: boolean) {     if (this._defaultViews.length > 0 && useDefault !== this._defaultUsed) {       this._defaultUsed = useDefault;       for (const defaultView of this._defaultViews) {         defaultView.enforceState(useDefault);       }     }   } }  /**  * @ngModule CommonModule  *  * @description  * Provides a switch case expression to match against an enclosing `ngSwitch` expression.  * When the expressions match, the given `NgSwitchCase` template is rendered.  * If multiple match expressions match the switch expression value, all of them are displayed.  *  * @usageNotes  *  * Within a switch container, `*ngSwitchCase` statements specify the match expressions  * as attributes. Include `*ngSwitchDefault` as the final case.  *  * ```  * <container-element [ngSwitch]=\"switch_expression\">  *   <some-element *ngSwitchCase=\"match_expression_1\">...</some-element>  *   ...  *   <some-element *ngSwitchDefault>...</some-element>  * </container-element>  * ```  *  * Each switch-case statement contains an in-line HTML template or template reference  * that defines the subtree to be selected if the value of the match expression  * matches the value of the switch expression.  *  * Unlike JavaScript, which uses strict equality, Angular uses loose equality.  * This means that the empty string, `\"\"` matches 0.  *  * @publicApi  * @see `NgSwitch`  * @see `NgSwitchDefault`  *  */ @Directive({   selector: '[ngSwitchCase]',   standalone: true, }) export class NgSwitchCase implements DoCheck {   private _view: SwitchView;   /**    * Stores the HTML template to be selected on match.    */   @Input() ngSwitchCase: any;    constructor(       viewContainer: ViewContainerRef, templateRef: TemplateRef<Object>,       @Optional() @Host() private ngSwitch: NgSwitch) {     if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {       throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase');     }      ngSwitch._addCase();     this._view = new SwitchView(viewContainer, templateRef);   }    /**    * Performs case matching. For internal use only.    * @nodoc    */   ngDoCheck() {     this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));   } }  /**  * @ngModule CommonModule  *  * @description  *  * Creates a view that is rendered when no `NgSwitchCase` expressions  * match the `NgSwitch` expression.  * This statement should be the final case in an `NgSwitch`.  *  * @publicApi  * @see `NgSwitch`  * @see `NgSwitchCase`  *  */ @Directive({   selector: '[ngSwitchDefault]',   standalone: true, }) export class NgSwitchDefault {   constructor(       viewContainer: ViewContainerRef, templateRef: TemplateRef<Object>,       @Optional() @Host() ngSwitch: NgSwitch) {     if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {       throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault');     }      ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));   } }  function throwNgSwitchProviderNotFoundError(attrName: string, directiveName: string): never {   throw new RuntimeError(       RuntimeErrorCode.PARENT_NG_SWITCH_NOT_FOUND,       `An element with the \"${attrName}\" attribute ` +           `(matching the \"${               directiveName}\" directive) must be located inside an element with the \"ngSwitch\" attribute ` +           `(matching \"NgSwitch\" directive)`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Attribute, Directive, Host, Input, TemplateRef, ViewContainerRef} from '@angular/core';  import {getPluralCategory, NgLocalization} from '../i18n/localization';  import {SwitchView} from './ng_switch';  /**  * @ngModule CommonModule  *  * @usageNotes  * ```  * <some-element [ngPlural]=\"value\">  *   <ng-template ngPluralCase=\"=0\">there is nothing</ng-template>  *   <ng-template ngPluralCase=\"=1\">there is one</ng-template>  *   <ng-template ngPluralCase=\"few\">there are a few</ng-template>  * </some-element>  * ```  *  * @description  *  * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization.  *  * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees  * that match the switch expression's pluralization category.  *  * To use this directive you must provide a container element that sets the `[ngPlural]` attribute  * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their  * expression:  * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value  *   matches the switch expression exactly,  * - otherwise, the view will be treated as a \"category match\", and will only display if exact  *   value matches aren't found and the value maps to its category for the defined locale.  *  * See http://cldr.unicode.org/index/cldr-spec/plural-rules  *  * @publicApi  */ @Directive({   selector: '[ngPlural]',   standalone: true, }) export class NgPlural {   private _activeView?: SwitchView;   private _caseViews: {[k: string]: SwitchView} = {};    constructor(private _localization: NgLocalization) {}    @Input()   set ngPlural(value: number) {     this._updateView(value);   }    addCase(value: string, switchView: SwitchView): void {     this._caseViews[value] = switchView;   }    private _updateView(switchValue: number): void {     this._clearViews();      const cases = Object.keys(this._caseViews);     const key = getPluralCategory(switchValue, cases, this._localization);     this._activateView(this._caseViews[key]);   }    private _clearViews() {     if (this._activeView) this._activeView.destroy();   }    private _activateView(view: SwitchView) {     if (view) {       this._activeView = view;       this._activeView.create();     }   } }  /**  * @ngModule CommonModule  *  * @description  *  * Creates a view that will be added/removed from the parent {@link NgPlural} when the  * given expression matches the plural expression according to CLDR rules.  *  * @usageNotes  * ```  * <some-element [ngPlural]=\"value\">  *   <ng-template ngPluralCase=\"=0\">...</ng-template>  *   <ng-template ngPluralCase=\"other\">...</ng-template>  * </some-element>  *```  *  * See {@link NgPlural} for more details and example.  *  * @publicApi  */ @Directive({   selector: '[ngPluralCase]',   standalone: true, }) export class NgPluralCase {   constructor(       @Attribute('ngPluralCase') public value: string, template: TemplateRef<Object>,       viewContainer: ViewContainerRef, @Host() ngPlural: NgPlural) {     const isANumber: boolean = !isNaN(Number(value));     ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {Directive, DoCheck, ElementRef, Input, KeyValueChanges, KeyValueDiffer, KeyValueDiffers, Renderer2, RendererStyleFlags2} from '@angular/core';   /**  * @ngModule CommonModule  *  * @usageNotes  *  * Set the font of the containing element to the result of an expression.  *  * ```  * <some-element [ngStyle]=\"{'font-style': styleExp}\">...</some-element>  * ```  *  * Set the width of the containing element to a pixel value returned by an expression.  *  * ```  * <some-element [ngStyle]=\"{'max-width.px': widthExp}\">...</some-element>  * ```  *  * Set a collection of style values using an expression that returns key-value pairs.  *  * ```  * <some-element [ngStyle]=\"objExp\">...</some-element>  * ```  *  * @description  *  * An attribute directive that updates styles for the containing HTML element.  * Sets one or more style properties, specified as colon-separated key-value pairs.  * The key is a style name, with an optional `.<unit>` suffix  * (such as 'top.px', 'font-style.em').  * The value is an expression to be evaluated.  * The resulting non-null value, expressed in the given unit,  * is assigned to the given style property.  * If the result of evaluation is null, the corresponding style is removed.  *  * @publicApi  */ @Directive({   selector: '[ngStyle]',   standalone: true, }) export class NgStyle implements DoCheck {   private _ngStyle: {[key: string]: string}|null|undefined = null;   private _differ: KeyValueDiffer<string, string|number>|null = null;    constructor(       private _ngEl: ElementRef, private _differs: KeyValueDiffers, private _renderer: Renderer2) {}    @Input('ngStyle')   set ngStyle(values: {[klass: string]: any}|null|undefined) {     this._ngStyle = values;     if (!this._differ && values) {       this._differ = this._differs.find(values).create();     }   }    ngDoCheck() {     if (this._differ) {       const changes = this._differ.diff(this._ngStyle!);       if (changes) {         this._applyChanges(changes);       }     }   }    private _setStyle(nameAndUnit: string, value: string|number|null|undefined): void {     const [name, unit] = nameAndUnit.split('.');     const flags = name.indexOf('-') === -1 ? undefined : RendererStyleFlags2.DashCase as number;      if (value != null) {       this._renderer.setStyle(           this._ngEl.nativeElement, name, unit ? `${value}${unit}` : value, flags);     } else {       this._renderer.removeStyle(this._ngEl.nativeElement, name, flags);     }   }    private _applyChanges(changes: KeyValueChanges<string, string|number>): void {     changes.forEachRemovedItem((record) => this._setStyle(record.key, null));     changes.forEachAddedItem((record) => this._setStyle(record.key, record.currentValue));     changes.forEachChangedItem((record) => this._setStyle(record.key, record.currentValue));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, EmbeddedViewRef, Injector, Input, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef} from '@angular/core';  /**  * @ngModule CommonModule  *  * @description  *  * Inserts an embedded view from a prepared `TemplateRef`.  *  * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`.  * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding  * by the local template `let` declarations.  *  * @usageNotes  * ```  * <ng-container *ngTemplateOutlet=\"templateRefExp; context: contextExp\"></ng-container>  * ```  *  * Using the key `$implicit` in the context object will set its value as default.  *  * ### Example  *  * {@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'}  *  * @publicApi  */ @Directive({   selector: '[ngTemplateOutlet]',   standalone: true, }) export class NgTemplateOutlet implements OnChanges {   private _viewRef: EmbeddedViewRef<any>|null = null;    /**    * A context object to attach to the {@link EmbeddedViewRef}. This should be an    * object, the object's keys will be available for binding by the local template `let`    * declarations.    * Using the key `$implicit` in the context object will set its value as default.    */   @Input() public ngTemplateOutletContext: Object|null = null;    /**    * A string defining the template reference and optionally the context object for the template.    */   @Input() public ngTemplateOutlet: TemplateRef<any>|null = null;    /** Injector to be used within the embedded view. */   @Input() public ngTemplateOutletInjector: Injector|null = null;    constructor(private _viewContainerRef: ViewContainerRef) {}    /** @nodoc */   ngOnChanges(changes: SimpleChanges) {     if (changes['ngTemplateOutlet'] || changes['ngTemplateOutletInjector']) {       const viewContainerRef = this._viewContainerRef;        if (this._viewRef) {         viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));       }        if (this.ngTemplateOutlet) {         const {           ngTemplateOutlet: template,           ngTemplateOutletContext: context,           ngTemplateOutletInjector: injector         } = this;         this._viewRef = viewContainerRef.createEmbeddedView(             template, context, injector ? {injector} : undefined);       } else {         this._viewRef = null;       }     } else if (         this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) {       this._viewRef.context = this.ngTemplateOutletContext;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Provider} from '@angular/core';  import {NgClass} from './ng_class'; import {NgComponentOutlet} from './ng_component_outlet'; import {NgFor, NgForOf, NgForOfContext} from './ng_for_of'; import {NgIf, NgIfContext} from './ng_if'; import {NgPlural, NgPluralCase} from './ng_plural'; import {NgStyle} from './ng_style'; import {NgSwitch, NgSwitchCase, NgSwitchDefault} from './ng_switch'; import {NgTemplateOutlet} from './ng_template_outlet';  export {   NgClass,   NgComponentOutlet,   NgFor,   NgForOf,   NgForOfContext,   NgIf,   NgIfContext,   NgPlural,   NgPluralCase,   NgStyle,   NgSwitch,   NgSwitchCase,   NgSwitchDefault,   NgTemplateOutlet, };    /**  * A collection of Angular directives that are likely to be used in each and every Angular  * application.  */ export const COMMON_DIRECTIVES: Provider[] = [   NgClass,   NgComponentOutlet,   NgForOf,   NgIf,   NgTemplateOutlet,   NgStyle,   NgSwitch,   NgSwitchCase,   NgSwitchDefault,   NgPlural,   NgPluralCase, ]; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Type, ɵRuntimeError as RuntimeError, ɵstringify as stringify} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  export function invalidPipeArgumentError(type: Type<any>, value: Object) {   return new RuntimeError(       RuntimeErrorCode.INVALID_PIPE_ARGUMENT,       ngDevMode && `InvalidPipeArgument: '${value}' for pipe '${stringify(type)}'`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ChangeDetectorRef, EventEmitter, OnDestroy, Pipe, PipeTransform, ɵisPromise, ɵisSubscribable} from '@angular/core'; import {Observable, Subscribable, Unsubscribable} from 'rxjs';  import {invalidPipeArgumentError} from './invalid_pipe_argument_error';  interface SubscriptionStrategy {   createSubscription(async: Subscribable<any>|Promise<any>, updateLatestValue: any): Unsubscribable       |Promise<any>;   dispose(subscription: Unsubscribable|Promise<any>): void; }  class SubscribableStrategy implements SubscriptionStrategy {   createSubscription(async: Subscribable<any>, updateLatestValue: any): Unsubscribable {     return async.subscribe({       next: updateLatestValue,       error: (e: any) => {         throw e;       }     });   }    dispose(subscription: Unsubscribable): void {     subscription.unsubscribe();   } }  class PromiseStrategy implements SubscriptionStrategy {   createSubscription(async: Promise<any>, updateLatestValue: (v: any) => any): Promise<any> {     return async.then(updateLatestValue, e => {       throw e;     });   }    dispose(subscription: Promise<any>): void {} }  const _promiseStrategy = new PromiseStrategy(); const _subscribableStrategy = new SubscribableStrategy();  /**  * @ngModule CommonModule  * @description  *  * Unwraps a value from an asynchronous primitive.  *  * The `async` pipe subscribes to an `Observable` or `Promise` and returns the latest value it has  * emitted. When a new value is emitted, the `async` pipe marks the component to be checked for  * changes. When the component gets destroyed, the `async` pipe unsubscribes automatically to avoid  * potential memory leaks. When the reference of the expression changes, the `async` pipe  * automatically unsubscribes from the old `Observable` or `Promise` and subscribes to the new one.  *  * @usageNotes  *  * ### Examples  *  * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the  * promise.  *  * {@example common/pipes/ts/async_pipe.ts region='AsyncPipePromise'}  *  * It's also possible to use `async` with Observables. The example below binds the `time` Observable  * to the view. The Observable continuously updates the view with the current time.  *  * {@example common/pipes/ts/async_pipe.ts region='AsyncPipeObservable'}  *  * @publicApi  */ @Pipe({   name: 'async',   pure: false,   standalone: true, }) export class AsyncPipe implements OnDestroy, PipeTransform {   private _ref: ChangeDetectorRef|null;   private _latestValue: any = null;    private _subscription: Unsubscribable|Promise<any>|null = null;   private _obj: Subscribable<any>|Promise<any>|EventEmitter<any>|null = null;   private _strategy: SubscriptionStrategy|null = null;    constructor(ref: ChangeDetectorRef) {     // Assign `ref` into `this._ref` manually instead of declaring `_ref` in the constructor     // parameter list, as the type of `this._ref` includes `null` unlike the type of `ref`.     this._ref = ref;   }    ngOnDestroy(): void {     if (this._subscription) {       this._dispose();     }     // Clear the `ChangeDetectorRef` and its association with the view data, to mitigate     // potential memory leaks in Observables that could otherwise cause the view data to     // be retained.     // https://github.com/angular/angular/issues/17624     this._ref = null;   }    // NOTE(@benlesh): Because Observable has deprecated a few call patterns for `subscribe`,   // TypeScript has a hard time matching Observable to Subscribable, for more information   // see https://github.com/microsoft/TypeScript/issues/43643    transform<T>(obj: Observable<T>|Subscribable<T>|Promise<T>): T|null;   transform<T>(obj: null|undefined): null;   transform<T>(obj: Observable<T>|Subscribable<T>|Promise<T>|null|undefined): T|null;   transform<T>(obj: Observable<T>|Subscribable<T>|Promise<T>|null|undefined): T|null {     if (!this._obj) {       if (obj) {         this._subscribe(obj);       }       return this._latestValue;     }      if (obj !== this._obj) {       this._dispose();       return this.transform(obj);     }      return this._latestValue;   }    private _subscribe(obj: Subscribable<any>|Promise<any>|EventEmitter<any>): void {     this._obj = obj;     this._strategy = this._selectStrategy(obj);     this._subscription = this._strategy.createSubscription(         obj, (value: Object) => this._updateLatestValue(obj, value));   }    private _selectStrategy(obj: Subscribable<any>|Promise<any>|                           EventEmitter<any>): SubscriptionStrategy {     if (ɵisPromise(obj)) {       return _promiseStrategy;     }      if (ɵisSubscribable(obj)) {       return _subscribableStrategy;     }      throw invalidPipeArgumentError(AsyncPipe, obj);   }    private _dispose(): void {     // Note: `dispose` is only called if a subscription has been initialized before, indicating     // that `this._strategy` is also available.     this._strategy!.dispose(this._subscription!);     this._latestValue = null;     this._subscription = null;     this._obj = null;   }    private _updateLatestValue(async: any, value: Object): void {     if (async === this._obj) {       this._latestValue = value;       // Note: `this._ref` is only cleared in `ngOnDestroy` so is known to be available when a       // value is being updated.       this._ref!.markForCheck();     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Pipe, PipeTransform} from '@angular/core';  import {invalidPipeArgumentError} from './invalid_pipe_argument_error';  /**  * Transforms text to all lower case.  *  * @see `UpperCasePipe`  * @see `TitleCasePipe`  * @usageNotes  *  * The following example defines a view that allows the user to enter  * text, and then uses the pipe to convert the input text to all lower case.  *  * <code-example path=\"common/pipes/ts/lowerupper_pipe.ts\" region='LowerUpperPipe'></code-example>  *  * @ngModule CommonModule  * @publicApi  */ @Pipe({   name: 'lowercase',   standalone: true, }) export class LowerCasePipe implements PipeTransform {   /**    * @param value The string to transform to lower case.    */   transform(value: string): string;   transform(value: null|undefined): null;   transform(value: string|null|undefined): string|null;   transform(value: string|null|undefined): string|null {     if (value == null) return null;     if (typeof value !== 'string') {       throw invalidPipeArgumentError(LowerCasePipe, value);     }     return value.toLowerCase();   } }  // // Regex below matches any Unicode word and number compatible with ES5. In ES2018 the same result // can be achieved by using /[0-9\\p{L}]\\S*/gu and also known as Unicode Property Escapes // (https://2ality.com/2017/07/regexp-unicode-property-escapes.html). Since there is no // transpilation of this functionality down to ES5 without external tool, the only solution is // to use already transpiled form. Example can be found here - // https://mothereff.in/regexpu#input=var+regex+%3D+%2F%5B0-9%5Cp%7BL%7D%5D%5CS*%2Fgu%3B%0A%0A&unicodePropertyEscape=1 //  const unicodeWordMatch =     /(?:[0-9A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\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\\u0AF9\\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-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\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-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\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\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])\\S*/g;  /**  * Transforms text to title case.  * Capitalizes the first letter of each word and transforms the  * rest of the word to lower case.  * Words are delimited by any whitespace character, such as a space, tab, or line-feed character.  *  * @see `LowerCasePipe`  * @see `UpperCasePipe`  *  * @usageNotes  * The following example shows the result of transforming various strings into title case.  *  * <code-example path=\"common/pipes/ts/titlecase_pipe.ts\" region='TitleCasePipe'></code-example>  *  * @ngModule CommonModule  * @publicApi  */ @Pipe({   name: 'titlecase',   standalone: true, }) export class TitleCasePipe implements PipeTransform {   /**    * @param value The string to transform to title case.    */   transform(value: string): string;   transform(value: null|undefined): null;   transform(value: string|null|undefined): string|null;   transform(value: string|null|undefined): string|null {     if (value == null) return null;     if (typeof value !== 'string') {       throw invalidPipeArgumentError(TitleCasePipe, value);     }      return value.replace(         unicodeWordMatch, (txt => txt[0].toUpperCase() + txt.slice(1).toLowerCase()));   } }  /**  * Transforms text to all upper case.  * @see `LowerCasePipe`  * @see `TitleCasePipe`  *  * @ngModule CommonModule  * @publicApi  */ @Pipe({   name: 'uppercase',   standalone: true, }) export class UpperCasePipe implements PipeTransform {   /**    * @param value The string to transform to upper case.    */   transform(value: string): string;   transform(value: null|undefined): null;   transform(value: string|null|undefined): string|null;   transform(value: string|null|undefined): string|null {     if (value == null) return null;     if (typeof value !== 'string') {       throw invalidPipeArgumentError(UpperCasePipe, value);     }     return value.toUpperCase();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * An interface that describes the date pipe configuration, which can be provided using the  * `DATE_PIPE_DEFAULT_OPTIONS` token.  *  * @see `DATE_PIPE_DEFAULT_OPTIONS`  *  * @publicApi  */ export interface DatePipeConfig {   dateFormat: string;   timezone: string; }  /**  * The default date format of Angular date pipe, which corresponds to the following format:  * `'MMM d,y'` (e.g. `Jun 15, 2015`)  */ export const DEFAULT_DATE_FORMAT = 'mediumDate'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, InjectionToken, LOCALE_ID, Optional, Pipe, PipeTransform} from '@angular/core';  import {formatDate} from '../i18n/format_date';  import {DatePipeConfig, DEFAULT_DATE_FORMAT} from './date_pipe_config'; import {invalidPipeArgumentError} from './invalid_pipe_argument_error';  /**  * Optionally-provided default timezone to use for all instances of `DatePipe` (such as `'+0430'`).  * If the value isn't provided, the `DatePipe` will use the end-user's local system timezone.  *  * @deprecated use DATE_PIPE_DEFAULT_OPTIONS token to configure DatePipe  */ export const DATE_PIPE_DEFAULT_TIMEZONE = new InjectionToken<string>('DATE_PIPE_DEFAULT_TIMEZONE');  /**  * DI token that allows to provide default configuration for the `DatePipe` instances in an  * application. The value is an object which can include the following fields:  * - `dateFormat`: configures the default date format. If not provided, the `DatePipe`  * will use the 'mediumDate' as a value.  * - `timezone`: configures the default timezone. If not provided, the `DatePipe` will  * use the end-user's local system timezone.  *  * @see `DatePipeConfig`  *  * @usageNotes  *  * Various date pipe default values can be overwritten by providing this token with  * the value that has this interface.  *  * For example:  *  * Override the default date format by providing a value using the token:  * ```typescript  * providers: [  *   {provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: {dateFormat: 'shortDate'}}  * ]  * ```  *  * Override the default timezone by providing a value using the token:  * ```typescript  * providers: [  *   {provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: {timezone: '-1200'}}  * ]  * ```  */ export const DATE_PIPE_DEFAULT_OPTIONS =     new InjectionToken<DatePipeConfig>('DATE_PIPE_DEFAULT_OPTIONS');  // clang-format off /**  * @ngModule CommonModule  * @description  *  * Formats a date value according to locale rules.  *  * `DatePipe` is executed only when it detects a pure change to the input value.  * A pure change is either a change to a primitive input value  * (such as `String`, `Number`, `Boolean`, or `Symbol`),  * or a changed object reference (such as `Date`, `Array`, `Function`, or `Object`).  *  * Note that mutating a `Date` object does not cause the pipe to be rendered again.  * To ensure that the pipe is executed, you must create a new `Date` object.  *  * Only the `en-US` locale data comes with Angular. To localize dates  * in another language, you must import the corresponding locale data.  * See the [I18n guide](guide/i18n-common-format-data-locale) for more information.  *  * The time zone of the formatted value can be specified either by passing it in as the second  * parameter of the pipe, or by setting the default through the `DATE_PIPE_DEFAULT_OPTIONS`  * injection token. The value that is passed in as the second parameter takes precedence over  * the one defined using the injection token.  *  * @see `formatDate()`  *  *  * @usageNotes  *  * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to  * reformat the date on every change-detection cycle, treat the date as an immutable object  * and change the reference when the pipe needs to run again.  *  * ### Pre-defined format options  *  * | Option        | Equivalent to                       | Examples (given in `en-US` locale)              |  * |---------------|-------------------------------------|-------------------------------------------------|  * | `'short'`     | `'M/d/yy, h:mm a'`                  | `6/15/15, 9:03 AM`                              |  * | `'medium'`    | `'MMM d, y, h:mm:ss a'`             | `Jun 15, 2015, 9:03:01 AM`                      |  * | `'long'`      | `'MMMM d, y, h:mm:ss a z'`          | `June 15, 2015 at 9:03:01 AM GMT+1`             |  * | `'full'`      | `'EEEE, MMMM d, y, h:mm:ss a zzzz'` | `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00` |  * | `'shortDate'` | `'M/d/yy'`                          | `6/15/15`                                       |  * | `'mediumDate'`| `'MMM d, y'`                        | `Jun 15, 2015`                                  |  * | `'longDate'`  | `'MMMM d, y'`                       | `June 15, 2015`                                 |  * | `'fullDate'`  | `'EEEE, MMMM d, y'`                 | `Monday, June 15, 2015`                         |  * | `'shortTime'` | `'h:mm a'`                          | `9:03 AM`                                       |  * | `'mediumTime'`| `'h:mm:ss a'`                       | `9:03:01 AM`                                    |  * | `'longTime'`  | `'h:mm:ss a z'`                     | `9:03:01 AM GMT+1`                              |  * | `'fullTime'`  | `'h:mm:ss a zzzz'`                  | `9:03:01 AM GMT+01:00`                          |  *  * ### Custom format options  *  * You can construct a format string using symbols to specify the components  * of a date-time value, as described in the following table.  * Format details depend on the locale.  * Fields marked with (*) are only available in the extra data set for the given locale.  *  *  | Field type          | Format      | Description                                                   | Example Value                                              |  *  |-------------------- |-------------|---------------------------------------------------------------|------------------------------------------------------------|  *  | Era                 | G, GG & GGG | Abbreviated                                                   | AD                                                         |  *  |                     | GGGG        | Wide                                                          | Anno Domini                                                |  *  |                     | GGGGG       | Narrow                                                        | A                                                          |  *  | Year                | y           | Numeric: minimum digits                                       | 2, 20, 201, 2017, 20173                                    |  *  |                     | yy          | Numeric: 2 digits + zero padded                               | 02, 20, 01, 17, 73                                         |  *  |                     | yyy         | Numeric: 3 digits + zero padded                               | 002, 020, 201, 2017, 20173                                 |  *  |                     | yyyy        | Numeric: 4 digits or more + zero padded                       | 0002, 0020, 0201, 2017, 20173                              |  *  | Week-numbering year | Y           | Numeric: minimum digits                                       | 2, 20, 201, 2017, 20173                                    |  *  |                     | YY          | Numeric: 2 digits + zero padded                               | 02, 20, 01, 17, 73                                         |  *  |                     | YYY         | Numeric: 3 digits + zero padded                               | 002, 020, 201, 2017, 20173                                 |  *  |                     | YYYY        | Numeric: 4 digits or more + zero padded                       | 0002, 0020, 0201, 2017, 20173                              |  *  | Month               | M           | Numeric: 1 digit                                              | 9, 12                                                      |  *  |                     | MM          | Numeric: 2 digits + zero padded                               | 09, 12                                                     |  *  |                     | MMM         | Abbreviated                                                   | Sep                                                        |  *  |                     | MMMM        | Wide                                                          | September                                                  |  *  |                     | MMMMM       | Narrow                                                        | S                                                          |  *  | Month standalone    | L           | Numeric: 1 digit                                              | 9, 12                                                      |  *  |                     | LL          | Numeric: 2 digits + zero padded                               | 09, 12                                                     |  *  |                     | LLL         | Abbreviated                                                   | Sep                                                        |  *  |                     | LLLL        | Wide                                                          | September                                                  |  *  |                     | LLLLL       | Narrow                                                        | S                                                          |  *  | Week of year        | w           | Numeric: minimum digits                                       | 1... 53                                                    |  *  |                     | ww          | Numeric: 2 digits + zero padded                               | 01... 53                                                   |  *  | Week of month       | W           | Numeric: 1 digit                                              | 1... 5                                                     |  *  | Day of month        | d           | Numeric: minimum digits                                       | 1                                                          |  *  |                     | dd          | Numeric: 2 digits + zero padded                               | 01                                                         |  *  | Week day            | E, EE & EEE | Abbreviated                                                   | Tue                                                        |  *  |                     | EEEE        | Wide                                                          | Tuesday                                                    |  *  |                     | EEEEE       | Narrow                                                        | T                                                          |  *  |                     | EEEEEE      | Short                                                         | Tu                                                         |  *  | Week day standalone | c, cc       | Numeric: 1 digit                                              | 2                                                          |  *  |                     | ccc         | Abbreviated                                                   | Tue                                                        |  *  |                     | cccc        | Wide                                                          | Tuesday                                                    |  *  |                     | ccccc       | Narrow                                                        | T                                                          |  *  |                     | cccccc      | Short                                                         | Tu                                                         |  *  | Period              | a, aa & aaa | Abbreviated                                                   | am/pm or AM/PM                                             |  *  |                     | aaaa        | Wide (fallback to `a` when missing)                           | ante meridiem/post meridiem                                |  *  |                     | aaaaa       | Narrow                                                        | a/p                                                        |  *  | Period*             | B, BB & BBB | Abbreviated                                                   | mid.                                                       |  *  |                     | BBBB        | Wide                                                          | am, pm, midnight, noon, morning, afternoon, evening, night |  *  |                     | BBBBB       | Narrow                                                        | md                                                         |  *  | Period standalone*  | b, bb & bbb | Abbreviated                                                   | mid.                                                       |  *  |                     | bbbb        | Wide                                                          | am, pm, midnight, noon, morning, afternoon, evening, night |  *  |                     | bbbbb       | Narrow                                                        | md                                                         |  *  | Hour 1-12           | h           | Numeric: minimum digits                                       | 1, 12                                                      |  *  |                     | hh          | Numeric: 2 digits + zero padded                               | 01, 12                                                     |  *  | Hour 0-23           | H           | Numeric: minimum digits                                       | 0, 23                                                      |  *  |                     | HH          | Numeric: 2 digits + zero padded                               | 00, 23                                                     |  *  | Minute              | m           | Numeric: minimum digits                                       | 8, 59                                                      |  *  |                     | mm          | Numeric: 2 digits + zero padded                               | 08, 59                                                     |  *  | Second              | s           | Numeric: minimum digits                                       | 0... 59                                                    |  *  |                     | ss          | Numeric: 2 digits + zero padded                               | 00... 59                                                   |  *  | Fractional seconds  | S           | Numeric: 1 digit                                              | 0... 9                                                     |  *  |                     | SS          | Numeric: 2 digits + zero padded                               | 00... 99                                                   |  *  |                     | SSS         | Numeric: 3 digits + zero padded (= milliseconds)              | 000... 999                                                 |  *  | Zone                | z, zz & zzz | Short specific non location format (fallback to O)            | GMT-8                                                      |  *  |                     | zzzz        | Long specific non location format (fallback to OOOO)          | GMT-08:00                                                  |  *  |                     | Z, ZZ & ZZZ | ISO8601 basic format                                          | -0800                                                      |  *  |                     | ZZZZ        | Long localized GMT format                                     | GMT-8:00                                                   |  *  |                     | ZZZZZ       | ISO8601 extended format + Z indicator for offset 0 (= XXXXX)  | -08:00                                                     |  *  |                     | O, OO & OOO | Short localized GMT format                                    | GMT-8                                                      |  *  |                     | OOOO        | Long localized GMT format                                     | GMT-08:00                                                  |  *  *  * ### Format examples  *  * These examples transform a date into various formats,  * assuming that `dateObj` is a JavaScript `Date` object for  * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11,  * given in the local time for the `en-US` locale.  *  * ```  * {{ dateObj | date }}               // output is 'Jun 15, 2015'  * {{ dateObj | date:'medium' }}      // output is 'Jun 15, 2015, 9:43:11 PM'  * {{ dateObj | date:'shortTime' }}   // output is '9:43 PM'  * {{ dateObj | date:'mm:ss' }}       // output is '43:11'  * ```  *  * ### Usage example  *  * The following component uses a date pipe to display the current date in different formats.  *  * ```  * @Component({  *  selector: 'date-pipe',  *  template: `<div>  *    <p>Today is {{today | date}}</p>  *    <p>Or if you prefer, {{today | date:'fullDate'}}</p>  *    <p>The time is {{today | date:'h:mm a z'}}</p>  *  </div>`  * })  * // Get the current date and time as a date-time value.  * export class DatePipeComponent {  *   today: number = Date.now();  * }  * ```  *  * @publicApi  */ // clang-format on @Pipe({   name: 'date',   pure: true,   standalone: true, }) export class DatePipe implements PipeTransform {   constructor(       @Inject(LOCALE_ID) private locale: string,       @Inject(DATE_PIPE_DEFAULT_TIMEZONE) @Optional() private defaultTimezone?: string|null,       @Inject(DATE_PIPE_DEFAULT_OPTIONS) @Optional() private defaultOptions?: DatePipeConfig|null,   ) {}    /**    * @param value The date expression: a `Date` object,  a number    * (milliseconds since UTC epoch), or an ISO string (https://www.w3.org/TR/NOTE-datetime).    * @param format The date/time components to include, using predefined options or a    * custom format string.  When not provided, the `DatePipe` looks for the value using the    * `DATE_PIPE_DEFAULT_OPTIONS` injection token (and reads the `dateFormat` property).    * If the token is not configured, the `mediumDate` is used as a value.    * @param timezone A timezone offset (such as `'+0430'`), or a standard UTC/GMT, or continental US    * timezone abbreviation. When not provided, the `DatePipe` looks for the value using the    * `DATE_PIPE_DEFAULT_OPTIONS` injection token (and reads the `timezone` property). If the token    * is not configured, the end-user's local system timezone is used as a value.    * @param locale A locale code for the locale format rules to use.    * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.    * See [Setting your app locale](guide/i18n-common-locale-id).    *    * @see `DATE_PIPE_DEFAULT_OPTIONS`    *    * @returns A date string in the desired format.    */   transform(value: Date|string|number, format?: string, timezone?: string, locale?: string): string       |null;   transform(value: null|undefined, format?: string, timezone?: string, locale?: string): null;   transform(       value: Date|string|number|null|undefined, format?: string, timezone?: string,       locale?: string): string|null;   transform(       value: Date|string|number|null|undefined, format?: string, timezone?: string,       locale?: string): string|null {     if (value == null || value === '' || value !== value) return null;      try {       const _format = format ?? this.defaultOptions?.dateFormat ?? DEFAULT_DATE_FORMAT;       const _timezone =           timezone ?? this.defaultOptions?.timezone ?? this.defaultTimezone ?? undefined;       return formatDate(value, _format, locale || this.locale, _timezone);     } catch (error) {       throw invalidPipeArgumentError(DatePipe, (error as Error).message);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Pipe, PipeTransform} from '@angular/core';  import {getPluralCategory, NgLocalization} from '../i18n/localization';  import {invalidPipeArgumentError} from './invalid_pipe_argument_error';  const _INTERPOLATION_REGEXP: RegExp = /#/g;  /**  * @ngModule CommonModule  * @description  *  * Maps a value to a string that pluralizes the value according to locale rules.  *  * @usageNotes  *  * ### Example  *  * {@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'}  *  * @publicApi  */ @Pipe({   name: 'i18nPlural',   pure: true,   standalone: true, }) export class I18nPluralPipe implements PipeTransform {   constructor(private _localization: NgLocalization) {}    /**    * @param value the number to be formatted    * @param pluralMap an object that mimics the ICU format, see    * https://unicode-org.github.io/icu/userguide/format_parse/messages/.    * @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by    * default).    */   transform(value: number|null|undefined, pluralMap: {[count: string]: string}, locale?: string):       string {     if (value == null) return '';      if (typeof pluralMap !== 'object' || pluralMap === null) {       throw invalidPipeArgumentError(I18nPluralPipe, pluralMap);     }      const key = getPluralCategory(value, Object.keys(pluralMap), this._localization, locale);      return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Pipe, PipeTransform} from '@angular/core';  import {invalidPipeArgumentError} from './invalid_pipe_argument_error';  /**  * @ngModule CommonModule  * @description  *  * Generic selector that displays the string that matches the current value.  *  * If none of the keys of the `mapping` match the `value`, then the content  * of the `other` key is returned when present, otherwise an empty string is returned.  *  * @usageNotes  *  * ### Example  *  * {@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'}  *  * @publicApi  */ @Pipe({   name: 'i18nSelect',   pure: true,   standalone: true, }) export class I18nSelectPipe implements PipeTransform {   /**    * @param value a string to be internationalized.    * @param mapping an object that indicates the text that should be displayed    * for different values of the provided `value`.    */   transform(value: string|null|undefined, mapping: {[key: string]: string}): string {     if (value == null) return '';      if (typeof mapping !== 'object' || typeof value !== 'string') {       throw invalidPipeArgumentError(I18nSelectPipe, mapping);     }      if (mapping.hasOwnProperty(value)) {       return mapping[value];     }      if (mapping.hasOwnProperty('other')) {       return mapping['other'];     }      return '';   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Pipe, PipeTransform} from '@angular/core';  /**  * @ngModule CommonModule  * @description  *  * Converts a value into its JSON-format representation.  Useful for debugging.  *  * @usageNotes  *  * The following component uses a JSON pipe to convert an object  * to JSON format, and displays the string in both formats for comparison.  *  * {@example common/pipes/ts/json_pipe.ts region='JsonPipe'}  *  * @publicApi  */ @Pipe({   name: 'json',   pure: false,   standalone: true, }) export class JsonPipe implements PipeTransform {   /**    * @param value A value of any type to convert into a JSON-format string.    */   transform(value: any): string {     return JSON.stringify(value, null, 2);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {KeyValueChangeRecord, KeyValueChanges, KeyValueDiffer, KeyValueDiffers, Pipe, PipeTransform} from '@angular/core';  function makeKeyValuePair<K, V>(key: K, value: V): KeyValue<K, V> {   return {key: key, value: value}; }  /**  * A key value pair.  * Usually used to represent the key value pairs from a Map or Object.  *  * @publicApi  */ export interface KeyValue<K, V> {   key: K;   value: V; }  /**  * @ngModule CommonModule  * @description  *  * Transforms Object or Map into an array of key value pairs.  *  * The output array will be ordered by keys.  * By default the comparator will be by Unicode point value.  * You can optionally pass a compareFn if your keys are complex types.  *  * @usageNotes  * ### Examples  *  * This examples show how an Object or a Map can be iterated by ngFor with the use of this  * keyvalue pipe.  *  * {@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'}  *  * @publicApi  */ @Pipe({   name: 'keyvalue',   pure: false,   standalone: true, }) export class KeyValuePipe implements PipeTransform {   constructor(private readonly differs: KeyValueDiffers) {}    private differ!: KeyValueDiffer<any, any>;   private keyValues: Array<KeyValue<any, any>> = [];   private compareFn: (a: KeyValue<any, any>, b: KeyValue<any, any>) => number = defaultComparator;    /*    * NOTE: when the `input` value is a simple Record<K, V> object, the keys are extracted with    * Object.keys(). This means that even if the `input` type is Record<number, V> the keys are    * compared/returned as `string`s.    */   transform<K, V>(       input: ReadonlyMap<K, V>,       compareFn?: (a: KeyValue<K, V>, b: KeyValue<K, V>) => number): Array<KeyValue<K, V>>;   transform<K extends number, V>(       input: Record<K, V>, compareFn?: (a: KeyValue<string, V>, b: KeyValue<string, V>) => number):       Array<KeyValue<string, V>>;   transform<K extends string, V>(       input: Record<K, V>|ReadonlyMap<K, V>,       compareFn?: (a: KeyValue<K, V>, b: KeyValue<K, V>) => number): Array<KeyValue<K, V>>;   transform(       input: null|undefined,       compareFn?: (a: KeyValue<unknown, unknown>, b: KeyValue<unknown, unknown>) => number): null;   transform<K, V>(       input: ReadonlyMap<K, V>|null|undefined,       compareFn?: (a: KeyValue<K, V>, b: KeyValue<K, V>) => number): Array<KeyValue<K, V>>|null;   transform<K extends number, V>(       input: Record<K, V>|null|undefined,       compareFn?: (a: KeyValue<string, V>, b: KeyValue<string, V>) => number):       Array<KeyValue<string, V>>|null;   transform<K extends string, V>(       input: Record<K, V>|ReadonlyMap<K, V>|null|undefined,       compareFn?: (a: KeyValue<K, V>, b: KeyValue<K, V>) => number): Array<KeyValue<K, V>>|null;   transform<K, V>(       input: undefined|null|{[key: string]: V, [key: number]: V}|ReadonlyMap<K, V>,       compareFn: (a: KeyValue<K, V>, b: KeyValue<K, V>) => number = defaultComparator):       Array<KeyValue<K, V>>|null {     if (!input || (!(input instanceof Map) && typeof input !== 'object')) {       return null;     }      if (!this.differ) {       // make a differ for whatever type we've been passed in       this.differ = this.differs.find(input).create();     }      const differChanges: KeyValueChanges<K, V>|null = this.differ.diff(input as any);     const compareFnChanged = compareFn !== this.compareFn;      if (differChanges) {       this.keyValues = [];       differChanges.forEachItem((r: KeyValueChangeRecord<K, V>) => {         this.keyValues.push(makeKeyValuePair(r.key, r.currentValue!));       });     }     if (differChanges || compareFnChanged) {       this.keyValues.sort(compareFn);       this.compareFn = compareFn;     }     return this.keyValues;   } }  export function defaultComparator<K, V>(     keyValueA: KeyValue<K, V>, keyValueB: KeyValue<K, V>): number {   const a = keyValueA.key;   const b = keyValueB.key;   // if same exit with 0;   if (a === b) return 0;   // make sure that undefined are at the end of the sort.   if (a === undefined) return 1;   if (b === undefined) return -1;   // make sure that nulls are at the end of the sort.   if (a === null) return 1;   if (b === null) return -1;   if (typeof a == 'string' && typeof b == 'string') {     return a < b ? -1 : 1;   }   if (typeof a == 'number' && typeof b == 'number') {     return a - b;   }   if (typeof a == 'boolean' && typeof b == 'boolean') {     return a < b ? -1 : 1;   }   // `a` and `b` are of different types. Compare their string values.   const aString = String(a);   const bString = String(b);   return aString == bString ? 0 : aString < bString ? -1 : 1; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DEFAULT_CURRENCY_CODE, Inject, LOCALE_ID, Pipe, PipeTransform} from '@angular/core';  import {formatCurrency, formatNumber, formatPercent} from '../i18n/format_number'; import {getCurrencySymbol} from '../i18n/locale_data_api';  import {invalidPipeArgumentError} from './invalid_pipe_argument_error';   /**  * @ngModule CommonModule  * @description  *  * Formats a value according to digit options and locale rules.  * Locale determines group sizing and separator,  * decimal point character, and other locale-specific configurations.  *  * @see `formatNumber()`  *  * @usageNotes  *  * ### digitsInfo  *  * The value's decimal representation is specified by the `digitsInfo`  * parameter, written in the following format:<br>  *  * ```  * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}  * ```  *  *  - `minIntegerDigits`:  * The minimum number of integer digits before the decimal point.  * Default is 1.  *  * - `minFractionDigits`:  * The minimum number of digits after the decimal point.  * Default is 0.  *  *  - `maxFractionDigits`:  * The maximum number of digits after the decimal point.  * Default is 3.  *  * If the formatted value is truncated it will be rounded using the \"to-nearest\" method:  *  * ```  * {{3.6 | number: '1.0-0'}}  * <!--will output '4'-->  *  * {{-3.6 | number:'1.0-0'}}  * <!--will output '-4'-->  * ```  *  * ### locale  *  * `locale` will format a value according to locale rules.  * Locale determines group sizing and separator,  * decimal point character, and other locale-specific configurations.  *  * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.  *  * See [Setting your app locale](guide/i18n-common-locale-id).  *  * ### Example  *  * The following code shows how the pipe transforms values  * according to various format specifications,  * where the caller's default locale is `en-US`.  *  * <code-example path=\"common/pipes/ts/number_pipe.ts\" region='NumberPipe'></code-example>  *  * @publicApi  */ @Pipe({   name: 'number',   standalone: true, }) export class DecimalPipe implements PipeTransform {   constructor(@Inject(LOCALE_ID) private _locale: string) {}    transform(value: number|string, digitsInfo?: string, locale?: string): string|null;   transform(value: null|undefined, digitsInfo?: string, locale?: string): null;   transform(value: number|string|null|undefined, digitsInfo?: string, locale?: string): string|null;   /**    * @param value The value to be formatted.    * @param digitsInfo Sets digit and decimal representation.    * [See more](#digitsinfo).    * @param locale Specifies what locale format rules to use.    * [See more](#locale).    */   transform(value: number|string|null|undefined, digitsInfo?: string, locale?: string): string       |null {     if (!isValue(value)) return null;      locale = locale || this._locale;      try {       const num = strToNumber(value);       return formatNumber(num, locale, digitsInfo);     } catch (error) {       throw invalidPipeArgumentError(DecimalPipe, (error as Error).message);     }   } }  /**  * @ngModule CommonModule  * @description  *  * Transforms a number to a percentage  * string, formatted according to locale rules that determine group sizing and  * separator, decimal-point character, and other locale-specific  * configurations.  *  * @see `formatPercent()`  *  * @usageNotes  * The following code shows how the pipe transforms numbers  * into text strings, according to various format specifications,  * where the caller's default locale is `en-US`.  *  * <code-example path=\"common/pipes/ts/percent_pipe.ts\" region='PercentPipe'></code-example>  *  * @publicApi  */ @Pipe({   name: 'percent',   standalone: true, }) export class PercentPipe implements PipeTransform {   constructor(@Inject(LOCALE_ID) private _locale: string) {}    transform(value: number|string, digitsInfo?: string, locale?: string): string|null;   transform(value: null|undefined, digitsInfo?: string, locale?: string): null;   transform(value: number|string|null|undefined, digitsInfo?: string, locale?: string): string|null;   /**    *    * @param value The number to be formatted as a percentage.    * @param digitsInfo Decimal representation options, specified by a string    * in the following format:<br>    * <code>{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}</code>.    *   - `minIntegerDigits`: The minimum number of integer digits before the decimal point.    * Default is `1`.    *   - `minFractionDigits`: The minimum number of digits after the decimal point.    * Default is `0`.    *   - `maxFractionDigits`: The maximum number of digits after the decimal point.    * Default is `0`.    * @param locale A locale code for the locale format rules to use.    * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.    * See [Setting your app locale](guide/i18n-common-locale-id).    */   transform(value: number|string|null|undefined, digitsInfo?: string, locale?: string): string       |null {     if (!isValue(value)) return null;     locale = locale || this._locale;     try {       const num = strToNumber(value);       return formatPercent(num, locale, digitsInfo);     } catch (error) {       throw invalidPipeArgumentError(PercentPipe, (error as Error).message);     }   } }  /**  * @ngModule CommonModule  * @description  *  * Transforms a number to a currency string, formatted according to locale rules  * that determine group sizing and separator, decimal-point character,  * and other locale-specific configurations.  *  *  * @see `getCurrencySymbol()`  * @see `formatCurrency()`  *  * @usageNotes  * The following code shows how the pipe transforms numbers  * into text strings, according to various format specifications,  * where the caller's default locale is `en-US`.  *  * <code-example path=\"common/pipes/ts/currency_pipe.ts\" region='CurrencyPipe'></code-example>  *  * @publicApi  */ @Pipe({   name: 'currency',   standalone: true, }) export class CurrencyPipe implements PipeTransform {   constructor(       @Inject(LOCALE_ID) private _locale: string,       @Inject(DEFAULT_CURRENCY_CODE) private _defaultCurrencyCode: string = 'USD') {}    transform(       value: number|string, currencyCode?: string,       display?: 'code'|'symbol'|'symbol-narrow'|string|boolean, digitsInfo?: string,       locale?: string): string|null;   transform(       value: null|undefined, currencyCode?: string,       display?: 'code'|'symbol'|'symbol-narrow'|string|boolean, digitsInfo?: string,       locale?: string): null;   transform(       value: number|string|null|undefined, currencyCode?: string,       display?: 'code'|'symbol'|'symbol-narrow'|string|boolean, digitsInfo?: string,       locale?: string): string|null;   /**    *    * @param value The number to be formatted as currency.    * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code,    * such as `USD` for the US dollar and `EUR` for the euro. The default currency code can be    * configured using the `DEFAULT_CURRENCY_CODE` injection token.    * @param display The format for the currency indicator. One of the following:    *   - `code`: Show the code (such as `USD`).    *   - `symbol`(default): Show the symbol (such as `$`).    *   - `symbol-narrow`: Use the narrow symbol for locales that have two symbols for their    * currency.    * For example, the Canadian dollar CAD has the symbol `CA$` and the symbol-narrow `$`. If the    * locale has no narrow symbol, uses the standard symbol for the locale.    *   - String: Use the given string value instead of a code or a symbol.    * For example, an empty string will suppress the currency & symbol.    *   - Boolean (marked deprecated in v5): `true` for symbol and false for `code`.    *    * @param digitsInfo Decimal representation options, specified by a string    * in the following format:<br>    * <code>{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}</code>.    *   - `minIntegerDigits`: The minimum number of integer digits before the decimal point.    * Default is `1`.    *   - `minFractionDigits`: The minimum number of digits after the decimal point.    * Default is `2`.    *   - `maxFractionDigits`: The maximum number of digits after the decimal point.    * Default is `2`.    * If not provided, the number will be formatted with the proper amount of digits,    * depending on what the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) specifies.    * For example, the Canadian dollar has 2 digits, whereas the Chilean peso has none.    * @param locale A locale code for the locale format rules to use.    * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.    * See [Setting your app locale](guide/i18n-common-locale-id).    */   transform(       value: number|string|null|undefined, currencyCode: string = this._defaultCurrencyCode,       display: 'code'|'symbol'|'symbol-narrow'|string|boolean = 'symbol', digitsInfo?: string,       locale?: string): string|null {     if (!isValue(value)) return null;      locale = locale || this._locale;      if (typeof display === 'boolean') {       if ((typeof ngDevMode === 'undefined' || ngDevMode) && <any>console && <any>console.warn) {         console.warn(             `Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are \"code\", \"symbol\" or \"symbol-narrow\".`);       }       display = display ? 'symbol' : 'code';     }      let currency: string = currencyCode || this._defaultCurrencyCode;     if (display !== 'code') {       if (display === 'symbol' || display === 'symbol-narrow') {         currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);       } else {         currency = display;       }     }      try {       const num = strToNumber(value);       return formatCurrency(num, locale, currency, currencyCode, digitsInfo);     } catch (error) {       throw invalidPipeArgumentError(CurrencyPipe, (error as Error).message);     }   } }  function isValue(value: number|string|null|undefined): value is number|string {   return !(value == null || value === '' || value !== value); }  /**  * Transforms a string into a number (if needed).  */ function strToNumber(value: number|string): number {   // Convert strings to numbers   if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {     return Number(value);   }   if (typeof value !== 'number') {     throw new Error(`${value} is not a number`);   }   return value; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Pipe, PipeTransform} from '@angular/core';  import {invalidPipeArgumentError} from './invalid_pipe_argument_error';  /**  * @ngModule CommonModule  * @description  *  * Creates a new `Array` or `String` containing a subset (slice) of the elements.  *  * @usageNotes  *  * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()`  * and `String.prototype.slice()`.  *  * When operating on an `Array`, the returned `Array` is always a copy even when all  * the elements are being returned.  *  * When operating on a blank value, the pipe returns the blank value.  *  * ### List Example  *  * This `ngFor` example:  *  * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'}  *  * produces the following:  *  * ```html  * <li>b</li>  * <li>c</li>  * ```  *  * ### String Examples  *  * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'}  *  * @publicApi  */ @Pipe({   name: 'slice',   pure: false,   standalone: true, }) export class SlicePipe implements PipeTransform {   /**    * @param value a list or a string to be sliced.    * @param start the starting index of the subset to return:    *   - **a positive integer**: return the item at `start` index and all items after    *     in the list or string expression.    *   - **a negative integer**: return the item at `start` index from the end and all items after    *     in the list or string expression.    *   - **if positive and greater than the size of the expression**: return an empty list or    * string.    *   - **if negative and greater than the size of the expression**: return entire list or string.    * @param end the ending index of the subset to return:    *   - **omitted**: return all items until the end.    *   - **if positive**: return all items before `end` index of the list or string.    *   - **if negative**: return all items before `end` index from the end of the list or string.    */   transform<T>(value: ReadonlyArray<T>, start: number, end?: number): Array<T>;   transform(value: null|undefined, start: number, end?: number): null;   transform<T>(value: ReadonlyArray<T>|null|undefined, start: number, end?: number): Array<T>|null;   transform(value: string, start: number, end?: number): string;   transform(value: string|null|undefined, start: number, end?: number): string|null;   transform<T>(value: ReadonlyArray<T>|string|null|undefined, start: number, end?: number):       Array<T>|string|null {     if (value == null) return null;      if (!this.supports(value)) {       throw invalidPipeArgumentError(SlicePipe, value);     }      return value.slice(start, end);   }    private supports(obj: any): boolean {     return typeof obj === 'string' || Array.isArray(obj);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * This module provides a set of common Pipes.  */ import {AsyncPipe} from './async_pipe'; import {LowerCasePipe, TitleCasePipe, UpperCasePipe} from './case_conversion_pipes'; import {DATE_PIPE_DEFAULT_OPTIONS, DATE_PIPE_DEFAULT_TIMEZONE, DatePipe} from './date_pipe'; import {DatePipeConfig} from './date_pipe_config'; import {I18nPluralPipe} from './i18n_plural_pipe'; import {I18nSelectPipe} from './i18n_select_pipe'; import {JsonPipe} from './json_pipe'; import {KeyValue, KeyValuePipe} from './keyvalue_pipe'; import {CurrencyPipe, DecimalPipe, PercentPipe} from './number_pipe'; import {SlicePipe} from './slice_pipe';  export {   AsyncPipe,   CurrencyPipe,   DATE_PIPE_DEFAULT_OPTIONS,   DATE_PIPE_DEFAULT_TIMEZONE,   DatePipe,   DatePipeConfig,   DecimalPipe,   I18nPluralPipe,   I18nSelectPipe,   JsonPipe,   KeyValue,   KeyValuePipe,   LowerCasePipe,   PercentPipe,   SlicePipe,   TitleCasePipe,   UpperCasePipe, };   /**  * A collection of Angular pipes that are likely to be used in each and every application.  */ export const COMMON_PIPES = [   AsyncPipe,   UpperCasePipe,   LowerCasePipe,   JsonPipe,   SlicePipe,   DecimalPipe,   PercentPipe,   TitleCasePipe,   CurrencyPipe,   DatePipe,   I18nPluralPipe,   I18nSelectPipe,   KeyValuePipe, ]; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core';  import {COMMON_DIRECTIVES} from './directives/index'; import {COMMON_PIPES} from './pipes/index';    // Note: This does not contain the location providers, // as they need some platform specific implementations to work. /**  * Exports all the basic Angular directives and pipes,  * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on.  * Re-exported by `BrowserModule`, which is included automatically in the root  * `AppModule` when you create a new app with the CLI `new` command.  *  * @publicApi  */ @NgModule({   imports: [COMMON_DIRECTIVES, COMMON_PIPES],   exports: [COMMON_DIRECTIVES, COMMON_PIPES], }) export class CommonModule { } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export const PLATFORM_BROWSER_ID = 'browser'; export const PLATFORM_SERVER_ID = 'server'; export const PLATFORM_WORKER_APP_ID = 'browserWorkerApp'; export const PLATFORM_WORKER_UI_ID = 'browserWorkerUi';  /**  * Returns whether a platform id represents a browser platform.  * @publicApi  */ export function isPlatformBrowser(platformId: Object): boolean {   return platformId === PLATFORM_BROWSER_ID; }  /**  * Returns whether a platform id represents a server platform.  * @publicApi  */ export function isPlatformServer(platformId: Object): boolean {   return platformId === PLATFORM_SERVER_ID; }  /**  * Returns whether a platform id represents a web worker app platform.  * @publicApi  */ export function isPlatformWorkerApp(platformId: Object): boolean {   return platformId === PLATFORM_WORKER_APP_ID; }  /**  * Returns whether a platform id represents a web worker UI platform.  * @publicApi  */ export function isPlatformWorkerUi(platformId: Object): boolean {   return platformId === PLATFORM_WORKER_UI_ID; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the common package.  */  import {Version} from '@angular/core';  /**  * @publicApi  */ export const VERSION = new Version('15.2.0'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵɵdefineInjectable, ɵɵinject} from '@angular/core';  import {DOCUMENT} from './dom_tokens';    /**  * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.  *  * @publicApi  */ export abstract class ViewportScroller {   // De-sugared tree-shakable injection   // See #23917   /** @nocollapse */   static ɵprov = /** @pureOrBreakMyCode */ ɵɵdefineInjectable({     token: ViewportScroller,     providedIn: 'root',     factory: () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window)   });    /**    * Configures the top offset used when scrolling to an anchor.    * @param offset A position in screen coordinates (a tuple with x and y values)    * or a function that returns the top offset position.    *    */   abstract setOffset(offset: [number, number]|(() => [number, number])): void;    /**    * Retrieves the current scroll position.    * @returns A position in screen coordinates (a tuple with x and y values).    */   abstract getScrollPosition(): [number, number];    /**    * Scrolls to a specified position.    * @param position A position in screen coordinates (a tuple with x and y values).    */   abstract scrollToPosition(position: [number, number]): void;    /**    * Scrolls to an anchor element.    * @param anchor The ID of the anchor element.    */   abstract scrollToAnchor(anchor: string): void;    /**    * Disables automatic scroll restoration provided by the browser.    * See also [window.history.scrollRestoration    * info](https://developers.google.com/web/updates/2015/09/history-api-scroll-restoration).    */   abstract setHistoryScrollRestoration(scrollRestoration: 'auto'|'manual'): void; }  /**  * Manages the scroll position for a browser window.  */ export class BrowserViewportScroller implements ViewportScroller {   private offset: () => [number, number] = () => [0, 0];    constructor(private document: Document, private window: Window) {}    /**    * Configures the top offset used when scrolling to an anchor.    * @param offset A position in screen coordinates (a tuple with x and y values)    * or a function that returns the top offset position.    *    */   setOffset(offset: [number, number]|(() => [number, number])): void {     if (Array.isArray(offset)) {       this.offset = () => offset;     } else {       this.offset = offset;     }   }    /**    * Retrieves the current scroll position.    * @returns The position in screen coordinates.    */   getScrollPosition(): [number, number] {     if (this.supportsScrolling()) {       return [this.window.pageXOffset, this.window.pageYOffset];     } else {       return [0, 0];     }   }    /**    * Sets the scroll position.    * @param position The new position in screen coordinates.    */   scrollToPosition(position: [number, number]): void {     if (this.supportsScrolling()) {       this.window.scrollTo(position[0], position[1]);     }   }    /**    * Scrolls to an element and attempts to focus the element.    *    * Note that the function name here is misleading in that the target string may be an ID for a    * non-anchor element.    *    * @param target The ID of an element or name of the anchor.    *    * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document    * @see https://html.spec.whatwg.org/#scroll-to-fragid    */   scrollToAnchor(target: string): void {     if (!this.supportsScrolling()) {       return;     }      const elSelected = findAnchorFromDocument(this.document, target);      if (elSelected) {       this.scrollToElement(elSelected);       // After scrolling to the element, the spec dictates that we follow the focus steps for the       // target. Rather than following the robust steps, simply attempt focus.       //       // @see https://html.spec.whatwg.org/#get-the-focusable-area       // @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus       // @see https://html.spec.whatwg.org/#focusable-area       elSelected.focus();     }   }    /**    * Disables automatic scroll restoration provided by the browser.    */   setHistoryScrollRestoration(scrollRestoration: 'auto'|'manual'): void {     if (this.supportScrollRestoration()) {       const history = this.window.history;       if (history && history.scrollRestoration) {         history.scrollRestoration = scrollRestoration;       }     }   }    /**    * Scrolls to an element using the native offset and the specified offset set on this scroller.    *    * The offset can be used when we know that there is a floating header and scrolling naively to an    * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header.    */   private scrollToElement(el: HTMLElement): void {     const rect = el.getBoundingClientRect();     const left = rect.left + this.window.pageXOffset;     const top = rect.top + this.window.pageYOffset;     const offset = this.offset();     this.window.scrollTo(left - offset[0], top - offset[1]);   }    /**    * We only support scroll restoration when we can get a hold of window.    * This means that we do not support this behavior when running in a web worker.    *    * Lifting this restriction right now would require more changes in the dom adapter.    * Since webworkers aren't widely used, we will lift it once RouterScroller is    * battle-tested.    */   private supportScrollRestoration(): boolean {     try {       if (!this.supportsScrolling()) {         return false;       }       // The `scrollRestoration` property could be on the `history` instance or its prototype.       const scrollRestorationDescriptor = getScrollRestorationProperty(this.window.history) ||           getScrollRestorationProperty(Object.getPrototypeOf(this.window.history));       // We can write to the `scrollRestoration` property if it is a writable data field or it has a       // setter function.       return !!scrollRestorationDescriptor &&           !!(scrollRestorationDescriptor.writable || scrollRestorationDescriptor.set);     } catch {       return false;     }   }    private supportsScrolling(): boolean {     try {       return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;     } catch {       return false;     }   } }  function getScrollRestorationProperty(obj: any): PropertyDescriptor|undefined {   return Object.getOwnPropertyDescriptor(obj, 'scrollRestoration'); }  function findAnchorFromDocument(document: Document, target: string): HTMLElement|null {   const documentResult = document.getElementById(target) || document.getElementsByName(target)[0];    if (documentResult) {     return documentResult;   }    // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we   // have to traverse the DOM manually and do the lookup through the shadow roots.   if (typeof document.createTreeWalker === 'function' && document.body &&       ((document.body as any).createShadowRoot || document.body.attachShadow)) {     const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);     let currentNode = treeWalker.currentNode as HTMLElement | null;      while (currentNode) {       const shadowRoot = currentNode.shadowRoot;        if (shadowRoot) {         // Note that `ShadowRoot` doesn't support `getElementsByName`         // so we have to fall back to `querySelector`.         const result =             shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);         if (result) {           return result;         }       }        currentNode = treeWalker.nextNode() as HTMLElement | null;     }   }    return null; }  /**  * Provides an empty implementation of the viewport scroller.  */ export class NullViewportScroller implements ViewportScroller {   /**    * Empty implementation    */   setOffset(offset: [number, number]|(() => [number, number])): void {}    /**    * Empty implementation    */   getScrollPosition(): [number, number] {     return [0, 0];   }    /**    * Empty implementation    */   scrollToPosition(position: [number, number]): void {}    /**    * Empty implementation    */   scrollToAnchor(anchor: string): void {}    /**    * Empty implementation    */   setHistoryScrollRestoration(scrollRestoration: 'auto'|'manual'): void {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * A wrapper around the `XMLHttpRequest` constructor.  *  * @publicApi  */ export abstract class XhrFactory {   abstract build(): XMLHttpRequest; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // Converts a string that represents a URL into a URL class instance. export function getUrl(src: string, win: Window): URL {   // Don't use a base URL is the URL is absolute.   return isAbsoluteUrl(src) ? new URL(src) : new URL(src, win.location.href); }  // Checks whether a URL is absolute (i.e. starts with `http://` or `https://`). export function isAbsoluteUrl(src: string): boolean {   return /^https?:\\/\\//.test(src); }  // Given a URL, extract the hostname part. // If a URL is a relative one - the URL is returned as is. export function extractHostname(url: string): string {   return isAbsoluteUrl(url) ? (new URL(url)).hostname : url; }  export function isValidPath(path: unknown): boolean {   const isString = typeof path === 'string';    if (!isString || path.trim() === '') {     return false;   }    // Calling new URL() will throw if the path string is malformed   try {     const url = new URL(path);     return true;   } catch {     return false;   } }  export function normalizePath(path: string): string {   return path.endsWith('/') ? path.slice(0, -1) : path; }  export function normalizeSrc(src: string): string {   return src.startsWith('/') ? src.slice(1) : src; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken, Provider, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../../../errors'; import {isAbsoluteUrl, isValidPath, normalizePath, normalizeSrc} from '../url';  /**  * Config options recognized by the image loader function.  *  * @see `ImageLoader`  * @see `NgOptimizedImage`  * @publicApi  */ export interface ImageLoaderConfig {   /**    * Image file name to be added to the image request URL.    */   src: string;   /**    * Width of the requested image (to be used when generating srcset).    */   width?: number;   /**    * Additional user-provided parameters for use by the ImageLoader.    */   loaderParams?: {[key: string]: any;}; }  /**  * Represents an image loader function. Image loader functions are used by the  * NgOptimizedImage directive to produce full image URL based on the image name and its width.  *  * @publicApi  */ export type ImageLoader = (config: ImageLoaderConfig) => string;  /**  * Noop image loader that does no transformation to the original src and just returns it as is.  * This loader is used as a default one if more specific logic is not provided in an app config.  *  * @see `ImageLoader`  * @see `NgOptimizedImage`  */ export const noopImageLoader = (config: ImageLoaderConfig) => config.src;  /**  * Metadata about the image loader.  */ export type ImageLoaderInfo = {   name: string,   testUrl: (url: string) => boolean };  /**  * Injection token that configures the image loader function.  *  * @see `ImageLoader`  * @see `NgOptimizedImage`  * @publicApi  */ export const IMAGE_LOADER = new InjectionToken<ImageLoader>('ImageLoader', {   providedIn: 'root',   factory: () => noopImageLoader, });  /**  * Internal helper function that makes it easier to introduce custom image loaders for the  * `NgOptimizedImage` directive. It is enough to specify a URL builder function to obtain full DI  * configuration for a given loader: a DI token corresponding to the actual loader function, plus DI  * tokens managing preconnect check functionality.  * @param buildUrlFn a function returning a full URL based on loader's configuration  * @param exampleUrls example of full URLs for a given loader (used in error messages)  * @returns a set of DI providers corresponding to the configured image loader  */ export function createImageLoader(     buildUrlFn: (path: string, config: ImageLoaderConfig) => string, exampleUrls?: string[]) {   return function provideImageLoader(path: string) {     if (!isValidPath(path)) {       throwInvalidPathError(path, exampleUrls || []);     }      // The trailing / is stripped (if provided) to make URL construction (concatenation) easier in     // the individual loader functions.     path = normalizePath(path);      const loaderFn = (config: ImageLoaderConfig) => {       if (isAbsoluteUrl(config.src)) {         // Image loader functions expect an image file name (e.g. `my-image.png`)         // or a relative path + a file name (e.g. `/a/b/c/my-image.png`) as an input,         // so the final absolute URL can be constructed.         // When an absolute URL is provided instead - the loader can not         // build a final URL, thus the error is thrown to indicate that.         throwUnexpectedAbsoluteUrlError(path, config.src);       }        return buildUrlFn(path, {...config, src: normalizeSrc(config.src)});     };      const providers: Provider[] = [{provide: IMAGE_LOADER, useValue: loaderFn}];     return providers;   }; }  function throwInvalidPathError(path: unknown, exampleUrls: string[]): never {   throw new RuntimeError(       RuntimeErrorCode.INVALID_LOADER_ARGUMENTS,       ngDevMode &&           `Image loader has detected an invalid path (\\`${path}\\`). ` +               `To fix this, supply a path using one of the following formats: ${                   exampleUrls.join(' or ')}`); }  function throwUnexpectedAbsoluteUrlError(path: string, url: string): never {   throw new RuntimeError(       RuntimeErrorCode.INVALID_LOADER_ARGUMENTS,       ngDevMode &&           `Image loader has detected a \\`<img>\\` tag with an invalid \\`ngSrc\\` attribute: ${               url}. ` +               `This image loader expects \\`ngSrc\\` to be a relative URL - ` +               `however the provided value is an absolute URL. ` +               `To fix this, provide \\`ngSrc\\` as a path relative to the base URL ` +               `configured for this loader (\\`${path}\\`).`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {createImageLoader, ImageLoaderConfig} from './image_loader';  /**  * Function that generates an ImageLoader for [Cloudflare Image  * Resizing](https://developers.cloudflare.com/images/image-resizing/) and turns it into an Angular  * provider. Note: Cloudflare has multiple image products - this provider is specifically for  * Cloudflare Image Resizing; it will not work with Cloudflare Images or Cloudflare Polish.  *  * @param path Your domain name, e.g. https://mysite.com  * @returns Provider that provides an ImageLoader function  *  * @publicApi  */ export const provideCloudflareLoader = createImageLoader(     createCloudflareUrl,     ngDevMode ? ['https://<ZONE>/cdn-cgi/image/<OPTIONS>/<SOURCE-IMAGE>'] : undefined);  function createCloudflareUrl(path: string, config: ImageLoaderConfig) {   let params = `format=auto`;   if (config.width) {     params += `,width=${config.width}`;   }   // Cloudflare image URLs format:   // https://developers.cloudflare.com/images/image-resizing/url-format/   return `${path}/cdn-cgi/image/${params}/${config.src}`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {createImageLoader, ImageLoaderConfig, ImageLoaderInfo} from './image_loader';  /**  * Name and URL tester for Cloudinary.  */ export const cloudinaryLoaderInfo: ImageLoaderInfo = {   name: 'Cloudinary',   testUrl: isCloudinaryUrl };  const CLOUDINARY_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.cloudinary\\.com\\/.+/; /**  * Tests whether a URL is from Cloudinary CDN.  */ function isCloudinaryUrl(url: string): boolean {   return CLOUDINARY_LOADER_REGEX.test(url); }  /**  * Function that generates an ImageLoader for Cloudinary and turns it into an Angular provider.  *  * @param path Base URL of your Cloudinary images  * This URL should match one of the following formats:  * https://res.cloudinary.com/mysite  * https://mysite.cloudinary.com  * https://subdomain.mysite.com  * @returns Set of providers to configure the Cloudinary loader.  *  * @publicApi  */ export const provideCloudinaryLoader = createImageLoader(     createCloudinaryUrl,     ngDevMode ?         [           'https://res.cloudinary.com/mysite', 'https://mysite.cloudinary.com',           'https://subdomain.mysite.com'         ] :         undefined);  function createCloudinaryUrl(path: string, config: ImageLoaderConfig) {   // Cloudinary image URLformat:   // https://cloudinary.com/documentation/image_transformations#transformation_url_structure   // Example of a Cloudinary image URL:   // https://res.cloudinary.com/mysite/image/upload/c_scale,f_auto,q_auto,w_600/marketing/tile-topics-m.png   let params = `f_auto,q_auto`;  // sets image format and quality to \"auto\"   if (config.width) {     params += `,w_${config.width}`;   }   return `${path}/image/upload/${params}/${config.src}`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {createImageLoader, ImageLoaderConfig, ImageLoaderInfo} from './image_loader';  /**  * Name and URL tester for ImageKit.  */ export const imageKitLoaderInfo: ImageLoaderInfo = {   name: 'ImageKit',   testUrl: isImageKitUrl };  const IMAGE_KIT_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imagekit\\.io\\/.+/; /**  * Tests whether a URL is from ImageKit CDN.  */ function isImageKitUrl(url: string): boolean {   return IMAGE_KIT_LOADER_REGEX.test(url); }  /**  * Function that generates an ImageLoader for ImageKit and turns it into an Angular provider.  *  * @param path Base URL of your ImageKit images  * This URL should match one of the following formats:  * https://ik.imagekit.io/myaccount  * https://subdomain.mysite.com  * @returns Set of providers to configure the ImageKit loader.  *  * @publicApi  */ export const provideImageKitLoader = createImageLoader(     createImagekitUrl,     ngDevMode ? ['https://ik.imagekit.io/mysite', 'https://subdomain.mysite.com'] : undefined);  export function createImagekitUrl(path: string, config: ImageLoaderConfig) {   // Example of an ImageKit image URL:   // https://ik.imagekit.io/demo/tr:w-300,h-300/medium_cafe_B1iTdD0C.jpg   let params = `tr:q-auto`;  // applies the \"auto quality\" transformation   if (config.width) {     params += `,w-${config.width}`;   }   return `${path}/${params}/${config.src}`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {createImageLoader, ImageLoaderConfig, ImageLoaderInfo} from './image_loader';  /**  * Name and URL tester for Imgix.  */ export const imgixLoaderInfo: ImageLoaderInfo = {   name: 'Imgix',   testUrl: isImgixUrl };  const IMGIX_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imgix\\.net\\/.+/; /**  * Tests whether a URL is from Imgix CDN.  */ function isImgixUrl(url: string): boolean {   return IMGIX_LOADER_REGEX.test(url); }  /**  * Function that generates an ImageLoader for Imgix and turns it into an Angular provider.  *  * @param path path to the desired Imgix origin,  * e.g. https://somepath.imgix.net or https://images.mysite.com  * @returns Set of providers to configure the Imgix loader.  *  * @publicApi  */ export const provideImgixLoader =     createImageLoader(createImgixUrl, ngDevMode ? ['https://somepath.imgix.net/'] : undefined);  function createImgixUrl(path: string, config: ImageLoaderConfig) {   const url = new URL(`${path}/${config.src}`);   // This setting ensures the smallest allowable format is set.   url.searchParams.set('auto', 'format');   if (config.width) {     url.searchParams.set('w', config.width.toString());   }   return url.href; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // Assembles directive details string, useful for error messages. export function imgDirectiveDetails(ngSrc: string, includeNgSrc = true) {   const ngSrcInfo =       includeNgSrc ? `(activated on an <img> element with the \\`ngSrc=\"${ngSrc}\"\\`) ` : '';   return `The NgOptimizedImage directive ${ngSrcInfo}has detected that`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../../errors';  /**  * Asserts that the application is in development mode. Throws an error if the application is in  * production mode. This assert can be used to make sure that there is no dev-mode code invoked in  * the prod mode accidentally.  */ export function assertDevMode(checkName: string) {   if (!ngDevMode) {     throw new RuntimeError(         RuntimeErrorCode.UNEXPECTED_DEV_MODE_CHECK_IN_PROD_MODE,         `Unexpected invocation of the ${checkName} in the prod mode. ` +             `Please make sure that the prod mode is enabled for production builds.`);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {inject, Injectable, OnDestroy, ɵformatRuntimeError as formatRuntimeError} from '@angular/core';  import {DOCUMENT} from '../../dom_tokens'; import {RuntimeErrorCode} from '../../errors';  import {assertDevMode} from './asserts'; import {imgDirectiveDetails} from './error_helper'; import {getUrl} from './url';  /**  * Observer that detects whether an image with `NgOptimizedImage`  * is treated as a Largest Contentful Paint (LCP) element. If so,  * asserts that the image has the `priority` attribute.  *  * Note: this is a dev-mode only class and it does not appear in prod bundles,  * thus there is no `ngDevMode` use in the code.  *  * Based on https://web.dev/lcp/#measure-lcp-in-javascript.  */ @Injectable({providedIn: 'root'}) export class LCPImageObserver implements OnDestroy {   // Map of full image URLs -> original `ngSrc` values.   private images = new Map<string, string>();   // Keep track of images for which `console.warn` was produced.   private alreadyWarned = new Set<string>();    private window: Window|null = null;   private observer: PerformanceObserver|null = null;    constructor() {     assertDevMode('LCP checker');     const win = inject(DOCUMENT).defaultView;     if (typeof win !== 'undefined' && typeof PerformanceObserver !== 'undefined') {       this.window = win;       this.observer = this.initPerformanceObserver();     }   }    /**    * Inits PerformanceObserver and subscribes to LCP events.    * Based on https://web.dev/lcp/#measure-lcp-in-javascript    */   private initPerformanceObserver(): PerformanceObserver {     const observer = new PerformanceObserver((entryList) => {       const entries = entryList.getEntries();       if (entries.length === 0) return;       // We use the latest entry produced by the `PerformanceObserver` as the best       // signal on which element is actually an LCP one. As an example, the first image to load on       // a page, by virtue of being the only thing on the page so far, is often a LCP candidate       // and gets reported by PerformanceObserver, but isn't necessarily the LCP element.       const lcpElement = entries[entries.length - 1];        // Cast to `any` due to missing `element` on the `LargestContentfulPaint` type of entry.       // See https://developer.mozilla.org/en-US/docs/Web/API/LargestContentfulPaint       const imgSrc = (lcpElement as any).element?.src ?? '';        // Exclude `data:` and `blob:` URLs, since they are not supported by the directive.       if (imgSrc.startsWith('data:') || imgSrc.startsWith('blob:')) return;        const imgNgSrc = this.images.get(imgSrc);       if (imgNgSrc && !this.alreadyWarned.has(imgSrc)) {         this.alreadyWarned.add(imgSrc);         logMissingPriorityWarning(imgSrc);       }     });     observer.observe({type: 'largest-contentful-paint', buffered: true});     return observer;   }    registerImage(rewrittenSrc: string, originalNgSrc: string) {     if (!this.observer) return;     this.images.set(getUrl(rewrittenSrc, this.window!).href, originalNgSrc);   }    unregisterImage(rewrittenSrc: string) {     if (!this.observer) return;     this.images.delete(getUrl(rewrittenSrc, this.window!).href);   }    ngOnDestroy() {     if (!this.observer) return;     this.observer.disconnect();     this.images.clear();     this.alreadyWarned.clear();   } }  function logMissingPriorityWarning(ngSrc: string) {   const directiveDetails = imgDirectiveDetails(ngSrc);   console.warn(formatRuntimeError(       RuntimeErrorCode.LCP_IMG_MISSING_PRIORITY,       `${directiveDetails} this image is the Largest Contentful Paint (LCP) ` +           `element but was not marked \"priority\". This image should be marked ` +           `\"priority\" in order to prioritize its loading. ` +           `To fix this, add the \"priority\" attribute.`)); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {inject, Injectable, InjectionToken, ɵformatRuntimeError as formatRuntimeError, ɵRuntimeError as RuntimeError} from '@angular/core';  import {DOCUMENT} from '../../dom_tokens'; import {RuntimeErrorCode} from '../../errors';  import {assertDevMode} from './asserts'; import {imgDirectiveDetails} from './error_helper'; import {extractHostname, getUrl} from './url';  // Set of origins that are always excluded from the preconnect checks. const INTERNAL_PRECONNECT_CHECK_BLOCKLIST = new Set(['localhost', '127.0.0.1', '0.0.0.0']);  /**  * Injection token to configure which origins should be excluded  * from the preconnect checks. It can either be a single string or an array of strings  * to represent a group of origins, for example:  *  * ```typescript  *  {provide: PRECONNECT_CHECK_BLOCKLIST, useValue: 'https://your-domain.com'}  * ```  *  * or:  *  * ```typescript  *  {provide: PRECONNECT_CHECK_BLOCKLIST,  *   useValue: ['https://your-domain-1.com', 'https://your-domain-2.com']}  * ```  *  * @publicApi  */ export const PRECONNECT_CHECK_BLOCKLIST =     new InjectionToken<Array<string|string[]>>('PRECONNECT_CHECK_BLOCKLIST');  /**  * Contains the logic to detect whether an image, marked with the \"priority\" attribute  * has a corresponding `<link rel=\"preconnect\">` tag in the `document.head`.  *  * Note: this is a dev-mode only class, which should not appear in prod bundles,  * thus there is no `ngDevMode` use in the code.  */ @Injectable({providedIn: 'root'}) export class PreconnectLinkChecker {   private document = inject(DOCUMENT);    /**    * Set of <link rel=\"preconnect\"> tags found on this page.    * The `null` value indicates that there was no DOM query operation performed.    */   private preconnectLinks: Set<string>|null = null;    /*    * Keep track of all already seen origin URLs to avoid repeating the same check.    */   private alreadySeen = new Set<string>();    private window: Window|null = null;    private blocklist = new Set<string>(INTERNAL_PRECONNECT_CHECK_BLOCKLIST);    constructor() {     assertDevMode('preconnect link checker');     const win = this.document.defaultView;     if (typeof win !== 'undefined') {       this.window = win;     }     const blocklist = inject(PRECONNECT_CHECK_BLOCKLIST, {optional: true});     if (blocklist) {       this.populateBlocklist(blocklist);     }   }    private populateBlocklist(origins: Array<string|string[]>|string) {     if (Array.isArray(origins)) {       deepForEach(origins, origin => {         this.blocklist.add(extractHostname(origin));       });     } else {       this.blocklist.add(extractHostname(origins));     }   }    /**    * Checks that a preconnect resource hint exists in the head for the    * given src.    *    * @param rewrittenSrc src formatted with loader    * @param originalNgSrc ngSrc value    */   assertPreconnect(rewrittenSrc: string, originalNgSrc: string): void {     if (!this.window) return;      const imgUrl = getUrl(rewrittenSrc, this.window);     if (this.blocklist.has(imgUrl.hostname) || this.alreadySeen.has(imgUrl.origin)) return;      // Register this origin as seen, so we don't check it again later.     this.alreadySeen.add(imgUrl.origin);      if (!this.preconnectLinks) {       // Note: we query for preconnect links only *once* and cache the results       // for the entire lifespan of an application, since it's unlikely that the       // list would change frequently. This allows to make sure there are no       // performance implications of making extra DOM lookups for each image.       this.preconnectLinks = this.queryPreconnectLinks();     }      if (!this.preconnectLinks.has(imgUrl.origin)) {       console.warn(formatRuntimeError(           RuntimeErrorCode.PRIORITY_IMG_MISSING_PRECONNECT_TAG,           `${imgDirectiveDetails(originalNgSrc)} there is no preconnect tag present for this ` +               `image. Preconnecting to the origin(s) that serve priority images ensures that these ` +               `images are delivered as soon as possible. To fix this, please add the following ` +               `element into the <head> of the document:\ ` +               `  <link rel=\"preconnect\" href=\"${imgUrl.origin}\">`));     }   }    private queryPreconnectLinks(): Set<string> {     const preconnectUrls = new Set<string>();     const selector = 'link[rel=preconnect]';     const links: HTMLLinkElement[] = Array.from(this.document.querySelectorAll(selector));     for (let link of links) {       const url = getUrl(link.href, this.window!);       preconnectUrls.add(url.origin);     }     return preconnectUrls;   }    ngOnDestroy() {     this.preconnectLinks?.clear();     this.alreadySeen.clear();   } }  /**  * Invokes a callback for each element in the array. Also invokes a callback  * recursively for each nested array.  */ function deepForEach<T>(input: (T|any[])[], fn: (value: T) => void): void {   for (let value of input) {     Array.isArray(value) ? deepForEach(value, fn) : fn(value);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core';  /**  * In SSR scenarios, a preload `<link>` element is generated for priority images.  * Having a large number of preload tags may negatively affect the performance,  * so we warn developers (by throwing an error) if the number of preloaded images  * is above a certain threshold. This const specifies this threshold.  */ export const DEFAULT_PRELOADED_IMAGES_LIMIT = 5;  /**  * Helps to keep track of priority images that already have a corresponding  * preload tag (to avoid generating multiple preload tags with the same URL).  *  * This Set tracks the original src passed into the `ngSrc` input not the src after it has been  * run through the specified `IMAGE_LOADER`.  */ export const PRELOADED_IMAGES = new InjectionToken<Set<string>>(     'NG_OPTIMIZED_PRELOADED_IMAGES', {providedIn: 'root', factory: () => new Set<string>()}); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {inject, Injectable, Renderer2, ɵRuntimeError as RuntimeError} from '@angular/core';  import {DOCUMENT} from '../../dom_tokens'; import {RuntimeErrorCode} from '../../errors';  import {DEFAULT_PRELOADED_IMAGES_LIMIT, PRELOADED_IMAGES} from './tokens';  /**  * @description Contains the logic needed to track and add preload link tags to the `<head>` tag. It  * will also track what images have already had preload link tags added so as to not duplicate link  * tags.  *  * In dev mode this service will validate that the number of preloaded images does not exceed the  * configured default preloaded images limit: {@link DEFAULT_PRELOADED_IMAGES_LIMIT}.  */ @Injectable({providedIn: 'root'}) export class PreloadLinkCreator {   private readonly preloadedImages = inject(PRELOADED_IMAGES);   private readonly document = inject(DOCUMENT);    /**    * @description Add a preload `<link>` to the `<head>` of the `index.html` that is served from the    * server while using Angular Universal and SSR to kick off image loads for high priority images.    *    * The `sizes` (passed in from the user) and `srcset` (parsed and formatted from `ngSrcset`)    * properties used to set the corresponding attributes, `imagesizes` and `imagesrcset`    * respectively, on the preload `<link>` tag so that the correctly sized image is preloaded from    * the CDN.    *    * {@link https://web.dev/preload-responsive-images/#imagesrcset-and-imagesizes}    *    * @param renderer The `Renderer2` passed in from the directive    * @param src The original src of the image that is set on the `ngSrc` input.    * @param srcset The parsed and formatted srcset created from the `ngSrcset` input    * @param sizes The value of the `sizes` attribute passed in to the `<img>` tag    */   createPreloadLinkTag(renderer: Renderer2, src: string, srcset?: string, sizes?: string): void {     if (ngDevMode) {       if (this.preloadedImages.size >= DEFAULT_PRELOADED_IMAGES_LIMIT) {         throw new RuntimeError(             RuntimeErrorCode.TOO_MANY_PRELOADED_IMAGES,             ngDevMode &&                 `The \\`NgOptimizedImage\\` directive has detected that more than ` +                     `${DEFAULT_PRELOADED_IMAGES_LIMIT} images were marked as priority. ` +                     `This might negatively affect an overall performance of the page. ` +                     `To fix this, remove the \"priority\" attribute from images with less priority.`);       }     }      if (this.preloadedImages.has(src)) {       return;     }      this.preloadedImages.add(src);      const preload = renderer.createElement('link');     renderer.setAttribute(preload, 'as', 'image');     renderer.setAttribute(preload, 'href', src);     renderer.setAttribute(preload, 'rel', 'preload');     renderer.setAttribute(preload, 'fetchpriority', 'high');      if (sizes) {       renderer.setAttribute(preload, 'imageSizes', sizes);     }      if (srcset) {       renderer.setAttribute(preload, 'imageSrcset', srcset);     }      renderer.appendChild(this.document.head, preload);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef, inject, InjectionToken, Injector, Input, NgZone, OnChanges, OnDestroy, OnInit, PLATFORM_ID, Renderer2, SimpleChanges, ɵformatRuntimeError as formatRuntimeError, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../../errors'; import {isPlatformServer} from '../../platform_id';  import {imgDirectiveDetails} from './error_helper'; import {cloudinaryLoaderInfo} from './image_loaders/cloudinary_loader'; import {IMAGE_LOADER, ImageLoader, ImageLoaderConfig, noopImageLoader} from './image_loaders/image_loader'; import {imageKitLoaderInfo} from './image_loaders/imagekit_loader'; import {imgixLoaderInfo} from './image_loaders/imgix_loader'; import {LCPImageObserver} from './lcp_image_observer'; import {PreconnectLinkChecker} from './preconnect_link_checker'; import {PreloadLinkCreator} from './preload-link-creator';  /**  * When a Base64-encoded image is passed as an input to the `NgOptimizedImage` directive,  * an error is thrown. The image content (as a string) might be very long, thus making  * it hard to read an error message if the entire string is included. This const defines  * the number of characters that should be included into the error message. The rest  * of the content is truncated.  */ const BASE64_IMG_MAX_LENGTH_IN_ERROR = 50;  /**  * RegExpr to determine whether a src in a srcset is using width descriptors.  * Should match something like: \"100w, 200w\".  */ const VALID_WIDTH_DESCRIPTOR_SRCSET = /^((\\s*\\d+w\\s*(,|$)){1,})$/;  /**  * RegExpr to determine whether a src in a srcset is using density descriptors.  * Should match something like: \"1x, 2x, 50x\". Also supports decimals like \"1.5x, 1.50x\".  */ const VALID_DENSITY_DESCRIPTOR_SRCSET = /^((\\s*\\d+(\\.\\d+)?x\\s*(,|$)){1,})$/;  /**  * Srcset values with a density descriptor higher than this value will actively  * throw an error. Such densities are not permitted as they cause image sizes  * to be unreasonably large and slow down LCP.  */ export const ABSOLUTE_SRCSET_DENSITY_CAP = 3;  /**  * Used only in error message text to communicate best practices, as we will  * only throw based on the slightly more conservative ABSOLUTE_SRCSET_DENSITY_CAP.  */ export const RECOMMENDED_SRCSET_DENSITY_CAP = 2;  /**  * Used in generating automatic density-based srcsets  */ const DENSITY_SRCSET_MULTIPLIERS = [1, 2];  /**  * Used to determine which breakpoints to use on full-width images  */ const VIEWPORT_BREAKPOINT_CUTOFF = 640; /**  * Used to determine whether two aspect ratios are similar in value.  */ const ASPECT_RATIO_TOLERANCE = .1;  /**  * Used to determine whether the image has been requested at an overly  * large size compared to the actual rendered image size (after taking  * into account a typical device pixel ratio). In pixels.  */ const OVERSIZED_IMAGE_TOLERANCE = 1000;  /**  * Used to limit automatic srcset generation of very large sources for  * fixed-size images. In pixels.  */ const FIXED_SRCSET_WIDTH_LIMIT = 1920; const FIXED_SRCSET_HEIGHT_LIMIT = 1080;   /** Info about built-in loaders we can test for. */ export const BUILT_IN_LOADERS = [imgixLoaderInfo, imageKitLoaderInfo, cloudinaryLoaderInfo];  /**  * A configuration object for the NgOptimizedImage directive. Contains:  * - breakpoints: An array of integer breakpoints used to generate  *      srcsets for responsive images.  *  * Learn more about the responsive image configuration in [the NgOptimizedImage  * guide](guide/image-directive).  * @publicApi  * @developerPreview  */ export type ImageConfig = {   breakpoints?: number[] };  const defaultConfig: ImageConfig = {   breakpoints: [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840], };  /**  * Injection token that configures the image optimized image functionality.  *  * @see `NgOptimizedImage`  * @publicApi  * @developerPreview  */ export const IMAGE_CONFIG = new InjectionToken<ImageConfig>(     'ImageConfig', {providedIn: 'root', factory: () => defaultConfig});  /**  * Directive that improves image loading performance by enforcing best practices.  *  * `NgOptimizedImage` ensures that the loading of the Largest Contentful Paint (LCP) image is  * prioritized by:  * - Automatically setting the `fetchpriority` attribute on the `<img>` tag  * - Lazy loading non-priority images by default  * - Asserting that there is a corresponding preconnect link tag in the document head  *  * In addition, the directive:  * - Generates appropriate asset URLs if a corresponding `ImageLoader` function is provided  * - Automatically generates a srcset  * - Requires that `width` and `height` are set  * - Warns if `width` or `height` have been set incorrectly  * - Warns if the image will be visually distorted when rendered  *  * @usageNotes  * The `NgOptimizedImage` directive is marked as [standalone](guide/standalone-components) and can  * be imported directly.  *  * Follow the steps below to enable and use the directive:  * 1. Import it into the necessary NgModule or a standalone Component.  * 2. Optionally provide an `ImageLoader` if you use an image hosting service.  * 3. Update the necessary `<img>` tags in templates and replace `src` attributes with `ngSrc`.  * Using a `ngSrc` allows the directive to control when the `src` gets set, which triggers an image  * download.  *  * Step 1: import the `NgOptimizedImage` directive.  *  * ```typescript  * import { NgOptimizedImage } from '@angular/common';  *  * // Include it into the necessary NgModule  * @NgModule({  *   imports: [NgOptimizedImage],  * })  * class AppModule {}  *  * // ... or a standalone Component  * @Component({  *   standalone: true  *   imports: [NgOptimizedImage],  * })  * class MyStandaloneComponent {}  * ```  *  * Step 2: configure a loader.  *  * To use the **default loader**: no additional code changes are necessary. The URL returned by the  * generic loader will always match the value of \"src\". In other words, this loader applies no  * transformations to the resource URL and the value of the `ngSrc` attribute will be used as is.  *  * To use an existing loader for a **third-party image service**: add the provider factory for your  * chosen service to the `providers` array. In the example below, the Imgix loader is used:  *  * ```typescript  * import {provideImgixLoader} from '@angular/common';  *  * // Call the function and add the result to the `providers` array:  * providers: [  *   provideImgixLoader(\"https://my.base.url/\"),  * ],  * ```  *  * The `NgOptimizedImage` directive provides the following functions:  * - `provideCloudflareLoader`  * - `provideCloudinaryLoader`  * - `provideImageKitLoader`  * - `provideImgixLoader`  *  * If you use a different image provider, you can create a custom loader function as described  * below.  *  * To use a **custom loader**: provide your loader function as a value for the `IMAGE_LOADER` DI  * token.  *  * ```typescript  * import {IMAGE_LOADER, ImageLoaderConfig} from '@angular/common';  *  * // Configure the loader using the `IMAGE_LOADER` token.  * providers: [  *   {  *      provide: IMAGE_LOADER,  *      useValue: (config: ImageLoaderConfig) => {  *        return `https://example.com/${config.src}-${config.width}.jpg}`;  *      }  *   },  * ],  * ```  *  * Step 3: update `<img>` tags in templates to use `ngSrc` instead of `src`.  *  * ```  * <img ngSrc=\"logo.png\" width=\"200\" height=\"100\">  * ```  *  * @publicApi  */ @Directive({   standalone: true,   selector: 'img[ngSrc]',   host: {     '[style.position]': 'fill ? \"absolute\" : null',     '[style.width]': 'fill ? \"100%\" : null',     '[style.height]': 'fill ? \"100%\" : null',     '[style.inset]': 'fill ? \"0px\" : null'   } }) export class NgOptimizedImage implements OnInit, OnChanges, OnDestroy {   private imageLoader = inject(IMAGE_LOADER);   private config: ImageConfig = processConfig(inject(IMAGE_CONFIG));   private renderer = inject(Renderer2);   private imgElement: HTMLImageElement = inject(ElementRef).nativeElement;   private injector = inject(Injector);   private readonly isServer = isPlatformServer(inject(PLATFORM_ID));   private readonly preloadLinkChecker = inject(PreloadLinkCreator);    // a LCP image observer - should be injected only in the dev mode   private lcpObserver = ngDevMode ? this.injector.get(LCPImageObserver) : null;    /**    * Calculate the rewritten `src` once and store it.    * This is needed to avoid repetitive calculations and make sure the directive cleanup in the    * `ngOnDestroy` does not rely on the `IMAGE_LOADER` logic (which in turn can rely on some other    * instance that might be already destroyed).    */   private _renderedSrc: string|null = null;    /**    * Name of the source image.    * Image name will be processed by the image loader and the final URL will be applied as the `src`    * property of the image.    */   @Input() ngSrc!: string;    /**    * A comma separated list of width or density descriptors.    * The image name will be taken from `ngSrc` and combined with the list of width or density    * descriptors to generate the final `srcset` property of the image.    *    * Example:    * ```    * <img ngSrc=\"hello.jpg\" ngSrcset=\"100w, 200w\" />  =>    * <img src=\"path/hello.jpg\" srcset=\"path/hello.jpg?w=100 100w, path/hello.jpg?w=200 200w\" />    * ```    */   @Input() ngSrcset!: string;    /**    * The base `sizes` attribute passed through to the `<img>` element.    * Providing sizes causes the image to create an automatic responsive srcset.    */   @Input() sizes?: string;    /**    * For responsive images: the intrinsic width of the image in pixels.    * For fixed size images: the desired rendered width of the image in pixels.    */   @Input()   set width(value: string|number|undefined) {     ngDevMode && assertGreaterThanZero(this, value, 'width');     this._width = inputToInteger(value);   }   get width(): number|undefined {     return this._width;   }   private _width?: number;    /**    * For responsive images: the intrinsic height of the image in pixels.    * For fixed size images: the desired rendered height of the image in pixels.* The intrinsic    * height of the image in pixels.    */   @Input()   set height(value: string|number|undefined) {     ngDevMode && assertGreaterThanZero(this, value, 'height');     this._height = inputToInteger(value);   }   get height(): number|undefined {     return this._height;   }   private _height?: number;    /**    * The desired loading behavior (lazy, eager, or auto).    *    * Setting images as loading='eager' or loading='auto' marks them    * as non-priority images. Avoid changing this input for priority images.    */   @Input() loading?: 'lazy'|'eager'|'auto';    /**    * Indicates whether this image should have a high priority.    */   @Input()   set priority(value: string|boolean|undefined) {     this._priority = inputToBoolean(value);   }   get priority(): boolean {     return this._priority;   }   private _priority = false;    /**    * Data to pass through to custom loaders.    */   @Input() loaderParams?: {[key: string]: any};    /**    * Disables automatic srcset generation for this image.    */   @Input()   set disableOptimizedSrcset(value: string|boolean|undefined) {     this._disableOptimizedSrcset = inputToBoolean(value);   }   get disableOptimizedSrcset(): boolean {     return this._disableOptimizedSrcset;   }   private _disableOptimizedSrcset = false;    /**    * Sets the image to \"fill mode\", which eliminates the height/width requirement and adds    * styles such that the image fills its containing element.    *    * @developerPreview    */   @Input()   set fill(value: string|boolean|undefined) {     this._fill = inputToBoolean(value);   }   get fill(): boolean {     return this._fill;   }   private _fill = false;    /**    * Value of the `src` attribute if set on the host `<img>` element.    * This input is exclusively read to assert that `src` is not set in conflict    * with `ngSrc` and that images don't start to load until a lazy loading strategy is set.    * @internal    */   @Input() src?: string;    /**    * Value of the `srcset` attribute if set on the host `<img>` element.    * This input is exclusively read to assert that `srcset` is not set in conflict    * with `ngSrcset` and that images don't start to load until a lazy loading strategy is set.    * @internal    */   @Input() srcset?: string;    /** @nodoc */   ngOnInit() {     if (ngDevMode) {       assertNonEmptyInput(this, 'ngSrc', this.ngSrc);       assertValidNgSrcset(this, this.ngSrcset);       assertNoConflictingSrc(this);       if (this.ngSrcset) {         assertNoConflictingSrcset(this);       }       assertNotBase64Image(this);       assertNotBlobUrl(this);       if (this.fill) {         assertEmptyWidthAndHeight(this);         assertNonZeroRenderedHeight(this, this.imgElement, this.renderer);       } else {         assertNonEmptyWidthAndHeight(this);         // Only check for distorted images when not in fill mode, where         // images may be intentionally stretched, cropped or letterboxed.         assertNoImageDistortion(this, this.imgElement, this.renderer);       }       assertValidLoadingInput(this);       if (!this.ngSrcset) {         assertNoComplexSizes(this);       }       assertNotMissingBuiltInLoader(this.ngSrc, this.imageLoader);       assertNoNgSrcsetWithoutLoader(this, this.imageLoader);       assertNoLoaderParamsWithoutLoader(this, this.imageLoader);       if (this.priority) {         const checker = this.injector.get(PreconnectLinkChecker);         checker.assertPreconnect(this.getRewrittenSrc(), this.ngSrc);       } else {         // Monitor whether an image is an LCP element only in case         // the `priority` attribute is missing. Otherwise, an image         // has the necessary settings and no extra checks are required.         if (this.lcpObserver !== null) {           const ngZone = this.injector.get(NgZone);           ngZone.runOutsideAngular(() => {             this.lcpObserver!.registerImage(this.getRewrittenSrc(), this.ngSrc);           });         }       }     }     this.setHostAttributes();   }    private setHostAttributes() {     // Must set width/height explicitly in case they are bound (in which case they will     // only be reflected and not found by the browser)     if (this.fill) {       if (!this.sizes) {         this.sizes = '100vw';       }     } else {       this.setHostAttribute('width', this.width!.toString());       this.setHostAttribute('height', this.height!.toString());     }      this.setHostAttribute('loading', this.getLoadingBehavior());     this.setHostAttribute('fetchpriority', this.getFetchPriority());      // The `data-ng-img` attribute flags an image as using the directive, to allow     // for analysis of the directive's performance.     this.setHostAttribute('ng-img', 'true');      // The `src` and `srcset` attributes should be set last since other attributes     // could affect the image's loading behavior.     const rewrittenSrc = this.getRewrittenSrc();     this.setHostAttribute('src', rewrittenSrc);      let rewrittenSrcset: string|undefined = undefined;      if (this.sizes) {       this.setHostAttribute('sizes', this.sizes);     }      if (this.ngSrcset) {       rewrittenSrcset = this.getRewrittenSrcset();     } else if (this.shouldGenerateAutomaticSrcset()) {       rewrittenSrcset = this.getAutomaticSrcset();     }      if (rewrittenSrcset) {       this.setHostAttribute('srcset', rewrittenSrcset);     }      if (this.isServer && this.priority) {       this.preloadLinkChecker.createPreloadLinkTag(           this.renderer, rewrittenSrc, rewrittenSrcset, this.sizes);     }   }    /** @nodoc */   ngOnChanges(changes: SimpleChanges) {     if (ngDevMode) {       assertNoPostInitInputChange(this, changes, [         'ngSrc',         'ngSrcset',         'width',         'height',         'priority',         'fill',         'loading',         'sizes',         'loaderParams',         'disableOptimizedSrcset',       ]);     }   }    private callImageLoader(configWithoutCustomParams: Omit<ImageLoaderConfig, 'loaderParams'>):       string {     let augmentedConfig: ImageLoaderConfig = configWithoutCustomParams;     if (this.loaderParams) {       augmentedConfig.loaderParams = this.loaderParams;     }     return this.imageLoader(augmentedConfig);   }    private getLoadingBehavior(): string {     if (!this.priority && this.loading !== undefined) {       return this.loading;     }     return this.priority ? 'eager' : 'lazy';   }    private getFetchPriority(): string {     return this.priority ? 'high' : 'auto';   }    private getRewrittenSrc(): string {     // ImageLoaderConfig supports setting a width property. However, we're not setting width here     // because if the developer uses rendered width instead of intrinsic width in the HTML width     // attribute, the image requested may be too small for 2x+ screens.     if (!this._renderedSrc) {       const imgConfig = {src: this.ngSrc};       // Cache calculated image src to reuse it later in the code.       this._renderedSrc = this.callImageLoader(imgConfig);     }     return this._renderedSrc;   }    private getRewrittenSrcset(): string {     const widthSrcSet = VALID_WIDTH_DESCRIPTOR_SRCSET.test(this.ngSrcset);     const finalSrcs = this.ngSrcset.split(',').filter(src => src !== '').map(srcStr => {       srcStr = srcStr.trim();       const width = widthSrcSet ? parseFloat(srcStr) : parseFloat(srcStr) * this.width!;       return `${this.callImageLoader({src: this.ngSrc, width})} ${srcStr}`;     });     return finalSrcs.join(', ');   }    private getAutomaticSrcset(): string {     if (this.sizes) {       return this.getResponsiveSrcset();     } else {       return this.getFixedSrcset();     }   }    private getResponsiveSrcset(): string {     const {breakpoints} = this.config;      let filteredBreakpoints = breakpoints!;     if (this.sizes?.trim() === '100vw') {       // Since this is a full-screen-width image, our srcset only needs to include       // breakpoints with full viewport widths.       filteredBreakpoints = breakpoints!.filter(bp => bp >= VIEWPORT_BREAKPOINT_CUTOFF);     }      const finalSrcs = filteredBreakpoints.map(         bp => `${this.callImageLoader({src: this.ngSrc, width: bp})} ${bp}w`);     return finalSrcs.join(', ');   }    private getFixedSrcset(): string {     const finalSrcs = DENSITY_SRCSET_MULTIPLIERS.map(multiplier => `${this.callImageLoader({                                                        src: this.ngSrc,                                                        width: this.width! * multiplier                                                      })} ${multiplier}x`);     return finalSrcs.join(', ');   }    private shouldGenerateAutomaticSrcset(): boolean {     return !this._disableOptimizedSrcset && !this.srcset && this.imageLoader !== noopImageLoader &&         !(this.width! > FIXED_SRCSET_WIDTH_LIMIT || this.height! > FIXED_SRCSET_HEIGHT_LIMIT);   }    /** @nodoc */   ngOnDestroy() {     if (ngDevMode) {       if (!this.priority && this._renderedSrc !== null && this.lcpObserver !== null) {         this.lcpObserver.unregisterImage(this._renderedSrc);       }     }   }    private setHostAttribute(name: string, value: string): void {     this.renderer.setAttribute(this.imgElement, name, value);   } }  /***** Helpers *****/  /**  * Convert input value to integer.  */ function inputToInteger(value: string|number|undefined): number|undefined {   return typeof value === 'string' ? parseInt(value, 10) : value; }  /**  * Convert input value to boolean.  */ function inputToBoolean(value: unknown): boolean {   return value != null && `${value}` !== 'false'; }  /**  * Sorts provided config breakpoints and uses defaults.  */ function processConfig(config: ImageConfig): ImageConfig {   let sortedBreakpoints: {breakpoints?: number[]} = {};   if (config.breakpoints) {     sortedBreakpoints.breakpoints = config.breakpoints.sort((a, b) => a - b);   }   return Object.assign({}, defaultConfig, config, sortedBreakpoints); }  /***** Assert functions *****/  /**  * Verifies that there is no `src` set on a host element.  */ function assertNoConflictingSrc(dir: NgOptimizedImage) {   if (dir.src) {     throw new RuntimeError(         RuntimeErrorCode.UNEXPECTED_SRC_ATTR,         `${imgDirectiveDetails(dir.ngSrc)} both \\`src\\` and \\`ngSrc\\` have been set. ` +             `Supplying both of these attributes breaks lazy loading. ` +             `The NgOptimizedImage directive sets \\`src\\` itself based on the value of \\`ngSrc\\`. ` +             `To fix this, please remove the \\`src\\` attribute.`);   } }  /**  * Verifies that there is no `srcset` set on a host element.  */ function assertNoConflictingSrcset(dir: NgOptimizedImage) {   if (dir.srcset) {     throw new RuntimeError(         RuntimeErrorCode.UNEXPECTED_SRCSET_ATTR,         `${imgDirectiveDetails(dir.ngSrc)} both \\`srcset\\` and \\`ngSrcset\\` have been set. ` +             `Supplying both of these attributes breaks lazy loading. ` +             `The NgOptimizedImage directive sets \\`srcset\\` itself based on the value of ` +             `\\`ngSrcset\\`. To fix this, please remove the \\`srcset\\` attribute.`);   } }  /**  * Verifies that the `ngSrc` is not a Base64-encoded image.  */ function assertNotBase64Image(dir: NgOptimizedImage) {   let ngSrc = dir.ngSrc.trim();   if (ngSrc.startsWith('data:')) {     if (ngSrc.length > BASE64_IMG_MAX_LENGTH_IN_ERROR) {       ngSrc = ngSrc.substring(0, BASE64_IMG_MAX_LENGTH_IN_ERROR) + '...';     }     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc, false)} \\`ngSrc\\` is a Base64-encoded string ` +             `(${ngSrc}). NgOptimizedImage does not support Base64-encoded strings. ` +             `To fix this, disable the NgOptimizedImage directive for this element ` +             `by removing \\`ngSrc\\` and using a standard \\`src\\` attribute instead.`);   } }  /**  * Verifies that the 'sizes' only includes responsive values.  */ function assertNoComplexSizes(dir: NgOptimizedImage) {   let sizes = dir.sizes;   if (sizes?.match(/((\\)|,)\\s|^)\\d+px/)) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc, false)} \\`sizes\\` was set to a string including ` +             `pixel values. For automatic \\`srcset\\` generation, \\`sizes\\` must only include responsive ` +             `values, such as \\`sizes=\"50vw\"\\` or \\`sizes=\"(min-width: 768px) 50vw, 100vw\"\\`. ` +             `To fix this, modify the \\`sizes\\` attribute, or provide your own \\`ngSrcset\\` value directly.`);   } }  /**  * Verifies that the `ngSrc` is not a Blob URL.  */ function assertNotBlobUrl(dir: NgOptimizedImage) {   const ngSrc = dir.ngSrc.trim();   if (ngSrc.startsWith('blob:')) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrc\\` was set to a blob URL (${ngSrc}). ` +             `Blob URLs are not supported by the NgOptimizedImage directive. ` +             `To fix this, disable the NgOptimizedImage directive for this element ` +             `by removing \\`ngSrc\\` and using a regular \\`src\\` attribute instead.`);   } }  /**  * Verifies that the input is set to a non-empty string.  */ function assertNonEmptyInput(dir: NgOptimizedImage, name: string, value: unknown) {   const isString = typeof value === 'string';   const isEmptyString = isString && value.trim() === '';   if (!isString || isEmptyString) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc)} \\`${name}\\` has an invalid value ` +             `(\\`${value}\\`). To fix this, change the value to a non-empty string.`);   } }  /**  * Verifies that the `ngSrcset` is in a valid format, e.g. \"100w, 200w\" or \"1x, 2x\".  */ export function assertValidNgSrcset(dir: NgOptimizedImage, value: unknown) {   if (value == null) return;   assertNonEmptyInput(dir, 'ngSrcset', value);   const stringVal = value as string;   const isValidWidthDescriptor = VALID_WIDTH_DESCRIPTOR_SRCSET.test(stringVal);   const isValidDensityDescriptor = VALID_DENSITY_DESCRIPTOR_SRCSET.test(stringVal);    if (isValidDensityDescriptor) {     assertUnderDensityCap(dir, stringVal);   }    const isValidSrcset = isValidWidthDescriptor || isValidDensityDescriptor;   if (!isValidSrcset) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrcset\\` has an invalid value (\\`${value}\\`). ` +             `To fix this, supply \\`ngSrcset\\` using a comma-separated list of one or more width ` +             `descriptors (e.g. \"100w, 200w\") or density descriptors (e.g. \"1x, 2x\").`);   } }  function assertUnderDensityCap(dir: NgOptimizedImage, value: string) {   const underDensityCap =       value.split(',').every(num => num === '' || parseFloat(num) <= ABSOLUTE_SRCSET_DENSITY_CAP);   if (!underDensityCap) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${             imgDirectiveDetails(                 dir.ngSrc)} the \\`ngSrcset\\` contains an unsupported image density:` +             `\\`${value}\\`. NgOptimizedImage generally recommends a max image density of ` +             `${RECOMMENDED_SRCSET_DENSITY_CAP}x but supports image densities up to ` +             `${ABSOLUTE_SRCSET_DENSITY_CAP}x. The human eye cannot distinguish between image densities ` +             `greater than ${RECOMMENDED_SRCSET_DENSITY_CAP}x - which makes them unnecessary for ` +             `most use cases. Images that will be pinch-zoomed are typically the primary use case for ` +             `${ABSOLUTE_SRCSET_DENSITY_CAP}x images. Please remove the high density descriptor and try again.`);   } }  /**  * Creates a `RuntimeError` instance to represent a situation when an input is set after  * the directive has initialized.  */ function postInitInputChangeError(dir: NgOptimizedImage, inputName: string): {} {   let reason!: string;   if (inputName === 'width' || inputName === 'height') {     reason = `Changing \\`${inputName}\\` may result in different attribute value ` +         `applied to the underlying image element and cause layout shifts on a page.`;   } else {     reason = `Changing the \\`${inputName}\\` would have no effect on the underlying ` +         `image element, because the resource loading has already occurred.`;   }   return new RuntimeError(       RuntimeErrorCode.UNEXPECTED_INPUT_CHANGE,       `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` was updated after initialization. ` +           `The NgOptimizedImage directive will not react to this input change. ${reason} ` +           `To fix this, either switch \\`${inputName}\\` to a static value ` +           `or wrap the image element in an *ngIf that is gated on the necessary value.`); }  /**  * Verify that none of the listed inputs has changed.  */ function assertNoPostInitInputChange(     dir: NgOptimizedImage, changes: SimpleChanges, inputs: string[]) {   inputs.forEach(input => {     const isUpdated = changes.hasOwnProperty(input);     if (isUpdated && !changes[input].isFirstChange()) {       if (input === 'ngSrc') {         // When the `ngSrc` input changes, we detect that only in the         // `ngOnChanges` hook, thus the `ngSrc` is already set. We use         // `ngSrc` in the error message, so we use a previous value, but         // not the updated one in it.         dir = {ngSrc: changes[input].previousValue} as NgOptimizedImage;       }       throw postInitInputChangeError(dir, input);     }   }); }  /**  * Verifies that a specified input is a number greater than 0.  */ function assertGreaterThanZero(dir: NgOptimizedImage, inputValue: unknown, inputName: string) {   const validNumber = typeof inputValue === 'number' && inputValue > 0;   const validString =       typeof inputValue === 'string' && /^\\d+$/.test(inputValue.trim()) && parseInt(inputValue) > 0;   if (!validNumber && !validString) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` has an invalid value ` +             `(\\`${inputValue}\\`). To fix this, provide \\`${inputName}\\` ` +             `as a number greater than 0.`);   } }  /**  * Verifies that the rendered image is not visually distorted. Effectively this is checking:  * - Whether the \"width\" and \"height\" attributes reflect the actual dimensions of the image.  * - Whether image styling is \"correct\" (see below for a longer explanation).  */ function assertNoImageDistortion(     dir: NgOptimizedImage, img: HTMLImageElement, renderer: Renderer2) {   const removeListenerFn = renderer.listen(img, 'load', () => {     removeListenerFn();     const renderedWidth = img.clientWidth;     const renderedHeight = img.clientHeight;     const renderedAspectRatio = renderedWidth / renderedHeight;     const nonZeroRenderedDimensions = renderedWidth !== 0 && renderedHeight !== 0;      const intrinsicWidth = img.naturalWidth;     const intrinsicHeight = img.naturalHeight;     const intrinsicAspectRatio = intrinsicWidth / intrinsicHeight;      const suppliedWidth = dir.width!;     const suppliedHeight = dir.height!;     const suppliedAspectRatio = suppliedWidth / suppliedHeight;      // Tolerance is used to account for the impact of subpixel rendering.     // Due to subpixel rendering, the rendered, intrinsic, and supplied     // aspect ratios of a correctly configured image may not exactly match.     // For example, a `width=4030 height=3020` image might have a rendered     // size of \"1062w, 796.48h\". (An aspect ratio of 1.334... vs. 1.333...)     const inaccurateDimensions =         Math.abs(suppliedAspectRatio - intrinsicAspectRatio) > ASPECT_RATIO_TOLERANCE;     const stylingDistortion = nonZeroRenderedDimensions &&         Math.abs(intrinsicAspectRatio - renderedAspectRatio) > ASPECT_RATIO_TOLERANCE;      if (inaccurateDimensions) {       console.warn(formatRuntimeError(           RuntimeErrorCode.INVALID_INPUT,           `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the image does not match ` +               `the aspect ratio indicated by the width and height attributes. ` +               `\ Intrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +               `(aspect-ratio: ${intrinsicAspectRatio}). \ Supplied width and height attributes: ` +               `${suppliedWidth}w x ${suppliedHeight}h (aspect-ratio: ${suppliedAspectRatio}). ` +               `\ To fix this, update the width and height attributes.`));     } else if (stylingDistortion) {       console.warn(formatRuntimeError(           RuntimeErrorCode.INVALID_INPUT,           `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the rendered image ` +               `does not match the image's intrinsic aspect ratio. ` +               `\ Intrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +               `(aspect-ratio: ${intrinsicAspectRatio}). \ Rendered image size: ` +               `${renderedWidth}w x ${renderedHeight}h (aspect-ratio: ` +               `${renderedAspectRatio}). \ This issue can occur if \"width\" and \"height\" ` +               `attributes are added to an image without updating the corresponding ` +               `image styling. To fix this, adjust image styling. In most cases, ` +               `adding \"height: auto\" or \"width: auto\" to the image styling will fix ` +               `this issue.`));     } else if (!dir.ngSrcset && nonZeroRenderedDimensions) {       // If `ngSrcset` hasn't been set, sanity check the intrinsic size.       const recommendedWidth = RECOMMENDED_SRCSET_DENSITY_CAP * renderedWidth;       const recommendedHeight = RECOMMENDED_SRCSET_DENSITY_CAP * renderedHeight;       const oversizedWidth = (intrinsicWidth - recommendedWidth) >= OVERSIZED_IMAGE_TOLERANCE;       const oversizedHeight = (intrinsicHeight - recommendedHeight) >= OVERSIZED_IMAGE_TOLERANCE;       if (oversizedWidth || oversizedHeight) {         console.warn(formatRuntimeError(             RuntimeErrorCode.OVERSIZED_IMAGE,             `${imgDirectiveDetails(dir.ngSrc)} the intrinsic image is significantly ` +                 `larger than necessary. ` +                 `\ Rendered image size: ${renderedWidth}w x ${renderedHeight}h. ` +                 `\ Intrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h. ` +                 `\ Recommended intrinsic image size: ${recommendedWidth}w x ${                     recommendedHeight}h. ` +                 `\ Note: Recommended intrinsic image size is calculated assuming a maximum DPR of ` +                 `${RECOMMENDED_SRCSET_DENSITY_CAP}. To improve loading time, resize the image ` +                 `or consider using the \"ngSrcset\" and \"sizes\" attributes.`));       }     }   }); }  /**  * Verifies that a specified input is set.  */ function assertNonEmptyWidthAndHeight(dir: NgOptimizedImage) {   let missingAttributes = [];   if (dir.width === undefined) missingAttributes.push('width');   if (dir.height === undefined) missingAttributes.push('height');   if (missingAttributes.length > 0) {     throw new RuntimeError(         RuntimeErrorCode.REQUIRED_INPUT_MISSING,         `${imgDirectiveDetails(dir.ngSrc)} these required attributes ` +             `are missing: ${missingAttributes.map(attr => `\"${attr}\"`).join(', ')}. ` +             `Including \"width\" and \"height\" attributes will prevent image-related layout shifts. ` +             `To fix this, include \"width\" and \"height\" attributes on the image tag or turn on ` +             `\"fill\" mode with the \\`fill\\` attribute.`);   } }  /**  * Verifies that width and height are not set. Used in fill mode, where those attributes don't make  * sense.  */ function assertEmptyWidthAndHeight(dir: NgOptimizedImage) {   if (dir.width || dir.height) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${             imgDirectiveDetails(                 dir.ngSrc)} the attributes \\`height\\` and/or \\`width\\` are present ` +             `along with the \\`fill\\` attribute. Because \\`fill\\` mode causes an image to fill its containing ` +             `element, the size attributes have no effect and should be removed.`);   } }  /**  * Verifies that the rendered image has a nonzero height. If the image is in fill mode, provides  * guidance that this can be caused by the containing element's CSS position property.  */ function assertNonZeroRenderedHeight(     dir: NgOptimizedImage, img: HTMLImageElement, renderer: Renderer2) {   const removeListenerFn = renderer.listen(img, 'load', () => {     removeListenerFn();     const renderedHeight = img.clientHeight;     if (dir.fill && renderedHeight === 0) {       console.warn(formatRuntimeError(           RuntimeErrorCode.INVALID_INPUT,           `${imgDirectiveDetails(dir.ngSrc)} the height of the fill-mode image is zero. ` +               `This is likely because the containing element does not have the CSS 'position' ` +               `property set to one of the following: \"relative\", \"fixed\", or \"absolute\". ` +               `To fix this problem, make sure the container element has the CSS 'position' ` +               `property defined and the height of the element is not zero.`));     }   }); }  /**  * Verifies that the `loading` attribute is set to a valid input &  * is not used on priority images.  */ function assertValidLoadingInput(dir: NgOptimizedImage) {   if (dir.loading && dir.priority) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +             `was used on an image that was marked \"priority\". ` +             `Setting \\`loading\\` on priority images is not allowed ` +             `because these images will always be eagerly loaded. ` +             `To fix this, remove the “loading” attribute from the priority image.`);   }   const validInputs = ['auto', 'eager', 'lazy'];   if (typeof dir.loading === 'string' && !validInputs.includes(dir.loading)) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +             `has an invalid value (\\`${dir.loading}\\`). ` +             `To fix this, provide a valid value (\"lazy\", \"eager\", or \"auto\").`);   } }  /**  * Warns if NOT using a loader (falling back to the generic loader) and  * the image appears to be hosted on one of the image CDNs for which  * we do have a built-in image loader. Suggests switching to the  * built-in loader.  *  * @param ngSrc Value of the ngSrc attribute  * @param imageLoader ImageLoader provided  */ function assertNotMissingBuiltInLoader(ngSrc: string, imageLoader: ImageLoader) {   if (imageLoader === noopImageLoader) {     let builtInLoaderName = '';     for (const loader of BUILT_IN_LOADERS) {       if (loader.testUrl(ngSrc)) {         builtInLoaderName = loader.name;         break;       }     }     if (builtInLoaderName) {       console.warn(formatRuntimeError(           RuntimeErrorCode.MISSING_BUILTIN_LOADER,           `NgOptimizedImage: It looks like your images may be hosted on the ` +               `${builtInLoaderName} CDN, but your app is not using Angular's ` +               `built-in loader for that CDN. We recommend switching to use ` +               `the built-in by calling \\`provide${builtInLoaderName}Loader()\\` ` +               `in your \\`providers\\` and passing it your instance's base URL. ` +               `If you don't want to use the built-in loader, define a custom ` +               `loader function using IMAGE_LOADER to silence this warning.`));     }   } }  /**  * Warns if ngSrcset is present and no loader is configured (i.e. the default one is being used).  */ function assertNoNgSrcsetWithoutLoader(dir: NgOptimizedImage, imageLoader: ImageLoader) {   if (dir.ngSrcset && imageLoader === noopImageLoader) {     console.warn(formatRuntimeError(         RuntimeErrorCode.MISSING_NECESSARY_LOADER,         `${imgDirectiveDetails(dir.ngSrc)} the \\`ngSrcset\\` attribute is present but ` +             `no image loader is configured (i.e. the default one is being used), ` +             `which would result in the same image being used for all configured sizes. ` +             `To fix this, provide a loader or remove the \\`ngSrcset\\` attribute from the image.`));   } }  /**  * Warns if loaderParams is present and no loader is configured (i.e. the default one is being  * used).  */ function assertNoLoaderParamsWithoutLoader(dir: NgOptimizedImage, imageLoader: ImageLoader) {   if (dir.loaderParams && imageLoader === noopImageLoader) {     console.warn(formatRuntimeError(         RuntimeErrorCode.MISSING_NECESSARY_LOADER,         `${imgDirectiveDetails(dir.ngSrc)} the \\`loaderParams\\` attribute is present but ` +             `no image loader is configured (i.e. the default one is being used), ` +             `which means that the loaderParams data will not be consumed and will not affect the URL. ` +             `To fix this, provide a custom loader or remove the \\`loaderParams\\` attribute from the image.`));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // These exports represent the set of symbols exposed as a public API. export {provideCloudflareLoader} from './image_loaders/cloudflare_loader'; export {provideCloudinaryLoader} from './image_loaders/cloudinary_loader'; export {IMAGE_LOADER, ImageLoader, ImageLoaderConfig} from './image_loaders/image_loader'; export {provideImageKitLoader} from './image_loaders/imagekit_loader'; export {provideImgixLoader} from './image_loaders/imgix_loader'; export {IMAGE_CONFIG, ImageConfig, NgOptimizedImage} from './ng_optimized_image'; export {PRECONNECT_CHECK_BLOCKLIST} from './preconnect_link_checker'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the common package.  */ export * from './private_export'; export * from './location/index'; export {formatDate} from './i18n/format_date'; export {formatCurrency, formatNumber, formatPercent} from './i18n/format_number'; export {NgLocaleLocalization, NgLocalization} from './i18n/localization'; export {registerLocaleData} from './i18n/locale_data'; export {Plural, NumberFormatStyle, FormStyle, Time, TranslationWidth, FormatWidth, NumberSymbol, WeekDay, getNumberOfCurrencyDigits, getCurrencySymbol, getLocaleDayPeriods, getLocaleDayNames, getLocaleMonthNames, getLocaleId, getLocaleEraNames, getLocaleWeekEndRange, getLocaleFirstDayOfWeek, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocalePluralCase, getLocaleTimeFormat, getLocaleNumberSymbol, getLocaleNumberFormat, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDirection} from './i18n/locale_data_api'; export {parseCookieValue as ɵparseCookieValue} from './cookie'; export {CommonModule} from './common_module'; export {NgClass, NgFor, NgForOf, NgForOfContext, NgIf, NgIfContext, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NgComponentOutlet} from './directives/index'; export {DOCUMENT} from './dom_tokens'; export {AsyncPipe, DatePipe, DatePipeConfig, DATE_PIPE_DEFAULT_TIMEZONE, DATE_PIPE_DEFAULT_OPTIONS, I18nPluralPipe, I18nSelectPipe, JsonPipe, LowerCasePipe, CurrencyPipe, DecimalPipe, PercentPipe, SlicePipe, UpperCasePipe, TitleCasePipe, KeyValuePipe, KeyValue} from './pipes/index'; export {PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, isPlatformBrowser, isPlatformServer, isPlatformWorkerApp, isPlatformWorkerUi} from './platform_id'; export {VERSION} from './version'; export {ViewportScroller, NullViewportScroller as ɵNullViewportScroller} from './viewport_scroller'; export {XhrFactory} from './xhr'; export {IMAGE_CONFIG, ImageConfig, IMAGE_LOADER, ImageLoader, ImageLoaderConfig, NgOptimizedImage, PRECONNECT_CHECK_BLOCKLIST, provideCloudflareLoader, provideCloudinaryLoader, provideImageKitLoader, provideImgixLoader} from './directives/ng_optimized_image'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/common';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["i1.LocationStrategy","stringify","RuntimeError","i1.NgLocalization","i1.NgClass","i2.NgComponentOutlet","i3.NgForOf","i4.NgIf","i5.NgTemplateOutlet","i6.NgStyle","i7.NgSwitch","i7.NgSwitchCase","i7.NgSwitchDefault","i8.NgPlural","i8.NgPluralCase","i9.AsyncPipe","i10.UpperCasePipe","i10.LowerCasePipe","i11.JsonPipe","i12.SlicePipe","i13.DecimalPipe","i13.PercentPipe","i10.TitleCasePipe","i13.CurrencyPipe","i14.DatePipe","i15.I18nPluralPipe","i16.I18nSelectPipe","i17.KeyValuePipe","formatRuntimeError"],"mappings":"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KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,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"}
-------------------- SECTION 231 --------------------
{"version":3,"file":"common.mjs","sources":["../../../../../../packages/common/src/dom_adapter.ts","../../../../../../packages/common/src/dom_tokens.ts","../../../../../../packages/common/src/location/platform_location.ts","../../../../../../packages/common/src/location/util.ts","../../../../../../packages/common/src/location/location_strategy.ts","../../../../../../packages/common/src/location/hash_location_strategy.ts","../../../../../../packages/common/src/location/location.ts","../../../../../../packages/common/src/i18n/currencies.ts","../../../../../../packages/common/src/i18n/locale_data_api.ts","../../../../../../packages/common/src/i18n/format_date.ts","../../../../../../packages/common/src/i18n/format_number.ts","../../../../../../packages/common/src/i18n/localization.ts","../../../../../../packages/common/src/i18n/locale_data.ts","../../../../../../packages/common/src/cookie.ts","../../../../../../packages/common/src/directives/ng_class.ts","../../../../../../packages/common/src/directives/ng_component_outlet.ts","../../../../../../packages/common/src/directives/ng_for_of.ts","../../../../../../packages/common/src/directives/ng_if.ts","../../../../../../packages/common/src/directives/ng_switch.ts","../../../../../../packages/common/src/directives/ng_plural.ts","../../../../../../packages/common/src/directives/ng_style.ts","../../../../../../packages/common/src/directives/ng_template_outlet.ts","../../../../../../packages/common/src/directives/index.ts","../../../../../../packages/common/src/pipes/invalid_pipe_argument_error.ts","../../../../../../packages/common/src/pipes/async_pipe.ts","../../../../../../packages/common/src/pipes/case_conversion_pipes.ts","../../../../../../packages/common/src/pipes/date_pipe_config.ts","../../../../../../packages/common/src/pipes/date_pipe.ts","../../../../../../packages/common/src/pipes/i18n_plural_pipe.ts","../../../../../../packages/common/src/pipes/i18n_select_pipe.ts","../../../../../../packages/common/src/pipes/json_pipe.ts","../../../../../../packages/common/src/pipes/keyvalue_pipe.ts","../../../../../../packages/common/src/pipes/number_pipe.ts","../../../../../../packages/common/src/pipes/slice_pipe.ts","../../../../../../packages/common/src/pipes/index.ts","../../../../../../packages/common/src/common_module.ts","../../../../../../packages/common/src/platform_id.ts","../../../../../../packages/common/src/version.ts","../../../../../../packages/common/src/viewport_scroller.ts","../../../../../../packages/common/src/xhr.ts","../../../../../../packages/common/src/directives/ng_optimized_image/url.ts","../../../../../../packages/common/src/directives/ng_optimized_image/image_loaders/image_loader.ts","../../../../../../packages/common/src/directives/ng_optimized_image/image_loaders/cloudflare_loader.ts","../../../../../../packages/common/src/directives/ng_optimized_image/image_loaders/cloudinary_loader.ts","../../../../../../packages/common/src/directives/ng_optimized_image/image_loaders/imagekit_loader.ts","../../../../../../packages/common/src/directives/ng_optimized_image/image_loaders/imgix_loader.ts","../../../../../../packages/common/src/directives/ng_optimized_image/error_helper.ts","../../../../../../packages/common/src/directives/ng_optimized_image/asserts.ts","../../../../../../packages/common/src/directives/ng_optimized_image/lcp_image_observer.ts","../../../../../../packages/common/src/directives/ng_optimized_image/preconnect_link_checker.ts","../../../../../../packages/common/src/directives/ng_optimized_image/tokens.ts","../../../../../../packages/common/src/directives/ng_optimized_image/preload-link-creator.ts","../../../../../../packages/common/src/directives/ng_optimized_image/ng_optimized_image.ts","../../../../../../packages/common/src/directives/ng_optimized_image/index.ts","../../../../../../packages/common/src/common.ts","../../../../../../packages/common/public_api.ts","../../../../../../packages/common/index.ts","../../../../../../packages/common/common.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  let _DOM: DomAdapter = null!;  export function getDOM(): DomAdapter {   return _DOM; }  export function setRootDomAdapter(adapter: DomAdapter) {   if (!_DOM) {     _DOM = adapter;   } }  /* tslint:disable:requireParameterType */ /**  * Provides DOM operations in an environment-agnostic way.  *  * @security Tread carefully! Interacting with the DOM directly is dangerous and  * can introduce XSS risks.  */ export abstract class DomAdapter {   // Needs Domino-friendly test utility   abstract dispatchEvent(el: any, evt: any): any;   abstract readonly supportsDOMEvents: boolean;    // Used by Meta   abstract remove(el: any): void;   abstract createElement(tagName: any, doc?: any): HTMLElement;   abstract createHtmlDocument(): Document;   abstract getDefaultDocument(): Document;    // Used by By.css   abstract isElementNode(node: any): boolean;    // Used by Testability   abstract isShadowRoot(node: any): boolean;    // Used by KeyEventsPlugin   abstract onAndCancel(el: any, evt: any, listener: any): Function;    // Used by PlatformLocation and ServerEventManagerPlugin   abstract getGlobalEventTarget(doc: Document, target: string): any;    // Used by PlatformLocation   abstract getBaseHref(doc: Document): string|null;   abstract resetBaseElement(): void;    // TODO: remove dependency in DefaultValueAccessor   abstract getUserAgent(): string;    // Used in the legacy @angular/http package which has some usage in g3.   abstract getCookie(name: string): string|null; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core';  /**  * A DI Token representing the main rendering context. In a browser this is the DOM Document.  *  * Note: Document might not be available in the Application Context when Application and Rendering  * Contexts are not the same (e.g. when running the application in a Web Worker).  *  * @publicApi  */ export const DOCUMENT = new InjectionToken<Document>('DocumentToken'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, Injectable, InjectionToken, ɵɵinject} from '@angular/core';  import {getDOM} from '../dom_adapter'; import {DOCUMENT} from '../dom_tokens';  /**  * This class should not be used directly by an application developer. Instead, use  * {@link Location}.  *  * `PlatformLocation` encapsulates all calls to DOM APIs, which allows the Router to be  * platform-agnostic.  * This means that we can have different implementation of `PlatformLocation` for the different  * platforms that Angular supports. For example, `@angular/platform-browser` provides an  * implementation specific to the browser environment, while `@angular/platform-server` provides  * one suitable for use with server-side rendering.  *  * The `PlatformLocation` class is used directly by all implementations of {@link LocationStrategy}  * when they need to interact with the DOM APIs like pushState, popState, etc.  *  * {@link LocationStrategy} in turn is used by the {@link Location} service which is used directly  * by the {@link Router} in order to navigate between routes. Since all interactions between {@link  * Router} /  * {@link Location} / {@link LocationStrategy} and DOM APIs flow through the `PlatformLocation`  * class, they are all platform-agnostic.  *  * @publicApi  */ @Injectable({   providedIn: 'platform',   // See #23917   useFactory: useBrowserPlatformLocation }) export abstract class PlatformLocation {   abstract getBaseHrefFromDOM(): string;   abstract getState(): unknown;   /**    * Returns a function that, when executed, removes the `popstate` event handler.    */   abstract onPopState(fn: LocationChangeListener): VoidFunction;   /**    * Returns a function that, when executed, removes the `hashchange` event handler.    */   abstract onHashChange(fn: LocationChangeListener): VoidFunction;    abstract get href(): string;   abstract get protocol(): string;   abstract get hostname(): string;   abstract get port(): string;   abstract get pathname(): string;   abstract get search(): string;   abstract get hash(): string;    abstract replaceState(state: any, title: string, url: string): void;    abstract pushState(state: any, title: string, url: string): void;    abstract forward(): void;    abstract back(): void;    historyGo?(relativePosition: number): void {     throw new Error('Not implemented');   } }  export function useBrowserPlatformLocation() {   return ɵɵinject(BrowserPlatformLocation); }  /**  * @description  * Indicates when a location is initialized.  *  * @publicApi  */ export const LOCATION_INITIALIZED = new InjectionToken<Promise<any>>('Location Initialized');  /**  * @description  * A serializable version of the event from `onPopState` or `onHashChange`  *  * @publicApi  */ export interface LocationChangeEvent {   type: string;   state: any; }  /**  * @publicApi  */ export interface LocationChangeListener {   (event: LocationChangeEvent): any; }    /**  * `PlatformLocation` encapsulates all of the direct calls to platform APIs.  * This class should not be used directly by an application developer. Instead, use  * {@link Location}.  *  * @publicApi  */ @Injectable({   providedIn: 'platform',   // See #23917   useFactory: createBrowserPlatformLocation, }) export class BrowserPlatformLocation extends PlatformLocation {   private _location: Location;   private _history: History;    constructor(@Inject(DOCUMENT) private _doc: any) {     super();     this._location = window.location;     this._history = window.history;   }    override getBaseHrefFromDOM(): string {     return getDOM().getBaseHref(this._doc)!;   }    override onPopState(fn: LocationChangeListener): VoidFunction {     const window = getDOM().getGlobalEventTarget(this._doc, 'window');     window.addEventListener('popstate', fn, false);     return () => window.removeEventListener('popstate', fn);   }    override onHashChange(fn: LocationChangeListener): VoidFunction {     const window = getDOM().getGlobalEventTarget(this._doc, 'window');     window.addEventListener('hashchange', fn, false);     return () => window.removeEventListener('hashchange', fn);   }    override get href(): string {     return this._location.href;   }   override get protocol(): string {     return this._location.protocol;   }   override get hostname(): string {     return this._location.hostname;   }   override get port(): string {     return this._location.port;   }   override get pathname(): string {     return this._location.pathname;   }   override get search(): string {     return this._location.search;   }   override get hash(): string {     return this._location.hash;   }   override set pathname(newPath: string) {     this._location.pathname = newPath;   }    override pushState(state: any, title: string, url: string): void {     if (supportsState()) {       this._history.pushState(state, title, url);     } else {       this._location.hash = url;     }   }    override replaceState(state: any, title: string, url: string): void {     if (supportsState()) {       this._history.replaceState(state, title, url);     } else {       this._location.hash = url;     }   }    override forward(): void {     this._history.forward();   }    override back(): void {     this._history.back();   }    override historyGo(relativePosition: number = 0): void {     this._history.go(relativePosition);   }    override getState(): unknown {     return this._history.state;   } }  export function supportsState(): boolean {   return !!window.history.pushState; } export function createBrowserPlatformLocation() {   return new BrowserPlatformLocation(ɵɵinject(DOCUMENT)); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */   /**  * Joins two parts of a URL with a slash if needed.  *  * @param start  URL string  * @param end    URL string  *  *  * @returns The joined URL string.  */ export function joinWithSlash(start: string, end: string): string {   if (start.length == 0) {     return end;   }   if (end.length == 0) {     return start;   }   let slashes = 0;   if (start.endsWith('/')) {     slashes++;   }   if (end.startsWith('/')) {     slashes++;   }   if (slashes == 2) {     return start + end.substring(1);   }   if (slashes == 1) {     return start + end;   }   return start + '/' + end; }  /**  * Removes a trailing slash from a URL string if needed.  * Looks for the first occurrence of either `#`, `?`, or the end of the  * line as `/` characters and removes the trailing slash if one exists.  *  * @param url URL string.  *  * @returns The URL string, modified if needed.  */ export function stripTrailingSlash(url: string): string {   const match = url.match(/#|\\?|$/);   const pathEndIdx = match && match.index || url.length;   const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);   return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx); }  /**  * Normalizes URL parameters by prepending with `?` if needed.  *  * @param  params String of URL parameters.  *  * @returns The normalized URL parameters string.  */ export function normalizeQueryParams(params: string): string {   return params && params[0] !== '?' ? '?' + params : params; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, inject, Injectable, InjectionToken, OnDestroy, Optional} from '@angular/core';  import {DOCUMENT} from '../dom_tokens';  import {LocationChangeListener, PlatformLocation} from './platform_location'; import {joinWithSlash, normalizeQueryParams} from './util';  /**  * Enables the `Location` service to read route state from the browser's URL.  * Angular provides two strategies:  * `HashLocationStrategy` and `PathLocationStrategy`.  *  * Applications should use the `Router` or `Location` services to  * interact with application route state.  *  * For instance, `HashLocationStrategy` produces URLs like  * <code class=\"no-auto-link\">http://example.com#/foo</code>,  * and `PathLocationStrategy` produces  * <code class=\"no-auto-link\">http://example.com/foo</code> as an equivalent URL.  *  * See these two classes for more.  *  * @publicApi  */ @Injectable({providedIn: 'root', useFactory: () => inject(PathLocationStrategy)}) export abstract class LocationStrategy {   abstract path(includeHash?: boolean): string;   abstract prepareExternalUrl(internal: string): string;   abstract getState(): unknown;   abstract pushState(state: any, title: string, url: string, queryParams: string): void;   abstract replaceState(state: any, title: string, url: string, queryParams: string): void;   abstract forward(): void;   abstract back(): void;   historyGo?(relativePosition: number): void {     throw new Error('Not implemented');   }   abstract onPopState(fn: LocationChangeListener): void;   abstract getBaseHref(): string; }  /**  * A predefined [DI token](guide/glossary#di-token) for the base href  * to be used with the `PathLocationStrategy`.  * The base href is the URL prefix that should be preserved when generating  * and recognizing URLs.  *  * @usageNotes  *  * The following example shows how to use this token to configure the root app injector  * with a base href value, so that the DI framework can supply the dependency anywhere in the app.  *  * ```typescript  * import {Component, NgModule} from '@angular/core';  * import {APP_BASE_HREF} from '@angular/common';  *  * @NgModule({  *   providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]  * })  * class AppModule {}  * ```  *  * @publicApi  */ export const APP_BASE_HREF = new InjectionToken<string>('appBaseHref');  /**  * @description  * A {@link LocationStrategy} used to configure the {@link Location} service to  * represent its state in the  * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the  * browser's URL.  *  * If you're using `PathLocationStrategy`, you may provide a {@link APP_BASE_HREF}  * or add a `<base href>` element to the document to override the default.  *  * For instance, if you provide an `APP_BASE_HREF` of `'/my/app/'` and call  * `location.go('/foo')`, the browser's URL will become  * `example.com/my/app/foo`. To ensure all relative URIs resolve correctly,  * the `<base href>` and/or `APP_BASE_HREF` should end with a `/`.  *  * Similarly, if you add `<base href='/my/app/'/>` to the document and call  * `location.go('/foo')`, the browser's URL will become  * `example.com/my/app/foo`.  *  * Note that when using `PathLocationStrategy`, neither the query nor  * the fragment in the `<base href>` will be preserved, as outlined  * by the [RFC](https://tools.ietf.org/html/rfc3986#section-5.2.2).  *  * @usageNotes  *  * ### Example  *  * {@example common/location/ts/path_location_component.ts region='LocationComponent'}  *  * @publicApi  */ @Injectable({providedIn: 'root'}) export class PathLocationStrategy extends LocationStrategy implements OnDestroy {   private _baseHref: string;   private _removeListenerFns: (() => void)[] = [];    constructor(       private _platformLocation: PlatformLocation,       @Optional() @Inject(APP_BASE_HREF) href?: string) {     super();      this._baseHref = href ?? this._platformLocation.getBaseHrefFromDOM() ??         inject(DOCUMENT).location?.origin ?? '';   }    /** @nodoc */   ngOnDestroy(): void {     while (this._removeListenerFns.length) {       this._removeListenerFns.pop()!();     }   }    override onPopState(fn: LocationChangeListener): void {     this._removeListenerFns.push(         this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));   }    override getBaseHref(): string {     return this._baseHref;   }    override prepareExternalUrl(internal: string): string {     return joinWithSlash(this._baseHref, internal);   }    override path(includeHash: boolean = false): string {     const pathname =         this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search);     const hash = this._platformLocation.hash;     return hash && includeHash ? `${pathname}${hash}` : pathname;   }    override pushState(state: any, title: string, url: string, queryParams: string) {     const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));     this._platformLocation.pushState(state, title, externalUrl);   }    override replaceState(state: any, title: string, url: string, queryParams: string) {     const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));     this._platformLocation.replaceState(state, title, externalUrl);   }    override forward(): void {     this._platformLocation.forward();   }    override back(): void {     this._platformLocation.back();   }    override getState(): unknown {     return this._platformLocation.getState();   }    override historyGo(relativePosition: number = 0): void {     this._platformLocation.historyGo?.(relativePosition);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, Injectable, OnDestroy, Optional} from '@angular/core';  import {APP_BASE_HREF, LocationStrategy} from './location_strategy'; import {LocationChangeListener, PlatformLocation} from './platform_location'; import {joinWithSlash, normalizeQueryParams} from './util';    /**  * @description  * A {@link LocationStrategy} used to configure the {@link Location} service to  * represent its state in the  * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax)  * of the browser's URL.  *  * For instance, if you call `location.go('/foo')`, the browser's URL will become  * `example.com#/foo`.  *  * @usageNotes  *  * ### Example  *  * {@example common/location/ts/hash_location_component.ts region='LocationComponent'}  *  * @publicApi  */ @Injectable() export class HashLocationStrategy extends LocationStrategy implements OnDestroy {   private _baseHref: string = '';   private _removeListenerFns: (() => void)[] = [];    constructor(       private _platformLocation: PlatformLocation,       @Optional() @Inject(APP_BASE_HREF) _baseHref?: string) {     super();     if (_baseHref != null) {       this._baseHref = _baseHref;     }   }    /** @nodoc */   ngOnDestroy(): void {     while (this._removeListenerFns.length) {       this._removeListenerFns.pop()!();     }   }    override onPopState(fn: LocationChangeListener): void {     this._removeListenerFns.push(         this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));   }    override getBaseHref(): string {     return this._baseHref;   }    override path(includeHash: boolean = false): string {     // the hash value is always prefixed with a `#`     // and if it is empty then it will stay empty     let path = this._platformLocation.hash;     if (path == null) path = '#';      return path.length > 0 ? path.substring(1) : path;   }    override prepareExternalUrl(internal: string): string {     const url = joinWithSlash(this._baseHref, internal);     return url.length > 0 ? ('#' + url) : url;   }    override pushState(state: any, title: string, path: string, queryParams: string) {     let url: string|null = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));     if (url.length == 0) {       url = this._platformLocation.pathname;     }     this._platformLocation.pushState(state, title, url);   }    override replaceState(state: any, title: string, path: string, queryParams: string) {     let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));     if (url.length == 0) {       url = this._platformLocation.pathname;     }     this._platformLocation.replaceState(state, title, url);   }    override forward(): void {     this._platformLocation.forward();   }    override back(): void {     this._platformLocation.back();   }    override getState(): unknown {     return this._platformLocation.getState();   }    override historyGo(relativePosition: number = 0): void {     this._platformLocation.historyGo?.(relativePosition);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EventEmitter, Injectable, OnDestroy, ɵɵinject} from '@angular/core'; import {SubscriptionLike} from 'rxjs';  import {LocationStrategy} from './location_strategy'; import {joinWithSlash, normalizeQueryParams, stripTrailingSlash} from './util';  /** @publicApi */ export interface PopStateEvent {   pop?: boolean;   state?: any;   type?: string;   url?: string; }  /**  * @description  *  * A service that applications can use to interact with a browser's URL.  *  * Depending on the `LocationStrategy` used, `Location` persists  * to the URL's path or the URL's hash segment.  *  * @usageNotes  *  * It's better to use the `Router.navigate()` service to trigger route changes. Use  * `Location` only if you need to interact with or create normalized URLs outside of  * routing.  *  * `Location` is responsible for normalizing the URL against the application's base href.  * A normalized URL is absolute from the URL host, includes the application's base href, and has no  * trailing slash:  * - `/my/app/user/123` is normalized  * - `my/app/user/123` **is not** normalized  * - `/my/app/user/123/` **is not** normalized  *  * ### Example  *  * <code-example path='common/location/ts/path_location_component.ts'  * region='LocationComponent'></code-example>  *  * @publicApi  */ @Injectable({   providedIn: 'root',   // See #23917   useFactory: createLocation, }) export class Location implements OnDestroy {   /** @internal */   _subject: EventEmitter<any> = new EventEmitter();   /** @internal */   _basePath: string;   /** @internal */   _locationStrategy: LocationStrategy;   /** @internal */   _urlChangeListeners: ((url: string, state: unknown) => void)[] = [];   /** @internal */   _urlChangeSubscription: SubscriptionLike|null = null;    constructor(locationStrategy: LocationStrategy) {     this._locationStrategy = locationStrategy;     const baseHref = this._locationStrategy.getBaseHref();     // Note: This class's interaction with base HREF does not fully follow the rules     // outlined in the spec https://www.freesoft.org/CIE/RFC/1808/18.htm.     // Instead of trying to fix individual bugs with more and more code, we should     // investigate using the URL constructor and providing the base as a second     // argument.     // https://developer.mozilla.org/en-US/docs/Web/API/URL/URL#parameters     this._basePath = _stripOrigin(stripTrailingSlash(_stripIndexHtml(baseHref)));     this._locationStrategy.onPopState((ev) => {       this._subject.emit({         'url': this.path(true),         'pop': true,         'state': ev.state,         'type': ev.type,       });     });   }    /** @nodoc */   ngOnDestroy(): void {     this._urlChangeSubscription?.unsubscribe();     this._urlChangeListeners = [];   }    /**    * Normalizes the URL path for this location.    *    * @param includeHash True to include an anchor fragment in the path.    *    * @returns The normalized URL path.    */   // TODO: vsavkin. Remove the boolean flag and always include hash once the deprecated router is   // removed.   path(includeHash: boolean = false): string {     return this.normalize(this._locationStrategy.path(includeHash));   }    /**    * Reports the current state of the location history.    * @returns The current value of the `history.state` object.    */   getState(): unknown {     return this._locationStrategy.getState();   }    /**    * Normalizes the given path and compares to the current normalized path.    *    * @param path The given URL path.    * @param query Query parameters.    *    * @returns True if the given URL path is equal to the current normalized path, false    * otherwise.    */   isCurrentPathEqualTo(path: string, query: string = ''): boolean {     return this.path() == this.normalize(path + normalizeQueryParams(query));   }    /**    * Normalizes a URL path by stripping any trailing slashes.    *    * @param url String representing a URL.    *    * @returns The normalized URL string.    */   normalize(url: string): string {     return Location.stripTrailingSlash(_stripBasePath(this._basePath, _stripIndexHtml(url)));   }    /**    * Normalizes an external URL path.    * If the given URL doesn't begin with a leading slash (`'/'`), adds one    * before normalizing. Adds a hash if `HashLocationStrategy` is    * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use.    *    * @param url String representing a URL.    *    * @returns  A normalized platform-specific URL.    */   prepareExternalUrl(url: string): string {     if (url && url[0] !== '/') {       url = '/' + url;     }     return this._locationStrategy.prepareExternalUrl(url);   }    // TODO: rename this method to pushState   /**    * Changes the browser's URL to a normalized version of a given URL, and pushes a    * new item onto the platform's history.    *    * @param path  URL path to normalize.    * @param query Query parameters.    * @param state Location history state.    *    */   go(path: string, query: string = '', state: any = null): void {     this._locationStrategy.pushState(state, '', path, query);     this._notifyUrlChangeListeners(         this.prepareExternalUrl(path + normalizeQueryParams(query)), state);   }    /**    * Changes the browser's URL to a normalized version of the given URL, and replaces    * the top item on the platform's history stack.    *    * @param path  URL path to normalize.    * @param query Query parameters.    * @param state Location history state.    */   replaceState(path: string, query: string = '', state: any = null): void {     this._locationStrategy.replaceState(state, '', path, query);     this._notifyUrlChangeListeners(         this.prepareExternalUrl(path + normalizeQueryParams(query)), state);   }    /**    * Navigates forward in the platform's history.    */   forward(): void {     this._locationStrategy.forward();   }    /**    * Navigates back in the platform's history.    */   back(): void {     this._locationStrategy.back();   }    /**    * Navigate to a specific page from session history, identified by its relative position to the    * current page.    *    * @param relativePosition  Position of the target page in the history relative to the current    *     page.    * A negative value moves backwards, a positive value moves forwards, e.g. `location.historyGo(2)`    * moves forward two pages and `location.historyGo(-2)` moves back two pages. When we try to go    * beyond what's stored in the history session, we stay in the current page. Same behaviour occurs    * when `relativePosition` equals 0.    * @see https://developer.mozilla.org/en-US/docs/Web/API/History_API#Moving_to_a_specific_point_in_history    */   historyGo(relativePosition: number = 0): void {     this._locationStrategy.historyGo?.(relativePosition);   }    /**    * Registers a URL change listener. Use to catch updates performed by the Angular    * framework that are not detectible through \"popstate\" or \"hashchange\" events.    *    * @param fn The change handler function, which take a URL and a location history state.    * @returns A function that, when executed, unregisters a URL change listener.    */   onUrlChange(fn: (url: string, state: unknown) => void): VoidFunction {     this._urlChangeListeners.push(fn);      if (!this._urlChangeSubscription) {       this._urlChangeSubscription = this.subscribe(v => {         this._notifyUrlChangeListeners(v.url, v.state);       });     }      return () => {       const fnIndex = this._urlChangeListeners.indexOf(fn);       this._urlChangeListeners.splice(fnIndex, 1);        if (this._urlChangeListeners.length === 0) {         this._urlChangeSubscription?.unsubscribe();         this._urlChangeSubscription = null;       }     };   }    /** @internal */   _notifyUrlChangeListeners(url: string = '', state: unknown) {     this._urlChangeListeners.forEach(fn => fn(url, state));   }    /**    * Subscribes to the platform's `popState` events.    *    * Note: `Location.go()` does not trigger the `popState` event in the browser. Use    * `Location.onUrlChange()` to subscribe to URL changes instead.    *    * @param value Event that is triggered when the state history changes.    * @param exception The exception to throw.    *    * @see [onpopstate](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate)    *    * @returns Subscribed events.    */   subscribe(       onNext: (value: PopStateEvent) => void, onThrow?: ((exception: any) => void)|null,       onReturn?: (() => void)|null): SubscriptionLike {     return this._subject.subscribe({next: onNext, error: onThrow, complete: onReturn});   }    /**    * Normalizes URL parameters by prepending with `?` if needed.    *    * @param  params String of URL parameters.    *    * @returns The normalized URL parameters string.    */   public static normalizeQueryParams: (params: string) => string = normalizeQueryParams;    /**    * Joins two parts of a URL with a slash if needed.    *    * @param start  URL string    * @param end    URL string    *    *    * @returns The joined URL string.    */   public static joinWithSlash: (start: string, end: string) => string = joinWithSlash;    /**    * Removes a trailing slash from a URL string if needed.    * Looks for the first occurrence of either `#`, `?`, or the end of the    * line as `/` characters and removes the trailing slash if one exists.    *    * @param url URL string.    *    * @returns The URL string, modified if needed.    */   public static stripTrailingSlash: (url: string) => string = stripTrailingSlash; }  export function createLocation() {   return new Location(ɵɵinject(LocationStrategy as any)); }  function _stripBasePath(basePath: string, url: string): string {   return basePath && new RegExp(`^${basePath}([/;?#]|$)`).test(url) ?       url.substring(basePath.length) :       url; }  function _stripIndexHtml(url: string): string {   return url.replace(/\\/index.html$/, ''); }  function _stripOrigin(baseHref: string): string {   // DO NOT REFACTOR! Previously, this check looked like this:   // `/^(https?:)?\\/\\//.test(baseHref)`, but that resulted in   // syntactically incorrect code after Closure Compiler minification.   // This was likely caused by a bug in Closure Compiler, but   // for now, the check is rewritten to use `new RegExp` instead.   const isAbsoluteUrl = (new RegExp('^(https?:)?//')).test(baseHref);   if (isAbsoluteUrl) {     const [, pathname] = baseHref.split(/\\/\\/[^\\/]+/);     return pathname;   }   return baseHref; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // THIS CODE IS GENERATED - DO NOT MODIFY. export type CurrenciesSymbols = [string] | [string | undefined, string];  /** @internal */ export const CURRENCIES_EN: {[code: string]: CurrenciesSymbols | [string | undefined, string | undefined, number]} = {\"ADP\":[undefined,undefined,0],\"AFN\":[undefined,\"؋\",0],\"ALL\":[undefined,undefined,0],\"AMD\":[undefined,\"֏\",2],\"AOA\":[undefined,\"Kz\"],\"ARS\":[undefined,\"$\"],\"AUD\":[\"A$\",\"$\"],\"AZN\":[undefined,\"₼\"],\"BAM\":[undefined,\"KM\"],\"BBD\":[undefined,\"$\"],\"BDT\":[undefined,\"৳\"],\"BHD\":[undefined,undefined,3],\"BIF\":[undefined,undefined,0],\"BMD\":[undefined,\"$\"],\"BND\":[undefined,\"$\"],\"BOB\":[undefined,\"Bs\"],\"BRL\":[\"R$\"],\"BSD\":[undefined,\"$\"],\"BWP\":[undefined,\"P\"],\"BYN\":[undefined,undefined,2],\"BYR\":[undefined,undefined,0],\"BZD\":[undefined,\"$\"],\"CAD\":[\"CA$\",\"$\",2],\"CHF\":[undefined,undefined,2],\"CLF\":[undefined,undefined,4],\"CLP\":[undefined,\"$\",0],\"CNY\":[\"CN¥\",\"¥\"],\"COP\":[undefined,\"$\",2],\"CRC\":[undefined,\"₡\",2],\"CUC\":[undefined,\"$\"],\"CUP\":[undefined,\"$\"],\"CZK\":[undefined,\"Kč\",2],\"DJF\":[undefined,undefined,0],\"DKK\":[undefined,\"kr\",2],\"DOP\":[undefined,\"$\"],\"EGP\":[undefined,\"E£\"],\"ESP\":[undefined,\"₧\",0],\"EUR\":[\"€\"],\"FJD\":[undefined,\"$\"],\"FKP\":[undefined,\"£\"],\"GBP\":[\"£\"],\"GEL\":[undefined,\"₾\"],\"GHS\":[undefined,\"GH₵\"],\"GIP\":[undefined,\"£\"],\"GNF\":[undefined,\"FG\",0],\"GTQ\":[undefined,\"Q\"],\"GYD\":[undefined,\"$\",2],\"HKD\":[\"HK$\",\"$\"],\"HNL\":[undefined,\"L\"],\"HRK\":[undefined,\"kn\"],\"HUF\":[undefined,\"Ft\",2],\"IDR\":[undefined,\"Rp\",2],\"ILS\":[\"₪\"],\"INR\":[\"₹\"],\"IQD\":[undefined,undefined,0],\"IRR\":[undefined,undefined,0],\"ISK\":[undefined,\"kr\",0],\"ITL\":[undefined,undefined,0],\"JMD\":[undefined,\"$\"],\"JOD\":[undefined,undefined,3],\"JPY\":[\"¥\",undefined,0],\"KHR\":[undefined,\"៛\"],\"KMF\":[undefined,\"CF\",0],\"KPW\":[undefined,\"₩\",0],\"KRW\":[\"₩\",undefined,0],\"KWD\":[undefined,undefined,3],\"KYD\":[undefined,\"$\"],\"KZT\":[undefined,\"₸\"],\"LAK\":[undefined,\"₭\",0],\"LBP\":[undefined,\"L£\",0],\"LKR\":[undefined,\"Rs\"],\"LRD\":[undefined,\"$\"],\"LTL\":[undefined,\"Lt\"],\"LUF\":[undefined,undefined,0],\"LVL\":[undefined,\"Ls\"],\"LYD\":[undefined,undefined,3],\"MGA\":[undefined,\"Ar\",0],\"MGF\":[undefined,undefined,0],\"MMK\":[undefined,\"K\",0],\"MNT\":[undefined,\"₮\",2],\"MRO\":[undefined,undefined,0],\"MUR\":[undefined,\"Rs\",2],\"MXN\":[\"MX$\",\"$\"],\"MYR\":[undefined,\"RM\"],\"NAD\":[undefined,\"$\"],\"NGN\":[undefined,\"₦\"],\"NIO\":[undefined,\"C$\"],\"NOK\":[undefined,\"kr\",2],\"NPR\":[undefined,\"Rs\"],\"NZD\":[\"NZ$\",\"$\"],\"OMR\":[undefined,undefined,3],\"PHP\":[\"₱\"],\"PKR\":[undefined,\"Rs\",2],\"PLN\":[undefined,\"zł\"],\"PYG\":[undefined,\"₲\",0],\"RON\":[undefined,\"lei\"],\"RSD\":[undefined,undefined,0],\"RUB\":[undefined,\"₽\"],\"RWF\":[undefined,\"RF\",0],\"SBD\":[undefined,\"$\"],\"SEK\":[undefined,\"kr\",2],\"SGD\":[undefined,\"$\"],\"SHP\":[undefined,\"£\"],\"SLE\":[undefined,undefined,2],\"SLL\":[undefined,undefined,0],\"SOS\":[undefined,undefined,0],\"SRD\":[undefined,\"$\"],\"SSP\":[undefined,\"£\"],\"STD\":[undefined,undefined,0],\"STN\":[undefined,\"Db\"],\"SYP\":[undefined,\"£\",0],\"THB\":[undefined,\"฿\"],\"TMM\":[undefined,undefined,0],\"TND\":[undefined,undefined,3],\"TOP\":[undefined,\"T$\"],\"TRL\":[undefined,undefined,0],\"TRY\":[undefined,\"₺\"],\"TTD\":[undefined,\"$\"],\"TWD\":[\"NT$\",\"$\",2],\"TZS\":[undefined,undefined,2],\"UAH\":[undefined,\"₴\"],\"UGX\":[undefined,undefined,0],\"USD\":[\"$\"],\"UYI\":[undefined,undefined,0],\"UYU\":[undefined,\"$\"],\"UYW\":[undefined,undefined,4],\"UZS\":[undefined,undefined,2],\"VEF\":[undefined,\"Bs\",2],\"VND\":[\"₫\",undefined,0],\"VUV\":[undefined,undefined,0],\"XAF\":[\"FCFA\",undefined,0],\"XCD\":[\"EC$\",\"$\"],\"XOF\":[\"F CFA\",undefined,0],\"XPF\":[\"CFPF\",undefined,0],\"XXX\":[\"¤\"],\"YER\":[undefined,undefined,0],\"ZAR\":[undefined,\"R\"],\"ZMK\":[undefined,undefined,0],\"ZMW\":[undefined,\"ZK\"],\"ZWD\":[undefined,undefined,0]}; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵCurrencyIndex, ɵExtraLocaleDataIndex, ɵfindLocaleData, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, ɵLocaleDataIndex} from '@angular/core';  import {CURRENCIES_EN, CurrenciesSymbols} from './currencies';   /**  * Format styles that can be used to represent numbers.  * @see `getLocaleNumberFormat()`.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export enum NumberFormatStyle {   Decimal,   Percent,   Currency,   Scientific }  /**  * Plurality cases used for translating plurals to different languages.  *  * @see `NgPlural`  * @see `NgPluralCase`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export enum Plural {   Zero = 0,   One = 1,   Two = 2,   Few = 3,   Many = 4,   Other = 5, }  /**  * Context-dependant translation forms for strings.  * Typically the standalone version is for the nominative form of the word,  * and the format version is used for the genitive case.  * @see [CLDR website](http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles)  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export enum FormStyle {   Format,   Standalone }  /**  * String widths available for translations.  * The specific character widths are locale-specific.  * Examples are given for the word \"Sunday\" in English.  *  * @publicApi  */ export enum TranslationWidth {   /** 1 character for `en-US`. For example: 'S' */   Narrow,   /** 3 characters for `en-US`. For example: 'Sun' */   Abbreviated,   /** Full length for `en-US`. For example: \"Sunday\" */   Wide,   /** 2 characters for `en-US`, For example: \"Su\" */   Short }  /**  * String widths available for date-time formats.  * The specific character widths are locale-specific.  * Examples are given for `en-US`.  *  * @see `getLocaleDateFormat()`  * @see `getLocaleTimeFormat()`  * @see `getLocaleDateTimeFormat()`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  * @publicApi  */ export enum FormatWidth {   /**    * For `en-US`, 'M/d/yy, h:mm a'`    * (Example: `6/15/15, 9:03 AM`)    */   Short,   /**    * For `en-US`, `'MMM d, y, h:mm:ss a'`    * (Example: `Jun 15, 2015, 9:03:01 AM`)    */   Medium,   /**    * For `en-US`, `'MMMM d, y, h:mm:ss a z'`    * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`)    */   Long,   /**    * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'`    * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`)    */   Full }  /**  * Symbols that can be used to replace placeholders in number patterns.  * Examples are based on `en-US` values.  *  * @see `getLocaleNumberSymbol()`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export enum NumberSymbol {   /**    * Decimal separator.    * For `en-US`, the dot character.    * Example: 2,345`.`67    */   Decimal,   /**    * Grouping separator, typically for thousands.    * For `en-US`, the comma character.    * Example: 2`,`345.67    */   Group,   /**    * List-item separator.    * Example: \"one, two, and three\"    */   List,   /**    * Sign for percentage (out of 100).    * Example: 23.4%    */   PercentSign,   /**    * Sign for positive numbers.    * Example: +23    */   PlusSign,   /**    * Sign for negative numbers.    * Example: -23    */   MinusSign,   /**    * Computer notation for exponential value (n times a power of 10).    * Example: 1.2E3    */   Exponential,   /**    * Human-readable format of exponential.    * Example: 1.2x103    */   SuperscriptingExponent,   /**    * Sign for permille (out of 1000).    * Example: 23.4‰    */   PerMille,   /**    * Infinity, can be used with plus and minus.    * Example: ∞, +∞, -∞    */   Infinity,   /**    * Not a number.    * Example: NaN    */   NaN,   /**    * Symbol used between time units.    * Example: 10:52    */   TimeSeparator,   /**    * Decimal separator for currency values (fallback to `Decimal`).    * Example: $2,345.67    */   CurrencyDecimal,   /**    * Group separator for currency values (fallback to `Group`).    * Example: $2,345.67    */   CurrencyGroup }  /**  * The value for each day of the week, based on the `en-US` locale  *  * @publicApi  */ export enum WeekDay {   Sunday = 0,   Monday,   Tuesday,   Wednesday,   Thursday,   Friday,   Saturday }  /**  * Retrieves the locale ID from the currently loaded locale.  * The loaded locale could be, for example, a global one rather than a regional one.  * @param locale A locale code, such as `fr-FR`.  * @returns The locale code. For example, `fr`.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleId(locale: string): string {   return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId]; }  /**  * Retrieves day period strings for the given locale.  *  * @param locale A locale code for the locale format rules to use.  * @param formStyle The required grammatical form.  * @param width The required character width.  * @returns An array of localized period strings. For example, `[AM, PM]` for `en-US`.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleDayPeriods(     locale: string, formStyle: FormStyle, width: TranslationWidth): Readonly<[string, string]> {   const data = ɵfindLocaleData(locale);   const amPmData = <[string, string][][]>[     data[ɵLocaleDataIndex.DayPeriodsFormat], data[ɵLocaleDataIndex.DayPeriodsStandalone]   ];   const amPm = getLastDefinedValue(amPmData, formStyle);   return getLastDefinedValue(amPm, width); }  /**  * Retrieves days of the week for the given locale, using the Gregorian calendar.  *  * @param locale A locale code for the locale format rules to use.  * @param formStyle The required grammatical form.  * @param width The required character width.  * @returns An array of localized name strings.  * For example,`[Sunday, Monday, ... Saturday]` for `en-US`.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleDayNames(     locale: string, formStyle: FormStyle, width: TranslationWidth): ReadonlyArray<string> {   const data = ɵfindLocaleData(locale);   const daysData =       <string[][][]>[data[ɵLocaleDataIndex.DaysFormat], data[ɵLocaleDataIndex.DaysStandalone]];   const days = getLastDefinedValue(daysData, formStyle);   return getLastDefinedValue(days, width); }  /**  * Retrieves months of the year for the given locale, using the Gregorian calendar.  *  * @param locale A locale code for the locale format rules to use.  * @param formStyle The required grammatical form.  * @param width The required character width.  * @returns An array of localized name strings.  * For example,  `[January, February, ...]` for `en-US`.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleMonthNames(     locale: string, formStyle: FormStyle, width: TranslationWidth): ReadonlyArray<string> {   const data = ɵfindLocaleData(locale);   const monthsData =       <string[][][]>[data[ɵLocaleDataIndex.MonthsFormat], data[ɵLocaleDataIndex.MonthsStandalone]];   const months = getLastDefinedValue(monthsData, formStyle);   return getLastDefinedValue(months, width); }  /**  * Retrieves Gregorian-calendar eras for the given locale.  * @param locale A locale code for the locale format rules to use.  * @param width The required character width.   * @returns An array of localized era strings.  * For example, `[AD, BC]` for `en-US`.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleEraNames(     locale: string, width: TranslationWidth): Readonly<[string, string]> {   const data = ɵfindLocaleData(locale);   const erasData = <[string, string][]>data[ɵLocaleDataIndex.Eras];   return getLastDefinedValue(erasData, width); }  /**  * Retrieves the first day of the week for the given locale.  *  * @param locale A locale code for the locale format rules to use.  * @returns A day index number, using the 0-based week-day index for `en-US`  * (Sunday = 0, Monday = 1, ...).  * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleFirstDayOfWeek(locale: string): WeekDay {   const data = ɵfindLocaleData(locale);   return data[ɵLocaleDataIndex.FirstDayOfWeek]; }  /**  * Range of week days that are considered the week-end for the given locale.  *  * @param locale A locale code for the locale format rules to use.  * @returns The range of day values, `[startDay, endDay]`.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleWeekEndRange(locale: string): [WeekDay, WeekDay] {   const data = ɵfindLocaleData(locale);   return data[ɵLocaleDataIndex.WeekendRange]; }  /**  * Retrieves a localized date-value formatting string.  *  * @param locale A locale code for the locale format rules to use.  * @param width The format type.  * @returns The localized formatting string.  * @see `FormatWidth`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleDateFormat(locale: string, width: FormatWidth): string {   const data = ɵfindLocaleData(locale);   return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width); }  /**  * Retrieves a localized time-value formatting string.  *  * @param locale A locale code for the locale format rules to use.  * @param width The format type.  * @returns The localized formatting string.  * @see `FormatWidth`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)   * @publicApi  */ export function getLocaleTimeFormat(locale: string, width: FormatWidth): string {   const data = ɵfindLocaleData(locale);   return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width); }  /**  * Retrieves a localized date-time formatting string.  *  * @param locale A locale code for the locale format rules to use.  * @param width The format type.  * @returns The localized formatting string.  * @see `FormatWidth`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleDateTimeFormat(locale: string, width: FormatWidth): string {   const data = ɵfindLocaleData(locale);   const dateTimeFormatData = <string[]>data[ɵLocaleDataIndex.DateTimeFormat];   return getLastDefinedValue(dateTimeFormatData, width); }  /**  * Retrieves a localized number symbol that can be used to replace placeholders in number formats.  * @param locale The locale code.  * @param symbol The symbol to localize.  * @returns The character for the localized symbol.  * @see `NumberSymbol`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleNumberSymbol(locale: string, symbol: NumberSymbol): string {   const data = ɵfindLocaleData(locale);   const res = data[ɵLocaleDataIndex.NumberSymbols][symbol];   if (typeof res === 'undefined') {     if (symbol === NumberSymbol.CurrencyDecimal) {       return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Decimal];     } else if (symbol === NumberSymbol.CurrencyGroup) {       return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];     }   }   return res; }  /**  * Retrieves a number format for a given locale.  *  * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00`  * when used to format the number 12345.678 could result in \"12'345,678\". That would happen if the  * grouping separator for your language is an apostrophe, and the decimal separator is a comma.  *  * <b>Important:</b> The characters `.` `,` `0` `#` (and others below) are special placeholders  * that stand for the decimal separator, and so on, and are NOT real characters.  * You must NOT \"translate\" the placeholders. For example, don't change `.` to `,` even though in  * your language the decimal point is written with a comma. The symbols should be replaced by the  * local equivalents, using the appropriate `NumberSymbol` for your language.  *  * Here are the special characters used in number patterns:  *  * | Symbol | Meaning |  * |--------|---------|  * | . | Replaced automatically by the character used for the decimal point. |  * | , | Replaced by the \"grouping\" (thousands) separator. |  * | 0 | Replaced by a digit (or zero if there aren't enough digits). |  * | # | Replaced by a digit (or nothing if there aren't enough). |  * | ¤ | Replaced by a currency symbol, such as $ or USD. |  * | % | Marks a percent format. The % symbol may change position, but must be retained. |  * | E | Marks a scientific format. The E symbol may change position, but must be retained. |  * | ' | Special characters used as literal characters are quoted with ASCII single quotes. |  *  * @param locale A locale code for the locale format rules to use.  * @param type The type of numeric value to be formatted (such as `Decimal` or `Currency`.)  * @returns The localized format string.  * @see `NumberFormatStyle`  * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns)  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleNumberFormat(locale: string, type: NumberFormatStyle): string {   const data = ɵfindLocaleData(locale);   return data[ɵLocaleDataIndex.NumberFormats][type]; }  /**  * Retrieves the symbol used to represent the currency for the main country  * corresponding to a given locale. For example, '$' for `en-US`.  *  * @param locale A locale code for the locale format rules to use.  * @returns The localized symbol character,  * or `null` if the main country cannot be determined.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleCurrencySymbol(locale: string): string|null {   const data = ɵfindLocaleData(locale);   return data[ɵLocaleDataIndex.CurrencySymbol] || null; }  /**  * Retrieves the name of the currency for the main country corresponding  * to a given locale. For example, 'US Dollar' for `en-US`.  * @param locale A locale code for the locale format rules to use.  * @returns The currency name,  * or `null` if the main country cannot be determined.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleCurrencyName(locale: string): string|null {   const data = ɵfindLocaleData(locale);   return data[ɵLocaleDataIndex.CurrencyName] || null; }  /**  * Retrieves the default currency code for the given locale.  *  * The default is defined as the first currency which is still in use.  *  * @param locale The code of the locale whose currency code we want.  * @returns The code of the default currency for the given locale.  *  * @publicApi  */ export function getLocaleCurrencyCode(locale: string): string|null {   return ɵgetLocaleCurrencyCode(locale); }  /**  * Retrieves the currency values for a given locale.  * @param locale A locale code for the locale format rules to use.  * @returns The currency values.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  */ function getLocaleCurrencies(locale: string): {[code: string]: CurrenciesSymbols} {   const data = ɵfindLocaleData(locale);   return data[ɵLocaleDataIndex.Currencies]; }  /**  * @alias core/ɵgetLocalePluralCase  * @publicApi  */ export const getLocalePluralCase: (locale: string) => ((value: number) => Plural) =     ɵgetLocalePluralCase;  function checkFullData(data: any) {   if (!data[ɵLocaleDataIndex.ExtraData]) {     throw new Error(`Missing extra locale data for the locale \"${         data[ɵLocaleDataIndex                  .LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);   } }  /**  * Retrieves locale-specific rules used to determine which day period to use  * when more than one period is defined for a locale.  *  * There is a rule for each defined day period. The  * first rule is applied to the first day period and so on.  * Fall back to AM/PM when no rules are available.  *  * A rule can specify a period as time range, or as a single time value.  *  * This functionality is only available when you have loaded the full locale data.  * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).  *  * @param locale A locale code for the locale format rules to use.  * @returns The rules for the locale, a single time value or array of *from-time, to-time*,  * or null if no periods are available.  *  * @see `getLocaleExtraDayPeriods()`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleExtraDayPeriodRules(locale: string): (Time|[Time, Time])[] {   const data = ɵfindLocaleData(locale);   checkFullData(data);   const rules = data[ɵLocaleDataIndex.ExtraData][ɵExtraLocaleDataIndex.ExtraDayPeriodsRules] || [];   return rules.map((rule: string|[string, string]) => {     if (typeof rule === 'string') {       return extractTime(rule);     }     return [extractTime(rule[0]), extractTime(rule[1])];   }); }  /**  * Retrieves locale-specific day periods, which indicate roughly how a day is broken up  * in different languages.  * For example, for `en-US`, periods are morning, noon, afternoon, evening, and midnight.  *  * This functionality is only available when you have loaded the full locale data.  * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).  *  * @param locale A locale code for the locale format rules to use.  * @param formStyle The required grammatical form.  * @param width The required character width.  * @returns The translated day-period strings.  * @see `getLocaleExtraDayPeriodRules()`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getLocaleExtraDayPeriods(     locale: string, formStyle: FormStyle, width: TranslationWidth): string[] {   const data = ɵfindLocaleData(locale);   checkFullData(data);   const dayPeriodsData = <string[][][]>[     data[ɵLocaleDataIndex.ExtraData][ɵExtraLocaleDataIndex.ExtraDayPeriodFormats],     data[ɵLocaleDataIndex.ExtraData][ɵExtraLocaleDataIndex.ExtraDayPeriodStandalone]   ];   const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || [];   return getLastDefinedValue(dayPeriods, width) || []; }  /**  * Retrieves the writing direction of a specified locale  * @param locale A locale code for the locale format rules to use.  * @publicApi  * @returns 'rtl' or 'ltr'  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  */ export function getLocaleDirection(locale: string): 'ltr'|'rtl' {   const data = ɵfindLocaleData(locale);   return data[ɵLocaleDataIndex.Directionality]; }  /**  * Retrieves the first value that is defined in an array, going backwards from an index position.  *  * To avoid repeating the same data (as when the \"format\" and \"standalone\" forms are the same)  * add the first value to the locale data arrays, and add other values only if they are different.  *  * @param data The data array to retrieve from.  * @param index A 0-based index into the array to start from.  * @returns The value immediately before the given index position.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ function getLastDefinedValue<T>(data: T[], index: number): T {   for (let i = index; i > -1; i--) {     if (typeof data[i] !== 'undefined') {       return data[i];     }   }   throw new Error('Locale data API: locale data undefined'); }  /**  * Represents a time value with hours and minutes.  *  * @publicApi  */ export type Time = {   hours: number,   minutes: number };  /**  * Extracts the hours and minutes from a string like \"15:45\"  */ function extractTime(time: string): Time {   const [h, m] = time.split(':');   return {hours: +h, minutes: +m}; }    /**  * Retrieves the currency symbol for a given currency code.  *  * For example, for the default `en-US` locale, the code `USD` can  * be represented by the narrow symbol `$` or the wide symbol `US$`.  *  * @param code The currency code.  * @param format The format, `wide` or `narrow`.  * @param locale A locale code for the locale format rules to use.  *  * @returns The symbol, or the currency code if no symbol is available.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getCurrencySymbol(code: string, format: 'wide'|'narrow', locale = 'en'): string {   const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];   const symbolNarrow = currency[ɵCurrencyIndex.SymbolNarrow];    if (format === 'narrow' && typeof symbolNarrow === 'string') {     return symbolNarrow;   }    return currency[ɵCurrencyIndex.Symbol] || code; }  // Most currencies have cents, that's why the default is 2 const DEFAULT_NB_OF_CURRENCY_DIGITS = 2;  /**  * Reports the number of decimal digits for a given currency.  * The value depends upon the presence of cents in that particular currency.  *  * @param code The currency code.  * @returns The number of decimal digits, typically 0 or 2.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function getNumberOfCurrencyDigits(code: string): number {   let digits;   const currency = CURRENCIES_EN[code];   if (currency) {     digits = currency[ɵCurrencyIndex.NbOfDigits];   }   return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {FormatWidth, FormStyle, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleId, getLocaleMonthNames, getLocaleNumberSymbol, getLocaleTimeFormat, NumberSymbol, Time, TranslationWidth} from './locale_data_api';  export const ISO8601_DATE_REGEX =     /^(\\d{4,})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/; //    1        2       3         4          5          6          7          8  9     10      11 const NAMED_FORMATS: {[localeId: string]: {[format: string]: string}} = {}; const DATE_FORMATS_SPLIT =     /((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;  enum ZoneWidth {   Short,   ShortGMT,   Long,   Extended }  enum DateType {   FullYear,   Month,   Date,   Hours,   Minutes,   Seconds,   FractionalSeconds,   Day }  enum TranslationType {   DayPeriods,   Days,   Months,   Eras }  /**  * @ngModule CommonModule  * @description  *  * Formats a date according to locale rules.  *  * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch)  * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime).  * @param format The date-time components to include. See `DatePipe` for details.  * @param locale A locale code for the locale format rules to use.  * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`),  * or a standard UTC/GMT or continental US time zone abbreviation.  * If not specified, uses host system settings.  *  * @returns The formatted date string.  *  * @see `DatePipe`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function formatDate(     value: string|number|Date, format: string, locale: string, timezone?: string): string {   let date = toDate(value);   const namedFormat = getNamedFormat(locale, format);   format = namedFormat || format;    let parts: string[] = [];   let match;   while (format) {     match = DATE_FORMATS_SPLIT.exec(format);     if (match) {       parts = parts.concat(match.slice(1));       const part = parts.pop();       if (!part) {         break;       }       format = part;     } else {       parts.push(format);       break;     }   }    let dateTimezoneOffset = date.getTimezoneOffset();   if (timezone) {     dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);     date = convertTimezoneToLocal(date, timezone, true);   }    let text = '';   parts.forEach(value => {     const dateFormatter = getDateFormatter(value);     text += dateFormatter ? dateFormatter(date, locale, dateTimezoneOffset) :         value === '\\'\\''  ? '\\'' :                             value.replace(/(^'|'$)/g, '').replace(/''/g, '\\'');   });    return text; }  /**  * Create a new Date object with the given date value, and the time set to midnight.  *  * We cannot use `new Date(year, month, date)` because it maps years between 0 and 99 to 1900-1999.  * See: https://github.com/angular/angular/issues/40377  *  * Note that this function returns a Date object whose time is midnight in the current locale's  * timezone. In the future we might want to change this to be midnight in UTC, but this would be a  * considerable breaking change.  */ function createDate(year: number, month: number, date: number): Date {   // The `newDate` is set to midnight (UTC) on January 1st 1970.   // - In PST this will be December 31st 1969 at 4pm.   // - In GMT this will be January 1st 1970 at 1am.   // Note that they even have different years, dates and months!   const newDate = new Date(0);    // `setFullYear()` allows years like 0001 to be set correctly. This function does not   // change the internal time of the date.   // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).   // - In PST this will now be September 20, 2019 at 4pm   // - In GMT this will now be September 20, 2019 at 1am    newDate.setFullYear(year, month, date);   // We want the final date to be at local midnight, so we reset the time.   // - In PST this will now be September 20, 2019 at 12am   // - In GMT this will now be September 20, 2019 at 12am   newDate.setHours(0, 0, 0);    return newDate; }  function getNamedFormat(locale: string, format: string): string {   const localeId = getLocaleId(locale);   NAMED_FORMATS[localeId] = NAMED_FORMATS[localeId] || {};    if (NAMED_FORMATS[localeId][format]) {     return NAMED_FORMATS[localeId][format];   }    let formatValue = '';   switch (format) {     case 'shortDate':       formatValue = getLocaleDateFormat(locale, FormatWidth.Short);       break;     case 'mediumDate':       formatValue = getLocaleDateFormat(locale, FormatWidth.Medium);       break;     case 'longDate':       formatValue = getLocaleDateFormat(locale, FormatWidth.Long);       break;     case 'fullDate':       formatValue = getLocaleDateFormat(locale, FormatWidth.Full);       break;     case 'shortTime':       formatValue = getLocaleTimeFormat(locale, FormatWidth.Short);       break;     case 'mediumTime':       formatValue = getLocaleTimeFormat(locale, FormatWidth.Medium);       break;     case 'longTime':       formatValue = getLocaleTimeFormat(locale, FormatWidth.Long);       break;     case 'fullTime':       formatValue = getLocaleTimeFormat(locale, FormatWidth.Full);       break;     case 'short':       const shortTime = getNamedFormat(locale, 'shortTime');       const shortDate = getNamedFormat(locale, 'shortDate');       formatValue = formatDateTime(           getLocaleDateTimeFormat(locale, FormatWidth.Short), [shortTime, shortDate]);       break;     case 'medium':       const mediumTime = getNamedFormat(locale, 'mediumTime');       const mediumDate = getNamedFormat(locale, 'mediumDate');       formatValue = formatDateTime(           getLocaleDateTimeFormat(locale, FormatWidth.Medium), [mediumTime, mediumDate]);       break;     case 'long':       const longTime = getNamedFormat(locale, 'longTime');       const longDate = getNamedFormat(locale, 'longDate');       formatValue =           formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Long), [longTime, longDate]);       break;     case 'full':       const fullTime = getNamedFormat(locale, 'fullTime');       const fullDate = getNamedFormat(locale, 'fullDate');       formatValue =           formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Full), [fullTime, fullDate]);       break;   }   if (formatValue) {     NAMED_FORMATS[localeId][format] = formatValue;   }   return formatValue; }  function formatDateTime(str: string, opt_values: string[]) {   if (opt_values) {     str = str.replace(/\\{([^}]+)}/g, function(match, key) {       return (opt_values != null && key in opt_values) ? opt_values[key] : match;     });   }   return str; }  function padNumber(     num: number, digits: number, minusSign = '-', trim?: boolean, negWrap?: boolean): string {   let neg = '';   if (num < 0 || (negWrap && num <= 0)) {     if (negWrap) {       num = -num + 1;     } else {       num = -num;       neg = minusSign;     }   }   let strNum = String(num);   while (strNum.length < digits) {     strNum = '0' + strNum;   }   if (trim) {     strNum = strNum.slice(strNum.length - digits);   }   return neg + strNum; }  function formatFractionalSeconds(milliseconds: number, digits: number): string {   const strMs = padNumber(milliseconds, 3);   return strMs.substring(0, digits); }  /**  * Returns a date formatter that transforms a date into its locale digit representation  */ function dateGetter(     name: DateType, size: number, offset: number = 0, trim = false,     negWrap = false): DateFormatter {   return function(date: Date, locale: string): string {     let part = getDatePart(name, date);     if (offset > 0 || part > -offset) {       part += offset;     }      if (name === DateType.Hours) {       if (part === 0 && offset === -12) {         part = 12;       }     } else if (name === DateType.FractionalSeconds) {       return formatFractionalSeconds(part, size);     }      const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);     return padNumber(part, size, localeMinus, trim, negWrap);   }; }  function getDatePart(part: DateType, date: Date): number {   switch (part) {     case DateType.FullYear:       return date.getFullYear();     case DateType.Month:       return date.getMonth();     case DateType.Date:       return date.getDate();     case DateType.Hours:       return date.getHours();     case DateType.Minutes:       return date.getMinutes();     case DateType.Seconds:       return date.getSeconds();     case DateType.FractionalSeconds:       return date.getMilliseconds();     case DateType.Day:       return date.getDay();     default:       throw new Error(`Unknown DateType value \"${part}\".`);   } }  /**  * Returns a date formatter that transforms a date into its locale string representation  */ function dateStrGetter(     name: TranslationType, width: TranslationWidth, form: FormStyle = FormStyle.Format,     extended = false): DateFormatter {   return function(date: Date, locale: string): string {     return getDateTranslation(date, locale, name, width, form, extended);   }; }  /**  * Returns the locale translation of a date for a given form, type and width  */ function getDateTranslation(     date: Date, locale: string, name: TranslationType, width: TranslationWidth, form: FormStyle,     extended: boolean) {   switch (name) {     case TranslationType.Months:       return getLocaleMonthNames(locale, form, width)[date.getMonth()];     case TranslationType.Days:       return getLocaleDayNames(locale, form, width)[date.getDay()];     case TranslationType.DayPeriods:       const currentHours = date.getHours();       const currentMinutes = date.getMinutes();       if (extended) {         const rules = getLocaleExtraDayPeriodRules(locale);         const dayPeriods = getLocaleExtraDayPeriods(locale, form, width);         const index = rules.findIndex(rule => {           if (Array.isArray(rule)) {             // morning, afternoon, evening, night             const [from, to] = rule;             const afterFrom = currentHours >= from.hours && currentMinutes >= from.minutes;             const beforeTo =                 (currentHours < to.hours ||                  (currentHours === to.hours && currentMinutes < to.minutes));             // We must account for normal rules that span a period during the day (e.g. 6am-9am)             // where `from` is less (earlier) than `to`. But also rules that span midnight (e.g.             // 10pm - 5am) where `from` is greater (later!) than `to`.             //             // In the first case the current time must be BOTH after `from` AND before `to`             // (e.g. 8am is after 6am AND before 10am).             //             // In the second case the current time must be EITHER after `from` OR before `to`             // (e.g. 4am is before 5am but not after 10pm; and 11pm is not before 5am but it is             // after 10pm).             if (from.hours < to.hours) {               if (afterFrom && beforeTo) {                 return true;               }             } else if (afterFrom || beforeTo) {               return true;             }           } else {  // noon or midnight             if (rule.hours === currentHours && rule.minutes === currentMinutes) {               return true;             }           }           return false;         });         if (index !== -1) {           return dayPeriods[index];         }       }       // if no rules for the day periods, we use am/pm by default       return getLocaleDayPeriods(locale, form, <TranslationWidth>width)[currentHours < 12 ? 0 : 1];     case TranslationType.Eras:       return getLocaleEraNames(locale, <TranslationWidth>width)[date.getFullYear() <= 0 ? 0 : 1];     default:       // This default case is not needed by TypeScript compiler, as the switch is exhaustive.       // However Closure Compiler does not understand that and reports an error in typed mode.       // The `throw new Error` below works around the problem, and the unexpected: never variable       // makes sure tsc still checks this code is unreachable.       const unexpected: never = name;       throw new Error(`unexpected translation type ${unexpected}`);   } }  /**  * Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or  * GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30,  * extended = +04:30)  */ function timeZoneGetter(width: ZoneWidth): DateFormatter {   return function(date: Date, locale: string, offset: number) {     const zone = -1 * offset;     const minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);     const hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60);     switch (width) {       case ZoneWidth.Short:         return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) +             padNumber(Math.abs(zone % 60), 2, minusSign);       case ZoneWidth.ShortGMT:         return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 1, minusSign);       case ZoneWidth.Long:         return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +             padNumber(Math.abs(zone % 60), 2, minusSign);       case ZoneWidth.Extended:         if (offset === 0) {           return 'Z';         } else {           return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +               padNumber(Math.abs(zone % 60), 2, minusSign);         }       default:         throw new Error(`Unknown zone width \"${width}\"`);     }   }; }  const JANUARY = 0; const THURSDAY = 4; function getFirstThursdayOfYear(year: number) {   const firstDayOfYear = createDate(year, JANUARY, 1).getDay();   return createDate(       year, 0, 1 + ((firstDayOfYear <= THURSDAY) ? THURSDAY : THURSDAY + 7) - firstDayOfYear); }  function getThursdayThisWeek(datetime: Date) {   return createDate(       datetime.getFullYear(), datetime.getMonth(),       datetime.getDate() + (THURSDAY - datetime.getDay())); }  function weekGetter(size: number, monthBased = false): DateFormatter {   return function(date: Date, locale: string) {     let result;     if (monthBased) {       const nbDaysBefore1stDayOfMonth =           new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1;       const today = date.getDate();       result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7);     } else {       const thisThurs = getThursdayThisWeek(date);       // Some days of a year are part of next year according to ISO 8601.       // Compute the firstThurs from the year of this week's Thursday       const firstThurs = getFirstThursdayOfYear(thisThurs.getFullYear());       const diff = thisThurs.getTime() - firstThurs.getTime();       result = 1 + Math.round(diff / 6.048e8);  // 6.048e8 ms per week     }      return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));   }; }  /**  * Returns a date formatter that provides the week-numbering year for the input date.  */ function weekNumberingYearGetter(size: number, trim = false): DateFormatter {   return function(date: Date, locale: string) {     const thisThurs = getThursdayThisWeek(date);     const weekNumberingYear = thisThurs.getFullYear();     return padNumber(         weekNumberingYear, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign), trim);   }; }  type DateFormatter = (date: Date, locale: string, offset: number) => string;  const DATE_FORMATS: {[format: string]: DateFormatter} = {};  // Based on CLDR formats: // See complete list: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table // See also explanations: http://cldr.unicode.org/translation/date-time // TODO(ocombe): support all missing cldr formats: U, Q, D, F, e, j, J, C, A, v, V, X, x function getDateFormatter(format: string): DateFormatter|null {   if (DATE_FORMATS[format]) {     return DATE_FORMATS[format];   }   let formatter;   switch (format) {     // Era name (AD/BC)     case 'G':     case 'GG':     case 'GGG':       formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Abbreviated);       break;     case 'GGGG':       formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Wide);       break;     case 'GGGGG':       formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Narrow);       break;      // 1 digit representation of the year, e.g. (AD 1 => 1, AD 199 => 199)     case 'y':       formatter = dateGetter(DateType.FullYear, 1, 0, false, true);       break;     // 2 digit representation of the year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)     case 'yy':       formatter = dateGetter(DateType.FullYear, 2, 0, true, true);       break;     // 3 digit representation of the year, padded (000-999). (e.g. AD 2001 => 01, AD 2010 => 10)     case 'yyy':       formatter = dateGetter(DateType.FullYear, 3, 0, false, true);       break;     // 4 digit representation of the year (e.g. AD 1 => 0001, AD 2010 => 2010)     case 'yyyy':       formatter = dateGetter(DateType.FullYear, 4, 0, false, true);       break;      // 1 digit representation of the week-numbering year, e.g. (AD 1 => 1, AD 199 => 199)     case 'Y':       formatter = weekNumberingYearGetter(1);       break;     // 2 digit representation of the week-numbering year, padded (00-99). (e.g. AD 2001 => 01, AD     // 2010 => 10)     case 'YY':       formatter = weekNumberingYearGetter(2, true);       break;     // 3 digit representation of the week-numbering year, padded (000-999). (e.g. AD 1 => 001, AD     // 2010 => 2010)     case 'YYY':       formatter = weekNumberingYearGetter(3);       break;     // 4 digit representation of the week-numbering year (e.g. AD 1 => 0001, AD 2010 => 2010)     case 'YYYY':       formatter = weekNumberingYearGetter(4);       break;      // Month of the year (1-12), numeric     case 'M':     case 'L':       formatter = dateGetter(DateType.Month, 1, 1);       break;     case 'MM':     case 'LL':       formatter = dateGetter(DateType.Month, 2, 1);       break;      // Month of the year (January, ...), string, format     case 'MMM':       formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated);       break;     case 'MMMM':       formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide);       break;     case 'MMMMM':       formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow);       break;      // Month of the year (January, ...), string, standalone     case 'LLL':       formatter =           dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated, FormStyle.Standalone);       break;     case 'LLLL':       formatter =           dateStrGetter(TranslationType.Months, TranslationWidth.Wide, FormStyle.Standalone);       break;     case 'LLLLL':       formatter =           dateStrGetter(TranslationType.Months, TranslationWidth.Narrow, FormStyle.Standalone);       break;      // Week of the year (1, ... 52)     case 'w':       formatter = weekGetter(1);       break;     case 'ww':       formatter = weekGetter(2);       break;      // Week of the month (1, ...)     case 'W':       formatter = weekGetter(1, true);       break;      // Day of the month (1-31)     case 'd':       formatter = dateGetter(DateType.Date, 1);       break;     case 'dd':       formatter = dateGetter(DateType.Date, 2);       break;      // Day of the Week StandAlone (1, 1, Mon, Monday, M, Mo)     case 'c':     case 'cc':       formatter = dateGetter(DateType.Day, 1);       break;     case 'ccc':       formatter =           dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated, FormStyle.Standalone);       break;     case 'cccc':       formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide, FormStyle.Standalone);       break;     case 'ccccc':       formatter =           dateStrGetter(TranslationType.Days, TranslationWidth.Narrow, FormStyle.Standalone);       break;     case 'cccccc':       formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short, FormStyle.Standalone);       break;      // Day of the Week     case 'E':     case 'EE':     case 'EEE':       formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated);       break;     case 'EEEE':       formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide);       break;     case 'EEEEE':       formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow);       break;     case 'EEEEEE':       formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short);       break;      // Generic period of the day (am-pm)     case 'a':     case 'aa':     case 'aaa':       formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated);       break;     case 'aaaa':       formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide);       break;     case 'aaaaa':       formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow);       break;      // Extended period of the day (midnight, at night, ...), standalone     case 'b':     case 'bb':     case 'bbb':       formatter = dateStrGetter(           TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true);       break;     case 'bbbb':       formatter = dateStrGetter(           TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true);       break;     case 'bbbbb':       formatter = dateStrGetter(           TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true);       break;      // Extended period of the day (midnight, night, ...), standalone     case 'B':     case 'BB':     case 'BBB':       formatter = dateStrGetter(           TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Format, true);       break;     case 'BBBB':       formatter =           dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Format, true);       break;     case 'BBBBB':       formatter = dateStrGetter(           TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true);       break;      // Hour in AM/PM, (1-12)     case 'h':       formatter = dateGetter(DateType.Hours, 1, -12);       break;     case 'hh':       formatter = dateGetter(DateType.Hours, 2, -12);       break;      // Hour of the day (0-23)     case 'H':       formatter = dateGetter(DateType.Hours, 1);       break;     // Hour in day, padded (00-23)     case 'HH':       formatter = dateGetter(DateType.Hours, 2);       break;      // Minute of the hour (0-59)     case 'm':       formatter = dateGetter(DateType.Minutes, 1);       break;     case 'mm':       formatter = dateGetter(DateType.Minutes, 2);       break;      // Second of the minute (0-59)     case 's':       formatter = dateGetter(DateType.Seconds, 1);       break;     case 'ss':       formatter = dateGetter(DateType.Seconds, 2);       break;      // Fractional second     case 'S':       formatter = dateGetter(DateType.FractionalSeconds, 1);       break;     case 'SS':       formatter = dateGetter(DateType.FractionalSeconds, 2);       break;     case 'SSS':       formatter = dateGetter(DateType.FractionalSeconds, 3);       break;       // Timezone ISO8601 short format (-0430)     case 'Z':     case 'ZZ':     case 'ZZZ':       formatter = timeZoneGetter(ZoneWidth.Short);       break;     // Timezone ISO8601 extended format (-04:30)     case 'ZZZZZ':       formatter = timeZoneGetter(ZoneWidth.Extended);       break;      // Timezone GMT short format (GMT+4)     case 'O':     case 'OO':     case 'OOO':     // Should be location, but fallback to format O instead because we don't have the data yet     case 'z':     case 'zz':     case 'zzz':       formatter = timeZoneGetter(ZoneWidth.ShortGMT);       break;     // Timezone GMT long format (GMT+0430)     case 'OOOO':     case 'ZZZZ':     // Should be location, but fallback to format O instead because we don't have the data yet     case 'zzzz':       formatter = timeZoneGetter(ZoneWidth.Long);       break;     default:       return null;   }   DATE_FORMATS[format] = formatter;   return formatter; }  function timezoneToOffset(timezone: string, fallback: number): number {   // Support: IE 11 only, Edge 13-15+   // IE/Edge do not \"understand\" colon (`:`) in timezone   timezone = timezone.replace(/:/g, '');   const requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;   return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset; }  function addDateMinutes(date: Date, minutes: number) {   date = new Date(date.getTime());   date.setMinutes(date.getMinutes() + minutes);   return date; }  function convertTimezoneToLocal(date: Date, timezone: string, reverse: boolean): Date {   const reverseValue = reverse ? -1 : 1;   const dateTimezoneOffset = date.getTimezoneOffset();   const timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);   return addDateMinutes(date, reverseValue * (timezoneOffset - dateTimezoneOffset)); }  /**  * Converts a value to date.  *  * Supported input formats:  * - `Date`  * - number: timestamp  * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by  *   [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).  *   Note: ISO strings without time return a date without timeoffset.  *  * Throws if unable to convert to a date.  */ export function toDate(value: string|number|Date): Date {   if (isDate(value)) {     return value;   }    if (typeof value === 'number' && !isNaN(value)) {     return new Date(value);   }    if (typeof value === 'string') {     value = value.trim();      if (/^(\\d{4}(-\\d{1,2}(-\\d{1,2})?)?)$/.test(value)) {       /* For ISO Strings without time the day, month and year must be extracted from the ISO String       before Date creation to avoid time offset and errors in the new Date.       If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new       date, some browsers (e.g. IE 9) will throw an invalid Date error.       If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset       is applied.       Note: ISO months are 0 for January, 1 for February, ... */       const [y, m = 1, d = 1] = value.split('-').map((val: string) => +val);       return createDate(y, m - 1, d);     }      const parsedNb = parseFloat(value);      // any string that only contains numbers, like \"1234\" but not like \"1234hello\"     if (!isNaN(value as any - parsedNb)) {       return new Date(parsedNb);     }      let match: RegExpMatchArray|null;     if (match = value.match(ISO8601_DATE_REGEX)) {       return isoStringToDate(match);     }   }    const date = new Date(value as any);   if (!isDate(date)) {     throw new Error(`Unable to convert \"${value}\" into a date`);   }   return date; }  /**  * Converts a date in ISO8601 to a Date.  * Used instead of `Date.parse` because of browser discrepancies.  */ export function isoStringToDate(match: RegExpMatchArray): Date {   const date = new Date(0);   let tzHour = 0;   let tzMin = 0;    // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"   const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;   const timeSetter = match[8] ? date.setUTCHours : date.setHours;    // if there is a timezone defined like \"+01:00\" or \"+0100\"   if (match[9]) {     tzHour = Number(match[9] + match[10]);     tzMin = Number(match[9] + match[11]);   }   dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));   const h = Number(match[4] || 0) - tzHour;   const m = Number(match[5] || 0) - tzMin;   const s = Number(match[6] || 0);   // The ECMAScript specification (https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.11)   // defines that `DateTime` milliseconds should always be rounded down, so that `999.9ms`   // becomes `999ms`.   const ms = Math.floor(parseFloat('0.' + (match[7] || 0)) * 1000);   timeSetter.call(date, h, m, s, ms);   return date; }  export function isDate(value: any): value is Date {   return value instanceof Date && !isNaN(value.valueOf()); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {getLocaleNumberFormat, getLocaleNumberSymbol, getNumberOfCurrencyDigits, NumberFormatStyle, NumberSymbol} from './locale_data_api';  export const NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/; const MAX_DIGITS = 22; const DECIMAL_SEP = '.'; const ZERO_CHAR = '0'; const PATTERN_SEP = ';'; const GROUP_SEP = ','; const DIGIT_CHAR = '#'; const CURRENCY_CHAR = '¤'; const PERCENT_CHAR = '%';  /**  * Transforms a number to a locale string based on a style and a format.  */ function formatNumberToLocaleString(     value: number, pattern: ParsedNumberFormat, locale: string, groupSymbol: NumberSymbol,     decimalSymbol: NumberSymbol, digitsInfo?: string, isPercent = false): string {   let formattedText = '';   let isZero = false;    if (!isFinite(value)) {     formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);   } else {     let parsedNumber = parseNumber(value);      if (isPercent) {       parsedNumber = toPercent(parsedNumber);     }      let minInt = pattern.minInt;     let minFraction = pattern.minFrac;     let maxFraction = pattern.maxFrac;      if (digitsInfo) {       const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);       if (parts === null) {         throw new Error(`${digitsInfo} is not a valid digit info`);       }       const minIntPart = parts[1];       const minFractionPart = parts[3];       const maxFractionPart = parts[5];       if (minIntPart != null) {         minInt = parseIntAutoRadix(minIntPart);       }       if (minFractionPart != null) {         minFraction = parseIntAutoRadix(minFractionPart);       }       if (maxFractionPart != null) {         maxFraction = parseIntAutoRadix(maxFractionPart);       } else if (minFractionPart != null && minFraction > maxFraction) {         maxFraction = minFraction;       }     }      roundNumber(parsedNumber, minFraction, maxFraction);      let digits = parsedNumber.digits;     let integerLen = parsedNumber.integerLen;     const exponent = parsedNumber.exponent;     let decimals = [];     isZero = digits.every(d => !d);      // pad zeros for small numbers     for (; integerLen < minInt; integerLen++) {       digits.unshift(0);     }      // pad zeros for small numbers     for (; integerLen < 0; integerLen++) {       digits.unshift(0);     }      // extract decimals digits     if (integerLen > 0) {       decimals = digits.splice(integerLen, digits.length);     } else {       decimals = digits;       digits = [0];     }      // format the integer digits with grouping separators     const groups = [];     if (digits.length >= pattern.lgSize) {       groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));     }      while (digits.length > pattern.gSize) {       groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));     }      if (digits.length) {       groups.unshift(digits.join(''));     }      formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol));      // append the decimal digits     if (decimals.length) {       formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join('');     }      if (exponent) {       formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent;     }   }    if (value < 0 && !isZero) {     formattedText = pattern.negPre + formattedText + pattern.negSuf;   } else {     formattedText = pattern.posPre + formattedText + pattern.posSuf;   }    return formattedText; }  /**  * @ngModule CommonModule  * @description  *  * Formats a number as currency using locale rules.  *  * @param value The number to format.  * @param locale A locale code for the locale format rules to use.  * @param currency A string containing the currency symbol or its name,  * such as \"$\" or \"Canadian Dollar\". Used in output string, but does not affect the operation  * of the function.  * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)  * currency code, such as `USD` for the US dollar and `EUR` for the euro.  * Used to determine the number of digits in the decimal part.  * @param digitsInfo Decimal representation options, specified by a string in the following format:  * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.  *  * @returns The formatted currency value.  *  * @see `formatNumber()`  * @see `DecimalPipe`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function formatCurrency(     value: number, locale: string, currency: string, currencyCode?: string,     digitsInfo?: string): string {   const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency);   const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));    pattern.minFrac = getNumberOfCurrencyDigits(currencyCode!);   pattern.maxFrac = pattern.minFrac;    const res = formatNumberToLocaleString(       value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo);   return res       .replace(CURRENCY_CHAR, currency)       // if we have 2 time the currency character, the second one is ignored       .replace(CURRENCY_CHAR, '')       // If there is a spacing between currency character and the value and       // the currency character is suppressed by passing an empty string, the       // spacing character would remain as part of the string. Then we       // should remove it.       .trim(); }  /**  * @ngModule CommonModule  * @description  *  * Formats a number as a percentage according to locale rules.  *  * @param value The number to format.  * @param locale A locale code for the locale format rules to use.  * @param digitsInfo Decimal representation options, specified by a string in the following format:  * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.  *  * @returns The formatted percentage value.  *  * @see `formatNumber()`  * @see `DecimalPipe`  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  * @publicApi  *  */ export function formatPercent(value: number, locale: string, digitsInfo?: string): string {   const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent);   const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));   const res = formatNumberToLocaleString(       value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true);   return res.replace(       new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign)); }  /**  * @ngModule CommonModule  * @description  *  * Formats a number as text, with group sizing, separator, and other  * parameters based on the locale.  *  * @param value The number to format.  * @param locale A locale code for the locale format rules to use.  * @param digitsInfo Decimal representation options, specified by a string in the following format:  * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.  *  * @returns The formatted text string.  * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)  *  * @publicApi  */ export function formatNumber(value: number, locale: string, digitsInfo?: string): string {   const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);   const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));   return formatNumberToLocaleString(       value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo); }  interface ParsedNumberFormat {   minInt: number;   // the minimum number of digits required in the fraction part of the number   minFrac: number;   // the maximum number of digits required in the fraction part of the number   maxFrac: number;   // the prefix for a positive number   posPre: string;   // the suffix for a positive number   posSuf: string;   // the prefix for a negative number (e.g. `-` or `(`))   negPre: string;   // the suffix for a negative number (e.g. `)`)   negSuf: string;   // number of digits in each group of separated digits   gSize: number;   // number of digits in the last group of digits before the decimal separator   lgSize: number; }  function parseNumberFormat(format: string, minusSign = '-'): ParsedNumberFormat {   const p = {     minInt: 1,     minFrac: 0,     maxFrac: 0,     posPre: '',     posSuf: '',     negPre: '',     negSuf: '',     gSize: 0,     lgSize: 0   };    const patternParts = format.split(PATTERN_SEP);   const positive = patternParts[0];   const negative = patternParts[1];    const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1 ?       positive.split(DECIMAL_SEP) :       [         positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1),         positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1)       ],         integer = positiveParts[0], fraction = positiveParts[1] || '';    p.posPre = integer.substring(0, integer.indexOf(DIGIT_CHAR));    for (let i = 0; i < fraction.length; i++) {     const ch = fraction.charAt(i);     if (ch === ZERO_CHAR) {       p.minFrac = p.maxFrac = i + 1;     } else if (ch === DIGIT_CHAR) {       p.maxFrac = i + 1;     } else {       p.posSuf += ch;     }   }    const groups = integer.split(GROUP_SEP);   p.gSize = groups[1] ? groups[1].length : 0;   p.lgSize = (groups[2] || groups[1]) ? (groups[2] || groups[1]).length : 0;    if (negative) {     const trunkLen = positive.length - p.posPre.length - p.posSuf.length,           pos = negative.indexOf(DIGIT_CHAR);      p.negPre = negative.substring(0, pos).replace(/'/g, '');     p.negSuf = negative.slice(pos + trunkLen).replace(/'/g, '');   } else {     p.negPre = minusSign + p.posPre;     p.negSuf = p.posSuf;   }    return p; }  interface ParsedNumber {   // an array of digits containing leading zeros as necessary   digits: number[];   // the exponent for numbers that would need more than `MAX_DIGITS` digits in `d`   exponent: number;   // the number of the digits in `d` that are to the left of the decimal point   integerLen: number; }  // Transforms a parsed number into a percentage by multiplying it by 100 function toPercent(parsedNumber: ParsedNumber): ParsedNumber {   // if the number is 0, don't do anything   if (parsedNumber.digits[0] === 0) {     return parsedNumber;   }    // Getting the current number of decimals   const fractionLen = parsedNumber.digits.length - parsedNumber.integerLen;   if (parsedNumber.exponent) {     parsedNumber.exponent += 2;   } else {     if (fractionLen === 0) {       parsedNumber.digits.push(0, 0);     } else if (fractionLen === 1) {       parsedNumber.digits.push(0);     }     parsedNumber.integerLen += 2;   }    return parsedNumber; }  /**  * Parses a number.  * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/  */ function parseNumber(num: number): ParsedNumber {   let numStr = Math.abs(num) + '';   let exponent = 0, digits, integerLen;   let i, j, zeros;    // Decimal point?   if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) {     numStr = numStr.replace(DECIMAL_SEP, '');   }    // Exponential form?   if ((i = numStr.search(/e/i)) > 0) {     // Work out the exponent.     if (integerLen < 0) integerLen = i;     integerLen += +numStr.slice(i + 1);     numStr = numStr.substring(0, i);   } else if (integerLen < 0) {     // There was no decimal point or exponent so it is an integer.     integerLen = numStr.length;   }    // Count the number of leading zeros.   for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */   }    if (i === (zeros = numStr.length)) {     // The digits are all zero.     digits = [0];     integerLen = 1;   } else {     // Count the number of trailing zeros     zeros--;     while (numStr.charAt(zeros) === ZERO_CHAR) zeros--;      // Trailing zeros are insignificant so ignore them     integerLen -= i;     digits = [];     // Convert string to array of digits without leading/trailing zeros.     for (j = 0; i <= zeros; i++, j++) {       digits[j] = Number(numStr.charAt(i));     }   }    // If the number overflows the maximum allowed digits then use an exponent.   if (integerLen > MAX_DIGITS) {     digits = digits.splice(0, MAX_DIGITS - 1);     exponent = integerLen - 1;     integerLen = 1;   }    return {digits, exponent, integerLen}; }  /**  * Round the parsed number to the specified number of decimal places  * This function changes the parsedNumber in-place  */ function roundNumber(parsedNumber: ParsedNumber, minFrac: number, maxFrac: number) {   if (minFrac > maxFrac) {     throw new Error(`The minimum number of digits after fraction (${         minFrac}) is higher than the maximum (${maxFrac}).`);   }    let digits = parsedNumber.digits;   let fractionLen = digits.length - parsedNumber.integerLen;   const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac);    // The index of the digit to where rounding is to occur   let roundAt = fractionSize + parsedNumber.integerLen;   let digit = digits[roundAt];    if (roundAt > 0) {     // Drop fractional digits beyond `roundAt`     digits.splice(Math.max(parsedNumber.integerLen, roundAt));      // Set non-fractional digits beyond `roundAt` to 0     for (let j = roundAt; j < digits.length; j++) {       digits[j] = 0;     }   } else {     // We rounded to zero so reset the parsedNumber     fractionLen = Math.max(0, fractionLen);     parsedNumber.integerLen = 1;     digits.length = Math.max(1, roundAt = fractionSize + 1);     digits[0] = 0;     for (let i = 1; i < roundAt; i++) digits[i] = 0;   }    if (digit >= 5) {     if (roundAt - 1 < 0) {       for (let k = 0; k > roundAt; k--) {         digits.unshift(0);         parsedNumber.integerLen++;       }       digits.unshift(1);       parsedNumber.integerLen++;     } else {       digits[roundAt - 1]++;     }   }    // Pad out with zeros to get the required fraction length   for (; fractionLen < Math.max(0, fractionSize); fractionLen++) digits.push(0);    let dropTrailingZeros = fractionSize !== 0;   // Minimal length = nb of decimals required + current nb of integers   // Any number besides that is optional and can be removed if it's a trailing 0   const minLen = minFrac + parsedNumber.integerLen;   // Do any carrying, e.g. a digit was rounded up to 10   const carry = digits.reduceRight(function(carry, d, i, digits) {     d = d + carry;     digits[i] = d < 10 ? d : d - 10;  // d % 10     if (dropTrailingZeros) {       // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52)       if (digits[i] === 0 && i >= minLen) {         digits.pop();       } else {         dropTrailingZeros = false;       }     }     return d >= 10 ? 1 : 0;  // Math.floor(d / 10);   }, 0);   if (carry) {     digits.unshift(carry);     parsedNumber.integerLen++;   } }  export function parseIntAutoRadix(text: string): number {   const result: number = parseInt(text);   if (isNaN(result)) {     throw new Error('Invalid integer literal when parsing ' + text);   }   return result; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, Injectable, LOCALE_ID} from '@angular/core';  import {getLocalePluralCase, Plural} from './locale_data_api';  /**  * @publicApi  */ @Injectable({   providedIn: 'root',   useFactory: (locale: string) => new NgLocaleLocalization(locale),   deps: [LOCALE_ID], }) export abstract class NgLocalization {   abstract getPluralCategory(value: any, locale?: string): string; }  /**  * Returns the plural category for a given value.  * - \"=value\" when the case exists,  * - the plural category otherwise  */ export function getPluralCategory(     value: number, cases: string[], ngLocalization: NgLocalization, locale?: string): string {   let key = `=${value}`;    if (cases.indexOf(key) > -1) {     return key;   }    key = ngLocalization.getPluralCategory(value, locale);    if (cases.indexOf(key) > -1) {     return key;   }    if (cases.indexOf('other') > -1) {     return 'other';   }    throw new Error(`No plural message found for value \"${value}\"`); }  /**  * Returns the plural case based on the locale  *  * @publicApi  */ @Injectable() export class NgLocaleLocalization extends NgLocalization {   constructor(@Inject(LOCALE_ID) protected locale: string) {     super();   }    override getPluralCategory(value: any, locale?: string): string {     const plural = getLocalePluralCase(locale || this.locale)(value);      switch (plural) {       case Plural.Zero:         return 'zero';       case Plural.One:         return 'one';       case Plural.Two:         return 'two';       case Plural.Few:         return 'few';       case Plural.Many:         return 'many';       default:         return 'other';     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵregisterLocaleData} from '@angular/core';  /**  * Register global data to be used internally by Angular. See the  * [\"I18n guide\"](guide/i18n-common-format-data-locale) to know how to import additional locale  * data.  *  * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1  *  * @publicApi  */ export function registerLocaleData(data: any, localeId?: string|any, extraData?: any): void {   return ɵregisterLocaleData(data, localeId, extraData); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export function parseCookieValue(cookieStr: string, name: string): string|null {   name = encodeURIComponent(name);   for (const cookie of cookieStr.split(';')) {     const eqIndex = cookie.indexOf('=');     const [cookieName, cookieValue]: string[] =         eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];     if (cookieName.trim() === name) {       return decodeURIComponent(cookieValue);     }   }   return null; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {Directive, DoCheck, ElementRef, Input, IterableDiffers, KeyValueDiffers, Renderer2, ɵstringify as stringify} from '@angular/core';  type NgClassSupportedTypes = string[]|Set<string>|{[klass: string]: any}|null|undefined;  const WS_REGEXP = /\\s+/;  const EMPTY_ARRAY: string[] = [];  /**  * Represents internal object used to track state of each CSS class. There are 3 different (boolean)  * flags that, combined together, indicate state of a given CSS class:  * - enabled: indicates if a class should be present in the DOM (true) or not (false);  * - changed: tracks if a class was toggled (added or removed) during the custom dirty-checking  * process; changed classes must be synchronized with the DOM;  * - touched: tracks if a class is present in the current object bound to the class / ngClass input;  * classes that are not present any more can be removed from the internal data structures;  */ interface CssClassState {   // PERF: could use a bit mask to represent state as all fields are boolean flags   enabled: boolean;   changed: boolean;   touched: boolean; }  /**  * @ngModule CommonModule  *  * @usageNotes  * ```  *     <some-element [ngClass]=\"'first second'\">...</some-element>  *  *     <some-element [ngClass]=\"['first', 'second']\">...</some-element>  *  *     <some-element [ngClass]=\"{'first': true, 'second': true, 'third': false}\">...</some-element>  *  *     <some-element [ngClass]=\"stringExp|arrayExp|objExp\">...</some-element>  *  *     <some-element [ngClass]=\"{'class1 class2 class3' : true}\">...</some-element>  * ```  *  * @description  *  * Adds and removes CSS classes on an HTML element.  *  * The CSS classes are updated as follows, depending on the type of the expression evaluation:  * - `string` - the CSS classes listed in the string (space delimited) are added,  * - `Array` - the CSS classes declared as Array elements are added,  * - `Object` - keys are CSS classes that get added when the expression given in the value  *              evaluates to a truthy value, otherwise they are removed.  *  * @publicApi  */ @Directive({   selector: '[ngClass]',   standalone: true, }) export class NgClass implements DoCheck {   private initialClasses = EMPTY_ARRAY;   private rawClass: NgClassSupportedTypes;    private stateMap = new Map<string, CssClassState>();    constructor(       // leaving references to differs in place since flex layout is extending NgClass...       private _iterableDiffers: IterableDiffers, private _keyValueDiffers: KeyValueDiffers,       private _ngEl: ElementRef, private _renderer: Renderer2) {}    @Input('class')   set klass(value: string) {     this.initialClasses = value != null ? value.trim().split(WS_REGEXP) : EMPTY_ARRAY;   }    @Input('ngClass')   set ngClass(value: string|string[]|Set<string>|{[klass: string]: any}|null|undefined) {     this.rawClass = typeof value === 'string' ? value.trim().split(WS_REGEXP) : value;   }    /*   The NgClass directive uses the custom change detection algorithm for its inputs. The custom   algorithm is necessary since inputs are represented as complex object or arrays that need to be   deeply-compared.    This algorithm is perf-sensitive since NgClass is used very frequently and its poor performance   might negatively impact runtime performance of the entire change detection cycle. The design of   this algorithm is making sure that:   - there is no unnecessary DOM manipulation (CSS classes are added / removed from the DOM only when   needed), even if references to bound objects change;   - there is no memory allocation if nothing changes (even relatively modest memory allocation   during the change detection cycle can result in GC pauses for some of the CD cycles).    The algorithm works by iterating over the set of bound classes, staring with [class] binding and   then going over [ngClass] binding. For each CSS class name:   - check if it was seen before (this information is tracked in the state map) and if its value   changed;   - mark it as \"touched\" - names that are not marked are not present in the latest set of binding   and we can remove such class name from the internal data structures;    After iteration over all the CSS class names we've got data structure with all the information   necessary to synchronize changes to the DOM - it is enough to iterate over the state map, flush   changes to the DOM and reset internal data structures so those are ready for the next change   detection cycle.    */   ngDoCheck(): void {     // classes from the [class] binding     for (const klass of this.initialClasses) {       this._updateState(klass, true);     }      // classes from the [ngClass] binding     const rawClass = this.rawClass;     if (Array.isArray(rawClass) || rawClass instanceof Set) {       for (const klass of rawClass) {         this._updateState(klass, true);       }     } else if (rawClass != null) {       for (const klass of Object.keys(rawClass)) {         this._updateState(klass, Boolean(rawClass[klass]));       }     }      this._applyStateDiff();   }    private _updateState(klass: string, nextEnabled: boolean) {     const state = this.stateMap.get(klass);     if (state !== undefined) {       if (state.enabled !== nextEnabled) {         state.changed = true;         state.enabled = nextEnabled;       }       state.touched = true;     } else {       this.stateMap.set(klass, {enabled: nextEnabled, changed: true, touched: true});     }   }    private _applyStateDiff() {     for (const stateEntry of this.stateMap) {       const klass = stateEntry[0];       const state = stateEntry[1];        if (state.changed) {         this._toggleClass(klass, state.enabled);         state.changed = false;       } else if (!state.touched) {         // A class that was previously active got removed from the new collection of classes -         // remove from the DOM as well.         if (state.enabled) {           this._toggleClass(klass, false);         }         this.stateMap.delete(klass);       }        state.touched = false;     }   }    private _toggleClass(klass: string, enabled: boolean): void {     if (ngDevMode) {       if (typeof klass !== 'string') {         throw new Error(             `NgClass can only toggle CSS classes expressed as strings, got ${stringify(klass)}`);       }     }     klass = klass.trim();     if (klass.length > 0) {       klass.split(WS_REGEXP).forEach(klass => {         if (enabled) {           this._renderer.addClass(this._ngEl.nativeElement, klass);         } else {           this._renderer.removeClass(this._ngEl.nativeElement, klass);         }       });     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ComponentRef, createNgModule, Directive, Injector, Input, NgModuleFactory, NgModuleRef, OnChanges, OnDestroy, SimpleChanges, Type, ViewContainerRef} from '@angular/core';   /**  * Instantiates a {@link Component} type and inserts its Host View into the current View.  * `NgComponentOutlet` provides a declarative approach for dynamic component creation.  *  * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and  * any existing component will be destroyed.  *  * @usageNotes  *  * ### Fine tune control  *  * You can control the component creation process by using the following optional attributes:  *  * * `ngComponentOutletInjector`: Optional custom {@link Injector} that will be used as parent for  * the Component. Defaults to the injector of the current view container.  *  * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content  * section of the component, if it exists.  *  * * `ngComponentOutletNgModule`: Optional NgModule class reference to allow loading another  * module dynamically, then loading a component from that module.  *  * * `ngComponentOutletNgModuleFactory`: Deprecated config option that allows providing optional  * NgModule factory to allow loading another module dynamically, then loading a component from that  * module. Use `ngComponentOutletNgModule` instead.  *  * ### Syntax  *  * Simple  * ```  * <ng-container *ngComponentOutlet=\"componentTypeExpression\"></ng-container>  * ```  *  * Customized injector/content  * ```  * <ng-container *ngComponentOutlet=\"componentTypeExpression;  *                                   injector: injectorExpression;  *                                   content: contentNodesExpression;\">  * </ng-container>  * ```  *  * Customized NgModule reference  * ```  * <ng-container *ngComponentOutlet=\"componentTypeExpression;  *                                   ngModule: ngModuleClass;\">  * </ng-container>  * ```  *  * ### A simple example  *  * {@example common/ngComponentOutlet/ts/module.ts region='SimpleExample'}  *  * A more complete example with additional options:  *  * {@example common/ngComponentOutlet/ts/module.ts region='CompleteExample'}  *  * @publicApi  * @ngModule CommonModule  */ @Directive({   selector: '[ngComponentOutlet]',   standalone: true, }) export class NgComponentOutlet implements OnChanges, OnDestroy {   @Input() ngComponentOutlet: Type<any>|null = null;    @Input() ngComponentOutletInjector?: Injector;   @Input() ngComponentOutletContent?: any[][];    @Input() ngComponentOutletNgModule?: Type<any>;   /**    * @deprecated This input is deprecated, use `ngComponentOutletNgModule` instead.    */   @Input() ngComponentOutletNgModuleFactory?: NgModuleFactory<any>;    private _componentRef: ComponentRef<any>|undefined;   private _moduleRef: NgModuleRef<any>|undefined;    constructor(private _viewContainerRef: ViewContainerRef) {}    /** @nodoc */   ngOnChanges(changes: SimpleChanges) {     const {       _viewContainerRef: viewContainerRef,       ngComponentOutletNgModule: ngModule,       ngComponentOutletNgModuleFactory: ngModuleFactory,     } = this;     viewContainerRef.clear();     this._componentRef = undefined;      if (this.ngComponentOutlet) {       const injector = this.ngComponentOutletInjector || viewContainerRef.parentInjector;        if (changes['ngComponentOutletNgModule'] || changes['ngComponentOutletNgModuleFactory']) {         if (this._moduleRef) this._moduleRef.destroy();          if (ngModule) {           this._moduleRef = createNgModule(ngModule, getParentInjector(injector));         } else if (ngModuleFactory) {           this._moduleRef = ngModuleFactory.create(getParentInjector(injector));         } else {           this._moduleRef = undefined;         }       }        this._componentRef = viewContainerRef.createComponent(this.ngComponentOutlet, {         index: viewContainerRef.length,         injector,         ngModuleRef: this._moduleRef,         projectableNodes: this.ngComponentOutletContent,       });     }   }    /** @nodoc */   ngOnDestroy() {     if (this._moduleRef) this._moduleRef.destroy();   } }  // Helper function that returns an Injector instance of a parent NgModule. function getParentInjector(injector: Injector): Injector {   const parentNgModule = injector.get(NgModuleRef);   return parentNgModule.injector; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, DoCheck, EmbeddedViewRef, Input, IterableChangeRecord, IterableChanges, IterableDiffer, IterableDiffers, NgIterable, TemplateRef, TrackByFunction, ViewContainerRef, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  /**  * @publicApi  */ export class NgForOfContext<T, U extends NgIterable<T> = NgIterable<T>> {   constructor(public $implicit: T, public ngForOf: U, public index: number, public count: number) {}    get first(): boolean {     return this.index === 0;   }    get last(): boolean {     return this.index === this.count - 1;   }    get even(): boolean {     return this.index % 2 === 0;   }    get odd(): boolean {     return !this.even;   } }  /**  * A [structural directive](guide/structural-directives) that renders  * a template for each item in a collection.  * The directive is placed on an element, which becomes the parent  * of the cloned templates.  *  * The `ngForOf` directive is generally used in the  * [shorthand form](guide/structural-directives#asterisk) `*ngFor`.  * In this form, the template to be rendered for each iteration is the content  * of an anchor element containing the directive.  *  * The following example shows the shorthand syntax with some options,  * contained in an `<li>` element.  *  * ```  * <li *ngFor=\"let item of items; index as i; trackBy: trackByFn\">...</li>  * ```  *  * The shorthand form expands into a long form that uses the `ngForOf` selector  * on an `<ng-template>` element.  * The content of the `<ng-template>` element is the `<li>` element that held the  * short-form directive.  *  * Here is the expanded version of the short-form example.  *  * ```  * <ng-template ngFor let-item [ngForOf]=\"items\" let-i=\"index\" [ngForTrackBy]=\"trackByFn\">  *   <li>...</li>  * </ng-template>  * ```  *  * Angular automatically expands the shorthand syntax as it compiles the template.  * The context for each embedded view is logically merged to the current component  * context according to its lexical position.  *  * When using the shorthand syntax, Angular allows only [one structural directive  * on an element](guide/structural-directives#one-per-element).  * If you want to iterate conditionally, for example,  * put the `*ngIf` on a container element that wraps the `*ngFor` element.  * For further discussion, see  * [Structural Directives](guide/structural-directives#one-per-element).  *  * @usageNotes  *  * ### Local variables  *  * `NgForOf` provides exported values that can be aliased to local variables.  * For example:  *  *  ```  * <li *ngFor=\"let user of users; index as i; first as isFirst\">  *    {{i}}/{{users.length}}. {{user}} <span *ngIf=\"isFirst\">default</span>  * </li>  * ```  *  * The following exported values can be aliased to local variables:  *  * - `$implicit: T`: The value of the individual items in the iterable (`ngForOf`).  * - `ngForOf: NgIterable<T>`: The value of the iterable expression. Useful when the expression is  * more complex then a property access, for example when using the async pipe (`userStreams |  * async`).  * - `index: number`: The index of the current item in the iterable.  * - `count: number`: The length of the iterable.  * - `first: boolean`: True when the item is the first item in the iterable.  * - `last: boolean`: True when the item is the last item in the iterable.  * - `even: boolean`: True when the item has an even index in the iterable.  * - `odd: boolean`: True when the item has an odd index in the iterable.  *  * ### Change propagation  *  * When the contents of the iterator changes, `NgForOf` makes the corresponding changes to the DOM:  *  * * When an item is added, a new instance of the template is added to the DOM.  * * When an item is removed, its template instance is removed from the DOM.  * * When items are reordered, their respective templates are reordered in the DOM.  *  * Angular uses object identity to track insertions and deletions within the iterator and reproduce  * those changes in the DOM. This has important implications for animations and any stateful  * controls that are present, such as `<input>` elements that accept user input. Inserted rows can  * be animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state  * such as user input.  * For more on animations, see [Transitions and Triggers](guide/transition-and-triggers).  *  * The identities of elements in the iterator can change while the data does not.  * This can happen, for example, if the iterator is produced from an RPC to the server, and that  * RPC is re-run. Even if the data hasn't changed, the second response produces objects with  * different identities, and Angular must tear down the entire DOM and rebuild it (as if all old  * elements were deleted and all new elements inserted).  *  * To avoid this expensive operation, you can customize the default tracking algorithm.  * by supplying the `trackBy` option to `NgForOf`.  * `trackBy` takes a function that has two arguments: `index` and `item`.  * If `trackBy` is given, Angular tracks changes by the return value of the function.  *  * @see [Structural Directives](guide/structural-directives)  * @ngModule CommonModule  * @publicApi  */ @Directive({   selector: '[ngFor][ngForOf]',   standalone: true, }) export class NgForOf<T, U extends NgIterable<T> = NgIterable<T>> implements DoCheck {   /**    * The value of the iterable expression, which can be used as a    * [template input variable](guide/structural-directives#shorthand).    */   @Input()   set ngForOf(ngForOf: U&NgIterable<T>|undefined|null) {     this._ngForOf = ngForOf;     this._ngForOfDirty = true;   }   /**    * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable.    *    * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object    * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)    * as the key.    *    * `NgForOf` uses the computed key to associate items in an iterable with DOM elements    * it produces for these items.    *    * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an    * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a    * primary key), and this iterable could be updated with new object instances that still    * represent the same underlying entity (for example, when data is re-fetched from the server,    * and the iterable is recreated and re-rendered, but most of the data is still the same).    *    * @see `TrackByFunction`    */   @Input()   set ngForTrackBy(fn: TrackByFunction<T>) {     if (NG_DEV_MODE && fn != null && typeof fn !== 'function') {       console.warn(           `trackBy must be a function, but received ${JSON.stringify(fn)}. ` +           `See https://angular.io/api/common/NgForOf#change-propagation for more information.`);     }     this._trackByFn = fn;   }    get ngForTrackBy(): TrackByFunction<T> {     return this._trackByFn;   }    private _ngForOf: U|undefined|null = null;   private _ngForOfDirty: boolean = true;   private _differ: IterableDiffer<T>|null = null;   // TODO(issue/24571): remove '!'   // waiting for microsoft/typescript#43662 to allow the return type `TrackByFunction|undefined` for   // the getter   private _trackByFn!: TrackByFunction<T>;    constructor(       private _viewContainer: ViewContainerRef,       private _template: TemplateRef<NgForOfContext<T, U>>, private _differs: IterableDiffers) {}    /**    * A reference to the template that is stamped out for each item in the iterable.    * @see [template reference variable](guide/template-reference-variables)    */   @Input()   set ngForTemplate(value: TemplateRef<NgForOfContext<T, U>>) {     // TODO(TS2.1): make TemplateRef<Partial<NgForRowOf<T>>> once we move to TS v2.1     // The current type is too restrictive; a template that just uses index, for example,     // should be acceptable.     if (value) {       this._template = value;     }   }    /**    * Applies the changes when needed.    * @nodoc    */   ngDoCheck(): void {     if (this._ngForOfDirty) {       this._ngForOfDirty = false;       // React on ngForOf changes only once all inputs have been initialized       const value = this._ngForOf;       if (!this._differ && value) {         if (NG_DEV_MODE) {           try {             // CAUTION: this logic is duplicated for production mode below, as the try-catch             // is only present in development builds.             this._differ = this._differs.find(value).create(this.ngForTrackBy);           } catch {             let errorMessage = `Cannot find a differ supporting object '${value}' of type '` +                 `${getTypeName(value)}'. NgFor only supports binding to Iterables, such as Arrays.`;             if (typeof value === 'object') {               errorMessage += ' Did you mean to use the keyvalue pipe?';             }             throw new RuntimeError(RuntimeErrorCode.NG_FOR_MISSING_DIFFER, errorMessage);           }         } else {           // CAUTION: this logic is duplicated for development mode above, as the try-catch           // is only present in development builds.           this._differ = this._differs.find(value).create(this.ngForTrackBy);         }       }     }     if (this._differ) {       const changes = this._differ.diff(this._ngForOf);       if (changes) this._applyChanges(changes);     }   }    private _applyChanges(changes: IterableChanges<T>) {     const viewContainer = this._viewContainer;     changes.forEachOperation(         (item: IterableChangeRecord<T>, adjustedPreviousIndex: number|null,          currentIndex: number|null) => {           if (item.previousIndex == null) {             // NgForOf is never \"null\" or \"undefined\" here because the differ detected             // that a new item needs to be inserted from the iterable. This implies that             // there is an iterable value for \"_ngForOf\".             viewContainer.createEmbeddedView(                 this._template, new NgForOfContext<T, U>(item.item, this._ngForOf!, -1, -1),                 currentIndex === null ? undefined : currentIndex);           } else if (currentIndex == null) {             viewContainer.remove(                 adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);           } else if (adjustedPreviousIndex !== null) {             const view = viewContainer.get(adjustedPreviousIndex)!;             viewContainer.move(view, currentIndex);             applyViewChange(view as EmbeddedViewRef<NgForOfContext<T, U>>, item);           }         });      for (let i = 0, ilen = viewContainer.length; i < ilen; i++) {       const viewRef = <EmbeddedViewRef<NgForOfContext<T, U>>>viewContainer.get(i);       const context = viewRef.context;       context.index = i;       context.count = ilen;       context.ngForOf = this._ngForOf!;     }      changes.forEachIdentityChange((record: any) => {       const viewRef = <EmbeddedViewRef<NgForOfContext<T, U>>>viewContainer.get(record.currentIndex);       applyViewChange(viewRef, record);     });   }    /**    * Asserts the correct type of the context for the template that `NgForOf` will render.    *    * The presence of this method is a signal to the Ivy template type-check compiler that the    * `NgForOf` structural directive renders its template with a specific context type.    */   static ngTemplateContextGuard<T, U extends NgIterable<T>>(dir: NgForOf<T, U>, ctx: any):       ctx is NgForOfContext<T, U> {     return true;   } }  // Also export the `NgForOf` class as `NgFor` to improve the DX for // cases when the directive is used as standalone, so the class name // matches the CSS selector (*ngFor). export {NgForOf as NgFor};  function applyViewChange<T>(     view: EmbeddedViewRef<NgForOfContext<T>>, record: IterableChangeRecord<T>) {   view.context.$implicit = record.item; }  function getTypeName(type: any): string {   return type['name'] || typeof type; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, EmbeddedViewRef, Input, TemplateRef, ViewContainerRef, ɵstringify as stringify} from '@angular/core';   /**  * A structural directive that conditionally includes a template based on the value of  * an expression coerced to Boolean.  * When the expression evaluates to true, Angular renders the template  * provided in a `then` clause, and when  false or null,  * Angular renders the template provided in an optional `else` clause. The default  * template for the `else` clause is blank.  *  * A [shorthand form](guide/structural-directives#asterisk) of the directive,  * `*ngIf=\"condition\"`, is generally used, provided  * as an attribute of the anchor element for the inserted template.  * Angular expands this into a more explicit version, in which the anchor element  * is contained in an `<ng-template>` element.  *  * Simple form with shorthand syntax:  *  * ```  * <div *ngIf=\"condition\">Content to render when condition is true.</div>  * ```  *  * Simple form with expanded syntax:  *  * ```  * <ng-template [ngIf]=\"condition\"><div>Content to render when condition is  * true.</div></ng-template>  * ```  *  * Form with an \"else\" block:  *  * ```  * <div *ngIf=\"condition; else elseBlock\">Content to render when condition is true.</div>  * <ng-template #elseBlock>Content to render when condition is false.</ng-template>  * ```  *  * Shorthand form with \"then\" and \"else\" blocks:  *  * ```  * <div *ngIf=\"condition; then thenBlock else elseBlock\"></div>  * <ng-template #thenBlock>Content to render when condition is true.</ng-template>  * <ng-template #elseBlock>Content to render when condition is false.</ng-template>  * ```  *  * Form with storing the value locally:  *  * ```  * <div *ngIf=\"condition as value; else elseBlock\">{{value}}</div>  * <ng-template #elseBlock>Content to render when value is null.</ng-template>  * ```  *  * @usageNotes  *  * The `*ngIf` directive is most commonly used to conditionally show an inline template,  * as seen in the following  example.  * The default `else` template is blank.  *  * {@example common/ngIf/ts/module.ts region='NgIfSimple'}  *  * ### Showing an alternative template using `else`  *  * To display a template when `expression` evaluates to false, use an `else` template  * binding as shown in the following example.  * The `else` binding points to an `<ng-template>`  element labeled `#elseBlock`.  * The template can be defined anywhere in the component view, but is typically placed right after  * `ngIf` for readability.  *  * {@example common/ngIf/ts/module.ts region='NgIfElse'}  *  * ### Using an external `then` template  *  * In the previous example, the then-clause template is specified inline, as the content of the  * tag that contains the `ngIf` directive. You can also specify a template that is defined  * externally, by referencing a labeled `<ng-template>` element. When you do this, you can  * change which template to use at runtime, as shown in the following example.  *  * {@example common/ngIf/ts/module.ts region='NgIfThenElse'}  *  * ### Storing a conditional result in a variable  *  * You might want to show a set of properties from the same object. If you are waiting  * for asynchronous data, the object can be undefined.  * In this case, you can use `ngIf` and store the result of the condition in a local  * variable as shown in the following example.  *  * {@example common/ngIf/ts/module.ts region='NgIfAs'}  *  * This code uses only one `AsyncPipe`, so only one subscription is created.  * The conditional statement stores the result of `userStream|async` in the local variable `user`.  * You can then bind the local `user` repeatedly.  *  * The conditional displays the data only if `userStream` returns a value,  * so you don't need to use the  * safe-navigation-operator (`?.`)  * to guard against null values when accessing properties.  * You can display an alternative template while waiting for the data.  *  * ### Shorthand syntax  *  * The shorthand syntax `*ngIf` expands into two separate template specifications  * for the \"then\" and \"else\" clauses. For example, consider the following shorthand statement,  * that is meant to show a loading page while waiting for data to be loaded.  *  * ```  * <div class=\"hero-list\" *ngIf=\"heroes else loading\">  *  ...  * </div>  *  * <ng-template #loading>  *  <div>Loading...</div>  * </ng-template>  * ```  *  * You can see that the \"else\" clause references the `<ng-template>`  * with the `#loading` label, and the template for the \"then\" clause  * is provided as the content of the anchor element.  *  * However, when Angular expands the shorthand syntax, it creates  * another `<ng-template>` tag, with `ngIf` and `ngIfElse` directives.  * The anchor element containing the template for the \"then\" clause becomes  * the content of this unlabeled `<ng-template>` tag.  *  * ```  * <ng-template [ngIf]=\"heroes\" [ngIfElse]=\"loading\">  *  <div class=\"hero-list\">  *   ...  *  </div>  * </ng-template>  *  * <ng-template #loading>  *  <div>Loading...</div>  * </ng-template>  * ```  *  * The presence of the implicit template object has implications for the nesting of  * structural directives. For more on this subject, see  * [Structural Directives](guide/structural-directives#one-per-element).  *  * @ngModule CommonModule  * @publicApi  */ @Directive({   selector: '[ngIf]',   standalone: true, }) export class NgIf<T = unknown> {   private _context: NgIfContext<T> = new NgIfContext<T>();   private _thenTemplateRef: TemplateRef<NgIfContext<T>>|null = null;   private _elseTemplateRef: TemplateRef<NgIfContext<T>>|null = null;   private _thenViewRef: EmbeddedViewRef<NgIfContext<T>>|null = null;   private _elseViewRef: EmbeddedViewRef<NgIfContext<T>>|null = null;    constructor(private _viewContainer: ViewContainerRef, templateRef: TemplateRef<NgIfContext<T>>) {     this._thenTemplateRef = templateRef;   }    /**    * The Boolean expression to evaluate as the condition for showing a template.    */   @Input()   set ngIf(condition: T) {     this._context.$implicit = this._context.ngIf = condition;     this._updateView();   }    /**    * A template to show if the condition expression evaluates to true.    */   @Input()   set ngIfThen(templateRef: TemplateRef<NgIfContext<T>>|null) {     assertTemplate('ngIfThen', templateRef);     this._thenTemplateRef = templateRef;     this._thenViewRef = null;  // clear previous view if any.     this._updateView();   }    /**    * A template to show if the condition expression evaluates to false.    */   @Input()   set ngIfElse(templateRef: TemplateRef<NgIfContext<T>>|null) {     assertTemplate('ngIfElse', templateRef);     this._elseTemplateRef = templateRef;     this._elseViewRef = null;  // clear previous view if any.     this._updateView();   }    private _updateView() {     if (this._context.$implicit) {       if (!this._thenViewRef) {         this._viewContainer.clear();         this._elseViewRef = null;         if (this._thenTemplateRef) {           this._thenViewRef =               this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);         }       }     } else {       if (!this._elseViewRef) {         this._viewContainer.clear();         this._thenViewRef = null;         if (this._elseTemplateRef) {           this._elseViewRef =               this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);         }       }     }   }    /** @internal */   public static ngIfUseIfTypeGuard: void;    /**    * Assert the correct type of the expression bound to the `ngIf` input within the template.    *    * The presence of this static field is a signal to the Ivy template type check compiler that    * when the `NgIf` structural directive renders its template, the type of the expression bound    * to `ngIf` should be narrowed in some way. For `NgIf`, the binding expression itself is used to    * narrow its type, which allows the strictNullChecks feature of TypeScript to work with `NgIf`.    */   static ngTemplateGuard_ngIf: 'binding';    /**    * Asserts the correct type of the context for the template that `NgIf` will render.    *    * The presence of this method is a signal to the Ivy template type-check compiler that the    * `NgIf` structural directive renders its template with a specific context type.    */   static ngTemplateContextGuard<T>(dir: NgIf<T>, ctx: any):       ctx is NgIfContext<Exclude<T, false|0|''|null|undefined>> {     return true;   } }  /**  * @publicApi  */ export class NgIfContext<T = unknown> {   public $implicit: T = null!;   public ngIf: T = null!; }  function assertTemplate(property: string, templateRef: TemplateRef<any>|null): void {   const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);   if (!isTemplateRefOrNull) {     throw new Error(`${property} must be a TemplateRef, but received '${stringify(templateRef)}'.`);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, DoCheck, Host, Input, Optional, TemplateRef, ViewContainerRef, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  export class SwitchView {   private _created = false;    constructor(       private _viewContainerRef: ViewContainerRef, private _templateRef: TemplateRef<Object>) {}    create(): void {     this._created = true;     this._viewContainerRef.createEmbeddedView(this._templateRef);   }    destroy(): void {     this._created = false;     this._viewContainerRef.clear();   }    enforceState(created: boolean) {     if (created && !this._created) {       this.create();     } else if (!created && this._created) {       this.destroy();     }   } }  /**  * @ngModule CommonModule  *  * @description  * The `[ngSwitch]` directive on a container specifies an expression to match against.  * The expressions to match are provided by `ngSwitchCase` directives on views within the container.  * - Every view that matches is rendered.  * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered.  * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase`  * or `ngSwitchDefault` directive are preserved at the location.  *  * @usageNotes  * Define a container element for the directive, and specify the switch expression  * to match against as an attribute:  *  * ```  * <container-element [ngSwitch]=\"switch_expression\">  * ```  *  * Within the container, `*ngSwitchCase` statements specify the match expressions  * as attributes. Include `*ngSwitchDefault` as the final case.  *  * ```  * <container-element [ngSwitch]=\"switch_expression\">  *    <some-element *ngSwitchCase=\"match_expression_1\">...</some-element>  * ...  *    <some-element *ngSwitchDefault>...</some-element>  * </container-element>  * ```  *  * ### Usage Examples  *  * The following example shows how to use more than one case to display the same view:  *  * ```  * <container-element [ngSwitch]=\"switch_expression\">  *   <!-- the same view can be shown in more than one case -->  *   <some-element *ngSwitchCase=\"match_expression_1\">...</some-element>  *   <some-element *ngSwitchCase=\"match_expression_2\">...</some-element>  *   <some-other-element *ngSwitchCase=\"match_expression_3\">...</some-other-element>  *   <!--default case when there are no matches -->  *   <some-element *ngSwitchDefault>...</some-element>  * </container-element>  * ```  *  * The following example shows how cases can be nested:  * ```  * <container-element [ngSwitch]=\"switch_expression\">  *       <some-element *ngSwitchCase=\"match_expression_1\">...</some-element>  *       <some-element *ngSwitchCase=\"match_expression_2\">...</some-element>  *       <some-other-element *ngSwitchCase=\"match_expression_3\">...</some-other-element>  *       <ng-container *ngSwitchCase=\"match_expression_3\">  *         <!-- use a ng-container to group multiple root nodes -->  *         <inner-element></inner-element>  *         <inner-other-element></inner-other-element>  *       </ng-container>  *       <some-element *ngSwitchDefault>...</some-element>  *     </container-element>  * ```  *  * @publicApi  * @see `NgSwitchCase`  * @see `NgSwitchDefault`  * @see [Structural Directives](guide/structural-directives)  *  */ @Directive({   selector: '[ngSwitch]',   standalone: true, }) export class NgSwitch {   private _defaultViews: SwitchView[] = [];   private _defaultUsed = false;   private _caseCount = 0;   private _lastCaseCheckIndex = 0;   private _lastCasesMatched = false;   private _ngSwitch: any;    @Input()   set ngSwitch(newValue: any) {     this._ngSwitch = newValue;     if (this._caseCount === 0) {       this._updateDefaultCases(true);     }   }    /** @internal */   _addCase(): number {     return this._caseCount++;   }    /** @internal */   _addDefault(view: SwitchView) {     this._defaultViews.push(view);   }    /** @internal */   _matchCase(value: any): boolean {     const matched = value == this._ngSwitch;     this._lastCasesMatched = this._lastCasesMatched || matched;     this._lastCaseCheckIndex++;     if (this._lastCaseCheckIndex === this._caseCount) {       this._updateDefaultCases(!this._lastCasesMatched);       this._lastCaseCheckIndex = 0;       this._lastCasesMatched = false;     }     return matched;   }    private _updateDefaultCases(useDefault: boolean) {     if (this._defaultViews.length > 0 && useDefault !== this._defaultUsed) {       this._defaultUsed = useDefault;       for (const defaultView of this._defaultViews) {         defaultView.enforceState(useDefault);       }     }   } }  /**  * @ngModule CommonModule  *  * @description  * Provides a switch case expression to match against an enclosing `ngSwitch` expression.  * When the expressions match, the given `NgSwitchCase` template is rendered.  * If multiple match expressions match the switch expression value, all of them are displayed.  *  * @usageNotes  *  * Within a switch container, `*ngSwitchCase` statements specify the match expressions  * as attributes. Include `*ngSwitchDefault` as the final case.  *  * ```  * <container-element [ngSwitch]=\"switch_expression\">  *   <some-element *ngSwitchCase=\"match_expression_1\">...</some-element>  *   ...  *   <some-element *ngSwitchDefault>...</some-element>  * </container-element>  * ```  *  * Each switch-case statement contains an in-line HTML template or template reference  * that defines the subtree to be selected if the value of the match expression  * matches the value of the switch expression.  *  * Unlike JavaScript, which uses strict equality, Angular uses loose equality.  * This means that the empty string, `\"\"` matches 0.  *  * @publicApi  * @see `NgSwitch`  * @see `NgSwitchDefault`  *  */ @Directive({   selector: '[ngSwitchCase]',   standalone: true, }) export class NgSwitchCase implements DoCheck {   private _view: SwitchView;   /**    * Stores the HTML template to be selected on match.    */   @Input() ngSwitchCase: any;    constructor(       viewContainer: ViewContainerRef, templateRef: TemplateRef<Object>,       @Optional() @Host() private ngSwitch: NgSwitch) {     if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {       throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase');     }      ngSwitch._addCase();     this._view = new SwitchView(viewContainer, templateRef);   }    /**    * Performs case matching. For internal use only.    * @nodoc    */   ngDoCheck() {     this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));   } }  /**  * @ngModule CommonModule  *  * @description  *  * Creates a view that is rendered when no `NgSwitchCase` expressions  * match the `NgSwitch` expression.  * This statement should be the final case in an `NgSwitch`.  *  * @publicApi  * @see `NgSwitch`  * @see `NgSwitchCase`  *  */ @Directive({   selector: '[ngSwitchDefault]',   standalone: true, }) export class NgSwitchDefault {   constructor(       viewContainer: ViewContainerRef, templateRef: TemplateRef<Object>,       @Optional() @Host() ngSwitch: NgSwitch) {     if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {       throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault');     }      ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));   } }  function throwNgSwitchProviderNotFoundError(attrName: string, directiveName: string): never {   throw new RuntimeError(       RuntimeErrorCode.PARENT_NG_SWITCH_NOT_FOUND,       `An element with the \"${attrName}\" attribute ` +           `(matching the \"${               directiveName}\" directive) must be located inside an element with the \"ngSwitch\" attribute ` +           `(matching \"NgSwitch\" directive)`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Attribute, Directive, Host, Input, TemplateRef, ViewContainerRef} from '@angular/core';  import {getPluralCategory, NgLocalization} from '../i18n/localization';  import {SwitchView} from './ng_switch';  /**  * @ngModule CommonModule  *  * @usageNotes  * ```  * <some-element [ngPlural]=\"value\">  *   <ng-template ngPluralCase=\"=0\">there is nothing</ng-template>  *   <ng-template ngPluralCase=\"=1\">there is one</ng-template>  *   <ng-template ngPluralCase=\"few\">there are a few</ng-template>  * </some-element>  * ```  *  * @description  *  * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization.  *  * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees  * that match the switch expression's pluralization category.  *  * To use this directive you must provide a container element that sets the `[ngPlural]` attribute  * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their  * expression:  * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value  *   matches the switch expression exactly,  * - otherwise, the view will be treated as a \"category match\", and will only display if exact  *   value matches aren't found and the value maps to its category for the defined locale.  *  * See http://cldr.unicode.org/index/cldr-spec/plural-rules  *  * @publicApi  */ @Directive({   selector: '[ngPlural]',   standalone: true, }) export class NgPlural {   private _activeView?: SwitchView;   private _caseViews: {[k: string]: SwitchView} = {};    constructor(private _localization: NgLocalization) {}    @Input()   set ngPlural(value: number) {     this._updateView(value);   }    addCase(value: string, switchView: SwitchView): void {     this._caseViews[value] = switchView;   }    private _updateView(switchValue: number): void {     this._clearViews();      const cases = Object.keys(this._caseViews);     const key = getPluralCategory(switchValue, cases, this._localization);     this._activateView(this._caseViews[key]);   }    private _clearViews() {     if (this._activeView) this._activeView.destroy();   }    private _activateView(view: SwitchView) {     if (view) {       this._activeView = view;       this._activeView.create();     }   } }  /**  * @ngModule CommonModule  *  * @description  *  * Creates a view that will be added/removed from the parent {@link NgPlural} when the  * given expression matches the plural expression according to CLDR rules.  *  * @usageNotes  * ```  * <some-element [ngPlural]=\"value\">  *   <ng-template ngPluralCase=\"=0\">...</ng-template>  *   <ng-template ngPluralCase=\"other\">...</ng-template>  * </some-element>  *```  *  * See {@link NgPlural} for more details and example.  *  * @publicApi  */ @Directive({   selector: '[ngPluralCase]',   standalone: true, }) export class NgPluralCase {   constructor(       @Attribute('ngPluralCase') public value: string, template: TemplateRef<Object>,       viewContainer: ViewContainerRef, @Host() ngPlural: NgPlural) {     const isANumber: boolean = !isNaN(Number(value));     ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */ import {Directive, DoCheck, ElementRef, Input, KeyValueChanges, KeyValueDiffer, KeyValueDiffers, Renderer2, RendererStyleFlags2} from '@angular/core';   /**  * @ngModule CommonModule  *  * @usageNotes  *  * Set the font of the containing element to the result of an expression.  *  * ```  * <some-element [ngStyle]=\"{'font-style': styleExp}\">...</some-element>  * ```  *  * Set the width of the containing element to a pixel value returned by an expression.  *  * ```  * <some-element [ngStyle]=\"{'max-width.px': widthExp}\">...</some-element>  * ```  *  * Set a collection of style values using an expression that returns key-value pairs.  *  * ```  * <some-element [ngStyle]=\"objExp\">...</some-element>  * ```  *  * @description  *  * An attribute directive that updates styles for the containing HTML element.  * Sets one or more style properties, specified as colon-separated key-value pairs.  * The key is a style name, with an optional `.<unit>` suffix  * (such as 'top.px', 'font-style.em').  * The value is an expression to be evaluated.  * The resulting non-null value, expressed in the given unit,  * is assigned to the given style property.  * If the result of evaluation is null, the corresponding style is removed.  *  * @publicApi  */ @Directive({   selector: '[ngStyle]',   standalone: true, }) export class NgStyle implements DoCheck {   private _ngStyle: {[key: string]: string}|null|undefined = null;   private _differ: KeyValueDiffer<string, string|number>|null = null;    constructor(       private _ngEl: ElementRef, private _differs: KeyValueDiffers, private _renderer: Renderer2) {}    @Input('ngStyle')   set ngStyle(values: {[klass: string]: any}|null|undefined) {     this._ngStyle = values;     if (!this._differ && values) {       this._differ = this._differs.find(values).create();     }   }    ngDoCheck() {     if (this._differ) {       const changes = this._differ.diff(this._ngStyle!);       if (changes) {         this._applyChanges(changes);       }     }   }    private _setStyle(nameAndUnit: string, value: string|number|null|undefined): void {     const [name, unit] = nameAndUnit.split('.');     const flags = name.indexOf('-') === -1 ? undefined : RendererStyleFlags2.DashCase as number;      if (value != null) {       this._renderer.setStyle(           this._ngEl.nativeElement, name, unit ? `${value}${unit}` : value, flags);     } else {       this._renderer.removeStyle(this._ngEl.nativeElement, name, flags);     }   }    private _applyChanges(changes: KeyValueChanges<string, string|number>): void {     changes.forEachRemovedItem((record) => this._setStyle(record.key, null));     changes.forEachAddedItem((record) => this._setStyle(record.key, record.currentValue));     changes.forEachChangedItem((record) => this._setStyle(record.key, record.currentValue));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, EmbeddedViewRef, Injector, Input, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef} from '@angular/core';  /**  * @ngModule CommonModule  *  * @description  *  * Inserts an embedded view from a prepared `TemplateRef`.  *  * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`.  * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding  * by the local template `let` declarations.  *  * @usageNotes  * ```  * <ng-container *ngTemplateOutlet=\"templateRefExp; context: contextExp\"></ng-container>  * ```  *  * Using the key `$implicit` in the context object will set its value as default.  *  * ### Example  *  * {@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'}  *  * @publicApi  */ @Directive({   selector: '[ngTemplateOutlet]',   standalone: true, }) export class NgTemplateOutlet implements OnChanges {   private _viewRef: EmbeddedViewRef<any>|null = null;    /**    * A context object to attach to the {@link EmbeddedViewRef}. This should be an    * object, the object's keys will be available for binding by the local template `let`    * declarations.    * Using the key `$implicit` in the context object will set its value as default.    */   @Input() public ngTemplateOutletContext: Object|null = null;    /**    * A string defining the template reference and optionally the context object for the template.    */   @Input() public ngTemplateOutlet: TemplateRef<any>|null = null;    /** Injector to be used within the embedded view. */   @Input() public ngTemplateOutletInjector: Injector|null = null;    constructor(private _viewContainerRef: ViewContainerRef) {}    /** @nodoc */   ngOnChanges(changes: SimpleChanges) {     if (changes['ngTemplateOutlet'] || changes['ngTemplateOutletInjector']) {       const viewContainerRef = this._viewContainerRef;        if (this._viewRef) {         viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));       }        if (this.ngTemplateOutlet) {         const {           ngTemplateOutlet: template,           ngTemplateOutletContext: context,           ngTemplateOutletInjector: injector         } = this;         this._viewRef = viewContainerRef.createEmbeddedView(             template, context, injector ? {injector} : undefined);       } else {         this._viewRef = null;       }     } else if (         this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) {       this._viewRef.context = this.ngTemplateOutletContext;     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Provider} from '@angular/core';  import {NgClass} from './ng_class'; import {NgComponentOutlet} from './ng_component_outlet'; import {NgFor, NgForOf, NgForOfContext} from './ng_for_of'; import {NgIf, NgIfContext} from './ng_if'; import {NgPlural, NgPluralCase} from './ng_plural'; import {NgStyle} from './ng_style'; import {NgSwitch, NgSwitchCase, NgSwitchDefault} from './ng_switch'; import {NgTemplateOutlet} from './ng_template_outlet';  export {   NgClass,   NgComponentOutlet,   NgFor,   NgForOf,   NgForOfContext,   NgIf,   NgIfContext,   NgPlural,   NgPluralCase,   NgStyle,   NgSwitch,   NgSwitchCase,   NgSwitchDefault,   NgTemplateOutlet, };    /**  * A collection of Angular directives that are likely to be used in each and every Angular  * application.  */ export const COMMON_DIRECTIVES: Provider[] = [   NgClass,   NgComponentOutlet,   NgForOf,   NgIf,   NgTemplateOutlet,   NgStyle,   NgSwitch,   NgSwitchCase,   NgSwitchDefault,   NgPlural,   NgPluralCase, ]; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Type, ɵRuntimeError as RuntimeError, ɵstringify as stringify} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  export function invalidPipeArgumentError(type: Type<any>, value: Object) {   return new RuntimeError(       RuntimeErrorCode.INVALID_PIPE_ARGUMENT,       ngDevMode && `InvalidPipeArgument: '${value}' for pipe '${stringify(type)}'`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ChangeDetectorRef, EventEmitter, OnDestroy, Pipe, PipeTransform, ɵisPromise, ɵisSubscribable} from '@angular/core'; import {Observable, Subscribable, Unsubscribable} from 'rxjs';  import {invalidPipeArgumentError} from './invalid_pipe_argument_error';  interface SubscriptionStrategy {   createSubscription(async: Subscribable<any>|Promise<any>, updateLatestValue: any): Unsubscribable       |Promise<any>;   dispose(subscription: Unsubscribable|Promise<any>): void; }  class SubscribableStrategy implements SubscriptionStrategy {   createSubscription(async: Subscribable<any>, updateLatestValue: any): Unsubscribable {     return async.subscribe({       next: updateLatestValue,       error: (e: any) => {         throw e;       }     });   }    dispose(subscription: Unsubscribable): void {     subscription.unsubscribe();   } }  class PromiseStrategy implements SubscriptionStrategy {   createSubscription(async: Promise<any>, updateLatestValue: (v: any) => any): Promise<any> {     return async.then(updateLatestValue, e => {       throw e;     });   }    dispose(subscription: Promise<any>): void {} }  const _promiseStrategy = new PromiseStrategy(); const _subscribableStrategy = new SubscribableStrategy();  /**  * @ngModule CommonModule  * @description  *  * Unwraps a value from an asynchronous primitive.  *  * The `async` pipe subscribes to an `Observable` or `Promise` and returns the latest value it has  * emitted. When a new value is emitted, the `async` pipe marks the component to be checked for  * changes. When the component gets destroyed, the `async` pipe unsubscribes automatically to avoid  * potential memory leaks. When the reference of the expression changes, the `async` pipe  * automatically unsubscribes from the old `Observable` or `Promise` and subscribes to the new one.  *  * @usageNotes  *  * ### Examples  *  * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the  * promise.  *  * {@example common/pipes/ts/async_pipe.ts region='AsyncPipePromise'}  *  * It's also possible to use `async` with Observables. The example below binds the `time` Observable  * to the view. The Observable continuously updates the view with the current time.  *  * {@example common/pipes/ts/async_pipe.ts region='AsyncPipeObservable'}  *  * @publicApi  */ @Pipe({   name: 'async',   pure: false,   standalone: true, }) export class AsyncPipe implements OnDestroy, PipeTransform {   private _ref: ChangeDetectorRef|null;   private _latestValue: any = null;    private _subscription: Unsubscribable|Promise<any>|null = null;   private _obj: Subscribable<any>|Promise<any>|EventEmitter<any>|null = null;   private _strategy: SubscriptionStrategy|null = null;    constructor(ref: ChangeDetectorRef) {     // Assign `ref` into `this._ref` manually instead of declaring `_ref` in the constructor     // parameter list, as the type of `this._ref` includes `null` unlike the type of `ref`.     this._ref = ref;   }    ngOnDestroy(): void {     if (this._subscription) {       this._dispose();     }     // Clear the `ChangeDetectorRef` and its association with the view data, to mitigate     // potential memory leaks in Observables that could otherwise cause the view data to     // be retained.     // https://github.com/angular/angular/issues/17624     this._ref = null;   }    // NOTE(@benlesh): Because Observable has deprecated a few call patterns for `subscribe`,   // TypeScript has a hard time matching Observable to Subscribable, for more information   // see https://github.com/microsoft/TypeScript/issues/43643    transform<T>(obj: Observable<T>|Subscribable<T>|Promise<T>): T|null;   transform<T>(obj: null|undefined): null;   transform<T>(obj: Observable<T>|Subscribable<T>|Promise<T>|null|undefined): T|null;   transform<T>(obj: Observable<T>|Subscribable<T>|Promise<T>|null|undefined): T|null {     if (!this._obj) {       if (obj) {         this._subscribe(obj);       }       return this._latestValue;     }      if (obj !== this._obj) {       this._dispose();       return this.transform(obj);     }      return this._latestValue;   }    private _subscribe(obj: Subscribable<any>|Promise<any>|EventEmitter<any>): void {     this._obj = obj;     this._strategy = this._selectStrategy(obj);     this._subscription = this._strategy.createSubscription(         obj, (value: Object) => this._updateLatestValue(obj, value));   }    private _selectStrategy(obj: Subscribable<any>|Promise<any>|                           EventEmitter<any>): SubscriptionStrategy {     if (ɵisPromise(obj)) {       return _promiseStrategy;     }      if (ɵisSubscribable(obj)) {       return _subscribableStrategy;     }      throw invalidPipeArgumentError(AsyncPipe, obj);   }    private _dispose(): void {     // Note: `dispose` is only called if a subscription has been initialized before, indicating     // that `this._strategy` is also available.     this._strategy!.dispose(this._subscription!);     this._latestValue = null;     this._subscription = null;     this._obj = null;   }    private _updateLatestValue(async: any, value: Object): void {     if (async === this._obj) {       this._latestValue = value;       // Note: `this._ref` is only cleared in `ngOnDestroy` so is known to be available when a       // value is being updated.       this._ref!.markForCheck();     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Pipe, PipeTransform} from '@angular/core';  import {invalidPipeArgumentError} from './invalid_pipe_argument_error';  /**  * Transforms text to all lower case.  *  * @see `UpperCasePipe`  * @see `TitleCasePipe`  * @usageNotes  *  * The following example defines a view that allows the user to enter  * text, and then uses the pipe to convert the input text to all lower case.  *  * <code-example path=\"common/pipes/ts/lowerupper_pipe.ts\" region='LowerUpperPipe'></code-example>  *  * @ngModule CommonModule  * @publicApi  */ @Pipe({   name: 'lowercase',   standalone: true, }) export class LowerCasePipe implements PipeTransform {   /**    * @param value The string to transform to lower case.    */   transform(value: string): string;   transform(value: null|undefined): null;   transform(value: string|null|undefined): string|null;   transform(value: string|null|undefined): string|null {     if (value == null) return null;     if (typeof value !== 'string') {       throw invalidPipeArgumentError(LowerCasePipe, value);     }     return value.toLowerCase();   } }  // // Regex below matches any Unicode word and number compatible with ES5. In ES2018 the same result // can be achieved by using /[0-9\\p{L}]\\S*/gu and also known as Unicode Property Escapes // (https://2ality.com/2017/07/regexp-unicode-property-escapes.html). Since there is no // transpilation of this functionality down to ES5 without external tool, the only solution is // to use already transpiled form. Example can be found here - // https://mothereff.in/regexpu#input=var+regex+%3D+%2F%5B0-9%5Cp%7BL%7D%5D%5CS*%2Fgu%3B%0A%0A&unicodePropertyEscape=1 //  const unicodeWordMatch =     /(?:[0-9A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\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\\u0AF9\\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-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\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-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\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\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])\\S*/g;  /**  * Transforms text to title case.  * Capitalizes the first letter of each word and transforms the  * rest of the word to lower case.  * Words are delimited by any whitespace character, such as a space, tab, or line-feed character.  *  * @see `LowerCasePipe`  * @see `UpperCasePipe`  *  * @usageNotes  * The following example shows the result of transforming various strings into title case.  *  * <code-example path=\"common/pipes/ts/titlecase_pipe.ts\" region='TitleCasePipe'></code-example>  *  * @ngModule CommonModule  * @publicApi  */ @Pipe({   name: 'titlecase',   standalone: true, }) export class TitleCasePipe implements PipeTransform {   /**    * @param value The string to transform to title case.    */   transform(value: string): string;   transform(value: null|undefined): null;   transform(value: string|null|undefined): string|null;   transform(value: string|null|undefined): string|null {     if (value == null) return null;     if (typeof value !== 'string') {       throw invalidPipeArgumentError(TitleCasePipe, value);     }      return value.replace(         unicodeWordMatch, (txt => txt[0].toUpperCase() + txt.slice(1).toLowerCase()));   } }  /**  * Transforms text to all upper case.  * @see `LowerCasePipe`  * @see `TitleCasePipe`  *  * @ngModule CommonModule  * @publicApi  */ @Pipe({   name: 'uppercase',   standalone: true, }) export class UpperCasePipe implements PipeTransform {   /**    * @param value The string to transform to upper case.    */   transform(value: string): string;   transform(value: null|undefined): null;   transform(value: string|null|undefined): string|null;   transform(value: string|null|undefined): string|null {     if (value == null) return null;     if (typeof value !== 'string') {       throw invalidPipeArgumentError(UpperCasePipe, value);     }     return value.toUpperCase();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * An interface that describes the date pipe configuration, which can be provided using the  * `DATE_PIPE_DEFAULT_OPTIONS` token.  *  * @see `DATE_PIPE_DEFAULT_OPTIONS`  *  * @publicApi  */ export interface DatePipeConfig {   dateFormat: string;   timezone: string; }  /**  * The default date format of Angular date pipe, which corresponds to the following format:  * `'MMM d,y'` (e.g. `Jun 15, 2015`)  */ export const DEFAULT_DATE_FORMAT = 'mediumDate'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, InjectionToken, LOCALE_ID, Optional, Pipe, PipeTransform} from '@angular/core';  import {formatDate} from '../i18n/format_date';  import {DatePipeConfig, DEFAULT_DATE_FORMAT} from './date_pipe_config'; import {invalidPipeArgumentError} from './invalid_pipe_argument_error';  /**  * Optionally-provided default timezone to use for all instances of `DatePipe` (such as `'+0430'`).  * If the value isn't provided, the `DatePipe` will use the end-user's local system timezone.  *  * @deprecated use DATE_PIPE_DEFAULT_OPTIONS token to configure DatePipe  */ export const DATE_PIPE_DEFAULT_TIMEZONE = new InjectionToken<string>('DATE_PIPE_DEFAULT_TIMEZONE');  /**  * DI token that allows to provide default configuration for the `DatePipe` instances in an  * application. The value is an object which can include the following fields:  * - `dateFormat`: configures the default date format. If not provided, the `DatePipe`  * will use the 'mediumDate' as a value.  * - `timezone`: configures the default timezone. If not provided, the `DatePipe` will  * use the end-user's local system timezone.  *  * @see `DatePipeConfig`  *  * @usageNotes  *  * Various date pipe default values can be overwritten by providing this token with  * the value that has this interface.  *  * For example:  *  * Override the default date format by providing a value using the token:  * ```typescript  * providers: [  *   {provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: {dateFormat: 'shortDate'}}  * ]  * ```  *  * Override the default timezone by providing a value using the token:  * ```typescript  * providers: [  *   {provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: {timezone: '-1200'}}  * ]  * ```  */ export const DATE_PIPE_DEFAULT_OPTIONS =     new InjectionToken<DatePipeConfig>('DATE_PIPE_DEFAULT_OPTIONS');  // clang-format off /**  * @ngModule CommonModule  * @description  *  * Formats a date value according to locale rules.  *  * `DatePipe` is executed only when it detects a pure change to the input value.  * A pure change is either a change to a primitive input value  * (such as `String`, `Number`, `Boolean`, or `Symbol`),  * or a changed object reference (such as `Date`, `Array`, `Function`, or `Object`).  *  * Note that mutating a `Date` object does not cause the pipe to be rendered again.  * To ensure that the pipe is executed, you must create a new `Date` object.  *  * Only the `en-US` locale data comes with Angular. To localize dates  * in another language, you must import the corresponding locale data.  * See the [I18n guide](guide/i18n-common-format-data-locale) for more information.  *  * The time zone of the formatted value can be specified either by passing it in as the second  * parameter of the pipe, or by setting the default through the `DATE_PIPE_DEFAULT_OPTIONS`  * injection token. The value that is passed in as the second parameter takes precedence over  * the one defined using the injection token.  *  * @see `formatDate()`  *  *  * @usageNotes  *  * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to  * reformat the date on every change-detection cycle, treat the date as an immutable object  * and change the reference when the pipe needs to run again.  *  * ### Pre-defined format options  *  * | Option        | Equivalent to                       | Examples (given in `en-US` locale)              |  * |---------------|-------------------------------------|-------------------------------------------------|  * | `'short'`     | `'M/d/yy, h:mm a'`                  | `6/15/15, 9:03 AM`                              |  * | `'medium'`    | `'MMM d, y, h:mm:ss a'`             | `Jun 15, 2015, 9:03:01 AM`                      |  * | `'long'`      | `'MMMM d, y, h:mm:ss a z'`          | `June 15, 2015 at 9:03:01 AM GMT+1`             |  * | `'full'`      | `'EEEE, MMMM d, y, h:mm:ss a zzzz'` | `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00` |  * | `'shortDate'` | `'M/d/yy'`                          | `6/15/15`                                       |  * | `'mediumDate'`| `'MMM d, y'`                        | `Jun 15, 2015`                                  |  * | `'longDate'`  | `'MMMM d, y'`                       | `June 15, 2015`                                 |  * | `'fullDate'`  | `'EEEE, MMMM d, y'`                 | `Monday, June 15, 2015`                         |  * | `'shortTime'` | `'h:mm a'`                          | `9:03 AM`                                       |  * | `'mediumTime'`| `'h:mm:ss a'`                       | `9:03:01 AM`                                    |  * | `'longTime'`  | `'h:mm:ss a z'`                     | `9:03:01 AM GMT+1`                              |  * | `'fullTime'`  | `'h:mm:ss a zzzz'`                  | `9:03:01 AM GMT+01:00`                          |  *  * ### Custom format options  *  * You can construct a format string using symbols to specify the components  * of a date-time value, as described in the following table.  * Format details depend on the locale.  * Fields marked with (*) are only available in the extra data set for the given locale.  *  *  | Field type          | Format      | Description                                                   | Example Value                                              |  *  |-------------------- |-------------|---------------------------------------------------------------|------------------------------------------------------------|  *  | Era                 | G, GG & GGG | Abbreviated                                                   | AD                                                         |  *  |                     | GGGG        | Wide                                                          | Anno Domini                                                |  *  |                     | GGGGG       | Narrow                                                        | A                                                          |  *  | Year                | y           | Numeric: minimum digits                                       | 2, 20, 201, 2017, 20173                                    |  *  |                     | yy          | Numeric: 2 digits + zero padded                               | 02, 20, 01, 17, 73                                         |  *  |                     | yyy         | Numeric: 3 digits + zero padded                               | 002, 020, 201, 2017, 20173                                 |  *  |                     | yyyy        | Numeric: 4 digits or more + zero padded                       | 0002, 0020, 0201, 2017, 20173                              |  *  | Week-numbering year | Y           | Numeric: minimum digits                                       | 2, 20, 201, 2017, 20173                                    |  *  |                     | YY          | Numeric: 2 digits + zero padded                               | 02, 20, 01, 17, 73                                         |  *  |                     | YYY         | Numeric: 3 digits + zero padded                               | 002, 020, 201, 2017, 20173                                 |  *  |                     | YYYY        | Numeric: 4 digits or more + zero padded                       | 0002, 0020, 0201, 2017, 20173                              |  *  | Month               | M           | Numeric: 1 digit                                              | 9, 12                                                      |  *  |                     | MM          | Numeric: 2 digits + zero padded                               | 09, 12                                                     |  *  |                     | MMM         | Abbreviated                                                   | Sep                                                        |  *  |                     | MMMM        | Wide                                                          | September                                                  |  *  |                     | MMMMM       | Narrow                                                        | S                                                          |  *  | Month standalone    | L           | Numeric: 1 digit                                              | 9, 12                                                      |  *  |                     | LL          | Numeric: 2 digits + zero padded                               | 09, 12                                                     |  *  |                     | LLL         | Abbreviated                                                   | Sep                                                        |  *  |                     | LLLL        | Wide                                                          | September                                                  |  *  |                     | LLLLL       | Narrow                                                        | S                                                          |  *  | Week of year        | w           | Numeric: minimum digits                                       | 1... 53                                                    |  *  |                     | ww          | Numeric: 2 digits + zero padded                               | 01... 53                                                   |  *  | Week of month       | W           | Numeric: 1 digit                                              | 1... 5                                                     |  *  | Day of month        | d           | Numeric: minimum digits                                       | 1                                                          |  *  |                     | dd          | Numeric: 2 digits + zero padded                               | 01                                                         |  *  | Week day            | E, EE & EEE | Abbreviated                                                   | Tue                                                        |  *  |                     | EEEE        | Wide                                                          | Tuesday                                                    |  *  |                     | EEEEE       | Narrow                                                        | T                                                          |  *  |                     | EEEEEE      | Short                                                         | Tu                                                         |  *  | Week day standalone | c, cc       | Numeric: 1 digit                                              | 2                                                          |  *  |                     | ccc         | Abbreviated                                                   | Tue                                                        |  *  |                     | cccc        | Wide                                                          | Tuesday                                                    |  *  |                     | ccccc       | Narrow                                                        | T                                                          |  *  |                     | cccccc      | Short                                                         | Tu                                                         |  *  | Period              | a, aa & aaa | Abbreviated                                                   | am/pm or AM/PM                                             |  *  |                     | aaaa        | Wide (fallback to `a` when missing)                           | ante meridiem/post meridiem                                |  *  |                     | aaaaa       | Narrow                                                        | a/p                                                        |  *  | Period*             | B, BB & BBB | Abbreviated                                                   | mid.                                                       |  *  |                     | BBBB        | Wide                                                          | am, pm, midnight, noon, morning, afternoon, evening, night |  *  |                     | BBBBB       | Narrow                                                        | md                                                         |  *  | Period standalone*  | b, bb & bbb | Abbreviated                                                   | mid.                                                       |  *  |                     | bbbb        | Wide                                                          | am, pm, midnight, noon, morning, afternoon, evening, night |  *  |                     | bbbbb       | Narrow                                                        | md                                                         |  *  | Hour 1-12           | h           | Numeric: minimum digits                                       | 1, 12                                                      |  *  |                     | hh          | Numeric: 2 digits + zero padded                               | 01, 12                                                     |  *  | Hour 0-23           | H           | Numeric: minimum digits                                       | 0, 23                                                      |  *  |                     | HH          | Numeric: 2 digits + zero padded                               | 00, 23                                                     |  *  | Minute              | m           | Numeric: minimum digits                                       | 8, 59                                                      |  *  |                     | mm          | Numeric: 2 digits + zero padded                               | 08, 59                                                     |  *  | Second              | s           | Numeric: minimum digits                                       | 0... 59                                                    |  *  |                     | ss          | Numeric: 2 digits + zero padded                               | 00... 59                                                   |  *  | Fractional seconds  | S           | Numeric: 1 digit                                              | 0... 9                                                     |  *  |                     | SS          | Numeric: 2 digits + zero padded                               | 00... 99                                                   |  *  |                     | SSS         | Numeric: 3 digits + zero padded (= milliseconds)              | 000... 999                                                 |  *  | Zone                | z, zz & zzz | Short specific non location format (fallback to O)            | GMT-8                                                      |  *  |                     | zzzz        | Long specific non location format (fallback to OOOO)          | GMT-08:00                                                  |  *  |                     | Z, ZZ & ZZZ | ISO8601 basic format                                          | -0800                                                      |  *  |                     | ZZZZ        | Long localized GMT format                                     | GMT-8:00                                                   |  *  |                     | ZZZZZ       | ISO8601 extended format + Z indicator for offset 0 (= XXXXX)  | -08:00                                                     |  *  |                     | O, OO & OOO | Short localized GMT format                                    | GMT-8                                                      |  *  |                     | OOOO        | Long localized GMT format                                     | GMT-08:00                                                  |  *  *  * ### Format examples  *  * These examples transform a date into various formats,  * assuming that `dateObj` is a JavaScript `Date` object for  * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11,  * given in the local time for the `en-US` locale.  *  * ```  * {{ dateObj | date }}               // output is 'Jun 15, 2015'  * {{ dateObj | date:'medium' }}      // output is 'Jun 15, 2015, 9:43:11 PM'  * {{ dateObj | date:'shortTime' }}   // output is '9:43 PM'  * {{ dateObj | date:'mm:ss' }}       // output is '43:11'  * ```  *  * ### Usage example  *  * The following component uses a date pipe to display the current date in different formats.  *  * ```  * @Component({  *  selector: 'date-pipe',  *  template: `<div>  *    <p>Today is {{today | date}}</p>  *    <p>Or if you prefer, {{today | date:'fullDate'}}</p>  *    <p>The time is {{today | date:'h:mm a z'}}</p>  *  </div>`  * })  * // Get the current date and time as a date-time value.  * export class DatePipeComponent {  *   today: number = Date.now();  * }  * ```  *  * @publicApi  */ // clang-format on @Pipe({   name: 'date',   pure: true,   standalone: true, }) export class DatePipe implements PipeTransform {   constructor(       @Inject(LOCALE_ID) private locale: string,       @Inject(DATE_PIPE_DEFAULT_TIMEZONE) @Optional() private defaultTimezone?: string|null,       @Inject(DATE_PIPE_DEFAULT_OPTIONS) @Optional() private defaultOptions?: DatePipeConfig|null,   ) {}    /**    * @param value The date expression: a `Date` object,  a number    * (milliseconds since UTC epoch), or an ISO string (https://www.w3.org/TR/NOTE-datetime).    * @param format The date/time components to include, using predefined options or a    * custom format string.  When not provided, the `DatePipe` looks for the value using the    * `DATE_PIPE_DEFAULT_OPTIONS` injection token (and reads the `dateFormat` property).    * If the token is not configured, the `mediumDate` is used as a value.    * @param timezone A timezone offset (such as `'+0430'`), or a standard UTC/GMT, or continental US    * timezone abbreviation. When not provided, the `DatePipe` looks for the value using the    * `DATE_PIPE_DEFAULT_OPTIONS` injection token (and reads the `timezone` property). If the token    * is not configured, the end-user's local system timezone is used as a value.    * @param locale A locale code for the locale format rules to use.    * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.    * See [Setting your app locale](guide/i18n-common-locale-id).    *    * @see `DATE_PIPE_DEFAULT_OPTIONS`    *    * @returns A date string in the desired format.    */   transform(value: Date|string|number, format?: string, timezone?: string, locale?: string): string       |null;   transform(value: null|undefined, format?: string, timezone?: string, locale?: string): null;   transform(       value: Date|string|number|null|undefined, format?: string, timezone?: string,       locale?: string): string|null;   transform(       value: Date|string|number|null|undefined, format?: string, timezone?: string,       locale?: string): string|null {     if (value == null || value === '' || value !== value) return null;      try {       const _format = format ?? this.defaultOptions?.dateFormat ?? DEFAULT_DATE_FORMAT;       const _timezone =           timezone ?? this.defaultOptions?.timezone ?? this.defaultTimezone ?? undefined;       return formatDate(value, _format, locale || this.locale, _timezone);     } catch (error) {       throw invalidPipeArgumentError(DatePipe, (error as Error).message);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Pipe, PipeTransform} from '@angular/core';  import {getPluralCategory, NgLocalization} from '../i18n/localization';  import {invalidPipeArgumentError} from './invalid_pipe_argument_error';  const _INTERPOLATION_REGEXP: RegExp = /#/g;  /**  * @ngModule CommonModule  * @description  *  * Maps a value to a string that pluralizes the value according to locale rules.  *  * @usageNotes  *  * ### Example  *  * {@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'}  *  * @publicApi  */ @Pipe({   name: 'i18nPlural',   pure: true,   standalone: true, }) export class I18nPluralPipe implements PipeTransform {   constructor(private _localization: NgLocalization) {}    /**    * @param value the number to be formatted    * @param pluralMap an object that mimics the ICU format, see    * https://unicode-org.github.io/icu/userguide/format_parse/messages/.    * @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by    * default).    */   transform(value: number|null|undefined, pluralMap: {[count: string]: string}, locale?: string):       string {     if (value == null) return '';      if (typeof pluralMap !== 'object' || pluralMap === null) {       throw invalidPipeArgumentError(I18nPluralPipe, pluralMap);     }      const key = getPluralCategory(value, Object.keys(pluralMap), this._localization, locale);      return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Pipe, PipeTransform} from '@angular/core';  import {invalidPipeArgumentError} from './invalid_pipe_argument_error';  /**  * @ngModule CommonModule  * @description  *  * Generic selector that displays the string that matches the current value.  *  * If none of the keys of the `mapping` match the `value`, then the content  * of the `other` key is returned when present, otherwise an empty string is returned.  *  * @usageNotes  *  * ### Example  *  * {@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'}  *  * @publicApi  */ @Pipe({   name: 'i18nSelect',   pure: true,   standalone: true, }) export class I18nSelectPipe implements PipeTransform {   /**    * @param value a string to be internationalized.    * @param mapping an object that indicates the text that should be displayed    * for different values of the provided `value`.    */   transform(value: string|null|undefined, mapping: {[key: string]: string}): string {     if (value == null) return '';      if (typeof mapping !== 'object' || typeof value !== 'string') {       throw invalidPipeArgumentError(I18nSelectPipe, mapping);     }      if (mapping.hasOwnProperty(value)) {       return mapping[value];     }      if (mapping.hasOwnProperty('other')) {       return mapping['other'];     }      return '';   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Pipe, PipeTransform} from '@angular/core';  /**  * @ngModule CommonModule  * @description  *  * Converts a value into its JSON-format representation.  Useful for debugging.  *  * @usageNotes  *  * The following component uses a JSON pipe to convert an object  * to JSON format, and displays the string in both formats for comparison.  *  * {@example common/pipes/ts/json_pipe.ts region='JsonPipe'}  *  * @publicApi  */ @Pipe({   name: 'json',   pure: false,   standalone: true, }) export class JsonPipe implements PipeTransform {   /**    * @param value A value of any type to convert into a JSON-format string.    */   transform(value: any): string {     return JSON.stringify(value, null, 2);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {KeyValueChangeRecord, KeyValueChanges, KeyValueDiffer, KeyValueDiffers, Pipe, PipeTransform} from '@angular/core';  function makeKeyValuePair<K, V>(key: K, value: V): KeyValue<K, V> {   return {key: key, value: value}; }  /**  * A key value pair.  * Usually used to represent the key value pairs from a Map or Object.  *  * @publicApi  */ export interface KeyValue<K, V> {   key: K;   value: V; }  /**  * @ngModule CommonModule  * @description  *  * Transforms Object or Map into an array of key value pairs.  *  * The output array will be ordered by keys.  * By default the comparator will be by Unicode point value.  * You can optionally pass a compareFn if your keys are complex types.  *  * @usageNotes  * ### Examples  *  * This examples show how an Object or a Map can be iterated by ngFor with the use of this  * keyvalue pipe.  *  * {@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'}  *  * @publicApi  */ @Pipe({   name: 'keyvalue',   pure: false,   standalone: true, }) export class KeyValuePipe implements PipeTransform {   constructor(private readonly differs: KeyValueDiffers) {}    private differ!: KeyValueDiffer<any, any>;   private keyValues: Array<KeyValue<any, any>> = [];   private compareFn: (a: KeyValue<any, any>, b: KeyValue<any, any>) => number = defaultComparator;    /*    * NOTE: when the `input` value is a simple Record<K, V> object, the keys are extracted with    * Object.keys(). This means that even if the `input` type is Record<number, V> the keys are    * compared/returned as `string`s.    */   transform<K, V>(       input: ReadonlyMap<K, V>,       compareFn?: (a: KeyValue<K, V>, b: KeyValue<K, V>) => number): Array<KeyValue<K, V>>;   transform<K extends number, V>(       input: Record<K, V>, compareFn?: (a: KeyValue<string, V>, b: KeyValue<string, V>) => number):       Array<KeyValue<string, V>>;   transform<K extends string, V>(       input: Record<K, V>|ReadonlyMap<K, V>,       compareFn?: (a: KeyValue<K, V>, b: KeyValue<K, V>) => number): Array<KeyValue<K, V>>;   transform(       input: null|undefined,       compareFn?: (a: KeyValue<unknown, unknown>, b: KeyValue<unknown, unknown>) => number): null;   transform<K, V>(       input: ReadonlyMap<K, V>|null|undefined,       compareFn?: (a: KeyValue<K, V>, b: KeyValue<K, V>) => number): Array<KeyValue<K, V>>|null;   transform<K extends number, V>(       input: Record<K, V>|null|undefined,       compareFn?: (a: KeyValue<string, V>, b: KeyValue<string, V>) => number):       Array<KeyValue<string, V>>|null;   transform<K extends string, V>(       input: Record<K, V>|ReadonlyMap<K, V>|null|undefined,       compareFn?: (a: KeyValue<K, V>, b: KeyValue<K, V>) => number): Array<KeyValue<K, V>>|null;   transform<K, V>(       input: undefined|null|{[key: string]: V, [key: number]: V}|ReadonlyMap<K, V>,       compareFn: (a: KeyValue<K, V>, b: KeyValue<K, V>) => number = defaultComparator):       Array<KeyValue<K, V>>|null {     if (!input || (!(input instanceof Map) && typeof input !== 'object')) {       return null;     }      if (!this.differ) {       // make a differ for whatever type we've been passed in       this.differ = this.differs.find(input).create();     }      const differChanges: KeyValueChanges<K, V>|null = this.differ.diff(input as any);     const compareFnChanged = compareFn !== this.compareFn;      if (differChanges) {       this.keyValues = [];       differChanges.forEachItem((r: KeyValueChangeRecord<K, V>) => {         this.keyValues.push(makeKeyValuePair(r.key, r.currentValue!));       });     }     if (differChanges || compareFnChanged) {       this.keyValues.sort(compareFn);       this.compareFn = compareFn;     }     return this.keyValues;   } }  export function defaultComparator<K, V>(     keyValueA: KeyValue<K, V>, keyValueB: KeyValue<K, V>): number {   const a = keyValueA.key;   const b = keyValueB.key;   // if same exit with 0;   if (a === b) return 0;   // make sure that undefined are at the end of the sort.   if (a === undefined) return 1;   if (b === undefined) return -1;   // make sure that nulls are at the end of the sort.   if (a === null) return 1;   if (b === null) return -1;   if (typeof a == 'string' && typeof b == 'string') {     return a < b ? -1 : 1;   }   if (typeof a == 'number' && typeof b == 'number') {     return a - b;   }   if (typeof a == 'boolean' && typeof b == 'boolean') {     return a < b ? -1 : 1;   }   // `a` and `b` are of different types. Compare their string values.   const aString = String(a);   const bString = String(b);   return aString == bString ? 0 : aString < bString ? -1 : 1; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {DEFAULT_CURRENCY_CODE, Inject, LOCALE_ID, Pipe, PipeTransform} from '@angular/core';  import {formatCurrency, formatNumber, formatPercent} from '../i18n/format_number'; import {getCurrencySymbol} from '../i18n/locale_data_api';  import {invalidPipeArgumentError} from './invalid_pipe_argument_error';   /**  * @ngModule CommonModule  * @description  *  * Formats a value according to digit options and locale rules.  * Locale determines group sizing and separator,  * decimal point character, and other locale-specific configurations.  *  * @see `formatNumber()`  *  * @usageNotes  *  * ### digitsInfo  *  * The value's decimal representation is specified by the `digitsInfo`  * parameter, written in the following format:<br>  *  * ```  * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}  * ```  *  *  - `minIntegerDigits`:  * The minimum number of integer digits before the decimal point.  * Default is 1.  *  * - `minFractionDigits`:  * The minimum number of digits after the decimal point.  * Default is 0.  *  *  - `maxFractionDigits`:  * The maximum number of digits after the decimal point.  * Default is 3.  *  * If the formatted value is truncated it will be rounded using the \"to-nearest\" method:  *  * ```  * {{3.6 | number: '1.0-0'}}  * <!--will output '4'-->  *  * {{-3.6 | number:'1.0-0'}}  * <!--will output '-4'-->  * ```  *  * ### locale  *  * `locale` will format a value according to locale rules.  * Locale determines group sizing and separator,  * decimal point character, and other locale-specific configurations.  *  * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.  *  * See [Setting your app locale](guide/i18n-common-locale-id).  *  * ### Example  *  * The following code shows how the pipe transforms values  * according to various format specifications,  * where the caller's default locale is `en-US`.  *  * <code-example path=\"common/pipes/ts/number_pipe.ts\" region='NumberPipe'></code-example>  *  * @publicApi  */ @Pipe({   name: 'number',   standalone: true, }) export class DecimalPipe implements PipeTransform {   constructor(@Inject(LOCALE_ID) private _locale: string) {}    transform(value: number|string, digitsInfo?: string, locale?: string): string|null;   transform(value: null|undefined, digitsInfo?: string, locale?: string): null;   transform(value: number|string|null|undefined, digitsInfo?: string, locale?: string): string|null;   /**    * @param value The value to be formatted.    * @param digitsInfo Sets digit and decimal representation.    * [See more](#digitsinfo).    * @param locale Specifies what locale format rules to use.    * [See more](#locale).    */   transform(value: number|string|null|undefined, digitsInfo?: string, locale?: string): string       |null {     if (!isValue(value)) return null;      locale = locale || this._locale;      try {       const num = strToNumber(value);       return formatNumber(num, locale, digitsInfo);     } catch (error) {       throw invalidPipeArgumentError(DecimalPipe, (error as Error).message);     }   } }  /**  * @ngModule CommonModule  * @description  *  * Transforms a number to a percentage  * string, formatted according to locale rules that determine group sizing and  * separator, decimal-point character, and other locale-specific  * configurations.  *  * @see `formatPercent()`  *  * @usageNotes  * The following code shows how the pipe transforms numbers  * into text strings, according to various format specifications,  * where the caller's default locale is `en-US`.  *  * <code-example path=\"common/pipes/ts/percent_pipe.ts\" region='PercentPipe'></code-example>  *  * @publicApi  */ @Pipe({   name: 'percent',   standalone: true, }) export class PercentPipe implements PipeTransform {   constructor(@Inject(LOCALE_ID) private _locale: string) {}    transform(value: number|string, digitsInfo?: string, locale?: string): string|null;   transform(value: null|undefined, digitsInfo?: string, locale?: string): null;   transform(value: number|string|null|undefined, digitsInfo?: string, locale?: string): string|null;   /**    *    * @param value The number to be formatted as a percentage.    * @param digitsInfo Decimal representation options, specified by a string    * in the following format:<br>    * <code>{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}</code>.    *   - `minIntegerDigits`: The minimum number of integer digits before the decimal point.    * Default is `1`.    *   - `minFractionDigits`: The minimum number of digits after the decimal point.    * Default is `0`.    *   - `maxFractionDigits`: The maximum number of digits after the decimal point.    * Default is `0`.    * @param locale A locale code for the locale format rules to use.    * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.    * See [Setting your app locale](guide/i18n-common-locale-id).    */   transform(value: number|string|null|undefined, digitsInfo?: string, locale?: string): string       |null {     if (!isValue(value)) return null;     locale = locale || this._locale;     try {       const num = strToNumber(value);       return formatPercent(num, locale, digitsInfo);     } catch (error) {       throw invalidPipeArgumentError(PercentPipe, (error as Error).message);     }   } }  /**  * @ngModule CommonModule  * @description  *  * Transforms a number to a currency string, formatted according to locale rules  * that determine group sizing and separator, decimal-point character,  * and other locale-specific configurations.  *  *  * @see `getCurrencySymbol()`  * @see `formatCurrency()`  *  * @usageNotes  * The following code shows how the pipe transforms numbers  * into text strings, according to various format specifications,  * where the caller's default locale is `en-US`.  *  * <code-example path=\"common/pipes/ts/currency_pipe.ts\" region='CurrencyPipe'></code-example>  *  * @publicApi  */ @Pipe({   name: 'currency',   standalone: true, }) export class CurrencyPipe implements PipeTransform {   constructor(       @Inject(LOCALE_ID) private _locale: string,       @Inject(DEFAULT_CURRENCY_CODE) private _defaultCurrencyCode: string = 'USD') {}    transform(       value: number|string, currencyCode?: string,       display?: 'code'|'symbol'|'symbol-narrow'|string|boolean, digitsInfo?: string,       locale?: string): string|null;   transform(       value: null|undefined, currencyCode?: string,       display?: 'code'|'symbol'|'symbol-narrow'|string|boolean, digitsInfo?: string,       locale?: string): null;   transform(       value: number|string|null|undefined, currencyCode?: string,       display?: 'code'|'symbol'|'symbol-narrow'|string|boolean, digitsInfo?: string,       locale?: string): string|null;   /**    *    * @param value The number to be formatted as currency.    * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code,    * such as `USD` for the US dollar and `EUR` for the euro. The default currency code can be    * configured using the `DEFAULT_CURRENCY_CODE` injection token.    * @param display The format for the currency indicator. One of the following:    *   - `code`: Show the code (such as `USD`).    *   - `symbol`(default): Show the symbol (such as `$`).    *   - `symbol-narrow`: Use the narrow symbol for locales that have two symbols for their    * currency.    * For example, the Canadian dollar CAD has the symbol `CA$` and the symbol-narrow `$`. If the    * locale has no narrow symbol, uses the standard symbol for the locale.    *   - String: Use the given string value instead of a code or a symbol.    * For example, an empty string will suppress the currency & symbol.    *   - Boolean (marked deprecated in v5): `true` for symbol and false for `code`.    *    * @param digitsInfo Decimal representation options, specified by a string    * in the following format:<br>    * <code>{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}</code>.    *   - `minIntegerDigits`: The minimum number of integer digits before the decimal point.    * Default is `1`.    *   - `minFractionDigits`: The minimum number of digits after the decimal point.    * Default is `2`.    *   - `maxFractionDigits`: The maximum number of digits after the decimal point.    * Default is `2`.    * If not provided, the number will be formatted with the proper amount of digits,    * depending on what the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) specifies.    * For example, the Canadian dollar has 2 digits, whereas the Chilean peso has none.    * @param locale A locale code for the locale format rules to use.    * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.    * See [Setting your app locale](guide/i18n-common-locale-id).    */   transform(       value: number|string|null|undefined, currencyCode: string = this._defaultCurrencyCode,       display: 'code'|'symbol'|'symbol-narrow'|string|boolean = 'symbol', digitsInfo?: string,       locale?: string): string|null {     if (!isValue(value)) return null;      locale = locale || this._locale;      if (typeof display === 'boolean') {       if ((typeof ngDevMode === 'undefined' || ngDevMode) && <any>console && <any>console.warn) {         console.warn(             `Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are \"code\", \"symbol\" or \"symbol-narrow\".`);       }       display = display ? 'symbol' : 'code';     }      let currency: string = currencyCode || this._defaultCurrencyCode;     if (display !== 'code') {       if (display === 'symbol' || display === 'symbol-narrow') {         currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);       } else {         currency = display;       }     }      try {       const num = strToNumber(value);       return formatCurrency(num, locale, currency, currencyCode, digitsInfo);     } catch (error) {       throw invalidPipeArgumentError(CurrencyPipe, (error as Error).message);     }   } }  function isValue(value: number|string|null|undefined): value is number|string {   return !(value == null || value === '' || value !== value); }  /**  * Transforms a string into a number (if needed).  */ function strToNumber(value: number|string): number {   // Convert strings to numbers   if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {     return Number(value);   }   if (typeof value !== 'number') {     throw new Error(`${value} is not a number`);   }   return value; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Pipe, PipeTransform} from '@angular/core';  import {invalidPipeArgumentError} from './invalid_pipe_argument_error';  /**  * @ngModule CommonModule  * @description  *  * Creates a new `Array` or `String` containing a subset (slice) of the elements.  *  * @usageNotes  *  * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()`  * and `String.prototype.slice()`.  *  * When operating on an `Array`, the returned `Array` is always a copy even when all  * the elements are being returned.  *  * When operating on a blank value, the pipe returns the blank value.  *  * ### List Example  *  * This `ngFor` example:  *  * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'}  *  * produces the following:  *  * ```html  * <li>b</li>  * <li>c</li>  * ```  *  * ### String Examples  *  * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'}  *  * @publicApi  */ @Pipe({   name: 'slice',   pure: false,   standalone: true, }) export class SlicePipe implements PipeTransform {   /**    * @param value a list or a string to be sliced.    * @param start the starting index of the subset to return:    *   - **a positive integer**: return the item at `start` index and all items after    *     in the list or string expression.    *   - **a negative integer**: return the item at `start` index from the end and all items after    *     in the list or string expression.    *   - **if positive and greater than the size of the expression**: return an empty list or    * string.    *   - **if negative and greater than the size of the expression**: return entire list or string.    * @param end the ending index of the subset to return:    *   - **omitted**: return all items until the end.    *   - **if positive**: return all items before `end` index of the list or string.    *   - **if negative**: return all items before `end` index from the end of the list or string.    */   transform<T>(value: ReadonlyArray<T>, start: number, end?: number): Array<T>;   transform(value: null|undefined, start: number, end?: number): null;   transform<T>(value: ReadonlyArray<T>|null|undefined, start: number, end?: number): Array<T>|null;   transform(value: string, start: number, end?: number): string;   transform(value: string|null|undefined, start: number, end?: number): string|null;   transform<T>(value: ReadonlyArray<T>|string|null|undefined, start: number, end?: number):       Array<T>|string|null {     if (value == null) return null;      if (!this.supports(value)) {       throw invalidPipeArgumentError(SlicePipe, value);     }      return value.slice(start, end);   }    private supports(obj: any): boolean {     return typeof obj === 'string' || Array.isArray(obj);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * This module provides a set of common Pipes.  */ import {AsyncPipe} from './async_pipe'; import {LowerCasePipe, TitleCasePipe, UpperCasePipe} from './case_conversion_pipes'; import {DATE_PIPE_DEFAULT_OPTIONS, DATE_PIPE_DEFAULT_TIMEZONE, DatePipe} from './date_pipe'; import {DatePipeConfig} from './date_pipe_config'; import {I18nPluralPipe} from './i18n_plural_pipe'; import {I18nSelectPipe} from './i18n_select_pipe'; import {JsonPipe} from './json_pipe'; import {KeyValue, KeyValuePipe} from './keyvalue_pipe'; import {CurrencyPipe, DecimalPipe, PercentPipe} from './number_pipe'; import {SlicePipe} from './slice_pipe';  export {   AsyncPipe,   CurrencyPipe,   DATE_PIPE_DEFAULT_OPTIONS,   DATE_PIPE_DEFAULT_TIMEZONE,   DatePipe,   DatePipeConfig,   DecimalPipe,   I18nPluralPipe,   I18nSelectPipe,   JsonPipe,   KeyValue,   KeyValuePipe,   LowerCasePipe,   PercentPipe,   SlicePipe,   TitleCasePipe,   UpperCasePipe, };   /**  * A collection of Angular pipes that are likely to be used in each and every application.  */ export const COMMON_PIPES = [   AsyncPipe,   UpperCasePipe,   LowerCasePipe,   JsonPipe,   SlicePipe,   DecimalPipe,   PercentPipe,   TitleCasePipe,   CurrencyPipe,   DatePipe,   I18nPluralPipe,   I18nSelectPipe,   KeyValuePipe, ]; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule} from '@angular/core';  import {COMMON_DIRECTIVES} from './directives/index'; import {COMMON_PIPES} from './pipes/index';    // Note: This does not contain the location providers, // as they need some platform specific implementations to work. /**  * Exports all the basic Angular directives and pipes,  * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on.  * Re-exported by `BrowserModule`, which is included automatically in the root  * `AppModule` when you create a new app with the CLI `new` command.  *  * @publicApi  */ @NgModule({   imports: [COMMON_DIRECTIVES, COMMON_PIPES],   exports: [COMMON_DIRECTIVES, COMMON_PIPES], }) export class CommonModule { } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export const PLATFORM_BROWSER_ID = 'browser'; export const PLATFORM_SERVER_ID = 'server'; export const PLATFORM_WORKER_APP_ID = 'browserWorkerApp'; export const PLATFORM_WORKER_UI_ID = 'browserWorkerUi';  /**  * Returns whether a platform id represents a browser platform.  * @publicApi  */ export function isPlatformBrowser(platformId: Object): boolean {   return platformId === PLATFORM_BROWSER_ID; }  /**  * Returns whether a platform id represents a server platform.  * @publicApi  */ export function isPlatformServer(platformId: Object): boolean {   return platformId === PLATFORM_SERVER_ID; }  /**  * Returns whether a platform id represents a web worker app platform.  * @publicApi  */ export function isPlatformWorkerApp(platformId: Object): boolean {   return platformId === PLATFORM_WORKER_APP_ID; }  /**  * Returns whether a platform id represents a web worker UI platform.  * @publicApi  */ export function isPlatformWorkerUi(platformId: Object): boolean {   return platformId === PLATFORM_WORKER_UI_ID; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the common package.  */  import {Version} from '@angular/core';  /**  * @publicApi  */ export const VERSION = new Version('15.2.0'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵɵdefineInjectable, ɵɵinject} from '@angular/core';  import {DOCUMENT} from './dom_tokens';    /**  * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.  *  * @publicApi  */ export abstract class ViewportScroller {   // De-sugared tree-shakable injection   // See #23917   /** @nocollapse */   static ɵprov = /** @pureOrBreakMyCode */ ɵɵdefineInjectable({     token: ViewportScroller,     providedIn: 'root',     factory: () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window)   });    /**    * Configures the top offset used when scrolling to an anchor.    * @param offset A position in screen coordinates (a tuple with x and y values)    * or a function that returns the top offset position.    *    */   abstract setOffset(offset: [number, number]|(() => [number, number])): void;    /**    * Retrieves the current scroll position.    * @returns A position in screen coordinates (a tuple with x and y values).    */   abstract getScrollPosition(): [number, number];    /**    * Scrolls to a specified position.    * @param position A position in screen coordinates (a tuple with x and y values).    */   abstract scrollToPosition(position: [number, number]): void;    /**    * Scrolls to an anchor element.    * @param anchor The ID of the anchor element.    */   abstract scrollToAnchor(anchor: string): void;    /**    * Disables automatic scroll restoration provided by the browser.    * See also [window.history.scrollRestoration    * info](https://developers.google.com/web/updates/2015/09/history-api-scroll-restoration).    */   abstract setHistoryScrollRestoration(scrollRestoration: 'auto'|'manual'): void; }  /**  * Manages the scroll position for a browser window.  */ export class BrowserViewportScroller implements ViewportScroller {   private offset: () => [number, number] = () => [0, 0];    constructor(private document: Document, private window: Window) {}    /**    * Configures the top offset used when scrolling to an anchor.    * @param offset A position in screen coordinates (a tuple with x and y values)    * or a function that returns the top offset position.    *    */   setOffset(offset: [number, number]|(() => [number, number])): void {     if (Array.isArray(offset)) {       this.offset = () => offset;     } else {       this.offset = offset;     }   }    /**    * Retrieves the current scroll position.    * @returns The position in screen coordinates.    */   getScrollPosition(): [number, number] {     if (this.supportsScrolling()) {       return [this.window.pageXOffset, this.window.pageYOffset];     } else {       return [0, 0];     }   }    /**    * Sets the scroll position.    * @param position The new position in screen coordinates.    */   scrollToPosition(position: [number, number]): void {     if (this.supportsScrolling()) {       this.window.scrollTo(position[0], position[1]);     }   }    /**    * Scrolls to an element and attempts to focus the element.    *    * Note that the function name here is misleading in that the target string may be an ID for a    * non-anchor element.    *    * @param target The ID of an element or name of the anchor.    *    * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document    * @see https://html.spec.whatwg.org/#scroll-to-fragid    */   scrollToAnchor(target: string): void {     if (!this.supportsScrolling()) {       return;     }      const elSelected = findAnchorFromDocument(this.document, target);      if (elSelected) {       this.scrollToElement(elSelected);       // After scrolling to the element, the spec dictates that we follow the focus steps for the       // target. Rather than following the robust steps, simply attempt focus.       //       // @see https://html.spec.whatwg.org/#get-the-focusable-area       // @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus       // @see https://html.spec.whatwg.org/#focusable-area       elSelected.focus();     }   }    /**    * Disables automatic scroll restoration provided by the browser.    */   setHistoryScrollRestoration(scrollRestoration: 'auto'|'manual'): void {     if (this.supportScrollRestoration()) {       const history = this.window.history;       if (history && history.scrollRestoration) {         history.scrollRestoration = scrollRestoration;       }     }   }    /**    * Scrolls to an element using the native offset and the specified offset set on this scroller.    *    * The offset can be used when we know that there is a floating header and scrolling naively to an    * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header.    */   private scrollToElement(el: HTMLElement): void {     const rect = el.getBoundingClientRect();     const left = rect.left + this.window.pageXOffset;     const top = rect.top + this.window.pageYOffset;     const offset = this.offset();     this.window.scrollTo(left - offset[0], top - offset[1]);   }    /**    * We only support scroll restoration when we can get a hold of window.    * This means that we do not support this behavior when running in a web worker.    *    * Lifting this restriction right now would require more changes in the dom adapter.    * Since webworkers aren't widely used, we will lift it once RouterScroller is    * battle-tested.    */   private supportScrollRestoration(): boolean {     try {       if (!this.supportsScrolling()) {         return false;       }       // The `scrollRestoration` property could be on the `history` instance or its prototype.       const scrollRestorationDescriptor = getScrollRestorationProperty(this.window.history) ||           getScrollRestorationProperty(Object.getPrototypeOf(this.window.history));       // We can write to the `scrollRestoration` property if it is a writable data field or it has a       // setter function.       return !!scrollRestorationDescriptor &&           !!(scrollRestorationDescriptor.writable || scrollRestorationDescriptor.set);     } catch {       return false;     }   }    private supportsScrolling(): boolean {     try {       return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;     } catch {       return false;     }   } }  function getScrollRestorationProperty(obj: any): PropertyDescriptor|undefined {   return Object.getOwnPropertyDescriptor(obj, 'scrollRestoration'); }  function findAnchorFromDocument(document: Document, target: string): HTMLElement|null {   const documentResult = document.getElementById(target) || document.getElementsByName(target)[0];    if (documentResult) {     return documentResult;   }    // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we   // have to traverse the DOM manually and do the lookup through the shadow roots.   if (typeof document.createTreeWalker === 'function' && document.body &&       ((document.body as any).createShadowRoot || document.body.attachShadow)) {     const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);     let currentNode = treeWalker.currentNode as HTMLElement | null;      while (currentNode) {       const shadowRoot = currentNode.shadowRoot;        if (shadowRoot) {         // Note that `ShadowRoot` doesn't support `getElementsByName`         // so we have to fall back to `querySelector`.         const result =             shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);         if (result) {           return result;         }       }        currentNode = treeWalker.nextNode() as HTMLElement | null;     }   }    return null; }  /**  * Provides an empty implementation of the viewport scroller.  */ export class NullViewportScroller implements ViewportScroller {   /**    * Empty implementation    */   setOffset(offset: [number, number]|(() => [number, number])): void {}    /**    * Empty implementation    */   getScrollPosition(): [number, number] {     return [0, 0];   }    /**    * Empty implementation    */   scrollToPosition(position: [number, number]): void {}    /**    * Empty implementation    */   scrollToAnchor(anchor: string): void {}    /**    * Empty implementation    */   setHistoryScrollRestoration(scrollRestoration: 'auto'|'manual'): void {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * A wrapper around the `XMLHttpRequest` constructor.  *  * @publicApi  */ export abstract class XhrFactory {   abstract build(): XMLHttpRequest; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // Converts a string that represents a URL into a URL class instance. export function getUrl(src: string, win: Window): URL {   // Don't use a base URL is the URL is absolute.   return isAbsoluteUrl(src) ? new URL(src) : new URL(src, win.location.href); }  // Checks whether a URL is absolute (i.e. starts with `http://` or `https://`). export function isAbsoluteUrl(src: string): boolean {   return /^https?:\\/\\//.test(src); }  // Given a URL, extract the hostname part. // If a URL is a relative one - the URL is returned as is. export function extractHostname(url: string): string {   return isAbsoluteUrl(url) ? (new URL(url)).hostname : url; }  export function isValidPath(path: unknown): boolean {   const isString = typeof path === 'string';    if (!isString || path.trim() === '') {     return false;   }    // Calling new URL() will throw if the path string is malformed   try {     const url = new URL(path);     return true;   } catch {     return false;   } }  export function normalizePath(path: string): string {   return path.endsWith('/') ? path.slice(0, -1) : path; }  export function normalizeSrc(src: string): string {   return src.startsWith('/') ? src.slice(1) : src; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken, Provider, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../../../errors'; import {isAbsoluteUrl, isValidPath, normalizePath, normalizeSrc} from '../url';  /**  * Config options recognized by the image loader function.  *  * @see `ImageLoader`  * @see `NgOptimizedImage`  * @publicApi  */ export interface ImageLoaderConfig {   /**    * Image file name to be added to the image request URL.    */   src: string;   /**    * Width of the requested image (to be used when generating srcset).    */   width?: number;   /**    * Additional user-provided parameters for use by the ImageLoader.    */   loaderParams?: {[key: string]: any;}; }  /**  * Represents an image loader function. Image loader functions are used by the  * NgOptimizedImage directive to produce full image URL based on the image name and its width.  *  * @publicApi  */ export type ImageLoader = (config: ImageLoaderConfig) => string;  /**  * Noop image loader that does no transformation to the original src and just returns it as is.  * This loader is used as a default one if more specific logic is not provided in an app config.  *  * @see `ImageLoader`  * @see `NgOptimizedImage`  */ export const noopImageLoader = (config: ImageLoaderConfig) => config.src;  /**  * Metadata about the image loader.  */ export type ImageLoaderInfo = {   name: string,   testUrl: (url: string) => boolean };  /**  * Injection token that configures the image loader function.  *  * @see `ImageLoader`  * @see `NgOptimizedImage`  * @publicApi  */ export const IMAGE_LOADER = new InjectionToken<ImageLoader>('ImageLoader', {   providedIn: 'root',   factory: () => noopImageLoader, });  /**  * Internal helper function that makes it easier to introduce custom image loaders for the  * `NgOptimizedImage` directive. It is enough to specify a URL builder function to obtain full DI  * configuration for a given loader: a DI token corresponding to the actual loader function, plus DI  * tokens managing preconnect check functionality.  * @param buildUrlFn a function returning a full URL based on loader's configuration  * @param exampleUrls example of full URLs for a given loader (used in error messages)  * @returns a set of DI providers corresponding to the configured image loader  */ export function createImageLoader(     buildUrlFn: (path: string, config: ImageLoaderConfig) => string, exampleUrls?: string[]) {   return function provideImageLoader(path: string) {     if (!isValidPath(path)) {       throwInvalidPathError(path, exampleUrls || []);     }      // The trailing / is stripped (if provided) to make URL construction (concatenation) easier in     // the individual loader functions.     path = normalizePath(path);      const loaderFn = (config: ImageLoaderConfig) => {       if (isAbsoluteUrl(config.src)) {         // Image loader functions expect an image file name (e.g. `my-image.png`)         // or a relative path + a file name (e.g. `/a/b/c/my-image.png`) as an input,         // so the final absolute URL can be constructed.         // When an absolute URL is provided instead - the loader can not         // build a final URL, thus the error is thrown to indicate that.         throwUnexpectedAbsoluteUrlError(path, config.src);       }        return buildUrlFn(path, {...config, src: normalizeSrc(config.src)});     };      const providers: Provider[] = [{provide: IMAGE_LOADER, useValue: loaderFn}];     return providers;   }; }  function throwInvalidPathError(path: unknown, exampleUrls: string[]): never {   throw new RuntimeError(       RuntimeErrorCode.INVALID_LOADER_ARGUMENTS,       ngDevMode &&           `Image loader has detected an invalid path (\\`${path}\\`). ` +               `To fix this, supply a path using one of the following formats: ${                   exampleUrls.join(' or ')}`); }  function throwUnexpectedAbsoluteUrlError(path: string, url: string): never {   throw new RuntimeError(       RuntimeErrorCode.INVALID_LOADER_ARGUMENTS,       ngDevMode &&           `Image loader has detected a \\`<img>\\` tag with an invalid \\`ngSrc\\` attribute: ${               url}. ` +               `This image loader expects \\`ngSrc\\` to be a relative URL - ` +               `however the provided value is an absolute URL. ` +               `To fix this, provide \\`ngSrc\\` as a path relative to the base URL ` +               `configured for this loader (\\`${path}\\`).`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {createImageLoader, ImageLoaderConfig} from './image_loader';  /**  * Function that generates an ImageLoader for [Cloudflare Image  * Resizing](https://developers.cloudflare.com/images/image-resizing/) and turns it into an Angular  * provider. Note: Cloudflare has multiple image products - this provider is specifically for  * Cloudflare Image Resizing; it will not work with Cloudflare Images or Cloudflare Polish.  *  * @param path Your domain name, e.g. https://mysite.com  * @returns Provider that provides an ImageLoader function  *  * @publicApi  */ export const provideCloudflareLoader = createImageLoader(     createCloudflareUrl,     ngDevMode ? ['https://<ZONE>/cdn-cgi/image/<OPTIONS>/<SOURCE-IMAGE>'] : undefined);  function createCloudflareUrl(path: string, config: ImageLoaderConfig) {   let params = `format=auto`;   if (config.width) {     params += `,width=${config.width}`;   }   // Cloudflare image URLs format:   // https://developers.cloudflare.com/images/image-resizing/url-format/   return `${path}/cdn-cgi/image/${params}/${config.src}`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {createImageLoader, ImageLoaderConfig, ImageLoaderInfo} from './image_loader';  /**  * Name and URL tester for Cloudinary.  */ export const cloudinaryLoaderInfo: ImageLoaderInfo = {   name: 'Cloudinary',   testUrl: isCloudinaryUrl };  const CLOUDINARY_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.cloudinary\\.com\\/.+/; /**  * Tests whether a URL is from Cloudinary CDN.  */ function isCloudinaryUrl(url: string): boolean {   return CLOUDINARY_LOADER_REGEX.test(url); }  /**  * Function that generates an ImageLoader for Cloudinary and turns it into an Angular provider.  *  * @param path Base URL of your Cloudinary images  * This URL should match one of the following formats:  * https://res.cloudinary.com/mysite  * https://mysite.cloudinary.com  * https://subdomain.mysite.com  * @returns Set of providers to configure the Cloudinary loader.  *  * @publicApi  */ export const provideCloudinaryLoader = createImageLoader(     createCloudinaryUrl,     ngDevMode ?         [           'https://res.cloudinary.com/mysite', 'https://mysite.cloudinary.com',           'https://subdomain.mysite.com'         ] :         undefined);  function createCloudinaryUrl(path: string, config: ImageLoaderConfig) {   // Cloudinary image URLformat:   // https://cloudinary.com/documentation/image_transformations#transformation_url_structure   // Example of a Cloudinary image URL:   // https://res.cloudinary.com/mysite/image/upload/c_scale,f_auto,q_auto,w_600/marketing/tile-topics-m.png   let params = `f_auto,q_auto`;  // sets image format and quality to \"auto\"   if (config.width) {     params += `,w_${config.width}`;   }   return `${path}/image/upload/${params}/${config.src}`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {createImageLoader, ImageLoaderConfig, ImageLoaderInfo} from './image_loader';  /**  * Name and URL tester for ImageKit.  */ export const imageKitLoaderInfo: ImageLoaderInfo = {   name: 'ImageKit',   testUrl: isImageKitUrl };  const IMAGE_KIT_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imagekit\\.io\\/.+/; /**  * Tests whether a URL is from ImageKit CDN.  */ function isImageKitUrl(url: string): boolean {   return IMAGE_KIT_LOADER_REGEX.test(url); }  /**  * Function that generates an ImageLoader for ImageKit and turns it into an Angular provider.  *  * @param path Base URL of your ImageKit images  * This URL should match one of the following formats:  * https://ik.imagekit.io/myaccount  * https://subdomain.mysite.com  * @returns Set of providers to configure the ImageKit loader.  *  * @publicApi  */ export const provideImageKitLoader = createImageLoader(     createImagekitUrl,     ngDevMode ? ['https://ik.imagekit.io/mysite', 'https://subdomain.mysite.com'] : undefined);  export function createImagekitUrl(path: string, config: ImageLoaderConfig) {   // Example of an ImageKit image URL:   // https://ik.imagekit.io/demo/tr:w-300,h-300/medium_cafe_B1iTdD0C.jpg   let params = `tr:q-auto`;  // applies the \"auto quality\" transformation   if (config.width) {     params += `,w-${config.width}`;   }   return `${path}/${params}/${config.src}`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {createImageLoader, ImageLoaderConfig, ImageLoaderInfo} from './image_loader';  /**  * Name and URL tester for Imgix.  */ export const imgixLoaderInfo: ImageLoaderInfo = {   name: 'Imgix',   testUrl: isImgixUrl };  const IMGIX_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imgix\\.net\\/.+/; /**  * Tests whether a URL is from Imgix CDN.  */ function isImgixUrl(url: string): boolean {   return IMGIX_LOADER_REGEX.test(url); }  /**  * Function that generates an ImageLoader for Imgix and turns it into an Angular provider.  *  * @param path path to the desired Imgix origin,  * e.g. https://somepath.imgix.net or https://images.mysite.com  * @returns Set of providers to configure the Imgix loader.  *  * @publicApi  */ export const provideImgixLoader =     createImageLoader(createImgixUrl, ngDevMode ? ['https://somepath.imgix.net/'] : undefined);  function createImgixUrl(path: string, config: ImageLoaderConfig) {   const url = new URL(`${path}/${config.src}`);   // This setting ensures the smallest allowable format is set.   url.searchParams.set('auto', 'format');   if (config.width) {     url.searchParams.set('w', config.width.toString());   }   return url.href; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // Assembles directive details string, useful for error messages. export function imgDirectiveDetails(ngSrc: string, includeNgSrc = true) {   const ngSrcInfo =       includeNgSrc ? `(activated on an <img> element with the \\`ngSrc=\"${ngSrc}\"\\`) ` : '';   return `The NgOptimizedImage directive ${ngSrcInfo}has detected that`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../../errors';  /**  * Asserts that the application is in development mode. Throws an error if the application is in  * production mode. This assert can be used to make sure that there is no dev-mode code invoked in  * the prod mode accidentally.  */ export function assertDevMode(checkName: string) {   if (!ngDevMode) {     throw new RuntimeError(         RuntimeErrorCode.UNEXPECTED_DEV_MODE_CHECK_IN_PROD_MODE,         `Unexpected invocation of the ${checkName} in the prod mode. ` +             `Please make sure that the prod mode is enabled for production builds.`);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {inject, Injectable, OnDestroy, ɵformatRuntimeError as formatRuntimeError} from '@angular/core';  import {DOCUMENT} from '../../dom_tokens'; import {RuntimeErrorCode} from '../../errors';  import {assertDevMode} from './asserts'; import {imgDirectiveDetails} from './error_helper'; import {getUrl} from './url';  /**  * Observer that detects whether an image with `NgOptimizedImage`  * is treated as a Largest Contentful Paint (LCP) element. If so,  * asserts that the image has the `priority` attribute.  *  * Note: this is a dev-mode only class and it does not appear in prod bundles,  * thus there is no `ngDevMode` use in the code.  *  * Based on https://web.dev/lcp/#measure-lcp-in-javascript.  */ @Injectable({providedIn: 'root'}) export class LCPImageObserver implements OnDestroy {   // Map of full image URLs -> original `ngSrc` values.   private images = new Map<string, string>();   // Keep track of images for which `console.warn` was produced.   private alreadyWarned = new Set<string>();    private window: Window|null = null;   private observer: PerformanceObserver|null = null;    constructor() {     assertDevMode('LCP checker');     const win = inject(DOCUMENT).defaultView;     if (typeof win !== 'undefined' && typeof PerformanceObserver !== 'undefined') {       this.window = win;       this.observer = this.initPerformanceObserver();     }   }    /**    * Inits PerformanceObserver and subscribes to LCP events.    * Based on https://web.dev/lcp/#measure-lcp-in-javascript    */   private initPerformanceObserver(): PerformanceObserver {     const observer = new PerformanceObserver((entryList) => {       const entries = entryList.getEntries();       if (entries.length === 0) return;       // We use the latest entry produced by the `PerformanceObserver` as the best       // signal on which element is actually an LCP one. As an example, the first image to load on       // a page, by virtue of being the only thing on the page so far, is often a LCP candidate       // and gets reported by PerformanceObserver, but isn't necessarily the LCP element.       const lcpElement = entries[entries.length - 1];        // Cast to `any` due to missing `element` on the `LargestContentfulPaint` type of entry.       // See https://developer.mozilla.org/en-US/docs/Web/API/LargestContentfulPaint       const imgSrc = (lcpElement as any).element?.src ?? '';        // Exclude `data:` and `blob:` URLs, since they are not supported by the directive.       if (imgSrc.startsWith('data:') || imgSrc.startsWith('blob:')) return;        const imgNgSrc = this.images.get(imgSrc);       if (imgNgSrc && !this.alreadyWarned.has(imgSrc)) {         this.alreadyWarned.add(imgSrc);         logMissingPriorityWarning(imgSrc);       }     });     observer.observe({type: 'largest-contentful-paint', buffered: true});     return observer;   }    registerImage(rewrittenSrc: string, originalNgSrc: string) {     if (!this.observer) return;     this.images.set(getUrl(rewrittenSrc, this.window!).href, originalNgSrc);   }    unregisterImage(rewrittenSrc: string) {     if (!this.observer) return;     this.images.delete(getUrl(rewrittenSrc, this.window!).href);   }    ngOnDestroy() {     if (!this.observer) return;     this.observer.disconnect();     this.images.clear();     this.alreadyWarned.clear();   } }  function logMissingPriorityWarning(ngSrc: string) {   const directiveDetails = imgDirectiveDetails(ngSrc);   console.warn(formatRuntimeError(       RuntimeErrorCode.LCP_IMG_MISSING_PRIORITY,       `${directiveDetails} this image is the Largest Contentful Paint (LCP) ` +           `element but was not marked \"priority\". This image should be marked ` +           `\"priority\" in order to prioritize its loading. ` +           `To fix this, add the \"priority\" attribute.`)); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {inject, Injectable, InjectionToken, ɵformatRuntimeError as formatRuntimeError, ɵRuntimeError as RuntimeError} from '@angular/core';  import {DOCUMENT} from '../../dom_tokens'; import {RuntimeErrorCode} from '../../errors';  import {assertDevMode} from './asserts'; import {imgDirectiveDetails} from './error_helper'; import {extractHostname, getUrl} from './url';  // Set of origins that are always excluded from the preconnect checks. const INTERNAL_PRECONNECT_CHECK_BLOCKLIST = new Set(['localhost', '127.0.0.1', '0.0.0.0']);  /**  * Injection token to configure which origins should be excluded  * from the preconnect checks. It can either be a single string or an array of strings  * to represent a group of origins, for example:  *  * ```typescript  *  {provide: PRECONNECT_CHECK_BLOCKLIST, useValue: 'https://your-domain.com'}  * ```  *  * or:  *  * ```typescript  *  {provide: PRECONNECT_CHECK_BLOCKLIST,  *   useValue: ['https://your-domain-1.com', 'https://your-domain-2.com']}  * ```  *  * @publicApi  */ export const PRECONNECT_CHECK_BLOCKLIST =     new InjectionToken<Array<string|string[]>>('PRECONNECT_CHECK_BLOCKLIST');  /**  * Contains the logic to detect whether an image, marked with the \"priority\" attribute  * has a corresponding `<link rel=\"preconnect\">` tag in the `document.head`.  *  * Note: this is a dev-mode only class, which should not appear in prod bundles,  * thus there is no `ngDevMode` use in the code.  */ @Injectable({providedIn: 'root'}) export class PreconnectLinkChecker {   private document = inject(DOCUMENT);    /**    * Set of <link rel=\"preconnect\"> tags found on this page.    * The `null` value indicates that there was no DOM query operation performed.    */   private preconnectLinks: Set<string>|null = null;    /*    * Keep track of all already seen origin URLs to avoid repeating the same check.    */   private alreadySeen = new Set<string>();    private window: Window|null = null;    private blocklist = new Set<string>(INTERNAL_PRECONNECT_CHECK_BLOCKLIST);    constructor() {     assertDevMode('preconnect link checker');     const win = this.document.defaultView;     if (typeof win !== 'undefined') {       this.window = win;     }     const blocklist = inject(PRECONNECT_CHECK_BLOCKLIST, {optional: true});     if (blocklist) {       this.populateBlocklist(blocklist);     }   }    private populateBlocklist(origins: Array<string|string[]>|string) {     if (Array.isArray(origins)) {       deepForEach(origins, origin => {         this.blocklist.add(extractHostname(origin));       });     } else {       this.blocklist.add(extractHostname(origins));     }   }    /**    * Checks that a preconnect resource hint exists in the head for the    * given src.    *    * @param rewrittenSrc src formatted with loader    * @param originalNgSrc ngSrc value    */   assertPreconnect(rewrittenSrc: string, originalNgSrc: string): void {     if (!this.window) return;      const imgUrl = getUrl(rewrittenSrc, this.window);     if (this.blocklist.has(imgUrl.hostname) || this.alreadySeen.has(imgUrl.origin)) return;      // Register this origin as seen, so we don't check it again later.     this.alreadySeen.add(imgUrl.origin);      if (!this.preconnectLinks) {       // Note: we query for preconnect links only *once* and cache the results       // for the entire lifespan of an application, since it's unlikely that the       // list would change frequently. This allows to make sure there are no       // performance implications of making extra DOM lookups for each image.       this.preconnectLinks = this.queryPreconnectLinks();     }      if (!this.preconnectLinks.has(imgUrl.origin)) {       console.warn(formatRuntimeError(           RuntimeErrorCode.PRIORITY_IMG_MISSING_PRECONNECT_TAG,           `${imgDirectiveDetails(originalNgSrc)} there is no preconnect tag present for this ` +               `image. Preconnecting to the origin(s) that serve priority images ensures that these ` +               `images are delivered as soon as possible. To fix this, please add the following ` +               `element into the <head> of the document:\ ` +               `  <link rel=\"preconnect\" href=\"${imgUrl.origin}\">`));     }   }    private queryPreconnectLinks(): Set<string> {     const preconnectUrls = new Set<string>();     const selector = 'link[rel=preconnect]';     const links: HTMLLinkElement[] = Array.from(this.document.querySelectorAll(selector));     for (let link of links) {       const url = getUrl(link.href, this.window!);       preconnectUrls.add(url.origin);     }     return preconnectUrls;   }    ngOnDestroy() {     this.preconnectLinks?.clear();     this.alreadySeen.clear();   } }  /**  * Invokes a callback for each element in the array. Also invokes a callback  * recursively for each nested array.  */ function deepForEach<T>(input: (T|any[])[], fn: (value: T) => void): void {   for (let value of input) {     Array.isArray(value) ? deepForEach(value, fn) : fn(value);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core';  /**  * In SSR scenarios, a preload `<link>` element is generated for priority images.  * Having a large number of preload tags may negatively affect the performance,  * so we warn developers (by throwing an error) if the number of preloaded images  * is above a certain threshold. This const specifies this threshold.  */ export const DEFAULT_PRELOADED_IMAGES_LIMIT = 5;  /**  * Helps to keep track of priority images that already have a corresponding  * preload tag (to avoid generating multiple preload tags with the same URL).  *  * This Set tracks the original src passed into the `ngSrc` input not the src after it has been  * run through the specified `IMAGE_LOADER`.  */ export const PRELOADED_IMAGES = new InjectionToken<Set<string>>(     'NG_OPTIMIZED_PRELOADED_IMAGES', {providedIn: 'root', factory: () => new Set<string>()}); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {inject, Injectable, Renderer2, ɵRuntimeError as RuntimeError} from '@angular/core';  import {DOCUMENT} from '../../dom_tokens'; import {RuntimeErrorCode} from '../../errors';  import {DEFAULT_PRELOADED_IMAGES_LIMIT, PRELOADED_IMAGES} from './tokens';  /**  * @description Contains the logic needed to track and add preload link tags to the `<head>` tag. It  * will also track what images have already had preload link tags added so as to not duplicate link  * tags.  *  * In dev mode this service will validate that the number of preloaded images does not exceed the  * configured default preloaded images limit: {@link DEFAULT_PRELOADED_IMAGES_LIMIT}.  */ @Injectable({providedIn: 'root'}) export class PreloadLinkCreator {   private readonly preloadedImages = inject(PRELOADED_IMAGES);   private readonly document = inject(DOCUMENT);    /**    * @description Add a preload `<link>` to the `<head>` of the `index.html` that is served from the    * server while using Angular Universal and SSR to kick off image loads for high priority images.    *    * The `sizes` (passed in from the user) and `srcset` (parsed and formatted from `ngSrcset`)    * properties used to set the corresponding attributes, `imagesizes` and `imagesrcset`    * respectively, on the preload `<link>` tag so that the correctly sized image is preloaded from    * the CDN.    *    * {@link https://web.dev/preload-responsive-images/#imagesrcset-and-imagesizes}    *    * @param renderer The `Renderer2` passed in from the directive    * @param src The original src of the image that is set on the `ngSrc` input.    * @param srcset The parsed and formatted srcset created from the `ngSrcset` input    * @param sizes The value of the `sizes` attribute passed in to the `<img>` tag    */   createPreloadLinkTag(renderer: Renderer2, src: string, srcset?: string, sizes?: string): void {     if (ngDevMode) {       if (this.preloadedImages.size >= DEFAULT_PRELOADED_IMAGES_LIMIT) {         throw new RuntimeError(             RuntimeErrorCode.TOO_MANY_PRELOADED_IMAGES,             ngDevMode &&                 `The \\`NgOptimizedImage\\` directive has detected that more than ` +                     `${DEFAULT_PRELOADED_IMAGES_LIMIT} images were marked as priority. ` +                     `This might negatively affect an overall performance of the page. ` +                     `To fix this, remove the \"priority\" attribute from images with less priority.`);       }     }      if (this.preloadedImages.has(src)) {       return;     }      this.preloadedImages.add(src);      const preload = renderer.createElement('link');     renderer.setAttribute(preload, 'as', 'image');     renderer.setAttribute(preload, 'href', src);     renderer.setAttribute(preload, 'rel', 'preload');     renderer.setAttribute(preload, 'fetchpriority', 'high');      if (sizes) {       renderer.setAttribute(preload, 'imageSizes', sizes);     }      if (srcset) {       renderer.setAttribute(preload, 'imageSrcset', srcset);     }      renderer.appendChild(this.document.head, preload);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef, inject, InjectionToken, Injector, Input, NgZone, OnChanges, OnDestroy, OnInit, PLATFORM_ID, Renderer2, SimpleChanges, ɵformatRuntimeError as formatRuntimeError, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../../errors'; import {isPlatformServer} from '../../platform_id';  import {imgDirectiveDetails} from './error_helper'; import {cloudinaryLoaderInfo} from './image_loaders/cloudinary_loader'; import {IMAGE_LOADER, ImageLoader, ImageLoaderConfig, noopImageLoader} from './image_loaders/image_loader'; import {imageKitLoaderInfo} from './image_loaders/imagekit_loader'; import {imgixLoaderInfo} from './image_loaders/imgix_loader'; import {LCPImageObserver} from './lcp_image_observer'; import {PreconnectLinkChecker} from './preconnect_link_checker'; import {PreloadLinkCreator} from './preload-link-creator';  /**  * When a Base64-encoded image is passed as an input to the `NgOptimizedImage` directive,  * an error is thrown. The image content (as a string) might be very long, thus making  * it hard to read an error message if the entire string is included. This const defines  * the number of characters that should be included into the error message. The rest  * of the content is truncated.  */ const BASE64_IMG_MAX_LENGTH_IN_ERROR = 50;  /**  * RegExpr to determine whether a src in a srcset is using width descriptors.  * Should match something like: \"100w, 200w\".  */ const VALID_WIDTH_DESCRIPTOR_SRCSET = /^((\\s*\\d+w\\s*(,|$)){1,})$/;  /**  * RegExpr to determine whether a src in a srcset is using density descriptors.  * Should match something like: \"1x, 2x, 50x\". Also supports decimals like \"1.5x, 1.50x\".  */ const VALID_DENSITY_DESCRIPTOR_SRCSET = /^((\\s*\\d+(\\.\\d+)?x\\s*(,|$)){1,})$/;  /**  * Srcset values with a density descriptor higher than this value will actively  * throw an error. Such densities are not permitted as they cause image sizes  * to be unreasonably large and slow down LCP.  */ export const ABSOLUTE_SRCSET_DENSITY_CAP = 3;  /**  * Used only in error message text to communicate best practices, as we will  * only throw based on the slightly more conservative ABSOLUTE_SRCSET_DENSITY_CAP.  */ export const RECOMMENDED_SRCSET_DENSITY_CAP = 2;  /**  * Used in generating automatic density-based srcsets  */ const DENSITY_SRCSET_MULTIPLIERS = [1, 2];  /**  * Used to determine which breakpoints to use on full-width images  */ const VIEWPORT_BREAKPOINT_CUTOFF = 640; /**  * Used to determine whether two aspect ratios are similar in value.  */ const ASPECT_RATIO_TOLERANCE = .1;  /**  * Used to determine whether the image has been requested at an overly  * large size compared to the actual rendered image size (after taking  * into account a typical device pixel ratio). In pixels.  */ const OVERSIZED_IMAGE_TOLERANCE = 1000;  /**  * Used to limit automatic srcset generation of very large sources for  * fixed-size images. In pixels.  */ const FIXED_SRCSET_WIDTH_LIMIT = 1920; const FIXED_SRCSET_HEIGHT_LIMIT = 1080;   /** Info about built-in loaders we can test for. */ export const BUILT_IN_LOADERS = [imgixLoaderInfo, imageKitLoaderInfo, cloudinaryLoaderInfo];  /**  * A configuration object for the NgOptimizedImage directive. Contains:  * - breakpoints: An array of integer breakpoints used to generate  *      srcsets for responsive images.  *  * Learn more about the responsive image configuration in [the NgOptimizedImage  * guide](guide/image-directive).  * @publicApi  * @developerPreview  */ export type ImageConfig = {   breakpoints?: number[] };  const defaultConfig: ImageConfig = {   breakpoints: [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840], };  /**  * Injection token that configures the image optimized image functionality.  *  * @see `NgOptimizedImage`  * @publicApi  * @developerPreview  */ export const IMAGE_CONFIG = new InjectionToken<ImageConfig>(     'ImageConfig', {providedIn: 'root', factory: () => defaultConfig});  /**  * Directive that improves image loading performance by enforcing best practices.  *  * `NgOptimizedImage` ensures that the loading of the Largest Contentful Paint (LCP) image is  * prioritized by:  * - Automatically setting the `fetchpriority` attribute on the `<img>` tag  * - Lazy loading non-priority images by default  * - Asserting that there is a corresponding preconnect link tag in the document head  *  * In addition, the directive:  * - Generates appropriate asset URLs if a corresponding `ImageLoader` function is provided  * - Automatically generates a srcset  * - Requires that `width` and `height` are set  * - Warns if `width` or `height` have been set incorrectly  * - Warns if the image will be visually distorted when rendered  *  * @usageNotes  * The `NgOptimizedImage` directive is marked as [standalone](guide/standalone-components) and can  * be imported directly.  *  * Follow the steps below to enable and use the directive:  * 1. Import it into the necessary NgModule or a standalone Component.  * 2. Optionally provide an `ImageLoader` if you use an image hosting service.  * 3. Update the necessary `<img>` tags in templates and replace `src` attributes with `ngSrc`.  * Using a `ngSrc` allows the directive to control when the `src` gets set, which triggers an image  * download.  *  * Step 1: import the `NgOptimizedImage` directive.  *  * ```typescript  * import { NgOptimizedImage } from '@angular/common';  *  * // Include it into the necessary NgModule  * @NgModule({  *   imports: [NgOptimizedImage],  * })  * class AppModule {}  *  * // ... or a standalone Component  * @Component({  *   standalone: true  *   imports: [NgOptimizedImage],  * })  * class MyStandaloneComponent {}  * ```  *  * Step 2: configure a loader.  *  * To use the **default loader**: no additional code changes are necessary. The URL returned by the  * generic loader will always match the value of \"src\". In other words, this loader applies no  * transformations to the resource URL and the value of the `ngSrc` attribute will be used as is.  *  * To use an existing loader for a **third-party image service**: add the provider factory for your  * chosen service to the `providers` array. In the example below, the Imgix loader is used:  *  * ```typescript  * import {provideImgixLoader} from '@angular/common';  *  * // Call the function and add the result to the `providers` array:  * providers: [  *   provideImgixLoader(\"https://my.base.url/\"),  * ],  * ```  *  * The `NgOptimizedImage` directive provides the following functions:  * - `provideCloudflareLoader`  * - `provideCloudinaryLoader`  * - `provideImageKitLoader`  * - `provideImgixLoader`  *  * If you use a different image provider, you can create a custom loader function as described  * below.  *  * To use a **custom loader**: provide your loader function as a value for the `IMAGE_LOADER` DI  * token.  *  * ```typescript  * import {IMAGE_LOADER, ImageLoaderConfig} from '@angular/common';  *  * // Configure the loader using the `IMAGE_LOADER` token.  * providers: [  *   {  *      provide: IMAGE_LOADER,  *      useValue: (config: ImageLoaderConfig) => {  *        return `https://example.com/${config.src}-${config.width}.jpg}`;  *      }  *   },  * ],  * ```  *  * Step 3: update `<img>` tags in templates to use `ngSrc` instead of `src`.  *  * ```  * <img ngSrc=\"logo.png\" width=\"200\" height=\"100\">  * ```  *  * @publicApi  */ @Directive({   standalone: true,   selector: 'img[ngSrc]',   host: {     '[style.position]': 'fill ? \"absolute\" : null',     '[style.width]': 'fill ? \"100%\" : null',     '[style.height]': 'fill ? \"100%\" : null',     '[style.inset]': 'fill ? \"0px\" : null'   } }) export class NgOptimizedImage implements OnInit, OnChanges, OnDestroy {   private imageLoader = inject(IMAGE_LOADER);   private config: ImageConfig = processConfig(inject(IMAGE_CONFIG));   private renderer = inject(Renderer2);   private imgElement: HTMLImageElement = inject(ElementRef).nativeElement;   private injector = inject(Injector);   private readonly isServer = isPlatformServer(inject(PLATFORM_ID));   private readonly preloadLinkChecker = inject(PreloadLinkCreator);    // a LCP image observer - should be injected only in the dev mode   private lcpObserver = ngDevMode ? this.injector.get(LCPImageObserver) : null;    /**    * Calculate the rewritten `src` once and store it.    * This is needed to avoid repetitive calculations and make sure the directive cleanup in the    * `ngOnDestroy` does not rely on the `IMAGE_LOADER` logic (which in turn can rely on some other    * instance that might be already destroyed).    */   private _renderedSrc: string|null = null;    /**    * Name of the source image.    * Image name will be processed by the image loader and the final URL will be applied as the `src`    * property of the image.    */   @Input() ngSrc!: string;    /**    * A comma separated list of width or density descriptors.    * The image name will be taken from `ngSrc` and combined with the list of width or density    * descriptors to generate the final `srcset` property of the image.    *    * Example:    * ```    * <img ngSrc=\"hello.jpg\" ngSrcset=\"100w, 200w\" />  =>    * <img src=\"path/hello.jpg\" srcset=\"path/hello.jpg?w=100 100w, path/hello.jpg?w=200 200w\" />    * ```    */   @Input() ngSrcset!: string;    /**    * The base `sizes` attribute passed through to the `<img>` element.    * Providing sizes causes the image to create an automatic responsive srcset.    */   @Input() sizes?: string;    /**    * For responsive images: the intrinsic width of the image in pixels.    * For fixed size images: the desired rendered width of the image in pixels.    */   @Input()   set width(value: string|number|undefined) {     ngDevMode && assertGreaterThanZero(this, value, 'width');     this._width = inputToInteger(value);   }   get width(): number|undefined {     return this._width;   }   private _width?: number;    /**    * For responsive images: the intrinsic height of the image in pixels.    * For fixed size images: the desired rendered height of the image in pixels.* The intrinsic    * height of the image in pixels.    */   @Input()   set height(value: string|number|undefined) {     ngDevMode && assertGreaterThanZero(this, value, 'height');     this._height = inputToInteger(value);   }   get height(): number|undefined {     return this._height;   }   private _height?: number;    /**    * The desired loading behavior (lazy, eager, or auto).    *    * Setting images as loading='eager' or loading='auto' marks them    * as non-priority images. Avoid changing this input for priority images.    */   @Input() loading?: 'lazy'|'eager'|'auto';    /**    * Indicates whether this image should have a high priority.    */   @Input()   set priority(value: string|boolean|undefined) {     this._priority = inputToBoolean(value);   }   get priority(): boolean {     return this._priority;   }   private _priority = false;    /**    * Data to pass through to custom loaders.    */   @Input() loaderParams?: {[key: string]: any};    /**    * Disables automatic srcset generation for this image.    */   @Input()   set disableOptimizedSrcset(value: string|boolean|undefined) {     this._disableOptimizedSrcset = inputToBoolean(value);   }   get disableOptimizedSrcset(): boolean {     return this._disableOptimizedSrcset;   }   private _disableOptimizedSrcset = false;    /**    * Sets the image to \"fill mode\", which eliminates the height/width requirement and adds    * styles such that the image fills its containing element.    *    * @developerPreview    */   @Input()   set fill(value: string|boolean|undefined) {     this._fill = inputToBoolean(value);   }   get fill(): boolean {     return this._fill;   }   private _fill = false;    /**    * Value of the `src` attribute if set on the host `<img>` element.    * This input is exclusively read to assert that `src` is not set in conflict    * with `ngSrc` and that images don't start to load until a lazy loading strategy is set.    * @internal    */   @Input() src?: string;    /**    * Value of the `srcset` attribute if set on the host `<img>` element.    * This input is exclusively read to assert that `srcset` is not set in conflict    * with `ngSrcset` and that images don't start to load until a lazy loading strategy is set.    * @internal    */   @Input() srcset?: string;    /** @nodoc */   ngOnInit() {     if (ngDevMode) {       assertNonEmptyInput(this, 'ngSrc', this.ngSrc);       assertValidNgSrcset(this, this.ngSrcset);       assertNoConflictingSrc(this);       if (this.ngSrcset) {         assertNoConflictingSrcset(this);       }       assertNotBase64Image(this);       assertNotBlobUrl(this);       if (this.fill) {         assertEmptyWidthAndHeight(this);         assertNonZeroRenderedHeight(this, this.imgElement, this.renderer);       } else {         assertNonEmptyWidthAndHeight(this);         // Only check for distorted images when not in fill mode, where         // images may be intentionally stretched, cropped or letterboxed.         assertNoImageDistortion(this, this.imgElement, this.renderer);       }       assertValidLoadingInput(this);       if (!this.ngSrcset) {         assertNoComplexSizes(this);       }       assertNotMissingBuiltInLoader(this.ngSrc, this.imageLoader);       assertNoNgSrcsetWithoutLoader(this, this.imageLoader);       assertNoLoaderParamsWithoutLoader(this, this.imageLoader);       if (this.priority) {         const checker = this.injector.get(PreconnectLinkChecker);         checker.assertPreconnect(this.getRewrittenSrc(), this.ngSrc);       } else {         // Monitor whether an image is an LCP element only in case         // the `priority` attribute is missing. Otherwise, an image         // has the necessary settings and no extra checks are required.         if (this.lcpObserver !== null) {           const ngZone = this.injector.get(NgZone);           ngZone.runOutsideAngular(() => {             this.lcpObserver!.registerImage(this.getRewrittenSrc(), this.ngSrc);           });         }       }     }     this.setHostAttributes();   }    private setHostAttributes() {     // Must set width/height explicitly in case they are bound (in which case they will     // only be reflected and not found by the browser)     if (this.fill) {       if (!this.sizes) {         this.sizes = '100vw';       }     } else {       this.setHostAttribute('width', this.width!.toString());       this.setHostAttribute('height', this.height!.toString());     }      this.setHostAttribute('loading', this.getLoadingBehavior());     this.setHostAttribute('fetchpriority', this.getFetchPriority());      // The `data-ng-img` attribute flags an image as using the directive, to allow     // for analysis of the directive's performance.     this.setHostAttribute('ng-img', 'true');      // The `src` and `srcset` attributes should be set last since other attributes     // could affect the image's loading behavior.     const rewrittenSrc = this.getRewrittenSrc();     this.setHostAttribute('src', rewrittenSrc);      let rewrittenSrcset: string|undefined = undefined;      if (this.sizes) {       this.setHostAttribute('sizes', this.sizes);     }      if (this.ngSrcset) {       rewrittenSrcset = this.getRewrittenSrcset();     } else if (this.shouldGenerateAutomaticSrcset()) {       rewrittenSrcset = this.getAutomaticSrcset();     }      if (rewrittenSrcset) {       this.setHostAttribute('srcset', rewrittenSrcset);     }      if (this.isServer && this.priority) {       this.preloadLinkChecker.createPreloadLinkTag(           this.renderer, rewrittenSrc, rewrittenSrcset, this.sizes);     }   }    /** @nodoc */   ngOnChanges(changes: SimpleChanges) {     if (ngDevMode) {       assertNoPostInitInputChange(this, changes, [         'ngSrc',         'ngSrcset',         'width',         'height',         'priority',         'fill',         'loading',         'sizes',         'loaderParams',         'disableOptimizedSrcset',       ]);     }   }    private callImageLoader(configWithoutCustomParams: Omit<ImageLoaderConfig, 'loaderParams'>):       string {     let augmentedConfig: ImageLoaderConfig = configWithoutCustomParams;     if (this.loaderParams) {       augmentedConfig.loaderParams = this.loaderParams;     }     return this.imageLoader(augmentedConfig);   }    private getLoadingBehavior(): string {     if (!this.priority && this.loading !== undefined) {       return this.loading;     }     return this.priority ? 'eager' : 'lazy';   }    private getFetchPriority(): string {     return this.priority ? 'high' : 'auto';   }    private getRewrittenSrc(): string {     // ImageLoaderConfig supports setting a width property. However, we're not setting width here     // because if the developer uses rendered width instead of intrinsic width in the HTML width     // attribute, the image requested may be too small for 2x+ screens.     if (!this._renderedSrc) {       const imgConfig = {src: this.ngSrc};       // Cache calculated image src to reuse it later in the code.       this._renderedSrc = this.callImageLoader(imgConfig);     }     return this._renderedSrc;   }    private getRewrittenSrcset(): string {     const widthSrcSet = VALID_WIDTH_DESCRIPTOR_SRCSET.test(this.ngSrcset);     const finalSrcs = this.ngSrcset.split(',').filter(src => src !== '').map(srcStr => {       srcStr = srcStr.trim();       const width = widthSrcSet ? parseFloat(srcStr) : parseFloat(srcStr) * this.width!;       return `${this.callImageLoader({src: this.ngSrc, width})} ${srcStr}`;     });     return finalSrcs.join(', ');   }    private getAutomaticSrcset(): string {     if (this.sizes) {       return this.getResponsiveSrcset();     } else {       return this.getFixedSrcset();     }   }    private getResponsiveSrcset(): string {     const {breakpoints} = this.config;      let filteredBreakpoints = breakpoints!;     if (this.sizes?.trim() === '100vw') {       // Since this is a full-screen-width image, our srcset only needs to include       // breakpoints with full viewport widths.       filteredBreakpoints = breakpoints!.filter(bp => bp >= VIEWPORT_BREAKPOINT_CUTOFF);     }      const finalSrcs = filteredBreakpoints.map(         bp => `${this.callImageLoader({src: this.ngSrc, width: bp})} ${bp}w`);     return finalSrcs.join(', ');   }    private getFixedSrcset(): string {     const finalSrcs = DENSITY_SRCSET_MULTIPLIERS.map(multiplier => `${this.callImageLoader({                                                        src: this.ngSrc,                                                        width: this.width! * multiplier                                                      })} ${multiplier}x`);     return finalSrcs.join(', ');   }    private shouldGenerateAutomaticSrcset(): boolean {     return !this._disableOptimizedSrcset && !this.srcset && this.imageLoader !== noopImageLoader &&         !(this.width! > FIXED_SRCSET_WIDTH_LIMIT || this.height! > FIXED_SRCSET_HEIGHT_LIMIT);   }    /** @nodoc */   ngOnDestroy() {     if (ngDevMode) {       if (!this.priority && this._renderedSrc !== null && this.lcpObserver !== null) {         this.lcpObserver.unregisterImage(this._renderedSrc);       }     }   }    private setHostAttribute(name: string, value: string): void {     this.renderer.setAttribute(this.imgElement, name, value);   } }  /***** Helpers *****/  /**  * Convert input value to integer.  */ function inputToInteger(value: string|number|undefined): number|undefined {   return typeof value === 'string' ? parseInt(value, 10) : value; }  /**  * Convert input value to boolean.  */ function inputToBoolean(value: unknown): boolean {   return value != null && `${value}` !== 'false'; }  /**  * Sorts provided config breakpoints and uses defaults.  */ function processConfig(config: ImageConfig): ImageConfig {   let sortedBreakpoints: {breakpoints?: number[]} = {};   if (config.breakpoints) {     sortedBreakpoints.breakpoints = config.breakpoints.sort((a, b) => a - b);   }   return Object.assign({}, defaultConfig, config, sortedBreakpoints); }  /***** Assert functions *****/  /**  * Verifies that there is no `src` set on a host element.  */ function assertNoConflictingSrc(dir: NgOptimizedImage) {   if (dir.src) {     throw new RuntimeError(         RuntimeErrorCode.UNEXPECTED_SRC_ATTR,         `${imgDirectiveDetails(dir.ngSrc)} both \\`src\\` and \\`ngSrc\\` have been set. ` +             `Supplying both of these attributes breaks lazy loading. ` +             `The NgOptimizedImage directive sets \\`src\\` itself based on the value of \\`ngSrc\\`. ` +             `To fix this, please remove the \\`src\\` attribute.`);   } }  /**  * Verifies that there is no `srcset` set on a host element.  */ function assertNoConflictingSrcset(dir: NgOptimizedImage) {   if (dir.srcset) {     throw new RuntimeError(         RuntimeErrorCode.UNEXPECTED_SRCSET_ATTR,         `${imgDirectiveDetails(dir.ngSrc)} both \\`srcset\\` and \\`ngSrcset\\` have been set. ` +             `Supplying both of these attributes breaks lazy loading. ` +             `The NgOptimizedImage directive sets \\`srcset\\` itself based on the value of ` +             `\\`ngSrcset\\`. To fix this, please remove the \\`srcset\\` attribute.`);   } }  /**  * Verifies that the `ngSrc` is not a Base64-encoded image.  */ function assertNotBase64Image(dir: NgOptimizedImage) {   let ngSrc = dir.ngSrc.trim();   if (ngSrc.startsWith('data:')) {     if (ngSrc.length > BASE64_IMG_MAX_LENGTH_IN_ERROR) {       ngSrc = ngSrc.substring(0, BASE64_IMG_MAX_LENGTH_IN_ERROR) + '...';     }     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc, false)} \\`ngSrc\\` is a Base64-encoded string ` +             `(${ngSrc}). NgOptimizedImage does not support Base64-encoded strings. ` +             `To fix this, disable the NgOptimizedImage directive for this element ` +             `by removing \\`ngSrc\\` and using a standard \\`src\\` attribute instead.`);   } }  /**  * Verifies that the 'sizes' only includes responsive values.  */ function assertNoComplexSizes(dir: NgOptimizedImage) {   let sizes = dir.sizes;   if (sizes?.match(/((\\)|,)\\s|^)\\d+px/)) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc, false)} \\`sizes\\` was set to a string including ` +             `pixel values. For automatic \\`srcset\\` generation, \\`sizes\\` must only include responsive ` +             `values, such as \\`sizes=\"50vw\"\\` or \\`sizes=\"(min-width: 768px) 50vw, 100vw\"\\`. ` +             `To fix this, modify the \\`sizes\\` attribute, or provide your own \\`ngSrcset\\` value directly.`);   } }  /**  * Verifies that the `ngSrc` is not a Blob URL.  */ function assertNotBlobUrl(dir: NgOptimizedImage) {   const ngSrc = dir.ngSrc.trim();   if (ngSrc.startsWith('blob:')) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrc\\` was set to a blob URL (${ngSrc}). ` +             `Blob URLs are not supported by the NgOptimizedImage directive. ` +             `To fix this, disable the NgOptimizedImage directive for this element ` +             `by removing \\`ngSrc\\` and using a regular \\`src\\` attribute instead.`);   } }  /**  * Verifies that the input is set to a non-empty string.  */ function assertNonEmptyInput(dir: NgOptimizedImage, name: string, value: unknown) {   const isString = typeof value === 'string';   const isEmptyString = isString && value.trim() === '';   if (!isString || isEmptyString) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc)} \\`${name}\\` has an invalid value ` +             `(\\`${value}\\`). To fix this, change the value to a non-empty string.`);   } }  /**  * Verifies that the `ngSrcset` is in a valid format, e.g. \"100w, 200w\" or \"1x, 2x\".  */ export function assertValidNgSrcset(dir: NgOptimizedImage, value: unknown) {   if (value == null) return;   assertNonEmptyInput(dir, 'ngSrcset', value);   const stringVal = value as string;   const isValidWidthDescriptor = VALID_WIDTH_DESCRIPTOR_SRCSET.test(stringVal);   const isValidDensityDescriptor = VALID_DENSITY_DESCRIPTOR_SRCSET.test(stringVal);    if (isValidDensityDescriptor) {     assertUnderDensityCap(dir, stringVal);   }    const isValidSrcset = isValidWidthDescriptor || isValidDensityDescriptor;   if (!isValidSrcset) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrcset\\` has an invalid value (\\`${value}\\`). ` +             `To fix this, supply \\`ngSrcset\\` using a comma-separated list of one or more width ` +             `descriptors (e.g. \"100w, 200w\") or density descriptors (e.g. \"1x, 2x\").`);   } }  function assertUnderDensityCap(dir: NgOptimizedImage, value: string) {   const underDensityCap =       value.split(',').every(num => num === '' || parseFloat(num) <= ABSOLUTE_SRCSET_DENSITY_CAP);   if (!underDensityCap) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${             imgDirectiveDetails(                 dir.ngSrc)} the \\`ngSrcset\\` contains an unsupported image density:` +             `\\`${value}\\`. NgOptimizedImage generally recommends a max image density of ` +             `${RECOMMENDED_SRCSET_DENSITY_CAP}x but supports image densities up to ` +             `${ABSOLUTE_SRCSET_DENSITY_CAP}x. The human eye cannot distinguish between image densities ` +             `greater than ${RECOMMENDED_SRCSET_DENSITY_CAP}x - which makes them unnecessary for ` +             `most use cases. Images that will be pinch-zoomed are typically the primary use case for ` +             `${ABSOLUTE_SRCSET_DENSITY_CAP}x images. Please remove the high density descriptor and try again.`);   } }  /**  * Creates a `RuntimeError` instance to represent a situation when an input is set after  * the directive has initialized.  */ function postInitInputChangeError(dir: NgOptimizedImage, inputName: string): {} {   let reason!: string;   if (inputName === 'width' || inputName === 'height') {     reason = `Changing \\`${inputName}\\` may result in different attribute value ` +         `applied to the underlying image element and cause layout shifts on a page.`;   } else {     reason = `Changing the \\`${inputName}\\` would have no effect on the underlying ` +         `image element, because the resource loading has already occurred.`;   }   return new RuntimeError(       RuntimeErrorCode.UNEXPECTED_INPUT_CHANGE,       `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` was updated after initialization. ` +           `The NgOptimizedImage directive will not react to this input change. ${reason} ` +           `To fix this, either switch \\`${inputName}\\` to a static value ` +           `or wrap the image element in an *ngIf that is gated on the necessary value.`); }  /**  * Verify that none of the listed inputs has changed.  */ function assertNoPostInitInputChange(     dir: NgOptimizedImage, changes: SimpleChanges, inputs: string[]) {   inputs.forEach(input => {     const isUpdated = changes.hasOwnProperty(input);     if (isUpdated && !changes[input].isFirstChange()) {       if (input === 'ngSrc') {         // When the `ngSrc` input changes, we detect that only in the         // `ngOnChanges` hook, thus the `ngSrc` is already set. We use         // `ngSrc` in the error message, so we use a previous value, but         // not the updated one in it.         dir = {ngSrc: changes[input].previousValue} as NgOptimizedImage;       }       throw postInitInputChangeError(dir, input);     }   }); }  /**  * Verifies that a specified input is a number greater than 0.  */ function assertGreaterThanZero(dir: NgOptimizedImage, inputValue: unknown, inputName: string) {   const validNumber = typeof inputValue === 'number' && inputValue > 0;   const validString =       typeof inputValue === 'string' && /^\\d+$/.test(inputValue.trim()) && parseInt(inputValue) > 0;   if (!validNumber && !validString) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` has an invalid value ` +             `(\\`${inputValue}\\`). To fix this, provide \\`${inputName}\\` ` +             `as a number greater than 0.`);   } }  /**  * Verifies that the rendered image is not visually distorted. Effectively this is checking:  * - Whether the \"width\" and \"height\" attributes reflect the actual dimensions of the image.  * - Whether image styling is \"correct\" (see below for a longer explanation).  */ function assertNoImageDistortion(     dir: NgOptimizedImage, img: HTMLImageElement, renderer: Renderer2) {   const removeListenerFn = renderer.listen(img, 'load', () => {     removeListenerFn();     const renderedWidth = img.clientWidth;     const renderedHeight = img.clientHeight;     const renderedAspectRatio = renderedWidth / renderedHeight;     const nonZeroRenderedDimensions = renderedWidth !== 0 && renderedHeight !== 0;      const intrinsicWidth = img.naturalWidth;     const intrinsicHeight = img.naturalHeight;     const intrinsicAspectRatio = intrinsicWidth / intrinsicHeight;      const suppliedWidth = dir.width!;     const suppliedHeight = dir.height!;     const suppliedAspectRatio = suppliedWidth / suppliedHeight;      // Tolerance is used to account for the impact of subpixel rendering.     // Due to subpixel rendering, the rendered, intrinsic, and supplied     // aspect ratios of a correctly configured image may not exactly match.     // For example, a `width=4030 height=3020` image might have a rendered     // size of \"1062w, 796.48h\". (An aspect ratio of 1.334... vs. 1.333...)     const inaccurateDimensions =         Math.abs(suppliedAspectRatio - intrinsicAspectRatio) > ASPECT_RATIO_TOLERANCE;     const stylingDistortion = nonZeroRenderedDimensions &&         Math.abs(intrinsicAspectRatio - renderedAspectRatio) > ASPECT_RATIO_TOLERANCE;      if (inaccurateDimensions) {       console.warn(formatRuntimeError(           RuntimeErrorCode.INVALID_INPUT,           `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the image does not match ` +               `the aspect ratio indicated by the width and height attributes. ` +               `\ Intrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +               `(aspect-ratio: ${intrinsicAspectRatio}). \ Supplied width and height attributes: ` +               `${suppliedWidth}w x ${suppliedHeight}h (aspect-ratio: ${suppliedAspectRatio}). ` +               `\ To fix this, update the width and height attributes.`));     } else if (stylingDistortion) {       console.warn(formatRuntimeError(           RuntimeErrorCode.INVALID_INPUT,           `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the rendered image ` +               `does not match the image's intrinsic aspect ratio. ` +               `\ Intrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +               `(aspect-ratio: ${intrinsicAspectRatio}). \ Rendered image size: ` +               `${renderedWidth}w x ${renderedHeight}h (aspect-ratio: ` +               `${renderedAspectRatio}). \ This issue can occur if \"width\" and \"height\" ` +               `attributes are added to an image without updating the corresponding ` +               `image styling. To fix this, adjust image styling. In most cases, ` +               `adding \"height: auto\" or \"width: auto\" to the image styling will fix ` +               `this issue.`));     } else if (!dir.ngSrcset && nonZeroRenderedDimensions) {       // If `ngSrcset` hasn't been set, sanity check the intrinsic size.       const recommendedWidth = RECOMMENDED_SRCSET_DENSITY_CAP * renderedWidth;       const recommendedHeight = RECOMMENDED_SRCSET_DENSITY_CAP * renderedHeight;       const oversizedWidth = (intrinsicWidth - recommendedWidth) >= OVERSIZED_IMAGE_TOLERANCE;       const oversizedHeight = (intrinsicHeight - recommendedHeight) >= OVERSIZED_IMAGE_TOLERANCE;       if (oversizedWidth || oversizedHeight) {         console.warn(formatRuntimeError(             RuntimeErrorCode.OVERSIZED_IMAGE,             `${imgDirectiveDetails(dir.ngSrc)} the intrinsic image is significantly ` +                 `larger than necessary. ` +                 `\ Rendered image size: ${renderedWidth}w x ${renderedHeight}h. ` +                 `\ Intrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h. ` +                 `\ Recommended intrinsic image size: ${recommendedWidth}w x ${                     recommendedHeight}h. ` +                 `\ Note: Recommended intrinsic image size is calculated assuming a maximum DPR of ` +                 `${RECOMMENDED_SRCSET_DENSITY_CAP}. To improve loading time, resize the image ` +                 `or consider using the \"ngSrcset\" and \"sizes\" attributes.`));       }     }   }); }  /**  * Verifies that a specified input is set.  */ function assertNonEmptyWidthAndHeight(dir: NgOptimizedImage) {   let missingAttributes = [];   if (dir.width === undefined) missingAttributes.push('width');   if (dir.height === undefined) missingAttributes.push('height');   if (missingAttributes.length > 0) {     throw new RuntimeError(         RuntimeErrorCode.REQUIRED_INPUT_MISSING,         `${imgDirectiveDetails(dir.ngSrc)} these required attributes ` +             `are missing: ${missingAttributes.map(attr => `\"${attr}\"`).join(', ')}. ` +             `Including \"width\" and \"height\" attributes will prevent image-related layout shifts. ` +             `To fix this, include \"width\" and \"height\" attributes on the image tag or turn on ` +             `\"fill\" mode with the \\`fill\\` attribute.`);   } }  /**  * Verifies that width and height are not set. Used in fill mode, where those attributes don't make  * sense.  */ function assertEmptyWidthAndHeight(dir: NgOptimizedImage) {   if (dir.width || dir.height) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${             imgDirectiveDetails(                 dir.ngSrc)} the attributes \\`height\\` and/or \\`width\\` are present ` +             `along with the \\`fill\\` attribute. Because \\`fill\\` mode causes an image to fill its containing ` +             `element, the size attributes have no effect and should be removed.`);   } }  /**  * Verifies that the rendered image has a nonzero height. If the image is in fill mode, provides  * guidance that this can be caused by the containing element's CSS position property.  */ function assertNonZeroRenderedHeight(     dir: NgOptimizedImage, img: HTMLImageElement, renderer: Renderer2) {   const removeListenerFn = renderer.listen(img, 'load', () => {     removeListenerFn();     const renderedHeight = img.clientHeight;     if (dir.fill && renderedHeight === 0) {       console.warn(formatRuntimeError(           RuntimeErrorCode.INVALID_INPUT,           `${imgDirectiveDetails(dir.ngSrc)} the height of the fill-mode image is zero. ` +               `This is likely because the containing element does not have the CSS 'position' ` +               `property set to one of the following: \"relative\", \"fixed\", or \"absolute\". ` +               `To fix this problem, make sure the container element has the CSS 'position' ` +               `property defined and the height of the element is not zero.`));     }   }); }  /**  * Verifies that the `loading` attribute is set to a valid input &  * is not used on priority images.  */ function assertValidLoadingInput(dir: NgOptimizedImage) {   if (dir.loading && dir.priority) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +             `was used on an image that was marked \"priority\". ` +             `Setting \\`loading\\` on priority images is not allowed ` +             `because these images will always be eagerly loaded. ` +             `To fix this, remove the “loading” attribute from the priority image.`);   }   const validInputs = ['auto', 'eager', 'lazy'];   if (typeof dir.loading === 'string' && !validInputs.includes(dir.loading)) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_INPUT,         `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +             `has an invalid value (\\`${dir.loading}\\`). ` +             `To fix this, provide a valid value (\"lazy\", \"eager\", or \"auto\").`);   } }  /**  * Warns if NOT using a loader (falling back to the generic loader) and  * the image appears to be hosted on one of the image CDNs for which  * we do have a built-in image loader. Suggests switching to the  * built-in loader.  *  * @param ngSrc Value of the ngSrc attribute  * @param imageLoader ImageLoader provided  */ function assertNotMissingBuiltInLoader(ngSrc: string, imageLoader: ImageLoader) {   if (imageLoader === noopImageLoader) {     let builtInLoaderName = '';     for (const loader of BUILT_IN_LOADERS) {       if (loader.testUrl(ngSrc)) {         builtInLoaderName = loader.name;         break;       }     }     if (builtInLoaderName) {       console.warn(formatRuntimeError(           RuntimeErrorCode.MISSING_BUILTIN_LOADER,           `NgOptimizedImage: It looks like your images may be hosted on the ` +               `${builtInLoaderName} CDN, but your app is not using Angular's ` +               `built-in loader for that CDN. We recommend switching to use ` +               `the built-in by calling \\`provide${builtInLoaderName}Loader()\\` ` +               `in your \\`providers\\` and passing it your instance's base URL. ` +               `If you don't want to use the built-in loader, define a custom ` +               `loader function using IMAGE_LOADER to silence this warning.`));     }   } }  /**  * Warns if ngSrcset is present and no loader is configured (i.e. the default one is being used).  */ function assertNoNgSrcsetWithoutLoader(dir: NgOptimizedImage, imageLoader: ImageLoader) {   if (dir.ngSrcset && imageLoader === noopImageLoader) {     console.warn(formatRuntimeError(         RuntimeErrorCode.MISSING_NECESSARY_LOADER,         `${imgDirectiveDetails(dir.ngSrc)} the \\`ngSrcset\\` attribute is present but ` +             `no image loader is configured (i.e. the default one is being used), ` +             `which would result in the same image being used for all configured sizes. ` +             `To fix this, provide a loader or remove the \\`ngSrcset\\` attribute from the image.`));   } }  /**  * Warns if loaderParams is present and no loader is configured (i.e. the default one is being  * used).  */ function assertNoLoaderParamsWithoutLoader(dir: NgOptimizedImage, imageLoader: ImageLoader) {   if (dir.loaderParams && imageLoader === noopImageLoader) {     console.warn(formatRuntimeError(         RuntimeErrorCode.MISSING_NECESSARY_LOADER,         `${imgDirectiveDetails(dir.ngSrc)} the \\`loaderParams\\` attribute is present but ` +             `no image loader is configured (i.e. the default one is being used), ` +             `which means that the loaderParams data will not be consumed and will not affect the URL. ` +             `To fix this, provide a custom loader or remove the \\`loaderParams\\` attribute from the image.`));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // These exports represent the set of symbols exposed as a public API. export {provideCloudflareLoader} from './image_loaders/cloudflare_loader'; export {provideCloudinaryLoader} from './image_loaders/cloudinary_loader'; export {IMAGE_LOADER, ImageLoader, ImageLoaderConfig} from './image_loaders/image_loader'; export {provideImageKitLoader} from './image_loaders/imagekit_loader'; export {provideImgixLoader} from './image_loaders/imgix_loader'; export {IMAGE_CONFIG, ImageConfig, NgOptimizedImage} from './ng_optimized_image'; export {PRECONNECT_CHECK_BLOCKLIST} from './preconnect_link_checker'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the common package.  */ export * from './private_export'; export * from './location/index'; export {formatDate} from './i18n/format_date'; export {formatCurrency, formatNumber, formatPercent} from './i18n/format_number'; export {NgLocaleLocalization, NgLocalization} from './i18n/localization'; export {registerLocaleData} from './i18n/locale_data'; export {Plural, NumberFormatStyle, FormStyle, Time, TranslationWidth, FormatWidth, NumberSymbol, WeekDay, getNumberOfCurrencyDigits, getCurrencySymbol, getLocaleDayPeriods, getLocaleDayNames, getLocaleMonthNames, getLocaleId, getLocaleEraNames, getLocaleWeekEndRange, getLocaleFirstDayOfWeek, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocalePluralCase, getLocaleTimeFormat, getLocaleNumberSymbol, getLocaleNumberFormat, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDirection} from './i18n/locale_data_api'; export {parseCookieValue as ɵparseCookieValue} from './cookie'; export {CommonModule} from './common_module'; export {NgClass, NgFor, NgForOf, NgForOfContext, NgIf, NgIfContext, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NgComponentOutlet} from './directives/index'; export {DOCUMENT} from './dom_tokens'; export {AsyncPipe, DatePipe, DatePipeConfig, DATE_PIPE_DEFAULT_TIMEZONE, DATE_PIPE_DEFAULT_OPTIONS, I18nPluralPipe, I18nSelectPipe, JsonPipe, LowerCasePipe, CurrencyPipe, DecimalPipe, PercentPipe, SlicePipe, UpperCasePipe, TitleCasePipe, KeyValuePipe, KeyValue} from './pipes/index'; export {PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, isPlatformBrowser, isPlatformServer, isPlatformWorkerApp, isPlatformWorkerUi} from './platform_id'; export {VERSION} from './version'; export {ViewportScroller, NullViewportScroller as ɵNullViewportScroller} from './viewport_scroller'; export {XhrFactory} from './xhr'; export {IMAGE_CONFIG, ImageConfig, IMAGE_LOADER, ImageLoader, ImageLoaderConfig, NgOptimizedImage, PRECONNECT_CHECK_BLOCKLIST, provideCloudflareLoader, provideCloudinaryLoader, provideImageKitLoader, provideImgixLoader} from './directives/ng_optimized_image'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/common';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["i1.LocationStrategy","stringify","RuntimeError","i1.NgLocalization","i1.NgClass","i2.NgComponentOutlet","i3.NgForOf","i4.NgIf","i5.NgTemplateOutlet","i6.NgStyle","i7.NgSwitch","i7.NgSwitchCase","i7.NgSwitchDefault","i8.NgPlural","i8.NgPluralCase","i9.AsyncPipe","i10.UpperCasePipe","i10.LowerCasePipe","i11.JsonPipe","i12.SlicePipe","i13.DecimalPipe","i13.PercentPipe","i10.TitleCasePipe","i13.CurrencyPipe","i14.DatePipe","i15.I18nPluralPipe","i16.I18nSelectPipe","i17.KeyValuePipe","formatRuntimeError"],"mappings":"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,MAAM,aAAa,GAA2F,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,MAAM,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,OAAO,EAAC,SAAS,EAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,MAAM,EAAC,SAAS,EAAC,CAAC,CAAC,EAA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"}
-------------------- SECTION 232 --------------------
{"version":3,"file":"upgrade.mjs","sources":["../../../../../../packages/common/upgrade/src/utils.ts","../../../../../../packages/common/upgrade/src/location_shim.ts","../../../../../../packages/common/upgrade/src/params.ts","../../../../../../packages/common/upgrade/src/location_upgrade_module.ts","../../../../../../packages/common/upgrade/public_api.ts","../../../../../../packages/common/upgrade/index.ts","../../../../../../packages/common/upgrade/upgrade.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export function stripPrefix(val: string, prefix: string): string {   return val.startsWith(prefix) ? val.substring(prefix.length) : val; }  export function deepEqual(a: any, b: any): boolean {   if (a === b) {     return true;   } else if (!a || !b) {     return false;   } else {     try {       if ((a.prototype !== b.prototype) || (Array.isArray(a) && Array.isArray(b))) {         return false;       }       return JSON.stringify(a) === JSON.stringify(b);     } catch (e) {       return false;     }   } }  export function isAnchor(el: (Node&ParentNode)|Element|null): el is HTMLAnchorElement {   return (<HTMLAnchorElement>el).href !== undefined; }  export function isPromise<T = any>(obj: any): obj is Promise<T> {   // allow any Promise/A+ compliant thenable.   // It's up to the caller to ensure that obj.then conforms to the spec   return !!obj && typeof obj.then === 'function'; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Location, LocationStrategy, PlatformLocation} from '@angular/common'; import {UpgradeModule} from '@angular/upgrade/static'; import {ReplaySubject} from 'rxjs';  import {UrlCodec} from './params'; import {deepEqual, isAnchor, isPromise} from './utils';  const PATH_MATCH = /^([^?#]*)(\\?([^#]*))?(#(.*))?$/; const DOUBLE_SLASH_REGEX = /^\\s*[\\\\/]{2,}/; const IGNORE_URI_REGEXP = /^\\s*(javascript|mailto):/i; const DEFAULT_PORTS: {[key: string]: number} = {   'http:': 80,   'https:': 443,   'ftp:': 21 };  /**  * Location service that provides a drop-in replacement for the $location service  * provided in AngularJS.  *  * @see [Using the Angular Unified Location Service](guide/upgrade#using-the-unified-angular-location-service)  *  * @publicApi  */ export class $locationShim {   private initializing = true;   private updateBrowser = false;   private $$absUrl: string = '';   private $$url: string = '';   private $$protocol: string;   private $$host: string = '';   private $$port: number|null;   private $$replace: boolean = false;   private $$path: string = '';   private $$search: any = '';   private $$hash: string = '';   private $$state: unknown;   private $$changeListeners: [     ((url: string, state: unknown, oldUrl: string, oldState: unknown, err?: (e: Error) => void) =>          void),     (e: Error) => void   ][] = [];    private cachedState: unknown = null;    private urlChanges = new ReplaySubject<{newUrl: string, newState: unknown}>(1);    constructor(       $injector: any, private location: Location, private platformLocation: PlatformLocation,       private urlCodec: UrlCodec, private locationStrategy: LocationStrategy) {     const initialUrl = this.browserUrl();      let parsedUrl = this.urlCodec.parse(initialUrl);      if (typeof parsedUrl === 'string') {       throw 'Invalid URL';     }      this.$$protocol = parsedUrl.protocol;     this.$$host = parsedUrl.hostname;     this.$$port = parseInt(parsedUrl.port) || DEFAULT_PORTS[parsedUrl.protocol] || null;      this.$$parseLinkUrl(initialUrl, initialUrl);     this.cacheState();     this.$$state = this.browserState();      this.location.onUrlChange((newUrl, newState) => {       this.urlChanges.next({newUrl, newState});     });      if (isPromise($injector)) {       $injector.then($i => this.initialize($i));     } else {       this.initialize($injector);     }   }    private initialize($injector: any) {     const $rootScope = $injector.get('$rootScope');     const $rootElement = $injector.get('$rootElement');      $rootElement.on('click', (event: any) => {       if (event.ctrlKey || event.metaKey || event.shiftKey || event.which === 2 ||           event.button === 2) {         return;       }        let elm: (Node&ParentNode)|null = event.target;        // traverse the DOM up to find first A tag       while (elm && elm.nodeName.toLowerCase() !== 'a') {         // ignore rewriting if no A tag (reached root element, or no parent - removed from document)         if (elm === $rootElement[0] || !(elm = elm.parentNode)) {           return;         }       }        if (!isAnchor(elm)) {         return;       }        const absHref = elm.href;       const relHref = elm.getAttribute('href');        // Ignore when url is started with javascript: or mailto:       if (IGNORE_URI_REGEXP.test(absHref)) {         return;       }        if (absHref && !elm.getAttribute('target') && !event.isDefaultPrevented()) {         if (this.$$parseLinkUrl(absHref, relHref)) {           // We do a preventDefault for all urls that are part of the AngularJS application,           // in html5mode and also without, so that we are able to abort navigation without           // getting double entries in the location history.           event.preventDefault();           // update location manually           if (this.absUrl() !== this.browserUrl()) {             $rootScope.$apply();           }         }       }     });      this.urlChanges.subscribe(({newUrl, newState}) => {       const oldUrl = this.absUrl();       const oldState = this.$$state;       this.$$parse(newUrl);       newUrl = this.absUrl();       this.$$state = newState;       const defaultPrevented =           $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl, newState, oldState)               .defaultPrevented;        // if the location was changed by a `$locationChangeStart` handler then stop       // processing this location change       if (this.absUrl() !== newUrl) return;        // If default was prevented, set back to old state. This is the state that was locally       // cached in the $location service.       if (defaultPrevented) {         this.$$parse(oldUrl);         this.state(oldState);         this.setBrowserUrlWithFallback(oldUrl, false, oldState);         this.$$notifyChangeListeners(this.url(), this.$$state, oldUrl, oldState);       } else {         this.initializing = false;         $rootScope.$broadcast('$locationChangeSuccess', newUrl, oldUrl, newState, oldState);         this.resetBrowserUpdate();       }       if (!$rootScope.$$phase) {         $rootScope.$digest();       }     });      // update browser     $rootScope.$watch(() => {       if (this.initializing || this.updateBrowser) {         this.updateBrowser = false;          const oldUrl = this.browserUrl();         const newUrl = this.absUrl();         const oldState = this.browserState();         let currentReplace = this.$$replace;          const urlOrStateChanged =             !this.urlCodec.areEqual(oldUrl, newUrl) || oldState !== this.$$state;          // Fire location changes one time to on initialization. This must be done on the         // next tick (thus inside $evalAsync()) in order for listeners to be registered         // before the event fires. Mimicing behavior from $locationWatch:         // https://github.com/angular/angular.js/blob/master/src/ng/location.js#L983         if (this.initializing || urlOrStateChanged) {           this.initializing = false;            $rootScope.$evalAsync(() => {             // Get the new URL again since it could have changed due to async update             const newUrl = this.absUrl();             const defaultPrevented =                 $rootScope                     .$broadcast('$locationChangeStart', newUrl, oldUrl, this.$$state, oldState)                     .defaultPrevented;              // if the location was changed by a `$locationChangeStart` handler then stop             // processing this location change             if (this.absUrl() !== newUrl) return;              if (defaultPrevented) {               this.$$parse(oldUrl);               this.$$state = oldState;             } else {               // This block doesn't run when initializing because it's going to perform the update               // to the URL which shouldn't be needed when initializing.               if (urlOrStateChanged) {                 this.setBrowserUrlWithFallback(                     newUrl, currentReplace, oldState === this.$$state ? null : this.$$state);                 this.$$replace = false;               }               $rootScope.$broadcast(                   '$locationChangeSuccess', newUrl, oldUrl, this.$$state, oldState);               if (urlOrStateChanged) {                 this.$$notifyChangeListeners(this.url(), this.$$state, oldUrl, oldState);               }             }           });         }       }       this.$$replace = false;     });   }    private resetBrowserUpdate() {     this.$$replace = false;     this.$$state = this.browserState();     this.updateBrowser = false;     this.lastBrowserUrl = this.browserUrl();   }    private lastHistoryState: unknown;   private lastBrowserUrl: string = '';   private browserUrl(): string;   private browserUrl(url: string, replace?: boolean, state?: unknown): this;   private browserUrl(url?: string, replace?: boolean, state?: unknown) {     // In modern browsers `history.state` is `null` by default; treating it separately     // from `undefined` would cause `$browser.url('/foo')` to change `history.state`     // to undefined via `pushState`. Instead, let's change `undefined` to `null` here.     if (typeof state === 'undefined') {       state = null;     }      // setter     if (url) {       let sameState = this.lastHistoryState === state;        // Normalize the inputted URL       url = this.urlCodec.parse(url).href;        // Don't change anything if previous and current URLs and states match.       if (this.lastBrowserUrl === url && sameState) {         return this;       }       this.lastBrowserUrl = url;       this.lastHistoryState = state;        // Remove server base from URL as the Angular APIs for updating URL require       // it to be the path+.       url = this.stripBaseUrl(this.getServerBase(), url) || url;        // Set the URL       if (replace) {         this.locationStrategy.replaceState(state, '', url, '');       } else {         this.locationStrategy.pushState(state, '', url, '');       }        this.cacheState();        return this;       // getter     } else {       return this.platformLocation.href;     }   }    // This variable should be used *only* inside the cacheState function.   private lastCachedState: unknown = null;   private cacheState() {     // This should be the only place in $browser where `history.state` is read.     this.cachedState = this.platformLocation.getState();     if (typeof this.cachedState === 'undefined') {       this.cachedState = null;     }      // Prevent callbacks fo fire twice if both hashchange & popstate were fired.     if (deepEqual(this.cachedState, this.lastCachedState)) {       this.cachedState = this.lastCachedState;     }      this.lastCachedState = this.cachedState;     this.lastHistoryState = this.cachedState;   }    /**    * This function emulates the $browser.state() function from AngularJS. It will cause    * history.state to be cached unless changed with deep equality check.    */   private browserState(): unknown {     return this.cachedState;   }    private stripBaseUrl(base: string, url: string) {     if (url.startsWith(base)) {       return url.slice(base.length);     }     return undefined;   }    private getServerBase() {     const {protocol, hostname, port} = this.platformLocation;     const baseHref = this.locationStrategy.getBaseHref();     let url = `${protocol}//${hostname}${port ? ':' + port : ''}${baseHref || '/'}`;     return url.endsWith('/') ? url : url + '/';   }    private parseAppUrl(url: string) {     if (DOUBLE_SLASH_REGEX.test(url)) {       throw new Error(`Bad Path - URL cannot start with double slashes: ${url}`);     }      let prefixed = (url.charAt(0) !== '/');     if (prefixed) {       url = '/' + url;     }     let match = this.urlCodec.parse(url, this.getServerBase());     if (typeof match === 'string') {       throw new Error(`Bad URL - Cannot parse URL: ${url}`);     }     let path =         prefixed && match.pathname.charAt(0) === '/' ? match.pathname.substring(1) : match.pathname;     this.$$path = this.urlCodec.decodePath(path);     this.$$search = this.urlCodec.decodeSearch(match.search);     this.$$hash = this.urlCodec.decodeHash(match.hash);      // make sure path starts with '/';     if (this.$$path && this.$$path.charAt(0) !== '/') {       this.$$path = '/' + this.$$path;     }   }    /**    * Registers listeners for URL changes. This API is used to catch updates performed by the    * AngularJS framework. These changes are a subset of the `$locationChangeStart` and    * `$locationChangeSuccess` events which fire when AngularJS updates its internally-referenced    * version of the browser URL.    *    * It's possible for `$locationChange` events to happen, but for the browser URL    * (window.location) to remain unchanged. This `onChange` callback will fire only when AngularJS    * actually updates the browser URL (window.location).    *    * @param fn The callback function that is triggered for the listener when the URL changes.    * @param err The callback function that is triggered when an error occurs.    */   onChange(       fn: (url: string, state: unknown, oldUrl: string, oldState: unknown) => void,       err: (e: Error) => void = (e: Error) => {}) {     this.$$changeListeners.push([fn, err]);   }    /** @internal */   $$notifyChangeListeners(       url: string = '', state: unknown, oldUrl: string = '', oldState: unknown) {     this.$$changeListeners.forEach(([fn, err]) => {       try {         fn(url, state, oldUrl, oldState);       } catch (e) {         err(e as Error);       }     });   }    /**    * Parses the provided URL, and sets the current URL to the parsed result.    *    * @param url The URL string.    */   $$parse(url: string) {     let pathUrl: string|undefined;     if (url.startsWith('/')) {       pathUrl = url;     } else {       // Remove protocol & hostname if URL starts with it       pathUrl = this.stripBaseUrl(this.getServerBase(), url);     }     if (typeof pathUrl === 'undefined') {       throw new Error(`Invalid url \"${url}\", missing path prefix \"${this.getServerBase()}\".`);     }      this.parseAppUrl(pathUrl);      if (!this.$$path) {       this.$$path = '/';     }     this.composeUrls();   }    /**    * Parses the provided URL and its relative URL.    *    * @param url The full URL string.    * @param relHref A URL string relative to the full URL string.    */   $$parseLinkUrl(url: string, relHref?: string|null): boolean {     // When relHref is passed, it should be a hash and is handled separately     if (relHref && relHref[0] === '#') {       this.hash(relHref.slice(1));       return true;     }     let rewrittenUrl;     let appUrl = this.stripBaseUrl(this.getServerBase(), url);     if (typeof appUrl !== 'undefined') {       rewrittenUrl = this.getServerBase() + appUrl;     } else if (this.getServerBase() === url + '/') {       rewrittenUrl = this.getServerBase();     }     // Set the URL     if (rewrittenUrl) {       this.$$parse(rewrittenUrl);     }     return !!rewrittenUrl;   }    private setBrowserUrlWithFallback(url: string, replace: boolean, state: unknown) {     const oldUrl = this.url();     const oldState = this.$$state;     try {       this.browserUrl(url, replace, state);        // Make sure $location.state() returns referentially identical (not just deeply equal)       // state object; this makes possible quick checking if the state changed in the digest       // loop. Checking deep equality would be too expensive.       this.$$state = this.browserState();     } catch (e) {       // Restore old values if pushState fails       this.url(oldUrl);       this.$$state = oldState;        throw e;     }   }    private composeUrls() {     this.$$url = this.urlCodec.normalize(this.$$path, this.$$search, this.$$hash);     this.$$absUrl = this.getServerBase() + this.$$url.slice(1);  // remove '/' from front of URL     this.updateBrowser = true;   }    /**    * Retrieves the full URL representation with all segments encoded according to    * rules specified in    * [RFC 3986](https://tools.ietf.org/html/rfc3986).    *    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo    * let absUrl = $location.absUrl();    * // => \"http://example.com/#/some/path?foo=bar&baz=xoxo\"    * ```    */   absUrl(): string {     return this.$$absUrl;   }    /**    * Retrieves the current URL, or sets a new URL. When setting a URL,    * changes the path, search, and hash, and returns a reference to its own instance.    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo    * let url = $location.url();    * // => \"/some/path?foo=bar&baz=xoxo\"    * ```    */   url(): string;   url(url: string): this;   url(url?: string): string|this {     if (typeof url === 'string') {       if (!url.length) {         url = '/';       }        const match = PATH_MATCH.exec(url);       if (!match) return this;       if (match[1] || url === '') this.path(this.urlCodec.decodePath(match[1]));       if (match[2] || match[1] || url === '') this.search(match[3] || '');       this.hash(match[5] || '');        // Chainable method       return this;     }      return this.$$url;   }    /**    * Retrieves the protocol of the current URL.    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo    * let protocol = $location.protocol();    * // => \"http\"    * ```    */   protocol(): string {     return this.$$protocol;   }    /**    * Retrieves the protocol of the current URL.    *    * In contrast to the non-AngularJS version `location.host` which returns `hostname:port`, this    * returns the `hostname` portion only.    *    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo    * let host = $location.host();    * // => \"example.com\"    *    * // given URL http://user:password@example.com:8080/#/some/path?foo=bar&baz=xoxo    * host = $location.host();    * // => \"example.com\"    * host = location.host;    * // => \"example.com:8080\"    * ```    */   host(): string {     return this.$$host;   }    /**    * Retrieves the port of the current URL.    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo    * let port = $location.port();    * // => 80    * ```    */   port(): number|null {     return this.$$port;   }    /**    * Retrieves the path of the current URL, or changes the path and returns a reference to its own    * instance.    *    * Paths should always begin with forward slash (/). This method adds the forward slash    * if it is missing.    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo    * let path = $location.path();    * // => \"/some/path\"    * ```    */   path(): string;   path(path: string|number|null): this;   path(path?: string|number|null): string|this {     if (typeof path === 'undefined') {       return this.$$path;     }      // null path converts to empty string. Prepend with \"/\" if needed.     path = path !== null ? path.toString() : '';     path = path.charAt(0) === '/' ? path : '/' + path;      this.$$path = path;      this.composeUrls();     return this;   }    /**    * Retrieves a map of the search parameters of the current URL, or changes a search    * part and returns a reference to its own instance.    *    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo    * let searchObject = $location.search();    * // => {foo: 'bar', baz: 'xoxo'}    *    * // set foo to 'yipee'    * $location.search('foo', 'yipee');    * // $location.search() => {foo: 'yipee', baz: 'xoxo'}    * ```    *    * @param {string|Object.<string>|Object.<Array.<string>>} search New search params - string or    * hash object.    *    * When called with a single argument the method acts as a setter, setting the `search` component    * of `$location` to the specified value.    *    * If the argument is a hash object containing an array of values, these values will be encoded    * as duplicate search parameters in the URL.    *    * @param {(string|Number|Array<string>|boolean)=} paramValue If `search` is a string or number,    *     then `paramValue`    * will override only a single search property.    *    * If `paramValue` is an array, it will override the property of the `search` component of    * `$location` specified via the first argument.    *    * If `paramValue` is `null`, the property specified via the first argument will be deleted.    *    * If `paramValue` is `true`, the property specified via the first argument will be added with no    * value nor trailing equal sign.    *    * @return {Object} The parsed `search` object of the current URL, or the changed `search` object.    */   search(): {[key: string]: unknown};   search(search: string|number|{[key: string]: unknown}): this;   search(       search: string|number|{[key: string]: unknown},       paramValue: null|undefined|string|number|boolean|string[]): this;   search(       search?: string|number|{[key: string]: unknown},       paramValue?: null|undefined|string|number|boolean|string[]): {[key: string]: unknown}|this {     switch (arguments.length) {       case 0:         return this.$$search;       case 1:         if (typeof search === 'string' || typeof search === 'number') {           this.$$search = this.urlCodec.decodeSearch(search.toString());         } else if (typeof search === 'object' && search !== null) {           // Copy the object so it's never mutated           search = {...search};           // remove object undefined or null properties           for (const key in search) {             if (search[key] == null) delete search[key];           }            this.$$search = search;         } else {           throw new Error(               'LocationProvider.search(): First argument must be a string or an object.');         }         break;       default:         if (typeof search === 'string') {           const currentSearch = this.search();           if (typeof paramValue === 'undefined' || paramValue === null) {             delete currentSearch[search];             return this.search(currentSearch);           } else {             currentSearch[search] = paramValue;             return this.search(currentSearch);           }         }     }     this.composeUrls();     return this;   }    /**    * Retrieves the current hash fragment, or changes the hash fragment and returns a reference to    * its own instance.    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo#hashValue    * let hash = $location.hash();    * // => \"hashValue\"    * ```    */   hash(): string;   hash(hash: string|number|null): this;   hash(hash?: string|number|null): string|this {     if (typeof hash === 'undefined') {       return this.$$hash;     }      this.$$hash = hash !== null ? hash.toString() : '';      this.composeUrls();     return this;   }    /**    * Changes to `$location` during the current `$digest` will replace the current    * history record, instead of adding a new one.    */   replace(): this {     this.$$replace = true;     return this;   }    /**    * Retrieves the history state object when called without any parameter.    *    * Change the history state object when called with one parameter and return `$location`.    * The state object is later passed to `pushState` or `replaceState`.    *    * This method is supported only in HTML5 mode and only in browsers supporting    * the HTML5 History API methods such as `pushState` and `replaceState`. If you need to support    * older browsers (like Android < 4.0), don't use this method.    *    */   state(): unknown;   state(state: unknown): this;   state(state?: unknown): unknown|this {     if (typeof state === 'undefined') {       return this.$$state;     }      this.$$state = state;     return this;   } }  /**  * The factory function used to create an instance of the `$locationShim` in Angular,  * and provides an API-compatible `$locationProvider` for AngularJS.  *  * @publicApi  */ export class $locationShimProvider {   constructor(       private ngUpgrade: UpgradeModule, private location: Location,       private platformLocation: PlatformLocation, private urlCodec: UrlCodec,       private locationStrategy: LocationStrategy) {}    /**    * Factory method that returns an instance of the $locationShim    */   $get() {     return new $locationShim(         this.ngUpgrade.$injector, this.location, this.platformLocation, this.urlCodec,         this.locationStrategy);   }    /**    * Stub method used to keep API compatible with AngularJS. This setting is configured through    * the LocationUpgradeModule's `config` method in your Angular app.    */   hashPrefix(prefix?: string) {     throw new Error('Configure LocationUpgrade through LocationUpgradeModule.config method.');   }    /**    * Stub method used to keep API compatible with AngularJS. This setting is configured through    * the LocationUpgradeModule's `config` method in your Angular app.    */   html5Mode(mode?: any) {     throw new Error('Configure LocationUpgrade through LocationUpgradeModule.config method.');   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * A codec for encoding and decoding URL parts.  *  * @publicApi  **/ export abstract class UrlCodec {   /**    * Encodes the path from the provided string    *    * @param path The path string    */   abstract encodePath(path: string): string;    /**    * Decodes the path from the provided string    *    * @param path The path string    */   abstract decodePath(path: string): string;    /**    * Encodes the search string from the provided string or object    *    * @param path The path string or object    */   abstract encodeSearch(search: string|{[k: string]: unknown}): string;    /**    * Decodes the search objects from the provided string    *    * @param path The path string    */   abstract decodeSearch(search: string): {[k: string]: unknown};    /**    * Encodes the hash from the provided string    *    * @param path The hash string    */   abstract encodeHash(hash: string): string;    /**    * Decodes the hash from the provided string    *    * @param path The hash string    */   abstract decodeHash(hash: string): string;    /**    * Normalizes the URL from the provided string    *    * @param path The URL string    */   abstract normalize(href: string): string;     /**    * Normalizes the URL from the provided string, search, hash, and base URL parameters    *    * @param path The URL path    * @param search The search object    * @param hash The has string    * @param baseUrl The base URL for the URL    */   abstract normalize(path: string, search: {[k: string]: unknown}, hash: string, baseUrl?: string):       string;    /**    * Checks whether the two strings are equal    * @param valA First string for comparison    * @param valB Second string for comparison    */   abstract areEqual(valA: string, valB: string): boolean;    /**    * Parses the URL string based on the base URL    *    * @param url The full URL string    * @param base The base for the URL    */   abstract parse(url: string, base?: string): {     href: string,     protocol: string,     host: string,     search: string,     hash: string,     hostname: string,     port: string,     pathname: string   }; }  /**  * A `UrlCodec` that uses logic from AngularJS to serialize and parse URLs  * and URL parameters.  *  * @publicApi  */ export class AngularJSUrlCodec implements UrlCodec {   // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L15   encodePath(path: string): string {     const segments = path.split('/');     let i = segments.length;      while (i--) {       // decode forward slashes to prevent them from being double encoded       segments[i] = encodeUriSegment(segments[i].replace(/%2F/g, '/'));     }      path = segments.join('/');     return _stripIndexHtml((path && path[0] !== '/' && '/' || '') + path);   }    // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L42   encodeSearch(search: string|{[k: string]: unknown}): string {     if (typeof search === 'string') {       search = parseKeyValue(search);     }      search = toKeyValue(search);     return search ? '?' + search : '';   }    // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L44   encodeHash(hash: string) {     hash = encodeUriSegment(hash);     return hash ? '#' + hash : '';   }    // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L27   decodePath(path: string, html5Mode = true): string {     const segments = path.split('/');     let i = segments.length;      while (i--) {       segments[i] = decodeURIComponent(segments[i]);       if (html5Mode) {         // encode forward slashes to prevent them from being mistaken for path separators         segments[i] = segments[i].replace(/\\//g, '%2F');       }     }      return segments.join('/');   }    // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L72   decodeSearch(search: string) {     return parseKeyValue(search);   }    // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L73   decodeHash(hash: string) {     hash = decodeURIComponent(hash);     return hash[0] === '#' ? hash.substring(1) : hash;   }    // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L149   // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L42   normalize(href: string): string;   normalize(path: string, search: {[k: string]: unknown}, hash: string, baseUrl?: string): string;   normalize(pathOrHref: string, search?: {[k: string]: unknown}, hash?: string, baseUrl?: string):       string {     if (arguments.length === 1) {       const parsed = this.parse(pathOrHref, baseUrl);        if (typeof parsed === 'string') {         return parsed;       }        const serverUrl =           `${parsed.protocol}://${parsed.hostname}${parsed.port ? ':' + parsed.port : ''}`;        return this.normalize(           this.decodePath(parsed.pathname), this.decodeSearch(parsed.search),           this.decodeHash(parsed.hash), serverUrl);     } else {       const encPath = this.encodePath(pathOrHref);       const encSearch = search && this.encodeSearch(search) || '';       const encHash = hash && this.encodeHash(hash) || '';        let joinedPath = (baseUrl || '') + encPath;        if (!joinedPath.length || joinedPath[0] !== '/') {         joinedPath = '/' + joinedPath;       }       return joinedPath + encSearch + encHash;     }   }    areEqual(valA: string, valB: string) {     return this.normalize(valA) === this.normalize(valB);   }    // https://github.com/angular/angular.js/blob/864c7f0/src/ng/urlUtils.js#L60   parse(url: string, base?: string) {     try {       // Safari 12 throws an error when the URL constructor is called with an undefined base.       const parsed = !base ? new URL(url) : new URL(url, base);       return {         href: parsed.href,         protocol: parsed.protocol ? parsed.protocol.replace(/:$/, '') : '',         host: parsed.host,         search: parsed.search ? parsed.search.replace(/^\\?/, '') : '',         hash: parsed.hash ? parsed.hash.replace(/^#/, '') : '',         hostname: parsed.hostname,         port: parsed.port,         pathname: (parsed.pathname.charAt(0) === '/') ? parsed.pathname : '/' + parsed.pathname       };     } catch (e) {       throw new Error(`Invalid URL (${url}) with base (${base})`);     }   } }  function _stripIndexHtml(url: string): string {   return url.replace(/\\/index.html$/, ''); }  /**  * Tries to decode the URI component without throwing an exception.  *  * @param str value potential URI component to check.  * @returns the decoded URI if it can be decoded or else `undefined`.  */ function tryDecodeURIComponent(value: string): string|undefined {   try {     return decodeURIComponent(value);   } catch (e) {     // Ignore any invalid uri component.     return undefined;   } }   /**  * Parses an escaped url query string into key-value pairs. Logic taken from  * https://github.com/angular/angular.js/blob/864c7f0/src/Angular.js#L1382  */ function parseKeyValue(keyValue: string): {[k: string]: unknown} {   const obj: {[k: string]: unknown} = {};   (keyValue || '').split('&').forEach((keyValue) => {     let splitPoint, key, val;     if (keyValue) {       key = keyValue = keyValue.replace(/\\+/g, '%20');       splitPoint = keyValue.indexOf('=');       if (splitPoint !== -1) {         key = keyValue.substring(0, splitPoint);         val = keyValue.substring(splitPoint + 1);       }       key = tryDecodeURIComponent(key);       if (typeof key !== 'undefined') {         val = typeof val !== 'undefined' ? tryDecodeURIComponent(val) : true;         if (!obj.hasOwnProperty(key)) {           obj[key] = val;         } else if (Array.isArray(obj[key])) {           (obj[key] as unknown[]).push(val);         } else {           obj[key] = [obj[key], val];         }       }     }   });   return obj; }  /**  * Serializes into key-value pairs. Logic taken from  * https://github.com/angular/angular.js/blob/864c7f0/src/Angular.js#L1409  */ function toKeyValue(obj: {[k: string]: unknown}) {   const parts: unknown[] = [];   for (const key in obj) {     let value = obj[key];     if (Array.isArray(value)) {       value.forEach((arrayValue) => {         parts.push(             encodeUriQuery(key, true) +             (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));       });     } else {       parts.push(           encodeUriQuery(key, true) +           (value === true ? '' : '=' + encodeUriQuery(value as any, true)));     }   }   return parts.length ? parts.join('&') : ''; }   /**  * We need our custom method because encodeURIComponent is too aggressive and doesn't follow  * https://tools.ietf.org/html/rfc3986 with regards to the character set (pchar) allowed in path  * segments:  *    segment       = *pchar  *    pchar         = unreserved / pct-encoded / sub-delims / \":\" / \"@\"  *    pct-encoded   = \"%\" HEXDIG HEXDIG  *    unreserved    = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"  *    sub-delims    = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"  *                     / \"*\" / \"+\" / \",\" / \";\" / \"=\"  *  * Logic from https://github.com/angular/angular.js/blob/864c7f0/src/Angular.js#L1437  */ function encodeUriSegment(val: string) {   return encodeUriQuery(val, true).replace(/%26/g, '&').replace(/%3D/gi, '=').replace(/%2B/gi, '+'); }   /**  * This method is intended for encoding *key* or *value* parts of query component. We need a custom  * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be  * encoded per https://tools.ietf.org/html/rfc3986:  *    query         = *( pchar / \"/\" / \"?\" )  *    pchar         = unreserved / pct-encoded / sub-delims / \":\" / \"@\"  *    unreserved    = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"  *    pct-encoded   = \"%\" HEXDIG HEXDIG  *    sub-delims    = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"  *                     / \"*\" / \"+\" / \",\" / \";\" / \"=\"  *  * Logic from https://github.com/angular/angular.js/blob/864c7f0/src/Angular.js#L1456  */ function encodeUriQuery(val: string, pctEncodeSpaces: boolean = false) {   return encodeURIComponent(val)       .replace(/%40/g, '@')       .replace(/%3A/gi, ':')       .replace(/%24/g, '$')       .replace(/%2C/gi, ',')       .replace(/%3B/gi, ';')       .replace(/%20/g, (pctEncodeSpaces ? '%20' : '+')); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {APP_BASE_HREF, CommonModule, HashLocationStrategy, Location, LocationStrategy, PathLocationStrategy, PlatformLocation} from '@angular/common'; import {Inject, InjectionToken, ModuleWithProviders, NgModule, Optional} from '@angular/core'; import {UpgradeModule} from '@angular/upgrade/static';  import {$locationShim, $locationShimProvider} from './location_shim'; import {AngularJSUrlCodec, UrlCodec} from './params';   /**  * Configuration options for LocationUpgrade.  *  * @publicApi  */ export interface LocationUpgradeConfig {   /**    * Configures whether the location upgrade module should use the `HashLocationStrategy`    * or the `PathLocationStrategy`    */   useHash?: boolean;   /**    * Configures the hash prefix used in the URL when using the `HashLocationStrategy`    */   hashPrefix?: string;   /**    * Configures the URL codec for encoding and decoding URLs. Default is the `AngularJSCodec`    */   urlCodec?: typeof UrlCodec;   /**    * Configures the base href when used in server-side rendered applications    */   serverBaseHref?: string;   /**    * Configures the base href when used in client-side rendered applications    */   appBaseHref?: string; }  /**  * A provider token used to configure the location upgrade module.  *  * @publicApi  */ export const LOCATION_UPGRADE_CONFIGURATION =     new InjectionToken<LocationUpgradeConfig>('LOCATION_UPGRADE_CONFIGURATION');  const APP_BASE_HREF_RESOLVED = new InjectionToken<string>('APP_BASE_HREF_RESOLVED');  /**  * `NgModule` used for providing and configuring Angular's Unified Location Service for upgrading.  *  * @see [Using the Unified Angular Location Service](guide/upgrade#using-the-unified-angular-location-service)  *  * @publicApi  */ @NgModule({imports: [CommonModule]}) export class LocationUpgradeModule {   static config(config?: LocationUpgradeConfig): ModuleWithProviders<LocationUpgradeModule> {     return {       ngModule: LocationUpgradeModule,       providers: [         Location,         {           provide: $locationShim,           useFactory: provide$location,           deps: [UpgradeModule, Location, PlatformLocation, UrlCodec, LocationStrategy]         },         {provide: LOCATION_UPGRADE_CONFIGURATION, useValue: config ? config : {}},         {provide: UrlCodec, useFactory: provideUrlCodec, deps: [LOCATION_UPGRADE_CONFIGURATION]},         {           provide: APP_BASE_HREF_RESOLVED,           useFactory: provideAppBaseHref,           deps: [LOCATION_UPGRADE_CONFIGURATION, [new Inject(APP_BASE_HREF), new Optional()]]         },         {           provide: LocationStrategy,           useFactory: provideLocationStrategy,           deps: [             PlatformLocation,             APP_BASE_HREF_RESOLVED,             LOCATION_UPGRADE_CONFIGURATION,           ]         },       ],     };   } }  export function provideAppBaseHref(config: LocationUpgradeConfig, appBaseHref?: string) {   if (config && config.appBaseHref != null) {     return config.appBaseHref;   } else if (appBaseHref != null) {     return appBaseHref;   }   return ''; }  export function provideUrlCodec(config: LocationUpgradeConfig) {   const codec = config && config.urlCodec || AngularJSUrlCodec;   return new (codec as any)(); }  export function provideLocationStrategy(     platformLocation: PlatformLocation, baseHref: string, options: LocationUpgradeConfig = {}) {   return options.useHash ? new HashLocationStrategy(platformLocation, baseHref) :                            new PathLocationStrategy(platformLocation, baseHref); }  export function provide$location(     ngUpgrade: UpgradeModule, location: Location, platformLocation: PlatformLocation,     urlCodec: UrlCodec, locationStrategy: LocationStrategy) {   const $locationProvider =       new $locationShimProvider(ngUpgrade, location, platformLocation, urlCodec, locationStrategy);    return $locationProvider.$get(); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/index';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 233 --------------------
{"version":3,"file":"upgrade.mjs","sources":["../../../../../../packages/common/upgrade/src/utils.ts","../../../../../../packages/common/upgrade/src/location_shim.ts","../../../../../../packages/common/upgrade/src/params.ts","../../../../../../packages/common/upgrade/src/location_upgrade_module.ts","../../../../../../packages/common/upgrade/public_api.ts","../../../../../../packages/common/upgrade/index.ts","../../../../../../packages/common/upgrade/upgrade.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export function stripPrefix(val: string, prefix: string): string {   return val.startsWith(prefix) ? val.substring(prefix.length) : val; }  export function deepEqual(a: any, b: any): boolean {   if (a === b) {     return true;   } else if (!a || !b) {     return false;   } else {     try {       if ((a.prototype !== b.prototype) || (Array.isArray(a) && Array.isArray(b))) {         return false;       }       return JSON.stringify(a) === JSON.stringify(b);     } catch (e) {       return false;     }   } }  export function isAnchor(el: (Node&ParentNode)|Element|null): el is HTMLAnchorElement {   return (<HTMLAnchorElement>el).href !== undefined; }  export function isPromise<T = any>(obj: any): obj is Promise<T> {   // allow any Promise/A+ compliant thenable.   // It's up to the caller to ensure that obj.then conforms to the spec   return !!obj && typeof obj.then === 'function'; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Location, LocationStrategy, PlatformLocation} from '@angular/common'; import {UpgradeModule} from '@angular/upgrade/static'; import {ReplaySubject} from 'rxjs';  import {UrlCodec} from './params'; import {deepEqual, isAnchor, isPromise} from './utils';  const PATH_MATCH = /^([^?#]*)(\\?([^#]*))?(#(.*))?$/; const DOUBLE_SLASH_REGEX = /^\\s*[\\\\/]{2,}/; const IGNORE_URI_REGEXP = /^\\s*(javascript|mailto):/i; const DEFAULT_PORTS: {[key: string]: number} = {   'http:': 80,   'https:': 443,   'ftp:': 21 };  /**  * Location service that provides a drop-in replacement for the $location service  * provided in AngularJS.  *  * @see [Using the Angular Unified Location Service](guide/upgrade#using-the-unified-angular-location-service)  *  * @publicApi  */ export class $locationShim {   private initializing = true;   private updateBrowser = false;   private $$absUrl: string = '';   private $$url: string = '';   private $$protocol: string;   private $$host: string = '';   private $$port: number|null;   private $$replace: boolean = false;   private $$path: string = '';   private $$search: any = '';   private $$hash: string = '';   private $$state: unknown;   private $$changeListeners: [     ((url: string, state: unknown, oldUrl: string, oldState: unknown, err?: (e: Error) => void) =>          void),     (e: Error) => void   ][] = [];    private cachedState: unknown = null;    private urlChanges = new ReplaySubject<{newUrl: string, newState: unknown}>(1);    constructor(       $injector: any, private location: Location, private platformLocation: PlatformLocation,       private urlCodec: UrlCodec, private locationStrategy: LocationStrategy) {     const initialUrl = this.browserUrl();      let parsedUrl = this.urlCodec.parse(initialUrl);      if (typeof parsedUrl === 'string') {       throw 'Invalid URL';     }      this.$$protocol = parsedUrl.protocol;     this.$$host = parsedUrl.hostname;     this.$$port = parseInt(parsedUrl.port) || DEFAULT_PORTS[parsedUrl.protocol] || null;      this.$$parseLinkUrl(initialUrl, initialUrl);     this.cacheState();     this.$$state = this.browserState();      this.location.onUrlChange((newUrl, newState) => {       this.urlChanges.next({newUrl, newState});     });      if (isPromise($injector)) {       $injector.then($i => this.initialize($i));     } else {       this.initialize($injector);     }   }    private initialize($injector: any) {     const $rootScope = $injector.get('$rootScope');     const $rootElement = $injector.get('$rootElement');      $rootElement.on('click', (event: any) => {       if (event.ctrlKey || event.metaKey || event.shiftKey || event.which === 2 ||           event.button === 2) {         return;       }        let elm: (Node&ParentNode)|null = event.target;        // traverse the DOM up to find first A tag       while (elm && elm.nodeName.toLowerCase() !== 'a') {         // ignore rewriting if no A tag (reached root element, or no parent - removed from document)         if (elm === $rootElement[0] || !(elm = elm.parentNode)) {           return;         }       }        if (!isAnchor(elm)) {         return;       }        const absHref = elm.href;       const relHref = elm.getAttribute('href');        // Ignore when url is started with javascript: or mailto:       if (IGNORE_URI_REGEXP.test(absHref)) {         return;       }        if (absHref && !elm.getAttribute('target') && !event.isDefaultPrevented()) {         if (this.$$parseLinkUrl(absHref, relHref)) {           // We do a preventDefault for all urls that are part of the AngularJS application,           // in html5mode and also without, so that we are able to abort navigation without           // getting double entries in the location history.           event.preventDefault();           // update location manually           if (this.absUrl() !== this.browserUrl()) {             $rootScope.$apply();           }         }       }     });      this.urlChanges.subscribe(({newUrl, newState}) => {       const oldUrl = this.absUrl();       const oldState = this.$$state;       this.$$parse(newUrl);       newUrl = this.absUrl();       this.$$state = newState;       const defaultPrevented =           $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl, newState, oldState)               .defaultPrevented;        // if the location was changed by a `$locationChangeStart` handler then stop       // processing this location change       if (this.absUrl() !== newUrl) return;        // If default was prevented, set back to old state. This is the state that was locally       // cached in the $location service.       if (defaultPrevented) {         this.$$parse(oldUrl);         this.state(oldState);         this.setBrowserUrlWithFallback(oldUrl, false, oldState);         this.$$notifyChangeListeners(this.url(), this.$$state, oldUrl, oldState);       } else {         this.initializing = false;         $rootScope.$broadcast('$locationChangeSuccess', newUrl, oldUrl, newState, oldState);         this.resetBrowserUpdate();       }       if (!$rootScope.$$phase) {         $rootScope.$digest();       }     });      // update browser     $rootScope.$watch(() => {       if (this.initializing || this.updateBrowser) {         this.updateBrowser = false;          const oldUrl = this.browserUrl();         const newUrl = this.absUrl();         const oldState = this.browserState();         let currentReplace = this.$$replace;          const urlOrStateChanged =             !this.urlCodec.areEqual(oldUrl, newUrl) || oldState !== this.$$state;          // Fire location changes one time to on initialization. This must be done on the         // next tick (thus inside $evalAsync()) in order for listeners to be registered         // before the event fires. Mimicing behavior from $locationWatch:         // https://github.com/angular/angular.js/blob/master/src/ng/location.js#L983         if (this.initializing || urlOrStateChanged) {           this.initializing = false;            $rootScope.$evalAsync(() => {             // Get the new URL again since it could have changed due to async update             const newUrl = this.absUrl();             const defaultPrevented =                 $rootScope                     .$broadcast('$locationChangeStart', newUrl, oldUrl, this.$$state, oldState)                     .defaultPrevented;              // if the location was changed by a `$locationChangeStart` handler then stop             // processing this location change             if (this.absUrl() !== newUrl) return;              if (defaultPrevented) {               this.$$parse(oldUrl);               this.$$state = oldState;             } else {               // This block doesn't run when initializing because it's going to perform the update               // to the URL which shouldn't be needed when initializing.               if (urlOrStateChanged) {                 this.setBrowserUrlWithFallback(                     newUrl, currentReplace, oldState === this.$$state ? null : this.$$state);                 this.$$replace = false;               }               $rootScope.$broadcast(                   '$locationChangeSuccess', newUrl, oldUrl, this.$$state, oldState);               if (urlOrStateChanged) {                 this.$$notifyChangeListeners(this.url(), this.$$state, oldUrl, oldState);               }             }           });         }       }       this.$$replace = false;     });   }    private resetBrowserUpdate() {     this.$$replace = false;     this.$$state = this.browserState();     this.updateBrowser = false;     this.lastBrowserUrl = this.browserUrl();   }    private lastHistoryState: unknown;   private lastBrowserUrl: string = '';   private browserUrl(): string;   private browserUrl(url: string, replace?: boolean, state?: unknown): this;   private browserUrl(url?: string, replace?: boolean, state?: unknown) {     // In modern browsers `history.state` is `null` by default; treating it separately     // from `undefined` would cause `$browser.url('/foo')` to change `history.state`     // to undefined via `pushState`. Instead, let's change `undefined` to `null` here.     if (typeof state === 'undefined') {       state = null;     }      // setter     if (url) {       let sameState = this.lastHistoryState === state;        // Normalize the inputted URL       url = this.urlCodec.parse(url).href;        // Don't change anything if previous and current URLs and states match.       if (this.lastBrowserUrl === url && sameState) {         return this;       }       this.lastBrowserUrl = url;       this.lastHistoryState = state;        // Remove server base from URL as the Angular APIs for updating URL require       // it to be the path+.       url = this.stripBaseUrl(this.getServerBase(), url) || url;        // Set the URL       if (replace) {         this.locationStrategy.replaceState(state, '', url, '');       } else {         this.locationStrategy.pushState(state, '', url, '');       }        this.cacheState();        return this;       // getter     } else {       return this.platformLocation.href;     }   }    // This variable should be used *only* inside the cacheState function.   private lastCachedState: unknown = null;   private cacheState() {     // This should be the only place in $browser where `history.state` is read.     this.cachedState = this.platformLocation.getState();     if (typeof this.cachedState === 'undefined') {       this.cachedState = null;     }      // Prevent callbacks fo fire twice if both hashchange & popstate were fired.     if (deepEqual(this.cachedState, this.lastCachedState)) {       this.cachedState = this.lastCachedState;     }      this.lastCachedState = this.cachedState;     this.lastHistoryState = this.cachedState;   }    /**    * This function emulates the $browser.state() function from AngularJS. It will cause    * history.state to be cached unless changed with deep equality check.    */   private browserState(): unknown {     return this.cachedState;   }    private stripBaseUrl(base: string, url: string) {     if (url.startsWith(base)) {       return url.slice(base.length);     }     return undefined;   }    private getServerBase() {     const {protocol, hostname, port} = this.platformLocation;     const baseHref = this.locationStrategy.getBaseHref();     let url = `${protocol}//${hostname}${port ? ':' + port : ''}${baseHref || '/'}`;     return url.endsWith('/') ? url : url + '/';   }    private parseAppUrl(url: string) {     if (DOUBLE_SLASH_REGEX.test(url)) {       throw new Error(`Bad Path - URL cannot start with double slashes: ${url}`);     }      let prefixed = (url.charAt(0) !== '/');     if (prefixed) {       url = '/' + url;     }     let match = this.urlCodec.parse(url, this.getServerBase());     if (typeof match === 'string') {       throw new Error(`Bad URL - Cannot parse URL: ${url}`);     }     let path =         prefixed && match.pathname.charAt(0) === '/' ? match.pathname.substring(1) : match.pathname;     this.$$path = this.urlCodec.decodePath(path);     this.$$search = this.urlCodec.decodeSearch(match.search);     this.$$hash = this.urlCodec.decodeHash(match.hash);      // make sure path starts with '/';     if (this.$$path && this.$$path.charAt(0) !== '/') {       this.$$path = '/' + this.$$path;     }   }    /**    * Registers listeners for URL changes. This API is used to catch updates performed by the    * AngularJS framework. These changes are a subset of the `$locationChangeStart` and    * `$locationChangeSuccess` events which fire when AngularJS updates its internally-referenced    * version of the browser URL.    *    * It's possible for `$locationChange` events to happen, but for the browser URL    * (window.location) to remain unchanged. This `onChange` callback will fire only when AngularJS    * actually updates the browser URL (window.location).    *    * @param fn The callback function that is triggered for the listener when the URL changes.    * @param err The callback function that is triggered when an error occurs.    */   onChange(       fn: (url: string, state: unknown, oldUrl: string, oldState: unknown) => void,       err: (e: Error) => void = (e: Error) => {}) {     this.$$changeListeners.push([fn, err]);   }    /** @internal */   $$notifyChangeListeners(       url: string = '', state: unknown, oldUrl: string = '', oldState: unknown) {     this.$$changeListeners.forEach(([fn, err]) => {       try {         fn(url, state, oldUrl, oldState);       } catch (e) {         err(e as Error);       }     });   }    /**    * Parses the provided URL, and sets the current URL to the parsed result.    *    * @param url The URL string.    */   $$parse(url: string) {     let pathUrl: string|undefined;     if (url.startsWith('/')) {       pathUrl = url;     } else {       // Remove protocol & hostname if URL starts with it       pathUrl = this.stripBaseUrl(this.getServerBase(), url);     }     if (typeof pathUrl === 'undefined') {       throw new Error(`Invalid url \"${url}\", missing path prefix \"${this.getServerBase()}\".`);     }      this.parseAppUrl(pathUrl);      if (!this.$$path) {       this.$$path = '/';     }     this.composeUrls();   }    /**    * Parses the provided URL and its relative URL.    *    * @param url The full URL string.    * @param relHref A URL string relative to the full URL string.    */   $$parseLinkUrl(url: string, relHref?: string|null): boolean {     // When relHref is passed, it should be a hash and is handled separately     if (relHref && relHref[0] === '#') {       this.hash(relHref.slice(1));       return true;     }     let rewrittenUrl;     let appUrl = this.stripBaseUrl(this.getServerBase(), url);     if (typeof appUrl !== 'undefined') {       rewrittenUrl = this.getServerBase() + appUrl;     } else if (this.getServerBase() === url + '/') {       rewrittenUrl = this.getServerBase();     }     // Set the URL     if (rewrittenUrl) {       this.$$parse(rewrittenUrl);     }     return !!rewrittenUrl;   }    private setBrowserUrlWithFallback(url: string, replace: boolean, state: unknown) {     const oldUrl = this.url();     const oldState = this.$$state;     try {       this.browserUrl(url, replace, state);        // Make sure $location.state() returns referentially identical (not just deeply equal)       // state object; this makes possible quick checking if the state changed in the digest       // loop. Checking deep equality would be too expensive.       this.$$state = this.browserState();     } catch (e) {       // Restore old values if pushState fails       this.url(oldUrl);       this.$$state = oldState;        throw e;     }   }    private composeUrls() {     this.$$url = this.urlCodec.normalize(this.$$path, this.$$search, this.$$hash);     this.$$absUrl = this.getServerBase() + this.$$url.slice(1);  // remove '/' from front of URL     this.updateBrowser = true;   }    /**    * Retrieves the full URL representation with all segments encoded according to    * rules specified in    * [RFC 3986](https://tools.ietf.org/html/rfc3986).    *    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo    * let absUrl = $location.absUrl();    * // => \"http://example.com/#/some/path?foo=bar&baz=xoxo\"    * ```    */   absUrl(): string {     return this.$$absUrl;   }    /**    * Retrieves the current URL, or sets a new URL. When setting a URL,    * changes the path, search, and hash, and returns a reference to its own instance.    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo    * let url = $location.url();    * // => \"/some/path?foo=bar&baz=xoxo\"    * ```    */   url(): string;   url(url: string): this;   url(url?: string): string|this {     if (typeof url === 'string') {       if (!url.length) {         url = '/';       }        const match = PATH_MATCH.exec(url);       if (!match) return this;       if (match[1] || url === '') this.path(this.urlCodec.decodePath(match[1]));       if (match[2] || match[1] || url === '') this.search(match[3] || '');       this.hash(match[5] || '');        // Chainable method       return this;     }      return this.$$url;   }    /**    * Retrieves the protocol of the current URL.    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo    * let protocol = $location.protocol();    * // => \"http\"    * ```    */   protocol(): string {     return this.$$protocol;   }    /**    * Retrieves the protocol of the current URL.    *    * In contrast to the non-AngularJS version `location.host` which returns `hostname:port`, this    * returns the `hostname` portion only.    *    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo    * let host = $location.host();    * // => \"example.com\"    *    * // given URL http://user:password@example.com:8080/#/some/path?foo=bar&baz=xoxo    * host = $location.host();    * // => \"example.com\"    * host = location.host;    * // => \"example.com:8080\"    * ```    */   host(): string {     return this.$$host;   }    /**    * Retrieves the port of the current URL.    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo    * let port = $location.port();    * // => 80    * ```    */   port(): number|null {     return this.$$port;   }    /**    * Retrieves the path of the current URL, or changes the path and returns a reference to its own    * instance.    *    * Paths should always begin with forward slash (/). This method adds the forward slash    * if it is missing.    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo    * let path = $location.path();    * // => \"/some/path\"    * ```    */   path(): string;   path(path: string|number|null): this;   path(path?: string|number|null): string|this {     if (typeof path === 'undefined') {       return this.$$path;     }      // null path converts to empty string. Prepend with \"/\" if needed.     path = path !== null ? path.toString() : '';     path = path.charAt(0) === '/' ? path : '/' + path;      this.$$path = path;      this.composeUrls();     return this;   }    /**    * Retrieves a map of the search parameters of the current URL, or changes a search    * part and returns a reference to its own instance.    *    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo    * let searchObject = $location.search();    * // => {foo: 'bar', baz: 'xoxo'}    *    * // set foo to 'yipee'    * $location.search('foo', 'yipee');    * // $location.search() => {foo: 'yipee', baz: 'xoxo'}    * ```    *    * @param {string|Object.<string>|Object.<Array.<string>>} search New search params - string or    * hash object.    *    * When called with a single argument the method acts as a setter, setting the `search` component    * of `$location` to the specified value.    *    * If the argument is a hash object containing an array of values, these values will be encoded    * as duplicate search parameters in the URL.    *    * @param {(string|Number|Array<string>|boolean)=} paramValue If `search` is a string or number,    *     then `paramValue`    * will override only a single search property.    *    * If `paramValue` is an array, it will override the property of the `search` component of    * `$location` specified via the first argument.    *    * If `paramValue` is `null`, the property specified via the first argument will be deleted.    *    * If `paramValue` is `true`, the property specified via the first argument will be added with no    * value nor trailing equal sign.    *    * @return {Object} The parsed `search` object of the current URL, or the changed `search` object.    */   search(): {[key: string]: unknown};   search(search: string|number|{[key: string]: unknown}): this;   search(       search: string|number|{[key: string]: unknown},       paramValue: null|undefined|string|number|boolean|string[]): this;   search(       search?: string|number|{[key: string]: unknown},       paramValue?: null|undefined|string|number|boolean|string[]): {[key: string]: unknown}|this {     switch (arguments.length) {       case 0:         return this.$$search;       case 1:         if (typeof search === 'string' || typeof search === 'number') {           this.$$search = this.urlCodec.decodeSearch(search.toString());         } else if (typeof search === 'object' && search !== null) {           // Copy the object so it's never mutated           search = {...search};           // remove object undefined or null properties           for (const key in search) {             if (search[key] == null) delete search[key];           }            this.$$search = search;         } else {           throw new Error(               'LocationProvider.search(): First argument must be a string or an object.');         }         break;       default:         if (typeof search === 'string') {           const currentSearch = this.search();           if (typeof paramValue === 'undefined' || paramValue === null) {             delete currentSearch[search];             return this.search(currentSearch);           } else {             currentSearch[search] = paramValue;             return this.search(currentSearch);           }         }     }     this.composeUrls();     return this;   }    /**    * Retrieves the current hash fragment, or changes the hash fragment and returns a reference to    * its own instance.    *    * ```js    * // given URL http://example.com/#/some/path?foo=bar&baz=xoxo#hashValue    * let hash = $location.hash();    * // => \"hashValue\"    * ```    */   hash(): string;   hash(hash: string|number|null): this;   hash(hash?: string|number|null): string|this {     if (typeof hash === 'undefined') {       return this.$$hash;     }      this.$$hash = hash !== null ? hash.toString() : '';      this.composeUrls();     return this;   }    /**    * Changes to `$location` during the current `$digest` will replace the current    * history record, instead of adding a new one.    */   replace(): this {     this.$$replace = true;     return this;   }    /**    * Retrieves the history state object when called without any parameter.    *    * Change the history state object when called with one parameter and return `$location`.    * The state object is later passed to `pushState` or `replaceState`.    *    * This method is supported only in HTML5 mode and only in browsers supporting    * the HTML5 History API methods such as `pushState` and `replaceState`. If you need to support    * older browsers (like Android < 4.0), don't use this method.    *    */   state(): unknown;   state(state: unknown): this;   state(state?: unknown): unknown|this {     if (typeof state === 'undefined') {       return this.$$state;     }      this.$$state = state;     return this;   } }  /**  * The factory function used to create an instance of the `$locationShim` in Angular,  * and provides an API-compatible `$locationProvider` for AngularJS.  *  * @publicApi  */ export class $locationShimProvider {   constructor(       private ngUpgrade: UpgradeModule, private location: Location,       private platformLocation: PlatformLocation, private urlCodec: UrlCodec,       private locationStrategy: LocationStrategy) {}    /**    * Factory method that returns an instance of the $locationShim    */   $get() {     return new $locationShim(         this.ngUpgrade.$injector, this.location, this.platformLocation, this.urlCodec,         this.locationStrategy);   }    /**    * Stub method used to keep API compatible with AngularJS. This setting is configured through    * the LocationUpgradeModule's `config` method in your Angular app.    */   hashPrefix(prefix?: string) {     throw new Error('Configure LocationUpgrade through LocationUpgradeModule.config method.');   }    /**    * Stub method used to keep API compatible with AngularJS. This setting is configured through    * the LocationUpgradeModule's `config` method in your Angular app.    */   html5Mode(mode?: any) {     throw new Error('Configure LocationUpgrade through LocationUpgradeModule.config method.');   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * A codec for encoding and decoding URL parts.  *  * @publicApi  **/ export abstract class UrlCodec {   /**    * Encodes the path from the provided string    *    * @param path The path string    */   abstract encodePath(path: string): string;    /**    * Decodes the path from the provided string    *    * @param path The path string    */   abstract decodePath(path: string): string;    /**    * Encodes the search string from the provided string or object    *    * @param path The path string or object    */   abstract encodeSearch(search: string|{[k: string]: unknown}): string;    /**    * Decodes the search objects from the provided string    *    * @param path The path string    */   abstract decodeSearch(search: string): {[k: string]: unknown};    /**    * Encodes the hash from the provided string    *    * @param path The hash string    */   abstract encodeHash(hash: string): string;    /**    * Decodes the hash from the provided string    *    * @param path The hash string    */   abstract decodeHash(hash: string): string;    /**    * Normalizes the URL from the provided string    *    * @param path The URL string    */   abstract normalize(href: string): string;     /**    * Normalizes the URL from the provided string, search, hash, and base URL parameters    *    * @param path The URL path    * @param search The search object    * @param hash The has string    * @param baseUrl The base URL for the URL    */   abstract normalize(path: string, search: {[k: string]: unknown}, hash: string, baseUrl?: string):       string;    /**    * Checks whether the two strings are equal    * @param valA First string for comparison    * @param valB Second string for comparison    */   abstract areEqual(valA: string, valB: string): boolean;    /**    * Parses the URL string based on the base URL    *    * @param url The full URL string    * @param base The base for the URL    */   abstract parse(url: string, base?: string): {     href: string,     protocol: string,     host: string,     search: string,     hash: string,     hostname: string,     port: string,     pathname: string   }; }  /**  * A `UrlCodec` that uses logic from AngularJS to serialize and parse URLs  * and URL parameters.  *  * @publicApi  */ export class AngularJSUrlCodec implements UrlCodec {   // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L15   encodePath(path: string): string {     const segments = path.split('/');     let i = segments.length;      while (i--) {       // decode forward slashes to prevent them from being double encoded       segments[i] = encodeUriSegment(segments[i].replace(/%2F/g, '/'));     }      path = segments.join('/');     return _stripIndexHtml((path && path[0] !== '/' && '/' || '') + path);   }    // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L42   encodeSearch(search: string|{[k: string]: unknown}): string {     if (typeof search === 'string') {       search = parseKeyValue(search);     }      search = toKeyValue(search);     return search ? '?' + search : '';   }    // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L44   encodeHash(hash: string) {     hash = encodeUriSegment(hash);     return hash ? '#' + hash : '';   }    // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L27   decodePath(path: string, html5Mode = true): string {     const segments = path.split('/');     let i = segments.length;      while (i--) {       segments[i] = decodeURIComponent(segments[i]);       if (html5Mode) {         // encode forward slashes to prevent them from being mistaken for path separators         segments[i] = segments[i].replace(/\\//g, '%2F');       }     }      return segments.join('/');   }    // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L72   decodeSearch(search: string) {     return parseKeyValue(search);   }    // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L73   decodeHash(hash: string) {     hash = decodeURIComponent(hash);     return hash[0] === '#' ? hash.substring(1) : hash;   }    // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L149   // https://github.com/angular/angular.js/blob/864c7f0/src/ng/location.js#L42   normalize(href: string): string;   normalize(path: string, search: {[k: string]: unknown}, hash: string, baseUrl?: string): string;   normalize(pathOrHref: string, search?: {[k: string]: unknown}, hash?: string, baseUrl?: string):       string {     if (arguments.length === 1) {       const parsed = this.parse(pathOrHref, baseUrl);        if (typeof parsed === 'string') {         return parsed;       }        const serverUrl =           `${parsed.protocol}://${parsed.hostname}${parsed.port ? ':' + parsed.port : ''}`;        return this.normalize(           this.decodePath(parsed.pathname), this.decodeSearch(parsed.search),           this.decodeHash(parsed.hash), serverUrl);     } else {       const encPath = this.encodePath(pathOrHref);       const encSearch = search && this.encodeSearch(search) || '';       const encHash = hash && this.encodeHash(hash) || '';        let joinedPath = (baseUrl || '') + encPath;        if (!joinedPath.length || joinedPath[0] !== '/') {         joinedPath = '/' + joinedPath;       }       return joinedPath + encSearch + encHash;     }   }    areEqual(valA: string, valB: string) {     return this.normalize(valA) === this.normalize(valB);   }    // https://github.com/angular/angular.js/blob/864c7f0/src/ng/urlUtils.js#L60   parse(url: string, base?: string) {     try {       // Safari 12 throws an error when the URL constructor is called with an undefined base.       const parsed = !base ? new URL(url) : new URL(url, base);       return {         href: parsed.href,         protocol: parsed.protocol ? parsed.protocol.replace(/:$/, '') : '',         host: parsed.host,         search: parsed.search ? parsed.search.replace(/^\\?/, '') : '',         hash: parsed.hash ? parsed.hash.replace(/^#/, '') : '',         hostname: parsed.hostname,         port: parsed.port,         pathname: (parsed.pathname.charAt(0) === '/') ? parsed.pathname : '/' + parsed.pathname       };     } catch (e) {       throw new Error(`Invalid URL (${url}) with base (${base})`);     }   } }  function _stripIndexHtml(url: string): string {   return url.replace(/\\/index.html$/, ''); }  /**  * Tries to decode the URI component without throwing an exception.  *  * @param str value potential URI component to check.  * @returns the decoded URI if it can be decoded or else `undefined`.  */ function tryDecodeURIComponent(value: string): string|undefined {   try {     return decodeURIComponent(value);   } catch (e) {     // Ignore any invalid uri component.     return undefined;   } }   /**  * Parses an escaped url query string into key-value pairs. Logic taken from  * https://github.com/angular/angular.js/blob/864c7f0/src/Angular.js#L1382  */ function parseKeyValue(keyValue: string): {[k: string]: unknown} {   const obj: {[k: string]: unknown} = {};   (keyValue || '').split('&').forEach((keyValue) => {     let splitPoint, key, val;     if (keyValue) {       key = keyValue = keyValue.replace(/\\+/g, '%20');       splitPoint = keyValue.indexOf('=');       if (splitPoint !== -1) {         key = keyValue.substring(0, splitPoint);         val = keyValue.substring(splitPoint + 1);       }       key = tryDecodeURIComponent(key);       if (typeof key !== 'undefined') {         val = typeof val !== 'undefined' ? tryDecodeURIComponent(val) : true;         if (!obj.hasOwnProperty(key)) {           obj[key] = val;         } else if (Array.isArray(obj[key])) {           (obj[key] as unknown[]).push(val);         } else {           obj[key] = [obj[key], val];         }       }     }   });   return obj; }  /**  * Serializes into key-value pairs. Logic taken from  * https://github.com/angular/angular.js/blob/864c7f0/src/Angular.js#L1409  */ function toKeyValue(obj: {[k: string]: unknown}) {   const parts: unknown[] = [];   for (const key in obj) {     let value = obj[key];     if (Array.isArray(value)) {       value.forEach((arrayValue) => {         parts.push(             encodeUriQuery(key, true) +             (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));       });     } else {       parts.push(           encodeUriQuery(key, true) +           (value === true ? '' : '=' + encodeUriQuery(value as any, true)));     }   }   return parts.length ? parts.join('&') : ''; }   /**  * We need our custom method because encodeURIComponent is too aggressive and doesn't follow  * https://tools.ietf.org/html/rfc3986 with regards to the character set (pchar) allowed in path  * segments:  *    segment       = *pchar  *    pchar         = unreserved / pct-encoded / sub-delims / \":\" / \"@\"  *    pct-encoded   = \"%\" HEXDIG HEXDIG  *    unreserved    = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"  *    sub-delims    = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"  *                     / \"*\" / \"+\" / \",\" / \";\" / \"=\"  *  * Logic from https://github.com/angular/angular.js/blob/864c7f0/src/Angular.js#L1437  */ function encodeUriSegment(val: string) {   return encodeUriQuery(val, true).replace(/%26/g, '&').replace(/%3D/gi, '=').replace(/%2B/gi, '+'); }   /**  * This method is intended for encoding *key* or *value* parts of query component. We need a custom  * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be  * encoded per https://tools.ietf.org/html/rfc3986:  *    query         = *( pchar / \"/\" / \"?\" )  *    pchar         = unreserved / pct-encoded / sub-delims / \":\" / \"@\"  *    unreserved    = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"  *    pct-encoded   = \"%\" HEXDIG HEXDIG  *    sub-delims    = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"  *                     / \"*\" / \"+\" / \",\" / \";\" / \"=\"  *  * Logic from https://github.com/angular/angular.js/blob/864c7f0/src/Angular.js#L1456  */ function encodeUriQuery(val: string, pctEncodeSpaces: boolean = false) {   return encodeURIComponent(val)       .replace(/%40/g, '@')       .replace(/%3A/gi, ':')       .replace(/%24/g, '$')       .replace(/%2C/gi, ',')       .replace(/%3B/gi, ';')       .replace(/%20/g, (pctEncodeSpaces ? '%20' : '+')); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {APP_BASE_HREF, CommonModule, HashLocationStrategy, Location, LocationStrategy, PathLocationStrategy, PlatformLocation} from '@angular/common'; import {Inject, InjectionToken, ModuleWithProviders, NgModule, Optional} from '@angular/core'; import {UpgradeModule} from '@angular/upgrade/static';  import {$locationShim, $locationShimProvider} from './location_shim'; import {AngularJSUrlCodec, UrlCodec} from './params';   /**  * Configuration options for LocationUpgrade.  *  * @publicApi  */ export interface LocationUpgradeConfig {   /**    * Configures whether the location upgrade module should use the `HashLocationStrategy`    * or the `PathLocationStrategy`    */   useHash?: boolean;   /**    * Configures the hash prefix used in the URL when using the `HashLocationStrategy`    */   hashPrefix?: string;   /**    * Configures the URL codec for encoding and decoding URLs. Default is the `AngularJSCodec`    */   urlCodec?: typeof UrlCodec;   /**    * Configures the base href when used in server-side rendered applications    */   serverBaseHref?: string;   /**    * Configures the base href when used in client-side rendered applications    */   appBaseHref?: string; }  /**  * A provider token used to configure the location upgrade module.  *  * @publicApi  */ export const LOCATION_UPGRADE_CONFIGURATION =     new InjectionToken<LocationUpgradeConfig>('LOCATION_UPGRADE_CONFIGURATION');  const APP_BASE_HREF_RESOLVED = new InjectionToken<string>('APP_BASE_HREF_RESOLVED');  /**  * `NgModule` used for providing and configuring Angular's Unified Location Service for upgrading.  *  * @see [Using the Unified Angular Location Service](guide/upgrade#using-the-unified-angular-location-service)  *  * @publicApi  */ @NgModule({imports: [CommonModule]}) export class LocationUpgradeModule {   static config(config?: LocationUpgradeConfig): ModuleWithProviders<LocationUpgradeModule> {     return {       ngModule: LocationUpgradeModule,       providers: [         Location,         {           provide: $locationShim,           useFactory: provide$location,           deps: [UpgradeModule, Location, PlatformLocation, UrlCodec, LocationStrategy]         },         {provide: LOCATION_UPGRADE_CONFIGURATION, useValue: config ? config : {}},         {provide: UrlCodec, useFactory: provideUrlCodec, deps: [LOCATION_UPGRADE_CONFIGURATION]},         {           provide: APP_BASE_HREF_RESOLVED,           useFactory: provideAppBaseHref,           deps: [LOCATION_UPGRADE_CONFIGURATION, [new Inject(APP_BASE_HREF), new Optional()]]         },         {           provide: LocationStrategy,           useFactory: provideLocationStrategy,           deps: [             PlatformLocation,             APP_BASE_HREF_RESOLVED,             LOCATION_UPGRADE_CONFIGURATION,           ]         },       ],     };   } }  export function provideAppBaseHref(config: LocationUpgradeConfig, appBaseHref?: string) {   if (config && config.appBaseHref != null) {     return config.appBaseHref;   } else if (appBaseHref != null) {     return appBaseHref;   }   return ''; }  export function provideUrlCodec(config: LocationUpgradeConfig) {   const codec = config && config.urlCodec || AngularJSUrlCodec;   return new (codec as any)(); }  export function provideLocationStrategy(     platformLocation: PlatformLocation, baseHref: string, options: LocationUpgradeConfig = {}) {   return options.useHash ? new HashLocationStrategy(platformLocation, baseHref) :                            new PathLocationStrategy(platformLocation, baseHref); }  export function provide$location(     ngUpgrade: UpgradeModule, location: Location, platformLocation: PlatformLocation,     urlCodec: UrlCodec, locationStrategy: LocationStrategy) {   const $locationProvider =       new $locationShimProvider(ngUpgrade, location, platformLocation, urlCodec, locationStrategy);    return $locationProvider.$get(); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/index';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":[],"mappings":"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"}
-------------------- SECTION 234 --------------------
{"version":3,"file":"cdk.mjs","sources":["../../../../../../src/cdk/version.ts","../../../../../../src/cdk/public-api.ts","../../../../../../src/cdk/index.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Version} from '@angular/core';  /** Current version of the Angular Component Development Kit. */ export const VERSION = new Version('15.2.0'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './version'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export * from './public-api'; "],"names":[],"mappings":";;AAAA;;;;;;AAMG;AAIH;MACa,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB;;ACXtD;;;;;;AAMG;;ACNH;;;;;;AAMG;;;;"}
-------------------- SECTION 235 --------------------
{"version":3,"file":"router.mjs","sources":["../../../../../../packages/router/src/shared.ts","../../../../../../packages/router/src/utils/collection.ts","../../../../../../packages/router/src/url_tree.ts","../../../../../../packages/router/src/create_url_tree.ts","../../../../../../packages/router/src/events.ts","../../../../../../packages/router/src/create_url_tree_strategy.ts","../../../../../../packages/router/src/utils/tree.ts","../../../../../../packages/router/src/router_state.ts","../../../../../../packages/router/src/create_router_state.ts","../../../../../../packages/router/src/navigation_canceling_error.ts","../../../../../../packages/router/src/router_outlet_context.ts","../../../../../../packages/router/src/directives/router_outlet.ts","../../../../../../packages/router/src/components/empty_outlet.ts","../../../../../../packages/router/src/utils/config.ts","../../../../../../packages/router/src/operators/activate_routes.ts","../../../../../../packages/router/src/utils/preactivation.ts","../../../../../../packages/router/src/utils/type_guards.ts","../../../../../../packages/router/src/operators/prioritized_guard_value.ts","../../../../../../packages/router/src/operators/check_guards.ts","../../../../../../packages/router/src/utils/config_matching.ts","../../../../../../packages/router/src/apply_redirects.ts","../../../../../../packages/router/src/operators/apply_redirects.ts","../../../../../../packages/router/src/recognize.ts","../../../../../../packages/router/src/operators/recognize.ts","../../../../../../packages/router/src/operators/resolve_data.ts","../../../../../../packages/router/src/operators/switch_tap.ts","../../../../../../packages/router/src/deprecated_load_children.ts","../../../../../../packages/router/src/router_config_loader.ts","../../../../../../packages/router/src/navigation_transition.ts","../../../../../../packages/router/src/page_title_strategy.ts","../../../../../../packages/router/src/route_reuse_strategy.ts","../../../../../../packages/router/src/router_config.ts","../../../../../../packages/router/src/url_handling_strategy.ts","../../../../../../packages/router/src/router.ts","../../../../../../packages/router/src/directives/router_link.ts","../../../../../../packages/router/src/directives/router_link_active.ts","../../../../../../packages/router/src/router_preloader.ts","../../../../../../packages/router/src/router_scroller.ts","../../../../../../packages/router/src/utils/navigations.ts","../../../../../../packages/router/src/provide_router.ts","../../../../../../packages/router/src/router_module.ts","../../../../../../packages/router/src/version.ts","../../../../../../packages/router/public_api.ts","../../../../../../packages/router/index.ts","../../../../../../packages/router/router.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Route, UrlMatchResult} from './models'; import {UrlSegment, UrlSegmentGroup} from './url_tree';   /**  * The primary routing outlet.  *  * @publicApi  */ export const PRIMARY_OUTLET = 'primary';  /**  * A private symbol used to store the value of `Route.title` inside the `Route.data` if it is a  * static string or `Route.resolve` if anything else. This allows us to reuse the existing route  * data/resolvers to support the title feature without new instrumentation in the `Router` pipeline.  */ export const RouteTitleKey = Symbol('RouteTitle');  /**  * A collection of matrix and query URL parameters.  * @see `convertToParamMap()`  * @see `ParamMap`  *  * @publicApi  */ export type Params = {   [key: string]: any; };  /**  * A map that provides access to the required and optional parameters  * specific to a route.  * The map supports retrieving a single value with `get()`  * or multiple values with `getAll()`.  *  * @see [URLSearchParams](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams)  *  * @publicApi  */ export interface ParamMap {   /**    * Reports whether the map contains a given parameter.    * @param name The parameter name.    * @returns True if the map contains the given parameter, false otherwise.    */   has(name: string): boolean;   /**    * Retrieves a single value for a parameter.    * @param name The parameter name.    * @return The parameter's single value,    * or the first value if the parameter has multiple values,    * or `null` when there is no such parameter.    */   get(name: string): string|null;   /**    * Retrieves multiple values for a parameter.    * @param name The parameter name.    * @return An array containing one or more values,    * or an empty array if there is no such parameter.    *    */   getAll(name: string): string[];    /** Names of the parameters in the map. */   readonly keys: string[]; }  class ParamsAsMap implements ParamMap {   private params: Params;    constructor(params: Params) {     this.params = params || {};   }    has(name: string): boolean {     return Object.prototype.hasOwnProperty.call(this.params, name);   }    get(name: string): string|null {     if (this.has(name)) {       const v = this.params[name];       return Array.isArray(v) ? v[0] : v;     }      return null;   }    getAll(name: string): string[] {     if (this.has(name)) {       const v = this.params[name];       return Array.isArray(v) ? v : [v];     }      return [];   }    get keys(): string[] {     return Object.keys(this.params);   } }  /**  * Converts a `Params` instance to a `ParamMap`.  * @param params The instance to convert.  * @returns The new map instance.  *  * @publicApi  */ export function convertToParamMap(params: Params): ParamMap {   return new ParamsAsMap(params); }  /**  * Matches the route configuration (`route`) against the actual URL (`segments`).  *  * When no matcher is defined on a `Route`, this is the matcher used by the Router by default.  *  * @param segments The remaining unmatched segments in the current navigation  * @param segmentGroup The current segment group being matched  * @param route The `Route` to match against.  *  * @see UrlMatchResult  * @see Route  *  * @returns The resulting match information or `null` if the `route` should not match.  * @publicApi  */ export function defaultUrlMatcher(     segments: UrlSegment[], segmentGroup: UrlSegmentGroup, route: Route): UrlMatchResult|null {   const parts = route.path!.split('/');    if (parts.length > segments.length) {     // The actual URL is shorter than the config, no match     return null;   }    if (route.pathMatch === 'full' &&       (segmentGroup.hasChildren() || parts.length < segments.length)) {     // The config is longer than the actual URL but we are looking for a full match, return null     return null;   }    const posParams: {[key: string]: UrlSegment} = {};    // Check each config part against the actual URL   for (let index = 0; index < parts.length; index++) {     const part = parts[index];     const segment = segments[index];     const isParameter = part.startsWith(':');     if (isParameter) {       posParams[part.substring(1)] = segment;     } else if (part !== segment.path) {       // The actual URL part does not match the config, no match       return null;     }   }    return {consumed: segments.slice(0, parts.length), posParams}; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵisObservable as isObservable, ɵisPromise as isPromise} from '@angular/core'; import {from, Observable, of} from 'rxjs';  import {Params} from '../shared';  export function shallowEqualArrays(a: any[], b: any[]): boolean {   if (a.length !== b.length) return false;   for (let i = 0; i < a.length; ++i) {     if (!shallowEqual(a[i], b[i])) return false;   }   return true; }  export function shallowEqual(a: Params, b: Params): boolean {   // While `undefined` should never be possible, it would sometimes be the case in IE 11   // and pre-chromium Edge. The check below accounts for this edge case.   const k1 = a ? Object.keys(a) : undefined;   const k2 = b ? Object.keys(b) : undefined;   if (!k1 || !k2 || k1.length != k2.length) {     return false;   }   let key: string;   for (let i = 0; i < k1.length; i++) {     key = k1[i];     if (!equalArraysOrString(a[key], b[key])) {       return false;     }   }   return true; }  /**  * Test equality for arrays of strings or a string.  */ export function equalArraysOrString(a: string|string[], b: string|string[]) {   if (Array.isArray(a) && Array.isArray(b)) {     if (a.length !== b.length) return false;     const aSorted = [...a].sort();     const bSorted = [...b].sort();     return aSorted.every((val, index) => bSorted[index] === val);   } else {     return a === b;   } }  /**  * Flattens single-level nested arrays.  */ export function flatten<T>(arr: T[][]): T[] {   return Array.prototype.concat.apply([], arr); }  /**  * Return the last element of an array.  */ export function last<T>(a: T[]): T|null {   return a.length > 0 ? a[a.length - 1] : null; }  /**  * Verifys all booleans in an array are `true`.  */ export function and(bools: boolean[]): boolean {   return !bools.some(v => !v); }  export function forEach<K, V>(map: {[key: string]: V}, callback: (v: V, k: string) => void): void {   for (const prop in map) {     if (map.hasOwnProperty(prop)) {       callback(map[prop], prop);     }   } }  export function wrapIntoObservable<T>(value: T|Promise<T>|Observable<T>): Observable<T> {   if (isObservable(value)) {     return value;   }    if (isPromise(value)) {     // Use `Promise.resolve()` to wrap promise-like instances.     // Required ie when a Resolver returns a AngularJS `$q` promise to correctly trigger the     // change detection.     return from(Promise.resolve(value));   }    return of(value); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from './errors'; import {convertToParamMap, ParamMap, Params, PRIMARY_OUTLET} from './shared'; import {equalArraysOrString, forEach, shallowEqual} from './utils/collection';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;  /**  * A set of options which specify how to determine if a `UrlTree` is active, given the `UrlTree`  * for the current router state.  *  * @publicApi  * @see Router.isActive  */ export interface IsActiveMatchOptions {   /**    * Defines the strategy for comparing the matrix parameters of two `UrlTree`s.    *    * The matrix parameter matching is dependent on the strategy for matching the    * segments. That is, if the `paths` option is set to `'subset'`, only    * the matrix parameters of the matching segments will be compared.    *    * - `'exact'`: Requires that matching segments also have exact matrix parameter    * matches.    * - `'subset'`: The matching segments in the router's active `UrlTree` may contain    * extra matrix parameters, but those that exist in the `UrlTree` in question must match.    * - `'ignored'`: When comparing `UrlTree`s, matrix params will be ignored.    */   matrixParams: 'exact'|'subset'|'ignored';   /**    * Defines the strategy for comparing the query parameters of two `UrlTree`s.    *    * - `'exact'`: the query parameters must match exactly.    * - `'subset'`: the active `UrlTree` may contain extra parameters,    * but must match the key and value of any that exist in the `UrlTree` in question.    * - `'ignored'`: When comparing `UrlTree`s, query params will be ignored.    */   queryParams: 'exact'|'subset'|'ignored';   /**    * Defines the strategy for comparing the `UrlSegment`s of the `UrlTree`s.    *    * - `'exact'`: all segments in each `UrlTree` must match.    * - `'subset'`: a `UrlTree` will be determined to be active if it    * is a subtree of the active route. That is, the active route may contain extra    * segments, but must at least have all the segments of the `UrlTree` in question.    */   paths: 'exact'|'subset';   /**    * - `'exact'`: indicates that the `UrlTree` fragments must be equal.    * - `'ignored'`: the fragments will not be compared when determining if a    * `UrlTree` is active.    */   fragment: 'exact'|'ignored'; }  type ParamMatchOptions = 'exact'|'subset'|'ignored';  type PathCompareFn =     (container: UrlSegmentGroup, containee: UrlSegmentGroup, matrixParams: ParamMatchOptions) =>         boolean; type ParamCompareFn = (container: Params, containee: Params) => boolean;  const pathCompareMap: Record<IsActiveMatchOptions['paths'], PathCompareFn> = {   'exact': equalSegmentGroups,   'subset': containsSegmentGroup, }; const paramCompareMap: Record<ParamMatchOptions, ParamCompareFn> = {   'exact': equalParams,   'subset': containsParams,   'ignored': () => true, };  export function containsTree(     container: UrlTree, containee: UrlTree, options: IsActiveMatchOptions): boolean {   return pathCompareMap[options.paths](container.root, containee.root, options.matrixParams) &&       paramCompareMap[options.queryParams](container.queryParams, containee.queryParams) &&       !(options.fragment === 'exact' && container.fragment !== containee.fragment); }  function equalParams(container: Params, containee: Params): boolean {   // TODO: This does not handle array params correctly.   return shallowEqual(container, containee); }  function equalSegmentGroups(     container: UrlSegmentGroup, containee: UrlSegmentGroup,     matrixParams: ParamMatchOptions): boolean {   if (!equalPath(container.segments, containee.segments)) return false;   if (!matrixParamsMatch(container.segments, containee.segments, matrixParams)) {     return false;   }   if (container.numberOfChildren !== containee.numberOfChildren) return false;   for (const c in containee.children) {     if (!container.children[c]) return false;     if (!equalSegmentGroups(container.children[c], containee.children[c], matrixParams))       return false;   }   return true; }  function containsParams(container: Params, containee: Params): boolean {   return Object.keys(containee).length <= Object.keys(container).length &&       Object.keys(containee).every(key => equalArraysOrString(container[key], containee[key])); }  function containsSegmentGroup(     container: UrlSegmentGroup, containee: UrlSegmentGroup,     matrixParams: ParamMatchOptions): boolean {   return containsSegmentGroupHelper(container, containee, containee.segments, matrixParams); }  function containsSegmentGroupHelper(     container: UrlSegmentGroup, containee: UrlSegmentGroup, containeePaths: UrlSegment[],     matrixParams: ParamMatchOptions): boolean {   if (container.segments.length > containeePaths.length) {     const current = container.segments.slice(0, containeePaths.length);     if (!equalPath(current, containeePaths)) return false;     if (containee.hasChildren()) return false;     if (!matrixParamsMatch(current, containeePaths, matrixParams)) return false;     return true;    } else if (container.segments.length === containeePaths.length) {     if (!equalPath(container.segments, containeePaths)) return false;     if (!matrixParamsMatch(container.segments, containeePaths, matrixParams)) return false;     for (const c in containee.children) {       if (!container.children[c]) return false;       if (!containsSegmentGroup(container.children[c], containee.children[c], matrixParams)) {         return false;       }     }     return true;    } else {     const current = containeePaths.slice(0, container.segments.length);     const next = containeePaths.slice(container.segments.length);     if (!equalPath(container.segments, current)) return false;     if (!matrixParamsMatch(container.segments, current, matrixParams)) return false;     if (!container.children[PRIMARY_OUTLET]) return false;     return containsSegmentGroupHelper(         container.children[PRIMARY_OUTLET], containee, next, matrixParams);   } }  function matrixParamsMatch(     containerPaths: UrlSegment[], containeePaths: UrlSegment[], options: ParamMatchOptions) {   return containeePaths.every((containeeSegment, i) => {     return paramCompareMap[options](containerPaths[i].parameters, containeeSegment.parameters);   }); }  /**  * @description  *  * Represents the parsed URL.  *  * Since a router state is a tree, and the URL is nothing but a serialized state, the URL is a  * serialized tree.  * UrlTree is a data structure that provides a lot of affordances in dealing with URLs  *  * @usageNotes  * ### Example  *  * ```  * @Component({templateUrl:'template.html'})  * class MyComponent {  *   constructor(router: Router) {  *     const tree: UrlTree =  *       router.parseUrl('/team/33/(user/victor//support:help)?debug=true#fragment');  *     const f = tree.fragment; // return 'fragment'  *     const q = tree.queryParams; // returns {debug: 'true'}  *     const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];  *     const s: UrlSegment[] = g.segments; // returns 2 segments 'team' and '33'  *     g.children[PRIMARY_OUTLET].segments; // returns 2 segments 'user' and 'victor'  *     g.children['support'].segments; // return 1 segment 'help'  *   }  * }  * ```  *  * @publicApi  */ export class UrlTree {   /** @internal */   _queryParamMap?: ParamMap;   /** @internal */   _warnIfUsedForNavigation?: string;    constructor(       /** The root segment group of the URL tree */       public root: UrlSegmentGroup = new UrlSegmentGroup([], {}),       /** The query params of the URL */       public queryParams: Params = {},       /** The fragment of the URL */       public fragment: string|null = null) {     if (NG_DEV_MODE) {       if (root.segments.length > 0) {         throw new RuntimeError(             RuntimeErrorCode.INVALID_ROOT_URL_SEGMENT,             'The root `UrlSegmentGroup` should not contain `segments`. ' +                 'Instead, these segments belong in the `children` so they can be associated with a named outlet.');       }     }   }    get queryParamMap(): ParamMap {     if (!this._queryParamMap) {       this._queryParamMap = convertToParamMap(this.queryParams);     }     return this._queryParamMap;   }    /** @docsNotRequired */   toString(): string {     return DEFAULT_SERIALIZER.serialize(this);   } }  /**  * @description  *  * Represents the parsed URL segment group.  *  * See `UrlTree` for more information.  *  * @publicApi  */ export class UrlSegmentGroup {   /** @internal */   _sourceSegment?: UrlSegmentGroup;   /** @internal */   _segmentIndexShift?: number;   /**    * @internal    *    * Used only in dev mode to detect if application relies on `relativeLinkResolution: 'legacy'`    * Should be removed in when `relativeLinkResolution` is removed.    */   _segmentIndexShiftCorrected?: number;   /** The parent node in the url tree */   parent: UrlSegmentGroup|null = null;    constructor(       /** The URL segments of this group. See `UrlSegment` for more information */       public segments: UrlSegment[],       /** The list of children of this group */       public children: {[key: string]: UrlSegmentGroup}) {     forEach(children, (v: any, k: any) => v.parent = this);   }    /** Whether the segment has child segments */   hasChildren(): boolean {     return this.numberOfChildren > 0;   }    /** Number of child segments */   get numberOfChildren(): number {     return Object.keys(this.children).length;   }    /** @docsNotRequired */   toString(): string {     return serializePaths(this);   } }   /**  * @description  *  * Represents a single URL segment.  *  * A UrlSegment is a part of a URL between the two slashes. It contains a path and the matrix  * parameters associated with the segment.  *  * @usageNotes  * ### Example  *  * ```  * @Component({templateUrl:'template.html'})  * class MyComponent {  *   constructor(router: Router) {  *     const tree: UrlTree = router.parseUrl('/team;id=33');  *     const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];  *     const s: UrlSegment[] = g.segments;  *     s[0].path; // returns 'team'  *     s[0].parameters; // returns {id: 33}  *   }  * }  * ```  *  * @publicApi  */ export class UrlSegment {   /** @internal */   _parameterMap?: ParamMap;    constructor(       /** The path part of a URL segment */       public path: string,        /** The matrix parameters associated with a segment */       public parameters: {[name: string]: string}) {}    get parameterMap(): ParamMap {     if (!this._parameterMap) {       this._parameterMap = convertToParamMap(this.parameters);     }     return this._parameterMap;   }    /** @docsNotRequired */   toString(): string {     return serializePath(this);   } }  export function equalSegments(as: UrlSegment[], bs: UrlSegment[]): boolean {   return equalPath(as, bs) && as.every((a, i) => shallowEqual(a.parameters, bs[i].parameters)); }  export function equalPath(as: UrlSegment[], bs: UrlSegment[]): boolean {   if (as.length !== bs.length) return false;   return as.every((a, i) => a.path === bs[i].path); }  export function mapChildrenIntoArray<T>(     segment: UrlSegmentGroup, fn: (v: UrlSegmentGroup, k: string) => T[]): T[] {   let res: T[] = [];   forEach(segment.children, (child: UrlSegmentGroup, childOutlet: string) => {     if (childOutlet === PRIMARY_OUTLET) {       res = res.concat(fn(child, childOutlet));     }   });   forEach(segment.children, (child: UrlSegmentGroup, childOutlet: string) => {     if (childOutlet !== PRIMARY_OUTLET) {       res = res.concat(fn(child, childOutlet));     }   });   return res; }   /**  * @description  *  * Serializes and deserializes a URL string into a URL tree.  *  * The url serialization strategy is customizable. You can  * make all URLs case insensitive by providing a custom UrlSerializer.  *  * See `DefaultUrlSerializer` for an example of a URL serializer.  *  * @publicApi  */ @Injectable({providedIn: 'root', useFactory: () => new DefaultUrlSerializer()}) export abstract class UrlSerializer {   /** Parse a url into a `UrlTree` */   abstract parse(url: string): UrlTree;    /** Converts a `UrlTree` into a url */   abstract serialize(tree: UrlTree): string; }  /**  * @description  *  * A default implementation of the `UrlSerializer`.  *  * Example URLs:  *  * ```  * /inbox/33(popup:compose)  * /inbox/33;open=true/messages/44  * ```  *  * DefaultUrlSerializer uses parentheses to serialize secondary segments (e.g., popup:compose), the  * colon syntax to specify the outlet, and the ';parameter=value' syntax (e.g., open=true) to  * specify route specific parameters.  *  * @publicApi  */ export class DefaultUrlSerializer implements UrlSerializer {   /** Parses a url into a `UrlTree` */   parse(url: string): UrlTree {     const p = new UrlParser(url);     return new UrlTree(p.parseRootSegment(), p.parseQueryParams(), p.parseFragment());   }    /** Converts a `UrlTree` into a url */   serialize(tree: UrlTree): string {     const segment = `/${serializeSegment(tree.root, true)}`;     const query = serializeQueryParams(tree.queryParams);     const fragment =         typeof tree.fragment === `string` ? `#${encodeUriFragment(tree.fragment)}` : '';      return `${segment}${query}${fragment}`;   } }  const DEFAULT_SERIALIZER = new DefaultUrlSerializer();  export function serializePaths(segment: UrlSegmentGroup): string {   return segment.segments.map(p => serializePath(p)).join('/'); }  function serializeSegment(segment: UrlSegmentGroup, root: boolean): string {   if (!segment.hasChildren()) {     return serializePaths(segment);   }    if (root) {     const primary = segment.children[PRIMARY_OUTLET] ?         serializeSegment(segment.children[PRIMARY_OUTLET], false) :         '';     const children: string[] = [];      forEach(segment.children, (v: UrlSegmentGroup, k: string) => {       if (k !== PRIMARY_OUTLET) {         children.push(`${k}:${serializeSegment(v, false)}`);       }     });      return children.length > 0 ? `${primary}(${children.join('//')})` : primary;    } else {     const children = mapChildrenIntoArray(segment, (v: UrlSegmentGroup, k: string) => {       if (k === PRIMARY_OUTLET) {         return [serializeSegment(segment.children[PRIMARY_OUTLET], false)];       }        return [`${k}:${serializeSegment(v, false)}`];     });      // use no parenthesis if the only child is a primary outlet route     if (Object.keys(segment.children).length === 1 && segment.children[PRIMARY_OUTLET] != null) {       return `${serializePaths(segment)}/${children[0]}`;     }      return `${serializePaths(segment)}/(${children.join('//')})`;   } }  /**  * Encodes a URI string with the default encoding. This function will only ever be called from  * `encodeUriQuery` or `encodeUriSegment` as it's the base set of encodings to be used. We need  * a custom encoding because encodeURIComponent is too aggressive and encodes stuff that doesn't  * have to be encoded per https://url.spec.whatwg.org.  */ function encodeUriString(s: string): string {   return encodeURIComponent(s)       .replace(/%40/g, '@')       .replace(/%3A/gi, ':')       .replace(/%24/g, '$')       .replace(/%2C/gi, ','); }  /**  * This function should be used to encode both keys and values in a query string key/value. In  * the following URL, you need to call encodeUriQuery on \"k\" and \"v\":  *  * http://www.site.org/html;mk=mv?k=v#f  */ export function encodeUriQuery(s: string): string {   return encodeUriString(s).replace(/%3B/gi, ';'); }  /**  * This function should be used to encode a URL fragment. In the following URL, you need to call  * encodeUriFragment on \"f\":  *  * http://www.site.org/html;mk=mv?k=v#f  */ export function encodeUriFragment(s: string): string {   return encodeURI(s); }  /**  * This function should be run on any URI segment as well as the key and value in a key/value  * pair for matrix params. In the following URL, you need to call encodeUriSegment on \"html\",  * \"mk\", and \"mv\":  *  * http://www.site.org/html;mk=mv?k=v#f  */ export function encodeUriSegment(s: string): string {   return encodeUriString(s).replace(/\\(/g, '%28').replace(/\\)/g, '%29').replace(/%26/gi, '&'); }  export function decode(s: string): string {   return decodeURIComponent(s); }  // Query keys/values should have the \"+\" replaced first, as \"+\" in a query string is \" \". // decodeURIComponent function will not decode \"+\" as a space. export function decodeQuery(s: string): string {   return decode(s.replace(/\\+/g, '%20')); }  export function serializePath(path: UrlSegment): string {   return `${encodeUriSegment(path.path)}${serializeMatrixParams(path.parameters)}`; }  function serializeMatrixParams(params: {[key: string]: string}): string {   return Object.keys(params)       .map(key => `;${encodeUriSegment(key)}=${encodeUriSegment(params[key])}`)       .join(''); }  function serializeQueryParams(params: {[key: string]: any}): string {   const strParams: string[] =       Object.keys(params)           .map((name) => {             const value = params[name];             return Array.isArray(value) ?                 value.map(v => `${encodeUriQuery(name)}=${encodeUriQuery(v)}`).join('&') :                 `${encodeUriQuery(name)}=${encodeUriQuery(value)}`;           })           .filter(s => !!s);    return strParams.length ? `?${strParams.join('&')}` : ''; }  const SEGMENT_RE = /^[^\\/()?;=#]+/; function matchSegments(str: string): string {   const match = str.match(SEGMENT_RE);   return match ? match[0] : ''; }  const QUERY_PARAM_RE = /^[^=?&#]+/; // Return the name of the query param at the start of the string or an empty string function matchQueryParams(str: string): string {   const match = str.match(QUERY_PARAM_RE);   return match ? match[0] : ''; }  const QUERY_PARAM_VALUE_RE = /^[^&#]+/; // Return the value of the query param at the start of the string or an empty string function matchUrlQueryParamValue(str: string): string {   const match = str.match(QUERY_PARAM_VALUE_RE);   return match ? match[0] : ''; }  class UrlParser {   private remaining: string;    constructor(private url: string) {     this.remaining = url;   }    parseRootSegment(): UrlSegmentGroup {     this.consumeOptional('/');      if (this.remaining === '' || this.peekStartsWith('?') || this.peekStartsWith('#')) {       return new UrlSegmentGroup([], {});     }      // The root segment group never has segments     return new UrlSegmentGroup([], this.parseChildren());   }    parseQueryParams(): Params {     const params: Params = {};     if (this.consumeOptional('?')) {       do {         this.parseQueryParam(params);       } while (this.consumeOptional('&'));     }     return params;   }    parseFragment(): string|null {     return this.consumeOptional('#') ? decodeURIComponent(this.remaining) : null;   }    private parseChildren(): {[outlet: string]: UrlSegmentGroup} {     if (this.remaining === '') {       return {};     }      this.consumeOptional('/');      const segments: UrlSegment[] = [];     if (!this.peekStartsWith('(')) {       segments.push(this.parseSegment());     }      while (this.peekStartsWith('/') && !this.peekStartsWith('//') && !this.peekStartsWith('/(')) {       this.capture('/');       segments.push(this.parseSegment());     }      let children: {[outlet: string]: UrlSegmentGroup} = {};     if (this.peekStartsWith('/(')) {       this.capture('/');       children = this.parseParens(true);     }      let res: {[outlet: string]: UrlSegmentGroup} = {};     if (this.peekStartsWith('(')) {       res = this.parseParens(false);     }      if (segments.length > 0 || Object.keys(children).length > 0) {       res[PRIMARY_OUTLET] = new UrlSegmentGroup(segments, children);     }      return res;   }    // parse a segment with its matrix parameters   // ie `name;k1=v1;k2`   private parseSegment(): UrlSegment {     const path = matchSegments(this.remaining);     if (path === '' && this.peekStartsWith(';')) {       throw new RuntimeError(           RuntimeErrorCode.EMPTY_PATH_WITH_PARAMS,           NG_DEV_MODE && `Empty path url segment cannot have parameters: '${this.remaining}'.`);     }      this.capture(path);     return new UrlSegment(decode(path), this.parseMatrixParams());   }    private parseMatrixParams(): {[key: string]: string} {     const params: {[key: string]: string} = {};     while (this.consumeOptional(';')) {       this.parseParam(params);     }     return params;   }    private parseParam(params: {[key: string]: string}): void {     const key = matchSegments(this.remaining);     if (!key) {       return;     }     this.capture(key);     let value: any = '';     if (this.consumeOptional('=')) {       const valueMatch = matchSegments(this.remaining);       if (valueMatch) {         value = valueMatch;         this.capture(value);       }     }      params[decode(key)] = decode(value);   }    // Parse a single query parameter `name[=value]`   private parseQueryParam(params: Params): void {     const key = matchQueryParams(this.remaining);     if (!key) {       return;     }     this.capture(key);     let value: any = '';     if (this.consumeOptional('=')) {       const valueMatch = matchUrlQueryParamValue(this.remaining);       if (valueMatch) {         value = valueMatch;         this.capture(value);       }     }      const decodedKey = decodeQuery(key);     const decodedVal = decodeQuery(value);      if (params.hasOwnProperty(decodedKey)) {       // Append to existing values       let currentVal = params[decodedKey];       if (!Array.isArray(currentVal)) {         currentVal = [currentVal];         params[decodedKey] = currentVal;       }       currentVal.push(decodedVal);     } else {       // Create a new value       params[decodedKey] = decodedVal;     }   }    // parse `(a/b//outlet_name:c/d)`   private parseParens(allowPrimary: boolean): {[outlet: string]: UrlSegmentGroup} {     const segments: {[key: string]: UrlSegmentGroup} = {};     this.capture('(');      while (!this.consumeOptional(')') && this.remaining.length > 0) {       const path = matchSegments(this.remaining);        const next = this.remaining[path.length];        // if is is not one of these characters, then the segment was unescaped       // or the group was not closed       if (next !== '/' && next !== ')' && next !== ';') {         throw new RuntimeError(             RuntimeErrorCode.UNPARSABLE_URL, NG_DEV_MODE && `Cannot parse url '${this.url}'`);       }        let outletName: string = undefined!;       if (path.indexOf(':') > -1) {         outletName = path.slice(0, path.indexOf(':'));         this.capture(outletName);         this.capture(':');       } else if (allowPrimary) {         outletName = PRIMARY_OUTLET;       }        const children = this.parseChildren();       segments[outletName] = Object.keys(children).length === 1 ? children[PRIMARY_OUTLET] :                                                                   new UrlSegmentGroup([], children);       this.consumeOptional('//');     }      return segments;   }    private peekStartsWith(str: string): boolean {     return this.remaining.startsWith(str);   }    // Consumes the prefix when it is present and returns whether it has been consumed   private consumeOptional(str: string): boolean {     if (this.peekStartsWith(str)) {       this.remaining = this.remaining.substring(str.length);       return true;     }     return false;   }    private capture(str: string): void {     if (!this.consumeOptional(str)) {       throw new RuntimeError(           RuntimeErrorCode.UNEXPECTED_VALUE_IN_URL, NG_DEV_MODE && `Expected \"${str}\".`);     }   } }  export function createRoot(rootCandidate: UrlSegmentGroup) {   return rootCandidate.segments.length > 0 ?       new UrlSegmentGroup([], {[PRIMARY_OUTLET]: rootCandidate}) :       rootCandidate; }  /**  * Recursively merges primary segment children into their parents and also drops empty children  * (those which have no segments and no children themselves). The latter prevents serializing a  * group into something like `/a(aux:)`, where `aux` is an empty child segment.  */ export function squashSegmentGroup(segmentGroup: UrlSegmentGroup): UrlSegmentGroup {   const newChildren: Record<string, UrlSegmentGroup> = {};   for (const childOutlet of Object.keys(segmentGroup.children)) {     const child = segmentGroup.children[childOutlet];     const childCandidate = squashSegmentGroup(child);     // don't add empty children     if (childCandidate.segments.length > 0 || childCandidate.hasChildren()) {       newChildren[childOutlet] = childCandidate;     }   }   const s = new UrlSegmentGroup(segmentGroup.segments, newChildren);   return mergeTrivialChildren(s); }  /**  * When possible, merges the primary outlet child into the parent `UrlSegmentGroup`.  *  * When a segment group has only one child which is a primary outlet, merges that child into the  * parent. That is, the child segment group's segments are merged into the `s` and the child's  * children become the children of `s`. Think of this like a 'squash', merging the child segment  * group into the parent.  */ function mergeTrivialChildren(s: UrlSegmentGroup): UrlSegmentGroup {   if (s.numberOfChildren === 1 && s.children[PRIMARY_OUTLET]) {     const c = s.children[PRIMARY_OUTLET];     return new UrlSegmentGroup(s.segments.concat(c.segments), c.children);   }    return s; }  export function isUrlTree(v: any): v is UrlTree {   return v instanceof UrlTree; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from './errors'; import {ActivatedRoute, ActivatedRouteSnapshot} from './router_state'; import {Params, PRIMARY_OUTLET} from './shared'; import {createRoot, squashSegmentGroup, UrlSegment, UrlSegmentGroup, UrlTree} from './url_tree'; import {forEach, last, shallowEqual} from './utils/collection';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;  /**  * Creates a `UrlTree` relative to an `ActivatedRouteSnapshot`.  *  * @publicApi  *  *  * @param relativeTo The `ActivatedRouteSnapshot` to apply the commands to  * @param commands An array of URL fragments with which to construct the new URL tree.  * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path  * segments, followed by the parameters for each segment.  * The fragments are applied to the one provided in the `relativeTo` parameter.  * @param queryParams The query parameters for the `UrlTree`. `null` if the `UrlTree` does not have  *     any query parameters.  * @param fragment The fragment for the `UrlTree`. `null` if the `UrlTree` does not have a fragment.  *  * @usageNotes  *  * ```  * // create /team/33/user/11  * createUrlTreeFromSnapshot(snapshot, ['/team', 33, 'user', 11]);  *  * // create /team/33;expand=true/user/11  * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {expand: true}, 'user', 11]);  *  * // you can collapse static segments like this (this works only with the first passed-in value):  * createUrlTreeFromSnapshot(snapshot, ['/team/33/user', userId]);  *  * // If the first segment can contain slashes, and you do not want the router to split it,  * // you can do the following:  * createUrlTreeFromSnapshot(snapshot, [{segmentPath: '/one/two'}]);  *  * // create /team/33/(user/11//right:chat)  * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {outlets: {primary: 'user/11', right:  * 'chat'}}], null, null);  *  * // remove the right secondary node  * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {outlets: {primary: 'user/11', right: null}}]);  *  * // For the examples below, assume the current URL is for the `/team/33/user/11` and the  * `ActivatedRouteSnapshot` points to `user/11`:  *  * // navigate to /team/33/user/11/details  * createUrlTreeFromSnapshot(snapshot, ['details']);  *  * // navigate to /team/33/user/22  * createUrlTreeFromSnapshot(snapshot, ['../22']);  *  * // navigate to /team/44/user/22  * createUrlTreeFromSnapshot(snapshot, ['../../team/44/user/22']);  * ```  */ export function createUrlTreeFromSnapshot(     relativeTo: ActivatedRouteSnapshot, commands: any[], queryParams: Params|null = null,     fragment: string|null = null): UrlTree {   const relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeTo);   return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, queryParams, fragment); }  export function createSegmentGroupFromRoute(route: ActivatedRouteSnapshot): UrlSegmentGroup {   let targetGroup: UrlSegmentGroup|undefined;    function createSegmentGroupFromRouteRecursive(currentRoute: ActivatedRouteSnapshot):       UrlSegmentGroup {     const childOutlets: {[outlet: string]: UrlSegmentGroup} = {};     for (const childSnapshot of currentRoute.children) {       const root = createSegmentGroupFromRouteRecursive(childSnapshot);       childOutlets[childSnapshot.outlet] = root;     }     const segmentGroup = new UrlSegmentGroup(currentRoute.url, childOutlets);     if (currentRoute === route) {       targetGroup = segmentGroup;     }     return segmentGroup;   }   const rootCandidate = createSegmentGroupFromRouteRecursive(route.root);   const rootSegmentGroup = createRoot(rootCandidate);    return targetGroup ?? rootSegmentGroup; }  export function createUrlTreeFromSegmentGroup(     relativeTo: UrlSegmentGroup, commands: any[], queryParams: Params|null,     fragment: string|null): UrlTree {   let root = relativeTo;   while (root.parent) {     root = root.parent;   }   // There are no commands so the `UrlTree` goes to the same path as the one created from the   // `UrlSegmentGroup`. All we need to do is update the `queryParams` and `fragment` without   // applying any other logic.   if (commands.length === 0) {     return tree(root, root, root, queryParams, fragment);   }    const nav = computeNavigation(commands);    if (nav.toRoot()) {     return tree(root, root, new UrlSegmentGroup([], {}), queryParams, fragment);   }    const position = findStartingPositionForTargetGroup(nav, root, relativeTo);   const newSegmentGroup = position.processChildren ?       updateSegmentGroupChildren(position.segmentGroup, position.index, nav.commands) :       updateSegmentGroup(position.segmentGroup, position.index, nav.commands);   return tree(root, position.segmentGroup, newSegmentGroup, queryParams, fragment); }  export function createUrlTree(     route: ActivatedRoute, urlTree: UrlTree, commands: any[], queryParams: Params|null,     fragment: string|null): UrlTree {   if (commands.length === 0) {     return tree(urlTree.root, urlTree.root, urlTree.root, queryParams, fragment);   }    const nav = computeNavigation(commands);    if (nav.toRoot()) {     return tree(urlTree.root, urlTree.root, new UrlSegmentGroup([], {}), queryParams, fragment);   }    function createTreeUsingPathIndex(lastPathIndex: number) {     const startingPosition =         findStartingPosition(nav, urlTree, route.snapshot?._urlSegment, lastPathIndex);      const segmentGroup = startingPosition.processChildren ?         updateSegmentGroupChildren(             startingPosition.segmentGroup, startingPosition.index, nav.commands) :         updateSegmentGroup(startingPosition.segmentGroup, startingPosition.index, nav.commands);     return tree(urlTree.root, startingPosition.segmentGroup, segmentGroup, queryParams, fragment);   }   // Note: The types should disallow `snapshot` from being `undefined` but due to test mocks, this   // may be the case. Since we try to access it at an earlier point before the refactor to add the   // warning for `relativeLinkResolution: 'legacy'`, this may cause failures in tests where it   // didn't before.   const result = createTreeUsingPathIndex(route.snapshot?._lastPathIndex);    return result; }  function isMatrixParams(command: any): boolean {   return typeof command === 'object' && command != null && !command.outlets && !command.segmentPath; }  /**  * Determines if a given command has an `outlets` map. When we encounter a command  * with an outlets k/v map, we need to apply each outlet individually to the existing segment.  */ function isCommandWithOutlets(command: any): command is {outlets: {[key: string]: any}} {   return typeof command === 'object' && command != null && command.outlets; }  function tree(     oldRoot: UrlSegmentGroup, oldSegmentGroup: UrlSegmentGroup, newSegmentGroup: UrlSegmentGroup,     queryParams: Params|null, fragment: string|null): UrlTree {   let qp: any = {};   if (queryParams) {     forEach(queryParams, (value: any, name: any) => {       qp[name] = Array.isArray(value) ? value.map((v: any) => `${v}`) : `${value}`;     });   }    let rootCandidate: UrlSegmentGroup;   if (oldRoot === oldSegmentGroup) {     rootCandidate = newSegmentGroup;   } else {     rootCandidate = replaceSegment(oldRoot, oldSegmentGroup, newSegmentGroup);   }    const newRoot = createRoot(squashSegmentGroup(rootCandidate));   return new UrlTree(newRoot, qp, fragment); }  /**  * Replaces the `oldSegment` which is located in some child of the `current` with the `newSegment`.  * This also has the effect of creating new `UrlSegmentGroup` copies to update references. This  * shouldn't be necessary but the fallback logic for an invalid ActivatedRoute in the creation uses  * the Router's current url tree. If we don't create new segment groups, we end up modifying that  * value.  */ function replaceSegment(     current: UrlSegmentGroup, oldSegment: UrlSegmentGroup,     newSegment: UrlSegmentGroup): UrlSegmentGroup {   const children: {[key: string]: UrlSegmentGroup} = {};   forEach(current.children, (c: UrlSegmentGroup, outletName: string) => {     if (c === oldSegment) {       children[outletName] = newSegment;     } else {       children[outletName] = replaceSegment(c, oldSegment, newSegment);     }   });   return new UrlSegmentGroup(current.segments, children); }  class Navigation {   constructor(       public isAbsolute: boolean, public numberOfDoubleDots: number, public commands: any[]) {     if (isAbsolute && commands.length > 0 && isMatrixParams(commands[0])) {       throw new RuntimeError(           RuntimeErrorCode.ROOT_SEGMENT_MATRIX_PARAMS,           NG_DEV_MODE && 'Root segment cannot have matrix parameters');     }      const cmdWithOutlet = commands.find(isCommandWithOutlets);     if (cmdWithOutlet && cmdWithOutlet !== last(commands)) {       throw new RuntimeError(           RuntimeErrorCode.MISPLACED_OUTLETS_COMMAND,           NG_DEV_MODE && '{outlets:{}} has to be the last command');     }   }    public toRoot(): boolean {     return this.isAbsolute && this.commands.length === 1 && this.commands[0] == '/';   } }  /** Transforms commands to a normalized `Navigation` */ function computeNavigation(commands: any[]): Navigation {   if ((typeof commands[0] === 'string') && commands.length === 1 && commands[0] === '/') {     return new Navigation(true, 0, commands);   }    let numberOfDoubleDots = 0;   let isAbsolute = false;    const res: any[] = commands.reduce((res, cmd, cmdIdx) => {     if (typeof cmd === 'object' && cmd != null) {       if (cmd.outlets) {         const outlets: {[k: string]: any} = {};         forEach(cmd.outlets, (commands: any, name: string) => {           outlets[name] = typeof commands === 'string' ? commands.split('/') : commands;         });         return [...res, {outlets}];       }        if (cmd.segmentPath) {         return [...res, cmd.segmentPath];       }     }      if (!(typeof cmd === 'string')) {       return [...res, cmd];     }      if (cmdIdx === 0) {       cmd.split('/').forEach((urlPart, partIndex) => {         if (partIndex == 0 && urlPart === '.') {           // skip './a'         } else if (partIndex == 0 && urlPart === '') {  //  '/a'           isAbsolute = true;         } else if (urlPart === '..') {  //  '../a'           numberOfDoubleDots++;         } else if (urlPart != '') {           res.push(urlPart);         }       });        return res;     }      return [...res, cmd];   }, []);    return new Navigation(isAbsolute, numberOfDoubleDots, res); }  class Position {   constructor(       public segmentGroup: UrlSegmentGroup, public processChildren: boolean, public index: number) {   } }  function findStartingPositionForTargetGroup(     nav: Navigation, root: UrlSegmentGroup, target: UrlSegmentGroup): Position {   if (nav.isAbsolute) {     return new Position(root, true, 0);   }    if (!target) {     // `NaN` is used only to maintain backwards compatibility with incorrectly mocked     // `ActivatedRouteSnapshot` in tests. In prior versions of this code, the position here was     // determined based on an internal property that was rarely mocked, resulting in `NaN`. In     // reality, this code path should _never_ be touched since `target` is not allowed to be falsey.     return new Position(root, false, NaN);   }   if (target.parent === null) {     return new Position(target, true, 0);   }    const modifier = isMatrixParams(nav.commands[0]) ? 0 : 1;   const index = target.segments.length - 1 + modifier;   return createPositionApplyingDoubleDots(target, index, nav.numberOfDoubleDots); }  function findStartingPosition(     nav: Navigation, tree: UrlTree, segmentGroup: UrlSegmentGroup,     lastPathIndex: number): Position {   if (nav.isAbsolute) {     return new Position(tree.root, true, 0);   }    if (lastPathIndex === -1) {     // Pathless ActivatedRoute has _lastPathIndex === -1 but should not process children     // see issue #26224, #13011, #35687     // However, if the ActivatedRoute is the root we should process children like above.     const processChildren = segmentGroup === tree.root;     return new Position(segmentGroup, processChildren, 0);   }    const modifier = isMatrixParams(nav.commands[0]) ? 0 : 1;   const index = lastPathIndex + modifier;   return createPositionApplyingDoubleDots(segmentGroup, index, nav.numberOfDoubleDots); }  function createPositionApplyingDoubleDots(     group: UrlSegmentGroup, index: number, numberOfDoubleDots: number): Position {   let g = group;   let ci = index;   let dd = numberOfDoubleDots;   while (dd > ci) {     dd -= ci;     g = g.parent!;     if (!g) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_DOUBLE_DOTS, NG_DEV_MODE && 'Invalid number of \\'../\\'');     }     ci = g.segments.length;   }   return new Position(g, false, ci - dd); }  function getOutlets(commands: unknown[]): {[k: string]: unknown[]|string} {   if (isCommandWithOutlets(commands[0])) {     return commands[0].outlets;   }    return {[PRIMARY_OUTLET]: commands}; }  function updateSegmentGroup(     segmentGroup: UrlSegmentGroup, startIndex: number, commands: any[]): UrlSegmentGroup {   if (!segmentGroup) {     segmentGroup = new UrlSegmentGroup([], {});   }   if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {     return updateSegmentGroupChildren(segmentGroup, startIndex, commands);   }    const m = prefixedWith(segmentGroup, startIndex, commands);   const slicedCommands = commands.slice(m.commandIndex);   if (m.match && m.pathIndex < segmentGroup.segments.length) {     const g = new UrlSegmentGroup(segmentGroup.segments.slice(0, m.pathIndex), {});     g.children[PRIMARY_OUTLET] =         new UrlSegmentGroup(segmentGroup.segments.slice(m.pathIndex), segmentGroup.children);     return updateSegmentGroupChildren(g, 0, slicedCommands);   } else if (m.match && slicedCommands.length === 0) {     return new UrlSegmentGroup(segmentGroup.segments, {});   } else if (m.match && !segmentGroup.hasChildren()) {     return createNewSegmentGroup(segmentGroup, startIndex, commands);   } else if (m.match) {     return updateSegmentGroupChildren(segmentGroup, 0, slicedCommands);   } else {     return createNewSegmentGroup(segmentGroup, startIndex, commands);   } }  function updateSegmentGroupChildren(     segmentGroup: UrlSegmentGroup, startIndex: number, commands: any[]): UrlSegmentGroup {   if (commands.length === 0) {     return new UrlSegmentGroup(segmentGroup.segments, {});   } else {     const outlets = getOutlets(commands);     const children: {[key: string]: UrlSegmentGroup} = {};     // If the set of commands does not apply anything to the primary outlet and the child segment is     // an empty path primary segment on its own, we want to skip applying the commands at this     // level. Imagine the following config:     //     // {path: '', children: [{path: '**', outlet: 'popup'}]}.     //     // Navigation to /(popup:a) will activate the child outlet correctly Given a follow-up     // navigation with commands     // ['/', {outlets: {'popup': 'b'}}], we _would not_ want to apply the outlet commands to the     // root segment because that would result in     // //(popup:a)(popup:b) since the outlet command got applied one level above where it appears in     // the `ActivatedRoute` rather than updating the existing one.     //     // Because empty paths do not appear in the URL segments and the fact that the segments used in     // the output `UrlTree` are squashed to eliminate these empty paths where possible     // https://github.com/angular/angular/blob/13f10de40e25c6900ca55bd83b36bd533dacfa9e/packages/router/src/url_tree.ts#L755     // it can be hard to determine what is the right thing to do when applying commands to a     // `UrlSegmentGroup` that is created from an \"unsquashed\"/expanded `ActivatedRoute` tree.     // This code effectively \"squashes\" empty path primary routes when they have no siblings on     // the same level of the tree.     if (!outlets[PRIMARY_OUTLET] && segmentGroup.children[PRIMARY_OUTLET] &&         segmentGroup.numberOfChildren === 1 &&         segmentGroup.children[PRIMARY_OUTLET].segments.length === 0) {       return updateSegmentGroupChildren(           segmentGroup.children[PRIMARY_OUTLET], startIndex, commands);     }      forEach(outlets, (commands, outlet) => {       if (typeof commands === 'string') {         commands = [commands];       }       if (commands !== null) {         children[outlet] = updateSegmentGroup(segmentGroup.children[outlet], startIndex, commands);       }     });      forEach(segmentGroup.children, (child: UrlSegmentGroup, childOutlet: string) => {       if (outlets[childOutlet] === undefined) {         children[childOutlet] = child;       }     });     return new UrlSegmentGroup(segmentGroup.segments, children);   } }  function prefixedWith(segmentGroup: UrlSegmentGroup, startIndex: number, commands: any[]) {   let currentCommandIndex = 0;   let currentPathIndex = startIndex;    const noMatch = {match: false, pathIndex: 0, commandIndex: 0};   while (currentPathIndex < segmentGroup.segments.length) {     if (currentCommandIndex >= commands.length) return noMatch;     const path = segmentGroup.segments[currentPathIndex];     const command = commands[currentCommandIndex];     // Do not try to consume command as part of the prefixing if it has outlets because it can     // contain outlets other than the one being processed. Consuming the outlets command would     // result in other outlets being ignored.     if (isCommandWithOutlets(command)) {       break;     }     const curr = `${command}`;     const next =         currentCommandIndex < commands.length - 1 ? commands[currentCommandIndex + 1] : null;      if (currentPathIndex > 0 && curr === undefined) break;      if (curr && next && (typeof next === 'object') && next.outlets === undefined) {       if (!compare(curr, next, path)) return noMatch;       currentCommandIndex += 2;     } else {       if (!compare(curr, {}, path)) return noMatch;       currentCommandIndex++;     }     currentPathIndex++;   }    return {match: true, pathIndex: currentPathIndex, commandIndex: currentCommandIndex}; }  function createNewSegmentGroup(     segmentGroup: UrlSegmentGroup, startIndex: number, commands: any[]): UrlSegmentGroup {   const paths = segmentGroup.segments.slice(0, startIndex);    let i = 0;   while (i < commands.length) {     const command = commands[i];     if (isCommandWithOutlets(command)) {       const children = createNewSegmentChildren(command.outlets);       return new UrlSegmentGroup(paths, children);     }      // if we start with an object literal, we need to reuse the path part from the segment     if (i === 0 && isMatrixParams(commands[0])) {       const p = segmentGroup.segments[startIndex];       paths.push(new UrlSegment(p.path, stringify(commands[0])));       i++;       continue;     }      const curr = isCommandWithOutlets(command) ? command.outlets[PRIMARY_OUTLET] : `${command}`;     const next = (i < commands.length - 1) ? commands[i + 1] : null;     if (curr && next && isMatrixParams(next)) {       paths.push(new UrlSegment(curr, stringify(next)));       i += 2;     } else {       paths.push(new UrlSegment(curr, {}));       i++;     }   }   return new UrlSegmentGroup(paths, {}); }  function createNewSegmentChildren(outlets: {[name: string]: unknown[]|string}):     {[outlet: string]: UrlSegmentGroup} {   const children: {[outlet: string]: UrlSegmentGroup} = {};   forEach(outlets, (commands, outlet) => {     if (typeof commands === 'string') {       commands = [commands];     }     if (commands !== null) {       children[outlet] = createNewSegmentGroup(new UrlSegmentGroup([], {}), 0, commands);     }   });   return children; }  function stringify(params: {[key: string]: any}): {[key: string]: string} {   const res: {[key: string]: string} = {};   forEach(params, (v: any, k: string) => res[k] = `${v}`);   return res; }  function compare(path: string, params: {[key: string]: any}, segment: UrlSegment): boolean {   return path == segment.path && shallowEqual(params, segment.parameters); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Route} from './models'; import {ActivatedRouteSnapshot, RouterStateSnapshot} from './router_state';  /**  * Identifies the call or event that triggered a navigation.  *  * * 'imperative': Triggered by `router.navigateByUrl()` or `router.navigate()`.  * * 'popstate' : Triggered by a `popstate` event.  * * 'hashchange'-: Triggered by a `hashchange` event.  *  * @publicApi  */ export type NavigationTrigger = 'imperative'|'popstate'|'hashchange'; export const IMPERATIVE_NAVIGATION = 'imperative';  /**  * Identifies the type of a router event.  *  * @publicApi  */ export const enum EventType {   NavigationStart,   NavigationEnd,   NavigationCancel,   NavigationError,   RoutesRecognized,   ResolveStart,   ResolveEnd,   GuardsCheckStart,   GuardsCheckEnd,   RouteConfigLoadStart,   RouteConfigLoadEnd,   ChildActivationStart,   ChildActivationEnd,   ActivationStart,   ActivationEnd,   Scroll,   NavigationSkipped, }  /**  * Base for events the router goes through, as opposed to events tied to a specific  * route. Fired one time for any given navigation.  *  * The following code shows how a class subscribes to router events.  *  * ```ts  * import {Event, RouterEvent, Router} from '@angular/router';  *  * class MyService {  *   constructor(public router: Router) {  *     router.events.pipe(  *        filter((e: Event): e is RouterEvent => e instanceof RouterEvent)  *     ).subscribe((e: RouterEvent) => {  *       // Do something  *     });  *   }  * }  * ```  *  * @see `Event`  * @see [Router events summary](guide/router-reference#router-events)  * @publicApi  */ export class RouterEvent {   constructor(       /** A unique ID that the router assigns to every router navigation. */       public id: number,       /** The URL that is the destination for this navigation. */       public url: string) {} }  /**  * An event triggered when a navigation starts.  *  * @publicApi  */ export class NavigationStart extends RouterEvent {   readonly type = EventType.NavigationStart;    /**    * Identifies the call or event that triggered the navigation.    * An `imperative` trigger is a call to `router.navigateByUrl()` or `router.navigate()`.    *    * @see `NavigationEnd`    * @see `NavigationCancel`    * @see `NavigationError`    */   navigationTrigger?: NavigationTrigger;    /**    * The navigation state that was previously supplied to the `pushState` call,    * when the navigation is triggered by a `popstate` event. Otherwise null.    *    * The state object is defined by `NavigationExtras`, and contains any    * developer-defined state value, as well as a unique ID that    * the router assigns to every router transition/navigation.    *    * From the perspective of the router, the router never \"goes back\".    * When the user clicks on the back button in the browser,    * a new navigation ID is created.    *    * Use the ID in this previous-state object to differentiate between a newly created    * state and one returned to by a `popstate` event, so that you can restore some    * remembered state, such as scroll position.    *    */   restoredState?: {[k: string]: any, navigationId: number}|null;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       navigationTrigger: NavigationTrigger = 'imperative',       /** @docsNotRequired */       restoredState: {[k: string]: any, navigationId: number}|null = null) {     super(id, url);     this.navigationTrigger = navigationTrigger;     this.restoredState = restoredState;   }    /** @docsNotRequired */   override toString(): string {     return `NavigationStart(id: ${this.id}, url: '${this.url}')`;   } }  /**  * An event triggered when a navigation ends successfully.  *  * @see `NavigationStart`  * @see `NavigationCancel`  * @see `NavigationError`  *  * @publicApi  */ export class NavigationEnd extends RouterEvent {   readonly type = EventType.NavigationEnd;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       public urlAfterRedirects: string) {     super(id, url);   }    /** @docsNotRequired */   override toString(): string {     return `NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${         this.urlAfterRedirects}')`;   } }  /**  * A code for the `NavigationCancel` event of the `Router` to indicate the  * reason a navigation failed.  *  * @publicApi  */ export const enum NavigationCancellationCode {   /**    * A navigation failed because a guard returned a `UrlTree` to redirect.    */   Redirect,   /**    * A navigation failed because a more recent navigation started.    */   SupersededByNewNavigation,   /**    * A navigation failed because one of the resolvers completed without emiting a value.    */   NoDataFromResolver,   /**    * A navigation failed because a guard returned `false`.    */   GuardRejected, }  /**  * A code for the `NavigationSkipped` event of the `Router` to indicate the  * reason a navigation was skipped.  *  * @publicApi  */ export const enum NavigationSkippedCode {   /**    * A navigation was skipped because the navigation URL was the same as the current Router URL.    */   IgnoredSameUrlNavigation,   /**    * A navigation was skipped because the configured `UrlHandlingStrategy` return `false` for both    * the current Router URL and the target of the navigation.    *    * @see UrlHandlingStrategy    */   IgnoredByUrlHandlingStrategy, }  /**  * An event triggered when a navigation is canceled, directly or indirectly.  * This can happen for several reasons including when a route guard  * returns `false` or initiates a redirect by returning a `UrlTree`.  *  * @see `NavigationStart`  * @see `NavigationEnd`  * @see `NavigationError`  *  * @publicApi  */ export class NavigationCancel extends RouterEvent {   readonly type = EventType.NavigationCancel;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /**        * A description of why the navigation was cancelled. For debug purposes only. Use `code`        * instead for a stable cancellation reason that can be used in production.        */       public reason: string,       /**        * A code to indicate why the navigation was canceled. This cancellation code is stable for        * the reason and can be relied on whereas the `reason` string could change and should not be        * used in production.        */       readonly code?: NavigationCancellationCode) {     super(id, url);   }    /** @docsNotRequired */   override toString(): string {     return `NavigationCancel(id: ${this.id}, url: '${this.url}')`;   } }  /**  * An event triggered when a navigation is skipped.  * This can happen for a couple reasons including onSameUrlHandling  * is set to `ignore` and the navigation URL is not different than the  * current state.  *  * @publicApi  */ export class NavigationSkipped extends RouterEvent {   readonly type = EventType.NavigationSkipped;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /**        * A description of why the navigation was skipped. For debug purposes only. Use `code`        * instead for a stable skipped reason that can be used in production.        */       public reason: string,       /**        * A code to indicate why the navigation was skipped. This code is stable for        * the reason and can be relied on whereas the `reason` string could change and should not be        * used in production.        */       readonly code?: NavigationSkippedCode) {     super(id, url);   } }  /**  * An event triggered when a navigation fails due to an unexpected error.  *  * @see `NavigationStart`  * @see `NavigationEnd`  * @see `NavigationCancel`  *  * @publicApi  */ export class NavigationError extends RouterEvent {   readonly type = EventType.NavigationError;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       public error: any,       /**        * The target of the navigation when the error occurred.        *        * Note that this can be `undefined` because an error could have occurred before the        * `RouterStateSnapshot` was created for the navigation.        */       readonly target?: RouterStateSnapshot) {     super(id, url);   }    /** @docsNotRequired */   override toString(): string {     return `NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`;   } }  /**  * An event triggered when routes are recognized.  *  * @publicApi  */ export class RoutesRecognized extends RouterEvent {   readonly type = EventType.RoutesRecognized;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       public urlAfterRedirects: string,       /** @docsNotRequired */       public state: RouterStateSnapshot) {     super(id, url);   }    /** @docsNotRequired */   override toString(): string {     return `RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${         this.urlAfterRedirects}', state: ${this.state})`;   } }  /**  * An event triggered at the start of the Guard phase of routing.  *  * @see `GuardsCheckEnd`  *  * @publicApi  */ export class GuardsCheckStart extends RouterEvent {   readonly type = EventType.GuardsCheckStart;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       public urlAfterRedirects: string,       /** @docsNotRequired */       public state: RouterStateSnapshot) {     super(id, url);   }    override toString(): string {     return `GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${         this.urlAfterRedirects}', state: ${this.state})`;   } }  /**  * An event triggered at the end of the Guard phase of routing.  *  * @see `GuardsCheckStart`  *  * @publicApi  */ export class GuardsCheckEnd extends RouterEvent {   readonly type = EventType.GuardsCheckEnd;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       public urlAfterRedirects: string,       /** @docsNotRequired */       public state: RouterStateSnapshot,       /** @docsNotRequired */       public shouldActivate: boolean) {     super(id, url);   }    override toString(): string {     return `GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${         this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`;   } }  /**  * An event triggered at the start of the Resolve phase of routing.  *  * Runs in the \"resolve\" phase whether or not there is anything to resolve.  * In future, may change to only run when there are things to be resolved.  *  * @see `ResolveEnd`  *  * @publicApi  */ export class ResolveStart extends RouterEvent {   readonly type = EventType.ResolveStart;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       public urlAfterRedirects: string,       /** @docsNotRequired */       public state: RouterStateSnapshot) {     super(id, url);   }    override toString(): string {     return `ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${         this.urlAfterRedirects}', state: ${this.state})`;   } }  /**  * An event triggered at the end of the Resolve phase of routing.  * @see `ResolveStart`.  *  * @publicApi  */ export class ResolveEnd extends RouterEvent {   readonly type = EventType.ResolveEnd;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       public urlAfterRedirects: string,       /** @docsNotRequired */       public state: RouterStateSnapshot) {     super(id, url);   }    override toString(): string {     return `ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${         this.urlAfterRedirects}', state: ${this.state})`;   } }  /**  * An event triggered before lazy loading a route configuration.  *  * @see `RouteConfigLoadEnd`  *  * @publicApi  */ export class RouteConfigLoadStart {   readonly type = EventType.RouteConfigLoadStart;    constructor(       /** @docsNotRequired */       public route: Route) {}   toString(): string {     return `RouteConfigLoadStart(path: ${this.route.path})`;   } }  /**  * An event triggered when a route has been lazy loaded.  *  * @see `RouteConfigLoadStart`  *  * @publicApi  */ export class RouteConfigLoadEnd {   readonly type = EventType.RouteConfigLoadEnd;    constructor(       /** @docsNotRequired */       public route: Route) {}   toString(): string {     return `RouteConfigLoadEnd(path: ${this.route.path})`;   } }  /**  * An event triggered at the start of the child-activation  * part of the Resolve phase of routing.  * @see  `ChildActivationEnd`  * @see `ResolveStart`  *  * @publicApi  */ export class ChildActivationStart {   readonly type = EventType.ChildActivationStart;    constructor(       /** @docsNotRequired */       public snapshot: ActivatedRouteSnapshot) {}   toString(): string {     const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';     return `ChildActivationStart(path: '${path}')`;   } }  /**  * An event triggered at the end of the child-activation part  * of the Resolve phase of routing.  * @see `ChildActivationStart`  * @see `ResolveStart`  * @publicApi  */ export class ChildActivationEnd {   readonly type = EventType.ChildActivationEnd;    constructor(       /** @docsNotRequired */       public snapshot: ActivatedRouteSnapshot) {}   toString(): string {     const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';     return `ChildActivationEnd(path: '${path}')`;   } }  /**  * An event triggered at the start of the activation part  * of the Resolve phase of routing.  * @see `ActivationEnd`  * @see `ResolveStart`  *  * @publicApi  */ export class ActivationStart {   readonly type = EventType.ActivationStart;    constructor(       /** @docsNotRequired */       public snapshot: ActivatedRouteSnapshot) {}   toString(): string {     const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';     return `ActivationStart(path: '${path}')`;   } }  /**  * An event triggered at the end of the activation part  * of the Resolve phase of routing.  * @see `ActivationStart`  * @see `ResolveStart`  *  * @publicApi  */ export class ActivationEnd {   readonly type = EventType.ActivationEnd;    constructor(       /** @docsNotRequired */       public snapshot: ActivatedRouteSnapshot) {}   toString(): string {     const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';     return `ActivationEnd(path: '${path}')`;   } }  /**  * An event triggered by scrolling.  *  * @publicApi  */ export class Scroll {   readonly type = EventType.Scroll;    constructor(       /** @docsNotRequired */       readonly routerEvent: NavigationEnd,        /** @docsNotRequired */       readonly position: [number, number]|null,        /** @docsNotRequired */       readonly anchor: string|null) {}    toString(): string {     const pos = this.position ? `${this.position[0]}, ${this.position[1]}` : null;     return `Scroll(anchor: '${this.anchor}', position: '${pos}')`;   } }  /**  * Router events that allow you to track the lifecycle of the router.  *  * The events occur in the following sequence:  *  * * [NavigationStart](api/router/NavigationStart): Navigation starts.  * * [RouteConfigLoadStart](api/router/RouteConfigLoadStart): Before  * the router [lazy loads](/guide/router#lazy-loading) a route configuration.  * * [RouteConfigLoadEnd](api/router/RouteConfigLoadEnd): After a route has been lazy loaded.  * * [RoutesRecognized](api/router/RoutesRecognized): When the router parses the URL  * and the routes are recognized.  * * [GuardsCheckStart](api/router/GuardsCheckStart): When the router begins the *guards*  * phase of routing.  * * [ChildActivationStart](api/router/ChildActivationStart): When the router  * begins activating a route's children.  * * [ActivationStart](api/router/ActivationStart): When the router begins activating a route.  * * [GuardsCheckEnd](api/router/GuardsCheckEnd): When the router finishes the *guards*  * phase of routing successfully.  * * [ResolveStart](api/router/ResolveStart): When the router begins the *resolve*  * phase of routing.  * * [ResolveEnd](api/router/ResolveEnd): When the router finishes the *resolve*  * phase of routing successfully.  * * [ChildActivationEnd](api/router/ChildActivationEnd): When the router finishes  * activating a route's children.  * * [ActivationEnd](api/router/ActivationEnd): When the router finishes activating a route.  * * [NavigationEnd](api/router/NavigationEnd): When navigation ends successfully.  * * [NavigationCancel](api/router/NavigationCancel): When navigation is canceled.  * * [NavigationError](api/router/NavigationError): When navigation fails  * due to an unexpected error.  * * [Scroll](api/router/Scroll): When the user scrolls.  *  * @publicApi  */ export type Event = RouterEvent|NavigationStart|NavigationEnd|NavigationCancel|NavigationError|     RoutesRecognized|GuardsCheckStart|GuardsCheckEnd|RouteConfigLoadStart|RouteConfigLoadEnd|     ChildActivationStart|ChildActivationEnd|ActivationStart|ActivationEnd|Scroll|ResolveStart|     ResolveEnd|NavigationSkipped;   export function stringifyEvent(routerEvent: Event): string {   if (!('type' in routerEvent)) {     return `Unknown Router Event: ${routerEvent.constructor.name}`;   }   switch (routerEvent.type) {     case EventType.ActivationEnd:       return `ActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;     case EventType.ActivationStart:       return `ActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;     case EventType.ChildActivationEnd:       return `ChildActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;     case EventType.ChildActivationStart:       return `ChildActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;     case EventType.GuardsCheckEnd:       return `GuardsCheckEnd(id: ${routerEvent.id}, url: '${           routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${           routerEvent.state}, shouldActivate: ${routerEvent.shouldActivate})`;     case EventType.GuardsCheckStart:       return `GuardsCheckStart(id: ${routerEvent.id}, url: '${           routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${           routerEvent.state})`;     case EventType.NavigationCancel:       return `NavigationCancel(id: ${routerEvent.id}, url: '${routerEvent.url}')`;     case EventType.NavigationSkipped:       return `NavigationSkipped(id: ${routerEvent.id}, url: '${routerEvent.url}')`;     case EventType.NavigationEnd:       return `NavigationEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${           routerEvent.urlAfterRedirects}')`;     case EventType.NavigationError:       return `NavigationError(id: ${routerEvent.id}, url: '${routerEvent.url}', error: ${           routerEvent.error})`;     case EventType.NavigationStart:       return `NavigationStart(id: ${routerEvent.id}, url: '${routerEvent.url}')`;     case EventType.ResolveEnd:       return `ResolveEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${           routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;     case EventType.ResolveStart:       return `ResolveStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${           routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;     case EventType.RouteConfigLoadEnd:       return `RouteConfigLoadEnd(path: ${routerEvent.route.path})`;     case EventType.RouteConfigLoadStart:       return `RouteConfigLoadStart(path: ${routerEvent.route.path})`;     case EventType.RoutesRecognized:       return `RoutesRecognized(id: ${routerEvent.id}, url: '${           routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${           routerEvent.state})`;     case EventType.Scroll:       const pos =           routerEvent.position ? `${routerEvent.position[0]}, ${routerEvent.position[1]}` : null;       return `Scroll(anchor: '${routerEvent.anchor}', position: '${pos}')`;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable} from '@angular/core';  import {createSegmentGroupFromRoute, createUrlTree, createUrlTreeFromSegmentGroup} from './create_url_tree'; import {ActivatedRoute, RouterState} from './router_state'; import {Params} from './shared'; import {UrlSegmentGroup, UrlTree} from './url_tree';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;  @Injectable() export class LegacyCreateUrlTree implements CreateUrlTreeStrategy {   createUrlTree(       relativeTo: ActivatedRoute|null|undefined, currentState: RouterState, currentUrlTree: UrlTree,       commands: any[], queryParams: Params|null, fragment: string|null): UrlTree {     const a = relativeTo || currentState.root;     const tree = createUrlTree(a, currentUrlTree, commands, queryParams, fragment);     if (NG_DEV_MODE) {       const treeFromSnapshotStrategy = new CreateUrlTreeUsingSnapshot().createUrlTree(           relativeTo, currentState, currentUrlTree, commands, queryParams, fragment);       if (treeFromSnapshotStrategy.toString() !== tree.toString()) {         let warningString = `The navigation to ${tree.toString()} will instead go to ${             treeFromSnapshotStrategy.toString()} in an upcoming version of Angular.`;         if (!!relativeTo) {           warningString += ' `relativeTo` might need to be removed from the `UrlCreationOptions`.';         }         tree._warnIfUsedForNavigation = warningString;       }     }     return tree;   } }  @Injectable() export class CreateUrlTreeUsingSnapshot implements CreateUrlTreeStrategy {   createUrlTree(       relativeTo: ActivatedRoute|null|undefined, currentState: RouterState, currentUrlTree: UrlTree,       commands: any[], queryParams: Params|null, fragment: string|null): UrlTree {     let relativeToUrlSegmentGroup: UrlSegmentGroup|undefined;     try {       const relativeToSnapshot = relativeTo ? relativeTo.snapshot : currentState.snapshot.root;       relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeToSnapshot);     } catch (e: unknown) {       // This is strictly for backwards compatibility with tests that create       // invalid `ActivatedRoute` mocks.       // Note: the difference between having this fallback for invalid `ActivatedRoute` setups and       // just throwing is ~500 test failures. Fixing all of those tests by hand is not feasible at       // the moment.       if (typeof commands[0] !== 'string' || !commands[0].startsWith('/')) {         // Navigations that were absolute in the old way of creating UrlTrees         // would still work because they wouldn't attempt to match the         // segments in the `ActivatedRoute` to the `currentUrlTree` but         // instead just replace the root segment with the navigation result.         // Non-absolute navigations would fail to apply the commands because         // the logic could not find the segment to replace (so they'd act like there were no         // commands).         commands = [];       }       relativeToUrlSegmentGroup = currentUrlTree.root;     }     return createUrlTreeFromSegmentGroup(         relativeToUrlSegmentGroup, commands, queryParams, fragment);   } }  @Injectable({providedIn: 'root', useClass: LegacyCreateUrlTree}) export abstract class CreateUrlTreeStrategy {   abstract createUrlTree(       relativeTo: ActivatedRoute|null|undefined, currentState: RouterState, currentUrlTree: UrlTree,       commands: any[], queryParams: Params|null, fragment: string|null): UrlTree; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export class Tree<T> {   /** @internal */   _root: TreeNode<T>;    constructor(root: TreeNode<T>) {     this._root = root;   }    get root(): T {     return this._root.value;   }    /**    * @internal    */   parent(t: T): T|null {     const p = this.pathFromRoot(t);     return p.length > 1 ? p[p.length - 2] : null;   }    /**    * @internal    */   children(t: T): T[] {     const n = findNode(t, this._root);     return n ? n.children.map(t => t.value) : [];   }    /**    * @internal    */   firstChild(t: T): T|null {     const n = findNode(t, this._root);     return n && n.children.length > 0 ? n.children[0].value : null;   }    /**    * @internal    */   siblings(t: T): T[] {     const p = findPath(t, this._root);     if (p.length < 2) return [];      const c = p[p.length - 2].children.map(c => c.value);     return c.filter(cc => cc !== t);   }    /**    * @internal    */   pathFromRoot(t: T): T[] {     return findPath(t, this._root).map(s => s.value);   } }   // DFS for the node matching the value function findNode<T>(value: T, node: TreeNode<T>): TreeNode<T>|null {   if (value === node.value) return node;    for (const child of node.children) {     const node = findNode(value, child);     if (node) return node;   }    return null; }  // Return the path to the node with the given value using DFS function findPath<T>(value: T, node: TreeNode<T>): TreeNode<T>[] {   if (value === node.value) return [node];    for (const child of node.children) {     const path = findPath(value, child);     if (path.length) {       path.unshift(node);       return path;     }   }    return []; }  export class TreeNode<T> {   constructor(public value: T, public children: TreeNode<T>[]) {}    toString(): string {     return `TreeNode(${this.value})`;   } }  // Return the list of T indexed by outlet name export function nodeChildrenAsMap<T extends {outlet: string}>(node: TreeNode<T>|null) {   const map: {[outlet: string]: TreeNode<T>} = {};    if (node) {     node.children.forEach(child => map[child.value.outlet] = child);   }    return map; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Type} from '@angular/core'; import {BehaviorSubject, Observable, of} from 'rxjs'; import {map} from 'rxjs/operators';  import {Data, ResolveData, Route} from './models'; import {convertToParamMap, ParamMap, Params, PRIMARY_OUTLET, RouteTitleKey} from './shared'; import {equalSegments, UrlSegment, UrlSegmentGroup, UrlTree} from './url_tree'; import {shallowEqual, shallowEqualArrays} from './utils/collection'; import {Tree, TreeNode} from './utils/tree';  /**  * Represents the state of the router as a tree of activated routes.  *  * @usageNotes  *  * Every node in the route tree is an `ActivatedRoute` instance  * that knows about the \"consumed\" URL segments, the extracted parameters,  * and the resolved data.  * Use the `ActivatedRoute` properties to traverse the tree from any node.  *  * The following fragment shows how a component gets the root node  * of the current state to establish its own route tree:  *  * ```  * @Component({templateUrl:'template.html'})  * class MyComponent {  *   constructor(router: Router) {  *     const state: RouterState = router.routerState;  *     const root: ActivatedRoute = state.root;  *     const child = root.firstChild;  *     const id: Observable<string> = child.params.map(p => p.id);  *     //...  *   }  * }  * ```  *  * @see `ActivatedRoute`  * @see [Getting route information](guide/router#getting-route-information)  *  * @publicApi  */ export class RouterState extends Tree<ActivatedRoute> {   /** @internal */   constructor(       root: TreeNode<ActivatedRoute>,       /** The current snapshot of the router state */       public snapshot: RouterStateSnapshot) {     super(root);     setRouterState(<RouterState>this, root);   }    override toString(): string {     return this.snapshot.toString();   } }  export function createEmptyState(urlTree: UrlTree, rootComponent: Type<any>|null): RouterState {   const snapshot = createEmptyStateSnapshot(urlTree, rootComponent);   const emptyUrl = new BehaviorSubject([new UrlSegment('', {})]);   const emptyParams = new BehaviorSubject({});   const emptyData = new BehaviorSubject({});   const emptyQueryParams = new BehaviorSubject({});   const fragment = new BehaviorSubject('');   const activated = new ActivatedRoute(       emptyUrl, emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent,       snapshot.root);   activated.snapshot = snapshot.root;   return new RouterState(new TreeNode<ActivatedRoute>(activated, []), snapshot); }  export function createEmptyStateSnapshot(     urlTree: UrlTree, rootComponent: Type<any>|null): RouterStateSnapshot {   const emptyParams = {};   const emptyData = {};   const emptyQueryParams = {};   const fragment = '';   const activated = new ActivatedRouteSnapshot(       [], emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, null,       urlTree.root, -1, {});   return new RouterStateSnapshot('', new TreeNode<ActivatedRouteSnapshot>(activated, [])); }  /**  * Provides access to information about a route associated with a component  * that is loaded in an outlet.  * Use to traverse the `RouterState` tree and extract information from nodes.  *  * The following example shows how to construct a component using information from a  * currently activated route.  *  * Note: the observables in this class only emit when the current and previous values differ based  * on shallow equality. For example, changing deeply nested properties in resolved `data` will not  * cause the `ActivatedRoute.data` `Observable` to emit a new value.  *  * {@example router/activated-route/module.ts region=\"activated-route\"  *     header=\"activated-route.component.ts\"}  *  * @see [Getting route information](guide/router#getting-route-information)  *  * @publicApi  */ export class ActivatedRoute {   /** The current snapshot of this route */   snapshot!: ActivatedRouteSnapshot;   /** @internal */   _futureSnapshot: ActivatedRouteSnapshot;   /** @internal */   _routerState!: RouterState;   /** @internal */   _paramMap?: Observable<ParamMap>;   /** @internal */   _queryParamMap?: Observable<ParamMap>;    /** An Observable of the resolved route title */   readonly title: Observable<string|undefined> =       this.data?.pipe(map((d: Data) => d[RouteTitleKey])) ?? of(undefined);    /** @internal */   constructor(       /** An observable of the URL segments matched by this route. */       public url: Observable<UrlSegment[]>,       /** An observable of the matrix parameters scoped to this route. */       public params: Observable<Params>,       /** An observable of the query parameters shared by all the routes. */       public queryParams: Observable<Params>,       /** An observable of the URL fragment shared by all the routes. */       public fragment: Observable<string|null>,       /** An observable of the static and resolved data of this route. */       public data: Observable<Data>,       /** The outlet name of the route, a constant. */       public outlet: string,       /** The component of the route, a constant. */       public component: Type<any>|null, futureSnapshot: ActivatedRouteSnapshot) {     this._futureSnapshot = futureSnapshot;   }    /** The configuration used to match this route. */   get routeConfig(): Route|null {     return this._futureSnapshot.routeConfig;   }    /** The root of the router state. */   get root(): ActivatedRoute {     return this._routerState.root;   }    /** The parent of this route in the router state tree. */   get parent(): ActivatedRoute|null {     return this._routerState.parent(this);   }    /** The first child of this route in the router state tree. */   get firstChild(): ActivatedRoute|null {     return this._routerState.firstChild(this);   }    /** The children of this route in the router state tree. */   get children(): ActivatedRoute[] {     return this._routerState.children(this);   }    /** The path from the root of the router state tree to this route. */   get pathFromRoot(): ActivatedRoute[] {     return this._routerState.pathFromRoot(this);   }    /**    * An Observable that contains a map of the required and optional parameters    * specific to the route.    * The map supports retrieving single and multiple values from the same parameter.    */   get paramMap(): Observable<ParamMap> {     if (!this._paramMap) {       this._paramMap = this.params.pipe(map((p: Params): ParamMap => convertToParamMap(p)));     }     return this._paramMap;   }    /**    * An Observable that contains a map of the query parameters available to all routes.    * The map supports retrieving single and multiple values from the query parameter.    */   get queryParamMap(): Observable<ParamMap> {     if (!this._queryParamMap) {       this._queryParamMap =           this.queryParams.pipe(map((p: Params): ParamMap => convertToParamMap(p)));     }     return this._queryParamMap;   }    toString(): string {     return this.snapshot ? this.snapshot.toString() : `Future(${this._futureSnapshot})`;   } }  export type ParamsInheritanceStrategy = 'emptyOnly'|'always';  /** @internal */ export type Inherited = {   params: Params,   data: Data,   resolve: Data, };  /**  * Returns the inherited params, data, and resolve for a given route.  * By default, this only inherits values up to the nearest path-less or component-less route.  * @internal  */ export function inheritedParamsDataResolve(     route: ActivatedRouteSnapshot,     paramsInheritanceStrategy: ParamsInheritanceStrategy = 'emptyOnly'): Inherited {   const pathFromRoot = route.pathFromRoot;    let inheritingStartingFrom = 0;   if (paramsInheritanceStrategy !== 'always') {     inheritingStartingFrom = pathFromRoot.length - 1;      while (inheritingStartingFrom >= 1) {       const current = pathFromRoot[inheritingStartingFrom];       const parent = pathFromRoot[inheritingStartingFrom - 1];       // current route is an empty path => inherits its parent's params and data       if (current.routeConfig && current.routeConfig.path === '') {         inheritingStartingFrom--;          // parent is componentless => current route should inherit its params and data       } else if (!parent.component) {         inheritingStartingFrom--;        } else {         break;       }     }   }    return flattenInherited(pathFromRoot.slice(inheritingStartingFrom)); }  /** @internal */ function flattenInherited(pathFromRoot: ActivatedRouteSnapshot[]): Inherited {   return pathFromRoot.reduce((res, curr) => {     const params = {...res.params, ...curr.params};     const data = {...res.data, ...curr.data};     const resolve =         {...curr.data, ...res.resolve, ...curr.routeConfig?.data, ...curr._resolvedData};     return {params, data, resolve};   }, {params: {}, data: {}, resolve: {}}); }  /**  * @description  *  * Contains the information about a route associated with a component loaded in an  * outlet at a particular moment in time. ActivatedRouteSnapshot can also be used to  * traverse the router state tree.  *  * The following example initializes a component with route information extracted  * from the snapshot of the root node at the time of creation.  *  * ```  * @Component({templateUrl:'./my-component.html'})  * class MyComponent {  *   constructor(route: ActivatedRoute) {  *     const id: string = route.snapshot.params.id;  *     const url: string = route.snapshot.url.join('');  *     const user = route.snapshot.data.user;  *   }  * }  * ```  *  * @publicApi  */ export class ActivatedRouteSnapshot {   /** The configuration used to match this route **/   public readonly routeConfig: Route|null;   /** @internal **/   _urlSegment: UrlSegmentGroup;   /** @internal */   _lastPathIndex: number;   /** @internal */   _resolve: ResolveData;   /** @internal */   _resolvedData?: Data;   /** @internal */   _routerState!: RouterStateSnapshot;   /** @internal */   _paramMap?: ParamMap;   /** @internal */   _queryParamMap?: ParamMap;    /** The resolved route title */   get title(): string|undefined {     // Note: This _must_ be a getter because the data is mutated in the resolvers. Title will not be     // available at the time of class instantiation.     return this.data?.[RouteTitleKey];   }    /** @internal */   constructor(       /** The URL segments matched by this route */       public url: UrlSegment[],       /**        *  The matrix parameters scoped to this route.        *        *  You can compute all params (or data) in the router state or to get params outside        *  of an activated component by traversing the `RouterState` tree as in the following        *  example:        *  ```        *  collectRouteParams(router: Router) {        *    let params = {};        *    let stack: ActivatedRouteSnapshot[] = [router.routerState.snapshot.root];        *    while (stack.length > 0) {        *      const route = stack.pop()!;        *      params = {...params, ...route.params};        *      stack.push(...route.children);        *    }        *    return params;        *  }        *  ```        */       public params: Params,       /** The query parameters shared by all the routes */       public queryParams: Params,       /** The URL fragment shared by all the routes */       public fragment: string|null,       /** The static and resolved data of this route */       public data: Data,       /** The outlet name of the route */       public outlet: string,       /** The component of the route */       public component: Type<any>|null, routeConfig: Route|null, urlSegment: UrlSegmentGroup,       lastPathIndex: number, resolve: ResolveData) {     this.routeConfig = routeConfig;     this._urlSegment = urlSegment;     this._lastPathIndex = lastPathIndex;     this._resolve = resolve;   }    /** The root of the router state */   get root(): ActivatedRouteSnapshot {     return this._routerState.root;   }    /** The parent of this route in the router state tree */   get parent(): ActivatedRouteSnapshot|null {     return this._routerState.parent(this);   }    /** The first child of this route in the router state tree */   get firstChild(): ActivatedRouteSnapshot|null {     return this._routerState.firstChild(this);   }    /** The children of this route in the router state tree */   get children(): ActivatedRouteSnapshot[] {     return this._routerState.children(this);   }    /** The path from the root of the router state tree to this route */   get pathFromRoot(): ActivatedRouteSnapshot[] {     return this._routerState.pathFromRoot(this);   }    get paramMap(): ParamMap {     if (!this._paramMap) {       this._paramMap = convertToParamMap(this.params);     }     return this._paramMap;   }    get queryParamMap(): ParamMap {     if (!this._queryParamMap) {       this._queryParamMap = convertToParamMap(this.queryParams);     }     return this._queryParamMap;   }    toString(): string {     const url = this.url.map(segment => segment.toString()).join('/');     const matched = this.routeConfig ? this.routeConfig.path : '';     return `Route(url:'${url}', path:'${matched}')`;   } }  /**  * @description  *  * Represents the state of the router at a moment in time.  *  * This is a tree of activated route snapshots. Every node in this tree knows about  * the \"consumed\" URL segments, the extracted parameters, and the resolved data.  *  * The following example shows how a component is initialized with information  * from the snapshot of the root node's state at the time of creation.  *  * ```  * @Component({templateUrl:'template.html'})  * class MyComponent {  *   constructor(router: Router) {  *     const state: RouterState = router.routerState;  *     const snapshot: RouterStateSnapshot = state.snapshot;  *     const root: ActivatedRouteSnapshot = snapshot.root;  *     const child = root.firstChild;  *     const id: Observable<string> = child.params.map(p => p.id);  *     //...  *   }  * }  * ```  *  * @publicApi  */ export class RouterStateSnapshot extends Tree<ActivatedRouteSnapshot> {   /** @internal */   constructor(       /** The url from which this snapshot was created */       public url: string, root: TreeNode<ActivatedRouteSnapshot>) {     super(root);     setRouterState(<RouterStateSnapshot>this, root);   }    override toString(): string {     return serializeNode(this._root);   } }  function setRouterState<U, T extends {_routerState: U}>(state: U, node: TreeNode<T>): void {   node.value._routerState = state;   node.children.forEach(c => setRouterState(state, c)); }  function serializeNode(node: TreeNode<ActivatedRouteSnapshot>): string {   const c = node.children.length > 0 ? ` { ${node.children.map(serializeNode).join(', ')} } ` : '';   return `${node.value}${c}`; }  /**  * The expectation is that the activate route is created with the right set of parameters.  * So we push new values into the observables only when they are not the initial values.  * And we detect that by checking if the snapshot field is set.  */ export function advanceActivatedRoute(route: ActivatedRoute): void {   if (route.snapshot) {     const currentSnapshot = route.snapshot;     const nextSnapshot = route._futureSnapshot;     route.snapshot = nextSnapshot;     if (!shallowEqual(currentSnapshot.queryParams, nextSnapshot.queryParams)) {       (<any>route.queryParams).next(nextSnapshot.queryParams);     }     if (currentSnapshot.fragment !== nextSnapshot.fragment) {       (<any>route.fragment).next(nextSnapshot.fragment);     }     if (!shallowEqual(currentSnapshot.params, nextSnapshot.params)) {       (<any>route.params).next(nextSnapshot.params);     }     if (!shallowEqualArrays(currentSnapshot.url, nextSnapshot.url)) {       (<any>route.url).next(nextSnapshot.url);     }     if (!shallowEqual(currentSnapshot.data, nextSnapshot.data)) {       (<any>route.data).next(nextSnapshot.data);     }   } else {     route.snapshot = route._futureSnapshot;      // this is for resolved data     (<any>route.data).next(route._futureSnapshot.data);   } }   export function equalParamsAndUrlSegments(     a: ActivatedRouteSnapshot, b: ActivatedRouteSnapshot): boolean {   const equalUrlParams = shallowEqual(a.params, b.params) && equalSegments(a.url, b.url);   const parentsMismatch = !a.parent !== !b.parent;    return equalUrlParams && !parentsMismatch &&       (!a.parent || equalParamsAndUrlSegments(a.parent, b.parent!)); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BehaviorSubject} from 'rxjs';  import {DetachedRouteHandleInternal, RouteReuseStrategy} from './route_reuse_strategy'; import {ActivatedRoute, ActivatedRouteSnapshot, RouterState, RouterStateSnapshot} from './router_state'; import {TreeNode} from './utils/tree';  export function createRouterState(     routeReuseStrategy: RouteReuseStrategy, curr: RouterStateSnapshot,     prevState: RouterState): RouterState {   const root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : undefined);   return new RouterState(root, curr); }  function createNode(     routeReuseStrategy: RouteReuseStrategy, curr: TreeNode<ActivatedRouteSnapshot>,     prevState?: TreeNode<ActivatedRoute>): TreeNode<ActivatedRoute> {   // reuse an activated route that is currently displayed on the screen   if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) {     const value = prevState.value;     value._futureSnapshot = curr.value;     const children = createOrReuseChildren(routeReuseStrategy, curr, prevState);     return new TreeNode<ActivatedRoute>(value, children);   } else {     if (routeReuseStrategy.shouldAttach(curr.value)) {       // retrieve an activated route that is used to be displayed, but is not currently displayed       const detachedRouteHandle = routeReuseStrategy.retrieve(curr.value);       if (detachedRouteHandle !== null) {         const tree = (detachedRouteHandle as DetachedRouteHandleInternal).route;         tree.value._futureSnapshot = curr.value;         tree.children = curr.children.map(c => createNode(routeReuseStrategy, c));         return tree;       }     }      const value = createActivatedRoute(curr.value);     const children = curr.children.map(c => createNode(routeReuseStrategy, c));     return new TreeNode<ActivatedRoute>(value, children);   } }  function createOrReuseChildren(     routeReuseStrategy: RouteReuseStrategy, curr: TreeNode<ActivatedRouteSnapshot>,     prevState: TreeNode<ActivatedRoute>) {   return curr.children.map(child => {     for (const p of prevState.children) {       if (routeReuseStrategy.shouldReuseRoute(child.value, p.value.snapshot)) {         return createNode(routeReuseStrategy, child, p);       }     }     return createNode(routeReuseStrategy, child);   }); }  function createActivatedRoute(c: ActivatedRouteSnapshot) {   return new ActivatedRoute(       new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams),       new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NavigationCancellationCode} from './events'; import {NavigationBehaviorOptions} from './models'; import {isUrlTree, UrlSerializer, UrlTree} from './url_tree';  export const NAVIGATION_CANCELING_ERROR = 'ngNavigationCancelingError';  export type NavigationCancelingError =     Error&{[NAVIGATION_CANCELING_ERROR]: true, cancellationCode: NavigationCancellationCode}; export type RedirectingNavigationCancelingError = NavigationCancelingError&{   url: UrlTree;   navigationBehaviorOptions?: NavigationBehaviorOptions;   cancellationCode: NavigationCancellationCode.Redirect; };  export function redirectingNavigationError(     urlSerializer: UrlSerializer, redirect: UrlTree): RedirectingNavigationCancelingError {   const {redirectTo, navigationBehaviorOptions} =       isUrlTree(redirect) ? {redirectTo: redirect, navigationBehaviorOptions: undefined} : redirect;   const error =       navigationCancelingError(           ngDevMode && `Redirecting to \"${urlSerializer.serialize(redirectTo)}\"`,           NavigationCancellationCode.Redirect, redirect) as RedirectingNavigationCancelingError;   error.url = redirectTo;   error.navigationBehaviorOptions = navigationBehaviorOptions;   return error; }  export function navigationCancelingError(     message: string|null|false, code: NavigationCancellationCode, redirectUrl?: UrlTree) {   const error =       new Error('NavigationCancelingError: ' + (message || '')) as NavigationCancelingError;   error[NAVIGATION_CANCELING_ERROR] = true;   error.cancellationCode = code;   if (redirectUrl) {     (error as RedirectingNavigationCancelingError).url = redirectUrl;   }   return error; }  export function isRedirectingNavigationCancelingError(     error: unknown|     RedirectingNavigationCancelingError): error is RedirectingNavigationCancelingError {   return isNavigationCancelingError(error) && isUrlTree((error as any).url); } export function isNavigationCancelingError(error: unknown): error is NavigationCancelingError {   return error && (error as any)[NAVIGATION_CANCELING_ERROR]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ComponentFactoryResolver, ComponentRef, EnvironmentInjector, Injectable} from '@angular/core';  import {RouterOutletContract} from './directives/router_outlet'; import {ActivatedRoute} from './router_state';   /**  * Store contextual information about a `RouterOutlet`  *  * @publicApi  */ export class OutletContext {   outlet: RouterOutletContract|null = null;   route: ActivatedRoute|null = null;   /**    * @deprecated Passing a resolver to retrieve a component factory is not required and is    *     deprecated since v14.    */   resolver: ComponentFactoryResolver|null = null;   injector: EnvironmentInjector|null = null;   children = new ChildrenOutletContexts();   attachRef: ComponentRef<any>|null = null; }  /**  * Store contextual information about the children (= nested) `RouterOutlet`  *  * @publicApi  */ @Injectable({providedIn: 'root'}) export class ChildrenOutletContexts {   // contexts for child outlets, by name.   private contexts = new Map<string, OutletContext>();    /** Called when a `RouterOutlet` directive is instantiated */   onChildOutletCreated(childName: string, outlet: RouterOutletContract): void {     const context = this.getOrCreateContext(childName);     context.outlet = outlet;     this.contexts.set(childName, context);   }    /**    * Called when a `RouterOutlet` directive is destroyed.    * We need to keep the context as the outlet could be destroyed inside a NgIf and might be    * re-created later.    */   onChildOutletDestroyed(childName: string): void {     const context = this.getContext(childName);     if (context) {       context.outlet = null;       context.attachRef = null;     }   }    /**    * Called when the corresponding route is deactivated during navigation.    * Because the component get destroyed, all children outlet are destroyed.    */   onOutletDeactivated(): Map<string, OutletContext> {     const contexts = this.contexts;     this.contexts = new Map();     return contexts;   }    onOutletReAttached(contexts: Map<string, OutletContext>) {     this.contexts = contexts;   }    getOrCreateContext(childName: string): OutletContext {     let context = this.getContext(childName);      if (!context) {       context = new OutletContext();       this.contexts.set(childName, context);     }      return context;   }    getContext(childName: string): OutletContext|null {     return this.contexts.get(childName) || null;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ChangeDetectorRef, ComponentFactoryResolver, ComponentRef, Directive, EnvironmentInjector, EventEmitter, inject, Injector, Input, OnDestroy, OnInit, Output, SimpleChanges, ViewContainerRef, ɵRuntimeError as RuntimeError,} from '@angular/core';  import {RuntimeErrorCode} from '../errors'; import {Data} from '../models'; import {ChildrenOutletContexts} from '../router_outlet_context'; import {ActivatedRoute} from '../router_state'; import {PRIMARY_OUTLET} from '../shared';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;  /**  * An interface that defines the contract for developing a component outlet for the `Router`.  *  * An outlet acts as a placeholder that Angular dynamically fills based on the current router state.  *  * A router outlet should register itself with the `Router` via  * `ChildrenOutletContexts#onChildOutletCreated` and unregister with  * `ChildrenOutletContexts#onChildOutletDestroyed`. When the `Router` identifies a matched `Route`,  * it looks for a registered outlet in the `ChildrenOutletContexts` and activates it.  *  * @see `ChildrenOutletContexts`  * @publicApi  */ export interface RouterOutletContract {   /**    * Whether the given outlet is activated.    *    * An outlet is considered \"activated\" if it has an active component.    */   isActivated: boolean;    /** The instance of the activated component or `null` if the outlet is not activated. */   component: Object|null;    /**    * The `Data` of the `ActivatedRoute` snapshot.    */   activatedRouteData: Data;    /**    * The `ActivatedRoute` for the outlet or `null` if the outlet is not activated.    */   activatedRoute: ActivatedRoute|null;    /**    * Called by the `Router` when the outlet should activate (create a component).    */   activateWith(activatedRoute: ActivatedRoute, environmentInjector: EnvironmentInjector|null): void;   /**    * Called by the `Router` when the outlet should activate (create a component).    *    * @deprecated Passing a resolver to retrieve a component factory is not required and is    *     deprecated since v14.    */   activateWith(activatedRoute: ActivatedRoute, resolver: ComponentFactoryResolver|null): void;    /**    * A request to destroy the currently activated component.    *    * When a `RouteReuseStrategy` indicates that an `ActivatedRoute` should be removed but stored for    * later re-use rather than destroyed, the `Router` will call `detach` instead.    */   deactivate(): void;    /**    * Called when the `RouteReuseStrategy` instructs to detach the subtree.    *    * This is similar to `deactivate`, but the activated component should _not_ be destroyed.    * Instead, it is returned so that it can be reattached later via the `attach` method.    */   detach(): ComponentRef<unknown>;    /**    * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree.    */   attach(ref: ComponentRef<unknown>, activatedRoute: ActivatedRoute): void;    /**    * Emits an activate event when a new component is instantiated    **/   activateEvents?: EventEmitter<unknown>;    /**    * Emits a deactivate event when a component is destroyed.    */   deactivateEvents?: EventEmitter<unknown>;    /**    * Emits an attached component instance when the `RouteReuseStrategy` instructs to re-attach a    * previously detached subtree.    **/   attachEvents?: EventEmitter<unknown>;    /**    * Emits a detached component instance when the `RouteReuseStrategy` instructs to detach the    * subtree.    */   detachEvents?: EventEmitter<unknown>; }  /**  * @description  *  * Acts as a placeholder that Angular dynamically fills based on the current router state.  *  * Each outlet can have a unique name, determined by the optional `name` attribute.  * The name cannot be set or changed dynamically. If not set, default value is \"primary\".  *  * ```  * <router-outlet></router-outlet>  * <router-outlet name='left'></router-outlet>  * <router-outlet name='right'></router-outlet>  * ```  *  * Named outlets can be the targets of secondary routes.  * The `Route` object for a secondary route has an `outlet` property to identify the target outlet:  *  * `{path: <base-path>, component: <component>, outlet: <target_outlet_name>}`  *  * Using named outlets and secondary routes, you can target multiple outlets in  * the same `RouterLink` directive.  *  * The router keeps track of separate branches in a navigation tree for each named outlet and  * generates a representation of that tree in the URL.  * The URL for a secondary route uses the following syntax to specify both the primary and secondary  * routes at the same time:  *  * `http://base-path/primary-route-path(outlet-name:route-path)`  *  * A router outlet emits an activate event when a new component is instantiated,  * deactivate event when a component is destroyed.  * An attached event emits when the `RouteReuseStrategy` instructs the outlet to reattach the  * subtree, and the detached event emits when the `RouteReuseStrategy` instructs the outlet to  * detach the subtree.  *  * ```  * <router-outlet  *   (activate)='onActivate($event)'  *   (deactivate)='onDeactivate($event)'  *   (attach)='onAttach($event)'  *   (detach)='onDetach($event)'></router-outlet>  * ```  *  * @see [Routing tutorial](guide/router-tutorial-toh#named-outlets \"Example of a named  * outlet and secondary route configuration\").  * @see `RouterLink`  * @see `Route`  * @ngModule RouterModule  *  * @publicApi  */ @Directive({   selector: 'router-outlet',   exportAs: 'outlet',   standalone: true, }) export class RouterOutlet implements OnDestroy, OnInit, RouterOutletContract {   private activated: ComponentRef<any>|null = null;   private _activatedRoute: ActivatedRoute|null = null;   /**    * The name of the outlet    *    * @see [named outlets](guide/router-tutorial-toh#displaying-multiple-routes-in-named-outlets)    */   @Input() name = PRIMARY_OUTLET;    @Output('activate') activateEvents = new EventEmitter<any>();   @Output('deactivate') deactivateEvents = new EventEmitter<any>();   /**    * Emits an attached component instance when the `RouteReuseStrategy` instructs to re-attach a    * previously detached subtree.    **/   @Output('attach') attachEvents = new EventEmitter<unknown>();   /**    * Emits a detached component instance when the `RouteReuseStrategy` instructs to detach the    * subtree.    */   @Output('detach') detachEvents = new EventEmitter<unknown>();    private parentContexts = inject(ChildrenOutletContexts);   private location = inject(ViewContainerRef);   private changeDetector = inject(ChangeDetectorRef);   private environmentInjector = inject(EnvironmentInjector);    /** @nodoc */   ngOnChanges(changes: SimpleChanges) {     if (changes['name']) {       const {firstChange, previousValue} = changes['name'];       if (firstChange) {         // The first change is handled by ngOnInit. Because ngOnChanges doesn't get called when no         // input is set at all, we need to centrally handle the first change there.         return;       }        // unregister with the old name       if (this.isTrackedInParentContexts(previousValue)) {         this.deactivate();         this.parentContexts.onChildOutletDestroyed(previousValue);       }       // register the new name       this.initializeOutletWithName();     }   }    /** @nodoc */   ngOnDestroy(): void {     // Ensure that the registered outlet is this one before removing it on the context.     if (this.isTrackedInParentContexts(this.name)) {       this.parentContexts.onChildOutletDestroyed(this.name);     }   }    private isTrackedInParentContexts(outletName: string) {     return this.parentContexts.getContext(outletName)?.outlet === this;   }    /** @nodoc */   ngOnInit(): void {     this.initializeOutletWithName();   }    private initializeOutletWithName() {     this.parentContexts.onChildOutletCreated(this.name, this);     if (this.activated) {       return;     }      // If the outlet was not instantiated at the time the route got activated we need to populate     // the outlet when it is initialized (ie inside a NgIf)     const context = this.parentContexts.getContext(this.name);     if (context?.route) {       if (context.attachRef) {         // `attachRef` is populated when there is an existing component to mount         this.attach(context.attachRef, context.route);       } else {         // otherwise the component defined in the configuration is created         this.activateWith(context.route, context.injector);       }     }   }    get isActivated(): boolean {     return !!this.activated;   }    /**    * @returns The currently activated component instance.    * @throws An error if the outlet is not activated.    */   get component(): Object {     if (!this.activated)       throw new RuntimeError(           RuntimeErrorCode.OUTLET_NOT_ACTIVATED, NG_DEV_MODE && 'Outlet is not activated');     return this.activated.instance;   }    get activatedRoute(): ActivatedRoute {     if (!this.activated)       throw new RuntimeError(           RuntimeErrorCode.OUTLET_NOT_ACTIVATED, NG_DEV_MODE && 'Outlet is not activated');     return this._activatedRoute as ActivatedRoute;   }    get activatedRouteData(): Data {     if (this._activatedRoute) {       return this._activatedRoute.snapshot.data;     }     return {};   }    /**    * Called when the `RouteReuseStrategy` instructs to detach the subtree    */   detach(): ComponentRef<any> {     if (!this.activated)       throw new RuntimeError(           RuntimeErrorCode.OUTLET_NOT_ACTIVATED, NG_DEV_MODE && 'Outlet is not activated');     this.location.detach();     const cmp = this.activated;     this.activated = null;     this._activatedRoute = null;     this.detachEvents.emit(cmp.instance);     return cmp;   }    /**    * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree    */   attach(ref: ComponentRef<any>, activatedRoute: ActivatedRoute) {     this.activated = ref;     this._activatedRoute = activatedRoute;     this.location.insert(ref.hostView);     this.attachEvents.emit(ref.instance);   }    deactivate(): void {     if (this.activated) {       const c = this.component;       this.activated.destroy();       this.activated = null;       this._activatedRoute = null;       this.deactivateEvents.emit(c);     }   }    activateWith(       activatedRoute: ActivatedRoute,       resolverOrInjector?: ComponentFactoryResolver|EnvironmentInjector|null) {     if (this.isActivated) {       throw new RuntimeError(           RuntimeErrorCode.OUTLET_ALREADY_ACTIVATED,           NG_DEV_MODE && 'Cannot activate an already activated outlet');     }     this._activatedRoute = activatedRoute;     const location = this.location;     const snapshot = activatedRoute.snapshot;     const component = snapshot.component!;     const childContexts = this.parentContexts.getOrCreateContext(this.name).children;     const injector = new OutletInjector(activatedRoute, childContexts, location.injector);      if (resolverOrInjector && isComponentFactoryResolver(resolverOrInjector)) {       const factory = resolverOrInjector.resolveComponentFactory(component);       this.activated = location.createComponent(factory, location.length, injector);     } else {       const environmentInjector = resolverOrInjector ?? this.environmentInjector;       this.activated = location.createComponent(           component, {index: location.length, injector, environmentInjector});     }     // Calling `markForCheck` to make sure we will run the change detection when the     // `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.     this.changeDetector.markForCheck();     this.activateEvents.emit(this.activated.instance);   } }  class OutletInjector implements Injector {   constructor(       private route: ActivatedRoute, private childContexts: ChildrenOutletContexts,       private parent: Injector) {}    get(token: any, notFoundValue?: any): any {     if (token === ActivatedRoute) {       return this.route;     }      if (token === ChildrenOutletContexts) {       return this.childContexts;     }      return this.parent.get(token, notFoundValue);   } }  function isComponentFactoryResolver(item: any): item is ComponentFactoryResolver {   return !!item.resolveComponentFactory; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Component} from '@angular/core';  import {RouterOutlet} from '../directives/router_outlet';  /**  * This component is used internally within the router to be a placeholder when an empty  * router-outlet is needed. For example, with a config such as:  *  * `{path: 'parent', outlet: 'nav', children: [...]}`  *  * In order to render, there needs to be a component on this config, which will default  * to this `EmptyOutletComponent`.  */ @Component({   template: `<router-outlet></router-outlet>`,   imports: [RouterOutlet],   standalone: true, }) export class ɵEmptyOutletComponent { }  export {ɵEmptyOutletComponent as EmptyOutletComponent}; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {createEnvironmentInjector, EnvironmentInjector, isStandalone, Type, ɵRuntimeError as RuntimeError} from '@angular/core';  import {EmptyOutletComponent} from '../components/empty_outlet'; import {RuntimeErrorCode} from '../errors'; import {Route, Routes} from '../models'; import {ActivatedRouteSnapshot} from '../router_state'; import {PRIMARY_OUTLET} from '../shared';  /**  * Creates an `EnvironmentInjector` if the `Route` has providers and one does not already exist  * and returns the injector. Otherwise, if the `Route` does not have `providers`, returns the  * `currentInjector`.  *  * @param route The route that might have providers  * @param currentInjector The parent injector of the `Route`  */ export function getOrCreateRouteInjectorIfNeeded(     route: Route, currentInjector: EnvironmentInjector) {   if (route.providers && !route._injector) {     route._injector =         createEnvironmentInjector(route.providers, currentInjector, `Route: ${route.path}`);   }   return route._injector ?? currentInjector; }  export function getLoadedRoutes(route: Route): Route[]|undefined {   return route._loadedRoutes; }  export function getLoadedInjector(route: Route): EnvironmentInjector|undefined {   return route._loadedInjector; } export function getLoadedComponent(route: Route): Type<unknown>|undefined {   return route._loadedComponent; }  export function getProvidersInjector(route: Route): EnvironmentInjector|undefined {   return route._injector; }  export function validateConfig(     config: Routes, parentPath: string = '', requireStandaloneComponents = false): void {   // forEach doesn't iterate undefined values   for (let i = 0; i < config.length; i++) {     const route: Route = config[i];     const fullPath: string = getFullPath(parentPath, route);     validateNode(route, fullPath, requireStandaloneComponents);   } }  export function assertStandalone(fullPath: string, component: Type<unknown>|undefined) {   if (component && !isStandalone(component)) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_ROUTE_CONFIG,         `Invalid configuration of route '${fullPath}'. The component must be standalone.`);   } }  function validateNode(route: Route, fullPath: string, requireStandaloneComponents: boolean): void {   if (typeof ngDevMode === 'undefined' || ngDevMode) {     if (!route) {       throw new RuntimeError(RuntimeErrorCode.INVALID_ROUTE_CONFIG, `       Invalid configuration of route '${fullPath}': Encountered undefined route.       The reason might be an extra comma.        Example:       const routes: Routes = [         { path: '', redirectTo: '/dashboard', pathMatch: 'full' },         { path: 'dashboard',  component: DashboardComponent },, << two commas         { path: 'detail/:id', component: HeroDetailComponent }       ];     `);     }     if (Array.isArray(route)) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${fullPath}': Array cannot be specified`);     }     if (!route.redirectTo && !route.component && !route.loadComponent && !route.children &&         !route.loadChildren && (route.outlet && route.outlet !== PRIMARY_OUTLET)) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': a componentless route without children or loadChildren cannot have a named outlet set`);     }     if (route.redirectTo && route.children) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': redirectTo and children cannot be used together`);     }     if (route.redirectTo && route.loadChildren) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': redirectTo and loadChildren cannot be used together`);     }     if (route.children && route.loadChildren) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': children and loadChildren cannot be used together`);     }     if (route.redirectTo && (route.component || route.loadComponent)) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': redirectTo and component/loadComponent cannot be used together`);     }     if (route.component && route.loadComponent) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': component and loadComponent cannot be used together`);     }     if (route.redirectTo && route.canActivate) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': redirectTo and canActivate cannot be used together. Redirects happen before activation ` +               `so canActivate will never be executed.`);     }     if (route.path && route.matcher) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${fullPath}': path and matcher cannot be used together`);     }     if (route.redirectTo === void 0 && !route.component && !route.loadComponent &&         !route.children && !route.loadChildren) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}'. One of the following must be provided: component, loadComponent, redirectTo, children or loadChildren`);     }     if (route.path === void 0 && route.matcher === void 0) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': routes must have either a path or a matcher specified`);     }     if (typeof route.path === 'string' && route.path.charAt(0) === '/') {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${fullPath}': path cannot start with a slash`);     }     if (route.path === '' && route.redirectTo !== void 0 && route.pathMatch === void 0) {       const exp =           `The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`;       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '{path: \"${fullPath}\", redirectTo: \"${               route.redirectTo}\"}': please provide 'pathMatch'. ${exp}`);     }     if (requireStandaloneComponents) {       assertStandalone(fullPath, route.component);     }   }   if (route.children) {     validateConfig(route.children, fullPath, requireStandaloneComponents);   } }  function getFullPath(parentPath: string, currentRoute: Route): string {   if (!currentRoute) {     return parentPath;   }   if (!parentPath && !currentRoute.path) {     return '';   } else if (parentPath && !currentRoute.path) {     return `${parentPath}/`;   } else if (!parentPath && currentRoute.path) {     return currentRoute.path;   } else {     return `${parentPath}/${currentRoute.path}`;   } }  /**  * Makes a copy of the config and adds any default required properties.  */ export function standardizeConfig(r: Route): Route {   const children = r.children && r.children.map(standardizeConfig);   const c = children ? {...r, children} : {...r};   if ((!c.component && !c.loadComponent) && (children || c.loadChildren) &&       (c.outlet && c.outlet !== PRIMARY_OUTLET)) {     c.component = EmptyOutletComponent;   }   return c; }  /** Returns the `route.outlet` or PRIMARY_OUTLET if none exists. */ export function getOutlet(route: Route): string {   return route.outlet || PRIMARY_OUTLET; }  /**  * Sorts the `routes` such that the ones with an outlet matching `outletName` come first.  * The order of the configs is otherwise preserved.  */ export function sortByMatchingOutlets(routes: Routes, outletName: string): Routes {   const sortedConfig = routes.filter(r => getOutlet(r) === outletName);   sortedConfig.push(...routes.filter(r => getOutlet(r) !== outletName));   return sortedConfig; }  /**  * Gets the first injector in the snapshot's parent tree.  *  * If the `Route` has a static list of providers, the returned injector will be the one created from  * those. If it does not exist, the returned injector may come from the parents, which may be from a  * loaded config or their static providers.  *  * Returns `null` if there is neither this nor any parents have a stored injector.  *  * Generally used for retrieving the injector to use for getting tokens for guards/resolvers and  * also used for getting the correct injector to use for creating components.  */ export function getClosestRouteInjector(snapshot: ActivatedRouteSnapshot): EnvironmentInjector|     null {   if (!snapshot) return null;    // If the current route has its own injector, which is created from the static providers on the   // route itself, we should use that. Otherwise, we start at the parent since we do not want to   // include the lazy loaded injector from this route.   if (snapshot.routeConfig?._injector) {     return snapshot.routeConfig._injector;   }    for (let s = snapshot.parent; s; s = s.parent) {     const route = s.routeConfig;     // Note that the order here is important. `_loadedInjector` stored on the route with     // `loadChildren: () => NgModule` so it applies to child routes with priority. The `_injector`     // is created from the static providers on that parent route, so it applies to the children as     // well, but only if there is no lazy loaded NgModuleRef injector.     if (route?._loadedInjector) return route._loadedInjector;     if (route?._injector) return route._injector;   }    return null; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ComponentFactoryResolver, EnvironmentInjector, NgModuleRef} from '@angular/core'; import {MonoTypeOperatorFunction} from 'rxjs'; import {map} from 'rxjs/operators';  import {ActivationEnd, ChildActivationEnd, Event} from '../events'; import {NavigationTransition} from '../navigation_transition'; import {DetachedRouteHandleInternal, RouteReuseStrategy} from '../route_reuse_strategy'; import {ChildrenOutletContexts} from '../router_outlet_context'; import {ActivatedRoute, advanceActivatedRoute, RouterState} from '../router_state'; import {forEach} from '../utils/collection'; import {getClosestRouteInjector} from '../utils/config'; import {nodeChildrenAsMap, TreeNode} from '../utils/tree';  export const activateRoutes =     (rootContexts: ChildrenOutletContexts, routeReuseStrategy: RouteReuseStrategy,      forwardEvent: (evt: Event) => void): MonoTypeOperatorFunction<NavigationTransition> =>         map(t => {           new ActivateRoutes(               routeReuseStrategy, t.targetRouterState!, t.currentRouterState, forwardEvent)               .activate(rootContexts);           return t;         });  export class ActivateRoutes {   constructor(       private routeReuseStrategy: RouteReuseStrategy, private futureState: RouterState,       private currState: RouterState, private forwardEvent: (evt: Event) => void) {}    activate(parentContexts: ChildrenOutletContexts): void {     const futureRoot = this.futureState._root;     const currRoot = this.currState ? this.currState._root : null;      this.deactivateChildRoutes(futureRoot, currRoot, parentContexts);     advanceActivatedRoute(this.futureState.root);     this.activateChildRoutes(futureRoot, currRoot, parentContexts);   }    // De-activate the child route that are not re-used for the future state   private deactivateChildRoutes(       futureNode: TreeNode<ActivatedRoute>, currNode: TreeNode<ActivatedRoute>|null,       contexts: ChildrenOutletContexts): void {     const children: {[outletName: string]: TreeNode<ActivatedRoute>} = nodeChildrenAsMap(currNode);      // Recurse on the routes active in the future state to de-activate deeper children     futureNode.children.forEach(futureChild => {       const childOutletName = futureChild.value.outlet;       this.deactivateRoutes(futureChild, children[childOutletName], contexts);       delete children[childOutletName];     });      // De-activate the routes that will not be re-used     forEach(children, (v: TreeNode<ActivatedRoute>, childName: string) => {       this.deactivateRouteAndItsChildren(v, contexts);     });   }    private deactivateRoutes(       futureNode: TreeNode<ActivatedRoute>, currNode: TreeNode<ActivatedRoute>,       parentContext: ChildrenOutletContexts): void {     const future = futureNode.value;     const curr = currNode ? currNode.value : null;      if (future === curr) {       // Reusing the node, check to see if the children need to be de-activated       if (future.component) {         // If we have a normal route, we need to go through an outlet.         const context = parentContext.getContext(future.outlet);         if (context) {           this.deactivateChildRoutes(futureNode, currNode, context.children);         }       } else {         // if we have a componentless route, we recurse but keep the same outlet map.         this.deactivateChildRoutes(futureNode, currNode, parentContext);       }     } else {       if (curr) {         // Deactivate the current route which will not be re-used         this.deactivateRouteAndItsChildren(currNode, parentContext);       }     }   }    private deactivateRouteAndItsChildren(       route: TreeNode<ActivatedRoute>, parentContexts: ChildrenOutletContexts): void {     // If there is no component, the Route is never attached to an outlet (because there is no     // component to attach).     if (route.value.component && this.routeReuseStrategy.shouldDetach(route.value.snapshot)) {       this.detachAndStoreRouteSubtree(route, parentContexts);     } else {       this.deactivateRouteAndOutlet(route, parentContexts);     }   }    private detachAndStoreRouteSubtree(       route: TreeNode<ActivatedRoute>, parentContexts: ChildrenOutletContexts): void {     const context = parentContexts.getContext(route.value.outlet);     const contexts = context && route.value.component ? context.children : parentContexts;     const children: {[outletName: string]: TreeNode<ActivatedRoute>} = nodeChildrenAsMap(route);      for (const childOutlet of Object.keys(children)) {       this.deactivateRouteAndItsChildren(children[childOutlet], contexts);     }      if (context && context.outlet) {       const componentRef = context.outlet.detach();       const contexts = context.children.onOutletDeactivated();       this.routeReuseStrategy.store(route.value.snapshot, {componentRef, route, contexts});     }   }    private deactivateRouteAndOutlet(       route: TreeNode<ActivatedRoute>, parentContexts: ChildrenOutletContexts): void {     const context = parentContexts.getContext(route.value.outlet);     // The context could be `null` if we are on a componentless route but there may still be     // children that need deactivating.     const contexts = context && route.value.component ? context.children : parentContexts;     const children: {[outletName: string]: TreeNode<ActivatedRoute>} = nodeChildrenAsMap(route);      for (const childOutlet of Object.keys(children)) {       this.deactivateRouteAndItsChildren(children[childOutlet], contexts);     }      if (context && context.outlet) {       // Destroy the component       context.outlet.deactivate();       // Destroy the contexts for all the outlets that were in the component       context.children.onOutletDeactivated();       // Clear the information about the attached component on the context but keep the reference to       // the outlet.       context.attachRef = null;       context.resolver = null;       context.route = null;     }   }    private activateChildRoutes(       futureNode: TreeNode<ActivatedRoute>, currNode: TreeNode<ActivatedRoute>|null,       contexts: ChildrenOutletContexts): void {     const children: {[outlet: string]: TreeNode<ActivatedRoute>} = nodeChildrenAsMap(currNode);     futureNode.children.forEach(c => {       this.activateRoutes(c, children[c.value.outlet], contexts);       this.forwardEvent(new ActivationEnd(c.value.snapshot));     });     if (futureNode.children.length) {       this.forwardEvent(new ChildActivationEnd(futureNode.value.snapshot));     }   }    private activateRoutes(       futureNode: TreeNode<ActivatedRoute>, currNode: TreeNode<ActivatedRoute>,       parentContexts: ChildrenOutletContexts): void {     const future = futureNode.value;     const curr = currNode ? currNode.value : null;      advanceActivatedRoute(future);      // reusing the node     if (future === curr) {       if (future.component) {         // If we have a normal route, we need to go through an outlet.         const context = parentContexts.getOrCreateContext(future.outlet);         this.activateChildRoutes(futureNode, currNode, context.children);       } else {         // if we have a componentless route, we recurse but keep the same outlet map.         this.activateChildRoutes(futureNode, currNode, parentContexts);       }     } else {       if (future.component) {         // if we have a normal route, we need to place the component into the outlet and recurse.         const context = parentContexts.getOrCreateContext(future.outlet);          if (this.routeReuseStrategy.shouldAttach(future.snapshot)) {           const stored =               (<DetachedRouteHandleInternal>this.routeReuseStrategy.retrieve(future.snapshot));           this.routeReuseStrategy.store(future.snapshot, null);           context.children.onOutletReAttached(stored.contexts);           context.attachRef = stored.componentRef;           context.route = stored.route.value;           if (context.outlet) {             // Attach right away when the outlet has already been instantiated             // Otherwise attach from `RouterOutlet.ngOnInit` when it is instantiated             context.outlet.attach(stored.componentRef, stored.route.value);           }            advanceActivatedRoute(stored.route.value);           this.activateChildRoutes(futureNode, null, context.children);         } else {           const injector = getClosestRouteInjector(future.snapshot);           const cmpFactoryResolver = injector?.get(ComponentFactoryResolver) ?? null;           context.attachRef = null;           context.route = future;           context.resolver = cmpFactoryResolver;           context.injector = injector;           if (context.outlet) {             // Activate the outlet when it has already been instantiated             // Otherwise it will get activated from its `ngOnInit` when instantiated             context.outlet.activateWith(future, context.injector);           }            this.activateChildRoutes(futureNode, null, context.children);         }       } else {         // if we have a componentless route, we recurse but keep the same outlet map.         this.activateChildRoutes(futureNode, null, parentContexts);       }     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injector, ProviderToken, ɵisInjectable as isInjectable} from '@angular/core';  import {RunGuardsAndResolvers} from '../models'; import {ChildrenOutletContexts, OutletContext} from '../router_outlet_context'; import {ActivatedRouteSnapshot, equalParamsAndUrlSegments, RouterStateSnapshot} from '../router_state'; import {equalPath} from '../url_tree'; import {forEach, shallowEqual} from '../utils/collection'; import {nodeChildrenAsMap, TreeNode} from '../utils/tree';  export class CanActivate {   readonly route: ActivatedRouteSnapshot;   constructor(public path: ActivatedRouteSnapshot[]) {     this.route = this.path[this.path.length - 1];   } }  export class CanDeactivate {   constructor(public component: Object|null, public route: ActivatedRouteSnapshot) {} }  export declare type Checks = {   canDeactivateChecks: CanDeactivate[],   canActivateChecks: CanActivate[], };  export function getAllRouteGuards(     future: RouterStateSnapshot, curr: RouterStateSnapshot,     parentContexts: ChildrenOutletContexts) {   const futureRoot = future._root;   const currRoot = curr ? curr._root : null;    return getChildRouteGuards(futureRoot, currRoot, parentContexts, [futureRoot.value]); }  export function getCanActivateChild(p: ActivatedRouteSnapshot):     {node: ActivatedRouteSnapshot, guards: any[]}|null {   const canActivateChild = p.routeConfig ? p.routeConfig.canActivateChild : null;   if (!canActivateChild || canActivateChild.length === 0) return null;   return {node: p, guards: canActivateChild}; }  export function getTokenOrFunctionIdentity<T>(     tokenOrFunction: Function|ProviderToken<T>, injector: Injector): Function|T {   const NOT_FOUND = Symbol();   const result = injector.get<T|Symbol>(tokenOrFunction, NOT_FOUND);   if (result === NOT_FOUND) {     if (typeof tokenOrFunction === 'function' && !isInjectable(tokenOrFunction)) {       // We think the token is just a function so return it as-is       return tokenOrFunction;     } else {       // This will throw the not found error       return injector.get<T>(tokenOrFunction);     }   }   return result as T; }  function getChildRouteGuards(     futureNode: TreeNode<ActivatedRouteSnapshot>, currNode: TreeNode<ActivatedRouteSnapshot>|null,     contexts: ChildrenOutletContexts|null, futurePath: ActivatedRouteSnapshot[], checks: Checks = {       canDeactivateChecks: [],       canActivateChecks: []     }): Checks {   const prevChildren = nodeChildrenAsMap(currNode);    // Process the children of the future route   futureNode.children.forEach(c => {     getRouteGuards(c, prevChildren[c.value.outlet], contexts, futurePath.concat([c.value]), checks);     delete prevChildren[c.value.outlet];   });    // Process any children left from the current route (not active for the future route)   forEach(       prevChildren,       (v: TreeNode<ActivatedRouteSnapshot>, k: string) =>           deactivateRouteAndItsChildren(v, contexts!.getContext(k), checks));    return checks; }  function getRouteGuards(     futureNode: TreeNode<ActivatedRouteSnapshot>, currNode: TreeNode<ActivatedRouteSnapshot>,     parentContexts: ChildrenOutletContexts|null, futurePath: ActivatedRouteSnapshot[],     checks: Checks = {       canDeactivateChecks: [],       canActivateChecks: []     }): Checks {   const future = futureNode.value;   const curr = currNode ? currNode.value : null;   const context = parentContexts ? parentContexts.getContext(futureNode.value.outlet) : null;    // reusing the node   if (curr && future.routeConfig === curr.routeConfig) {     const shouldRun =         shouldRunGuardsAndResolvers(curr, future, future.routeConfig!.runGuardsAndResolvers);     if (shouldRun) {       checks.canActivateChecks.push(new CanActivate(futurePath));     } else {       // we need to set the data       future.data = curr.data;       future._resolvedData = curr._resolvedData;     }      // If we have a component, we need to go through an outlet.     if (future.component) {       getChildRouteGuards(           futureNode, currNode, context ? context.children : null, futurePath, checks);        // if we have a componentless route, we recurse but keep the same outlet map.     } else {       getChildRouteGuards(futureNode, currNode, parentContexts, futurePath, checks);     }      if (shouldRun && context && context.outlet && context.outlet.isActivated) {       checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, curr));     }   } else {     if (curr) {       deactivateRouteAndItsChildren(currNode, context, checks);     }      checks.canActivateChecks.push(new CanActivate(futurePath));     // If we have a component, we need to go through an outlet.     if (future.component) {       getChildRouteGuards(futureNode, null, context ? context.children : null, futurePath, checks);        // if we have a componentless route, we recurse but keep the same outlet map.     } else {       getChildRouteGuards(futureNode, null, parentContexts, futurePath, checks);     }   }    return checks; }  function shouldRunGuardsAndResolvers(     curr: ActivatedRouteSnapshot, future: ActivatedRouteSnapshot,     mode: RunGuardsAndResolvers|undefined): boolean {   if (typeof mode === 'function') {     return mode(curr, future);   }   switch (mode) {     case 'pathParamsChange':       return !equalPath(curr.url, future.url);      case 'pathParamsOrQueryParamsChange':       return !equalPath(curr.url, future.url) ||           !shallowEqual(curr.queryParams, future.queryParams);      case 'always':       return true;      case 'paramsOrQueryParamsChange':       return !equalParamsAndUrlSegments(curr, future) ||           !shallowEqual(curr.queryParams, future.queryParams);      case 'paramsChange':     default:       return !equalParamsAndUrlSegments(curr, future);   } }  function deactivateRouteAndItsChildren(     route: TreeNode<ActivatedRouteSnapshot>, context: OutletContext|null, checks: Checks): void {   const children = nodeChildrenAsMap(route);   const r = route.value;    forEach(children, (node: TreeNode<ActivatedRouteSnapshot>, childName: string) => {     if (!r.component) {       deactivateRouteAndItsChildren(node, context, checks);     } else if (context) {       deactivateRouteAndItsChildren(node, context.children.getContext(childName), checks);     } else {       deactivateRouteAndItsChildren(node, null, checks);     }   });    if (!r.component) {     checks.canDeactivateChecks.push(new CanDeactivate(null, r));   } else if (context && context.outlet && context.outlet.isActivated) {     checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, r));   } else {     checks.canDeactivateChecks.push(new CanDeactivate(null, r));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EmptyError} from 'rxjs';  import {CanActivate, CanActivateChild, CanDeactivate, CanLoad, CanMatch} from '../models'; import {NAVIGATION_CANCELING_ERROR, NavigationCancelingError, RedirectingNavigationCancelingError} from '../navigation_canceling_error'; import {isUrlTree} from '../url_tree';  /**  * Simple function check, but generic so type inference will flow. Example:  *  * function product(a: number, b: number) {  *   return a * b;  * }  *  * if (isFunction<product>(fn)) {  *   return fn(1, 2);  * } else {  *   throw \"Must provide the `product` function\";  * }  */ export function isFunction<T>(v: any): v is T {   return typeof v === 'function'; }  export function isBoolean(v: any): v is boolean {   return typeof v === 'boolean'; }  export function isCanLoad(guard: any): guard is CanLoad {   return guard && isFunction<CanLoad>(guard.canLoad); }  export function isCanActivate(guard: any): guard is CanActivate {   return guard && isFunction<CanActivate>(guard.canActivate); }  export function isCanActivateChild(guard: any): guard is CanActivateChild {   return guard && isFunction<CanActivateChild>(guard.canActivateChild); }  export function isCanDeactivate<T>(guard: any): guard is CanDeactivate<T> {   return guard && isFunction<CanDeactivate<T>>(guard.canDeactivate); } export function isCanMatch(guard: any): guard is CanMatch {   return guard && isFunction<CanMatch>(guard.canMatch); }  export function isRedirectingNavigationCancelingError(     error: unknown|     RedirectingNavigationCancelingError): error is RedirectingNavigationCancelingError {   return isNavigationCancelingError(error) && isUrlTree((error as any).url); }  export function isNavigationCancelingError(error: unknown): error is NavigationCancelingError {   return error && (error as any)[NAVIGATION_CANCELING_ERROR]; }  export function isEmptyError(e: Error): e is EmptyError {   return e instanceof EmptyError || e?.name === 'EmptyError'; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {combineLatest, Observable, OperatorFunction} from 'rxjs'; import {filter, map, scan, startWith, switchMap, take} from 'rxjs/operators';  import {isUrlTree, UrlTree} from '../url_tree';  const INITIAL_VALUE = Symbol('INITIAL_VALUE'); declare type INTERIM_VALUES = typeof INITIAL_VALUE | boolean | UrlTree;  export function prioritizedGuardValue():     OperatorFunction<Observable<boolean|UrlTree>[], boolean|UrlTree> {   return switchMap(obs => {     return combineLatest(obs.map(o => o.pipe(take(1), startWith(INITIAL_VALUE as INTERIM_VALUES))))         .pipe(             map((results: INTERIM_VALUES[]) => {               for (const result of results) {                 if (result === true) {                   // If result is true, check the next one                   continue;                 } else if (result === INITIAL_VALUE) {                   // If guard has not finished, we need to stop processing.                   return INITIAL_VALUE;                 } else if (result === false || result instanceof UrlTree) {                   // Result finished and was not true. Return the result.                   // Note that we only allow false/UrlTree. Other values are considered invalid and                   // ignored.                   return result;                 }               }               // Everything resolved to true. Return true.               return true;             }),             filter((item): item is boolean|UrlTree => item !== INITIAL_VALUE),             take(1),         );   }); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, ProviderToken} from '@angular/core'; import {concat, defer, from, MonoTypeOperatorFunction, Observable, of, OperatorFunction, pipe} from 'rxjs'; import {concatMap, first, map, mergeMap, tap} from 'rxjs/operators';  import {ActivationStart, ChildActivationStart, Event} from '../events'; import {CanActivateChild, CanActivateChildFn, CanActivateFn, CanDeactivateFn, CanLoadFn, CanMatchFn, Route} from '../models'; import {redirectingNavigationError} from '../navigation_canceling_error'; import {NavigationTransition} from '../navigation_transition'; import {ActivatedRouteSnapshot, RouterStateSnapshot} from '../router_state'; import {isUrlTree, UrlSegment, UrlSerializer, UrlTree} from '../url_tree'; import {wrapIntoObservable} from '../utils/collection'; import {getClosestRouteInjector} from '../utils/config'; import {CanActivate, CanDeactivate, getCanActivateChild, getTokenOrFunctionIdentity} from '../utils/preactivation'; import {isBoolean, isCanActivate, isCanActivateChild, isCanDeactivate, isCanLoad, isCanMatch} from '../utils/type_guards';  import {prioritizedGuardValue} from './prioritized_guard_value';  export function checkGuards(injector: EnvironmentInjector, forwardEvent?: (evt: Event) => void):     MonoTypeOperatorFunction<NavigationTransition> {   return mergeMap(t => {     const {targetSnapshot, currentSnapshot, guards: {canActivateChecks, canDeactivateChecks}} = t;     if (canDeactivateChecks.length === 0 && canActivateChecks.length === 0) {       return of({...t, guardsResult: true});     }      return runCanDeactivateChecks(canDeactivateChecks, targetSnapshot!, currentSnapshot, injector)         .pipe(             mergeMap(canDeactivate => {               return canDeactivate && isBoolean(canDeactivate) ?                   runCanActivateChecks(targetSnapshot!, canActivateChecks, injector, forwardEvent) :                   of(canDeactivate);             }),             map(guardsResult => ({...t, guardsResult})));   }); }  function runCanDeactivateChecks(     checks: CanDeactivate[], futureRSS: RouterStateSnapshot, currRSS: RouterStateSnapshot,     injector: EnvironmentInjector) {   return from(checks).pipe(       mergeMap(           check => runCanDeactivate(check.component, check.route, currRSS, futureRSS, injector)),       first(result => {         return result !== true;       }, true as boolean | UrlTree)); }  function runCanActivateChecks(     futureSnapshot: RouterStateSnapshot, checks: CanActivate[], injector: EnvironmentInjector,     forwardEvent?: (evt: Event) => void) {   return from(checks).pipe(       concatMap((check: CanActivate) => {         return concat(             fireChildActivationStart(check.route.parent, forwardEvent),             fireActivationStart(check.route, forwardEvent),             runCanActivateChild(futureSnapshot, check.path, injector),             runCanActivate(futureSnapshot, check.route, injector));       }),       first(result => {         return result !== true;       }, true as boolean | UrlTree)); }  /**  * This should fire off `ActivationStart` events for each route being activated at this  * level.  * In other words, if you're activating `a` and `b` below, `path` will contain the  * `ActivatedRouteSnapshot`s for both and we will fire `ActivationStart` for both. Always  * return  * `true` so checks continue to run.  */ function fireActivationStart(     snapshot: ActivatedRouteSnapshot|null,     forwardEvent?: (evt: Event) => void): Observable<boolean> {   if (snapshot !== null && forwardEvent) {     forwardEvent(new ActivationStart(snapshot));   }   return of(true); }  /**  * This should fire off `ChildActivationStart` events for each route being activated at this  * level.  * In other words, if you're activating `a` and `b` below, `path` will contain the  * `ActivatedRouteSnapshot`s for both and we will fire `ChildActivationStart` for both. Always  * return  * `true` so checks continue to run.  */ function fireChildActivationStart(     snapshot: ActivatedRouteSnapshot|null,     forwardEvent?: (evt: Event) => void): Observable<boolean> {   if (snapshot !== null && forwardEvent) {     forwardEvent(new ChildActivationStart(snapshot));   }   return of(true); }  function runCanActivate(     futureRSS: RouterStateSnapshot, futureARS: ActivatedRouteSnapshot,     injector: EnvironmentInjector): Observable<boolean|UrlTree> {   const canActivate = futureARS.routeConfig ? futureARS.routeConfig.canActivate : null;   if (!canActivate || canActivate.length === 0) return of(true);    const canActivateObservables =       canActivate.map((canActivate: CanActivateFn|ProviderToken<unknown>) => {         return defer(() => {           const closestInjector = getClosestRouteInjector(futureARS) ?? injector;           const guard = getTokenOrFunctionIdentity<CanActivate>(canActivate, closestInjector);           const guardVal = isCanActivate(guard) ?               guard.canActivate(futureARS, futureRSS) :               closestInjector.runInContext(() => (guard as CanActivateFn)(futureARS, futureRSS));           return wrapIntoObservable(guardVal).pipe(first());         });       });   return of(canActivateObservables).pipe(prioritizedGuardValue()); }  function runCanActivateChild(     futureRSS: RouterStateSnapshot, path: ActivatedRouteSnapshot[],     injector: EnvironmentInjector): Observable<boolean|UrlTree> {   const futureARS = path[path.length - 1];    const canActivateChildGuards = path.slice(0, path.length - 1)                                      .reverse()                                      .map(p => getCanActivateChild(p))                                      .filter(_ => _ !== null);    const canActivateChildGuardsMapped = canActivateChildGuards.map((d: any) => {     return defer(() => {       const guardsMapped =           d.guards.map((canActivateChild: CanActivateChildFn|ProviderToken<unknown>) => {             const closestInjector = getClosestRouteInjector(d.node) ?? injector;             const guard =                 getTokenOrFunctionIdentity<CanActivateChild>(canActivateChild, closestInjector);             const guardVal = isCanActivateChild(guard) ?                 guard.canActivateChild(futureARS, futureRSS) :                 closestInjector.runInContext(                     () => (guard as CanActivateChildFn)(futureARS, futureRSS));             return wrapIntoObservable(guardVal).pipe(first());           });       return of(guardsMapped).pipe(prioritizedGuardValue());     });   });   return of(canActivateChildGuardsMapped).pipe(prioritizedGuardValue()); }  function runCanDeactivate(     component: Object|null, currARS: ActivatedRouteSnapshot, currRSS: RouterStateSnapshot,     futureRSS: RouterStateSnapshot, injector: EnvironmentInjector): Observable<boolean|UrlTree> {   const canDeactivate = currARS && currARS.routeConfig ? currARS.routeConfig.canDeactivate : null;   if (!canDeactivate || canDeactivate.length === 0) return of(true);   const canDeactivateObservables = canDeactivate.map((c: any) => {     const closestInjector = getClosestRouteInjector(currARS) ?? injector;     const guard = getTokenOrFunctionIdentity<any>(c, closestInjector);     const guardVal = isCanDeactivate(guard) ?         guard.canDeactivate(component, currARS, currRSS, futureRSS) :         closestInjector.runInContext(             () => (guard as CanDeactivateFn<any>)(component, currARS, currRSS, futureRSS));     return wrapIntoObservable(guardVal).pipe(first());   });   return of(canDeactivateObservables).pipe(prioritizedGuardValue()); }  export function runCanLoadGuards(     injector: EnvironmentInjector, route: Route, segments: UrlSegment[],     urlSerializer: UrlSerializer): Observable<boolean> {   const canLoad = route.canLoad;   if (canLoad === undefined || canLoad.length === 0) {     return of(true);   }    const canLoadObservables = canLoad.map((injectionToken: any) => {     const guard = getTokenOrFunctionIdentity<any>(injectionToken, injector);     const guardVal = isCanLoad(guard) ?         guard.canLoad(route, segments) :         injector.runInContext(() => (guard as CanLoadFn)(route, segments));     return wrapIntoObservable(guardVal);   });    return of(canLoadObservables)       .pipe(           prioritizedGuardValue(),           redirectIfUrlTree(urlSerializer),       ); }  function redirectIfUrlTree(urlSerializer: UrlSerializer):     OperatorFunction<UrlTree|boolean, boolean> {   return pipe(       tap((result: UrlTree|boolean) => {         if (!isUrlTree(result)) return;          throw redirectingNavigationError(urlSerializer, result);       }),       map(result => result === true),   ); }  export function runCanMatchGuards(     injector: EnvironmentInjector, route: Route, segments: UrlSegment[],     urlSerializer: UrlSerializer): Observable<boolean> {   const canMatch = route.canMatch;   if (!canMatch || canMatch.length === 0) return of(true);    const canMatchObservables = canMatch.map(injectionToken => {     const guard = getTokenOrFunctionIdentity(injectionToken, injector);     const guardVal = isCanMatch(guard) ?         guard.canMatch(route, segments) :         injector.runInContext(() => (guard as CanMatchFn)(route, segments));     return wrapIntoObservable(guardVal);   });    return of(canMatchObservables)       .pipe(           prioritizedGuardValue(),           redirectIfUrlTree(urlSerializer),       ); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, Injector} from '@angular/core'; import {Observable, of} from 'rxjs'; import {map} from 'rxjs/operators';  import {Route} from '../models'; import {runCanMatchGuards} from '../operators/check_guards'; import {defaultUrlMatcher, PRIMARY_OUTLET} from '../shared'; import {UrlSegment, UrlSegmentGroup, UrlSerializer} from '../url_tree';  import {forEach} from './collection'; import {getOrCreateRouteInjectorIfNeeded, getOutlet} from './config';  export interface MatchResult {   matched: boolean;   consumedSegments: UrlSegment[];   remainingSegments: UrlSegment[];   parameters: {[k: string]: string};   positionalParamSegments: {[k: string]: UrlSegment}; }  const noMatch: MatchResult = {   matched: false,   consumedSegments: [],   remainingSegments: [],   parameters: {},   positionalParamSegments: {} };  export function matchWithChecks(     segmentGroup: UrlSegmentGroup, route: Route, segments: UrlSegment[],     injector: EnvironmentInjector, urlSerializer: UrlSerializer): Observable<MatchResult> {   const result = match(segmentGroup, route, segments);   if (!result.matched) {     return of(result);   }    // Only create the Route's `EnvironmentInjector` if it matches the attempted   // navigation   injector = getOrCreateRouteInjectorIfNeeded(route, injector);   return runCanMatchGuards(injector, route, segments, urlSerializer)       .pipe(           map((v) => v === true ? result : {...noMatch}),       ); }  export function match(     segmentGroup: UrlSegmentGroup, route: Route, segments: UrlSegment[]): MatchResult {   if (route.path === '') {     if (route.pathMatch === 'full' && (segmentGroup.hasChildren() || segments.length > 0)) {       return {...noMatch};     }      return {       matched: true,       consumedSegments: [],       remainingSegments: segments,       parameters: {},       positionalParamSegments: {}     };   }    const matcher = route.matcher || defaultUrlMatcher;   const res = matcher(segments, segmentGroup, route);   if (!res) return {...noMatch};    const posParams: {[n: string]: string} = {};   forEach(res.posParams!, (v: UrlSegment, k: string) => {     posParams[k] = v.path;   });   const parameters = res.consumed.length > 0 ?       {...posParams, ...res.consumed[res.consumed.length - 1].parameters} :       posParams;    return {     matched: true,     consumedSegments: res.consumed,     remainingSegments: segments.slice(res.consumed.length),     // TODO(atscott): investigate combining parameters and positionalParamSegments     parameters,     positionalParamSegments: res.posParams ?? {}   }; }  export function split(     segmentGroup: UrlSegmentGroup, consumedSegments: UrlSegment[], slicedSegments: UrlSegment[],     config: Route[]) {   if (slicedSegments.length > 0 &&       containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, config)) {     const s = new UrlSegmentGroup(         consumedSegments,         createChildrenForEmptyPaths(             segmentGroup, consumedSegments, config,             new UrlSegmentGroup(slicedSegments, segmentGroup.children)));     s._sourceSegment = segmentGroup;     s._segmentIndexShift = consumedSegments.length;     return {segmentGroup: s, slicedSegments: []};   }    if (slicedSegments.length === 0 &&       containsEmptyPathMatches(segmentGroup, slicedSegments, config)) {     const s = new UrlSegmentGroup(         segmentGroup.segments,         addEmptyPathsToChildrenIfNeeded(             segmentGroup, consumedSegments, slicedSegments, config, segmentGroup.children));     s._sourceSegment = segmentGroup;     s._segmentIndexShift = consumedSegments.length;     return {segmentGroup: s, slicedSegments};   }    const s = new UrlSegmentGroup(segmentGroup.segments, segmentGroup.children);   s._sourceSegment = segmentGroup;   s._segmentIndexShift = consumedSegments.length;   return {segmentGroup: s, slicedSegments}; }  function addEmptyPathsToChildrenIfNeeded(     segmentGroup: UrlSegmentGroup, consumedSegments: UrlSegment[], slicedSegments: UrlSegment[],     routes: Route[],     children: {[name: string]: UrlSegmentGroup}): {[name: string]: UrlSegmentGroup} {   const res: {[name: string]: UrlSegmentGroup} = {};   for (const r of routes) {     if (emptyPathMatch(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) {       const s = new UrlSegmentGroup([], {});       s._sourceSegment = segmentGroup;       s._segmentIndexShift = consumedSegments.length;       res[getOutlet(r)] = s;     }   }   return {...children, ...res}; }  function createChildrenForEmptyPaths(     segmentGroup: UrlSegmentGroup, consumedSegments: UrlSegment[], routes: Route[],     primarySegment: UrlSegmentGroup): {[name: string]: UrlSegmentGroup} {   const res: {[name: string]: UrlSegmentGroup} = {};   res[PRIMARY_OUTLET] = primarySegment;   primarySegment._sourceSegment = segmentGroup;   primarySegment._segmentIndexShift = consumedSegments.length;    for (const r of routes) {     if (r.path === '' && getOutlet(r) !== PRIMARY_OUTLET) {       const s = new UrlSegmentGroup([], {});       s._sourceSegment = segmentGroup;       s._segmentIndexShift = consumedSegments.length;       res[getOutlet(r)] = s;     }   }   return res; }  function containsEmptyPathMatchesWithNamedOutlets(     segmentGroup: UrlSegmentGroup, slicedSegments: UrlSegment[], routes: Route[]): boolean {   return routes.some(       r => emptyPathMatch(segmentGroup, slicedSegments, r) && getOutlet(r) !== PRIMARY_OUTLET); }  function containsEmptyPathMatches(     segmentGroup: UrlSegmentGroup, slicedSegments: UrlSegment[], routes: Route[]): boolean {   return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r)); }  function emptyPathMatch(     segmentGroup: UrlSegmentGroup, slicedSegments: UrlSegment[], r: Route): boolean {   if ((segmentGroup.hasChildren() || slicedSegments.length > 0) && r.pathMatch === 'full') {     return false;   }    return r.path === ''; }  /**  * Determines if `route` is a path match for the `rawSegment`, `segments`, and `outlet` without  * verifying that its children are a full match for the remainder of the `rawSegment` children as  * well.  */ export function isImmediateMatch(     route: Route, rawSegment: UrlSegmentGroup, segments: UrlSegment[], outlet: string): boolean {   // We allow matches to empty paths when the outlets differ so we can match a url like `/(b:b)` to   // a config like   // * `{path: '', children: [{path: 'b', outlet: 'b'}]}`   // or even   // * `{path: '', outlet: 'a', children: [{path: 'b', outlet: 'b'}]`   //   // The exception here is when the segment outlet is for the primary outlet. This would   // result in a match inside the named outlet because all children there are written as primary   // outlets. So we need to prevent child named outlet matches in a url like `/b` in a config like   // * `{path: '', outlet: 'x' children: [{path: 'b'}]}`   // This should only match if the url is `/(x:b)`.   if (getOutlet(route) !== outlet &&       (outlet === PRIMARY_OUTLET || !emptyPathMatch(rawSegment, segments, route))) {     return false;   }   if (route.path === '**') {     return true;   }   return match(rawSegment, route, segments).matched; }  export function noLeftoversInUrl(     segmentGroup: UrlSegmentGroup, segments: UrlSegment[], outlet: string): boolean {   return segments.length === 0 && !segmentGroup.children[outlet]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, ɵRuntimeError as RuntimeError} from '@angular/core'; import {from, Observable, of, throwError} from 'rxjs'; import {catchError, concatMap, first, last, map, mergeMap, scan, switchMap, tap} from 'rxjs/operators';  import {RuntimeErrorCode} from './errors'; import {NavigationCancellationCode} from './events'; import {LoadedRouterConfig, Route, Routes} from './models'; import {navigationCancelingError} from './navigation_canceling_error'; import {runCanLoadGuards} from './operators/check_guards'; import {RouterConfigLoader} from './router_config_loader'; import {Params, PRIMARY_OUTLET} from './shared'; import {createRoot, squashSegmentGroup, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree} from './url_tree'; import {forEach} from './utils/collection'; import {getOrCreateRouteInjectorIfNeeded, getOutlet, sortByMatchingOutlets} from './utils/config'; import {isImmediateMatch, match, matchWithChecks, noLeftoversInUrl, split} from './utils/config_matching'; import {isEmptyError} from './utils/type_guards';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;  class NoMatch {   public segmentGroup: UrlSegmentGroup|null;    constructor(segmentGroup?: UrlSegmentGroup) {     this.segmentGroup = segmentGroup || null;   } }  class AbsoluteRedirect {   constructor(public urlTree: UrlTree) {} }  function noMatch(segmentGroup: UrlSegmentGroup): Observable<UrlSegmentGroup> {   return throwError(new NoMatch(segmentGroup)); }  function absoluteRedirect(newTree: UrlTree): Observable<any> {   return throwError(new AbsoluteRedirect(newTree)); }  function namedOutletsRedirect(redirectTo: string): Observable<any> {   return throwError(new RuntimeError(       RuntimeErrorCode.NAMED_OUTLET_REDIRECT,       NG_DEV_MODE &&           `Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`)); }  function canLoadFails(route: Route): Observable<LoadedRouterConfig> {   return throwError(navigationCancelingError(       NG_DEV_MODE &&           `Cannot load children because the guard of the route \"path: '${               route.path}'\" returned false`,       NavigationCancellationCode.GuardRejected)); }  /**  * Returns the `UrlTree` with the redirection applied.  *  * Lazy modules are loaded along the way.  */ export function applyRedirects(     injector: EnvironmentInjector, configLoader: RouterConfigLoader, urlSerializer: UrlSerializer,     urlTree: UrlTree, config: Routes): Observable<UrlTree> {   return new ApplyRedirects(injector, configLoader, urlSerializer, urlTree, config).apply(); }  class ApplyRedirects {   private allowRedirects: boolean = true;    constructor(       private injector: EnvironmentInjector, private configLoader: RouterConfigLoader,       private urlSerializer: UrlSerializer, private urlTree: UrlTree, private config: Routes) {}    apply(): Observable<UrlTree> {     const splitGroup = split(this.urlTree.root, [], [], this.config).segmentGroup;     // TODO(atscott): creating a new segment removes the _sourceSegment _segmentIndexShift, which is     // only necessary to prevent failures in tests which assert exact object matches. The `split` is     // now shared between `applyRedirects` and `recognize` but only the `recognize` step needs these     // properties. Before the implementations were merged, the `applyRedirects` would not assign     // them. We should be able to remove this logic as a \"breaking change\" but should do some more     // investigation into the failures first.     const rootSegmentGroup = new UrlSegmentGroup(splitGroup.segments, splitGroup.children);      const expanded$ =         this.expandSegmentGroup(this.injector, this.config, rootSegmentGroup, PRIMARY_OUTLET);     const urlTrees$ = expanded$.pipe(map((rootSegmentGroup: UrlSegmentGroup) => {       return this.createUrlTree(           squashSegmentGroup(rootSegmentGroup), this.urlTree.queryParams, this.urlTree.fragment);     }));     return urlTrees$.pipe(catchError((e: any) => {       if (e instanceof AbsoluteRedirect) {         // After an absolute redirect we do not apply any more redirects!         // If this implementation changes, update the documentation note in `redirectTo`.         this.allowRedirects = false;         // we need to run matching, so we can fetch all lazy-loaded modules         return this.match(e.urlTree);       }        if (e instanceof NoMatch) {         throw this.noMatchError(e);       }        throw e;     }));   }    private match(tree: UrlTree): Observable<UrlTree> {     const expanded$ =         this.expandSegmentGroup(this.injector, this.config, tree.root, PRIMARY_OUTLET);     const mapped$ = expanded$.pipe(map((rootSegmentGroup: UrlSegmentGroup) => {       return this.createUrlTree(           squashSegmentGroup(rootSegmentGroup), tree.queryParams, tree.fragment);     }));     return mapped$.pipe(catchError((e: any): Observable<UrlTree> => {       if (e instanceof NoMatch) {         throw this.noMatchError(e);       }        throw e;     }));   }    private noMatchError(e: NoMatch): any {     return new RuntimeError(         RuntimeErrorCode.NO_MATCH,         NG_DEV_MODE && `Cannot match any routes. URL Segment: '${e.segmentGroup}'`);   }    private createUrlTree(rootCandidate: UrlSegmentGroup, queryParams: Params, fragment: string|null):       UrlTree {     const root = createRoot(rootCandidate);     return new UrlTree(root, queryParams, fragment);   }    private expandSegmentGroup(       injector: EnvironmentInjector, routes: Route[], segmentGroup: UrlSegmentGroup,       outlet: string): Observable<UrlSegmentGroup> {     if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {       return this.expandChildren(injector, routes, segmentGroup)           .pipe(map((children: any) => new UrlSegmentGroup([], children)));     }      return this.expandSegment(injector, segmentGroup, routes, segmentGroup.segments, outlet, true);   }    // Recursively expand segment groups for all the child outlets   private expandChildren(       injector: EnvironmentInjector, routes: Route[],       segmentGroup: UrlSegmentGroup): Observable<{[name: string]: UrlSegmentGroup}> {     // Expand outlets one at a time, starting with the primary outlet. We need to do it this way     // because an absolute redirect from the primary outlet takes precedence.     const childOutlets: string[] = [];     for (const child of Object.keys(segmentGroup.children)) {       if (child === 'primary') {         childOutlets.unshift(child);       } else {         childOutlets.push(child);       }     }      return from(childOutlets)         .pipe(             concatMap(childOutlet => {               const child = segmentGroup.children[childOutlet];               // Sort the routes so routes with outlets that match the segment appear               // first, followed by routes for other outlets, which might match if they have an               // empty path.               const sortedRoutes = sortByMatchingOutlets(routes, childOutlet);               return this.expandSegmentGroup(injector, sortedRoutes, child, childOutlet)                   .pipe(map(s => ({segment: s, outlet: childOutlet})));             }),             scan(                 (children, expandedChild) => {                   children[expandedChild.outlet] = expandedChild.segment;                   return children;                 },                 {} as {[outlet: string]: UrlSegmentGroup}),             last(),         );   }    private expandSegment(       injector: EnvironmentInjector, segmentGroup: UrlSegmentGroup, routes: Route[],       segments: UrlSegment[], outlet: string,       allowRedirects: boolean): Observable<UrlSegmentGroup> {     return from(routes).pipe(         concatMap(r => {           const expanded$ = this.expandSegmentAgainstRoute(               injector, segmentGroup, routes, r, segments, outlet, allowRedirects);           return expanded$.pipe(catchError((e: any) => {             if (e instanceof NoMatch) {               return of(null);             }             throw e;           }));         }),         first((s): s is UrlSegmentGroup => !!s), catchError((e: any, _: any) => {           if (isEmptyError(e)) {             if (noLeftoversInUrl(segmentGroup, segments, outlet)) {               return of(new UrlSegmentGroup([], {}));             }             return noMatch(segmentGroup);           }           throw e;         }));   }    private expandSegmentAgainstRoute(       injector: EnvironmentInjector, segmentGroup: UrlSegmentGroup, routes: Route[], route: Route,       paths: UrlSegment[], outlet: string, allowRedirects: boolean): Observable<UrlSegmentGroup> {     if (!isImmediateMatch(route, segmentGroup, paths, outlet)) {       return noMatch(segmentGroup);     }      if (route.redirectTo === undefined) {       return this.matchSegmentAgainstRoute(injector, segmentGroup, route, paths, outlet);     }      if (allowRedirects && this.allowRedirects) {       return this.expandSegmentAgainstRouteUsingRedirect(           injector, segmentGroup, routes, route, paths, outlet);     }      return noMatch(segmentGroup);   }    private expandSegmentAgainstRouteUsingRedirect(       injector: EnvironmentInjector, segmentGroup: UrlSegmentGroup, routes: Route[], route: Route,       segments: UrlSegment[], outlet: string): Observable<UrlSegmentGroup> {     if (route.path === '**') {       return this.expandWildCardWithParamsAgainstRouteUsingRedirect(           injector, routes, route, outlet);     }      return this.expandRegularSegmentAgainstRouteUsingRedirect(         injector, segmentGroup, routes, route, segments, outlet);   }    private expandWildCardWithParamsAgainstRouteUsingRedirect(       injector: EnvironmentInjector, routes: Route[], route: Route,       outlet: string): Observable<UrlSegmentGroup> {     const newTree = this.applyRedirectCommands([], route.redirectTo!, {});     if (route.redirectTo!.startsWith('/')) {       return absoluteRedirect(newTree);     }      return this.lineralizeSegments(route, newTree).pipe(mergeMap((newSegments: UrlSegment[]) => {       const group = new UrlSegmentGroup(newSegments, {});       return this.expandSegment(injector, group, routes, newSegments, outlet, false);     }));   }    private expandRegularSegmentAgainstRouteUsingRedirect(       injector: EnvironmentInjector, segmentGroup: UrlSegmentGroup, routes: Route[], route: Route,       segments: UrlSegment[], outlet: string): Observable<UrlSegmentGroup> {     const {matched, consumedSegments, remainingSegments, positionalParamSegments} =         match(segmentGroup, route, segments);     if (!matched) return noMatch(segmentGroup);      const newTree =         this.applyRedirectCommands(consumedSegments, route.redirectTo!, positionalParamSegments);     if (route.redirectTo!.startsWith('/')) {       return absoluteRedirect(newTree);     }      return this.lineralizeSegments(route, newTree).pipe(mergeMap((newSegments: UrlSegment[]) => {       return this.expandSegment(           injector, segmentGroup, routes, newSegments.concat(remainingSegments), outlet, false);     }));   }    private matchSegmentAgainstRoute(       injector: EnvironmentInjector, rawSegmentGroup: UrlSegmentGroup, route: Route,       segments: UrlSegment[], outlet: string): Observable<UrlSegmentGroup> {     if (route.path === '**') {       // Only create the Route's `EnvironmentInjector` if it matches the attempted navigation       injector = getOrCreateRouteInjectorIfNeeded(route, injector);       if (route.loadChildren) {         const loaded$ = route._loadedRoutes ?             of({routes: route._loadedRoutes, injector: route._loadedInjector}) :             this.configLoader.loadChildren(injector, route);         return loaded$.pipe(map((cfg: LoadedRouterConfig) => {           route._loadedRoutes = cfg.routes;           route._loadedInjector = cfg.injector;           return new UrlSegmentGroup(segments, {});         }));       }        return of(new UrlSegmentGroup(segments, {}));     }      return matchWithChecks(rawSegmentGroup, route, segments, injector, this.urlSerializer)         .pipe(             switchMap(({matched, consumedSegments, remainingSegments}) => {               if (!matched) return noMatch(rawSegmentGroup);                // If the route has an injector created from providers, we should start using that.               injector = route._injector ?? injector;               const childConfig$ = this.getChildConfig(injector, route, segments);                return childConfig$.pipe(mergeMap((routerConfig: LoadedRouterConfig) => {                 const childInjector = routerConfig.injector ?? injector;                 const childConfig = routerConfig.routes;                  const {segmentGroup: splitSegmentGroup, slicedSegments} =                     split(rawSegmentGroup, consumedSegments, remainingSegments, childConfig);                 // See comment on the other call to `split` about why this is necessary.                 const segmentGroup =                     new UrlSegmentGroup(splitSegmentGroup.segments, splitSegmentGroup.children);                  if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {                   const expanded$ = this.expandChildren(childInjector, childConfig, segmentGroup);                   return expanded$.pipe(                       map((children: any) => new UrlSegmentGroup(consumedSegments, children)));                 }                  if (childConfig.length === 0 && slicedSegments.length === 0) {                   return of(new UrlSegmentGroup(consumedSegments, {}));                 }                  const matchedOnOutlet = getOutlet(route) === outlet;                 const expanded$ = this.expandSegment(                     childInjector, segmentGroup, childConfig, slicedSegments,                     matchedOnOutlet ? PRIMARY_OUTLET : outlet, true);                 return expanded$.pipe(                     map((cs: UrlSegmentGroup) => new UrlSegmentGroup(                             consumedSegments.concat(cs.segments), cs.children)));               }));             }),         );   }    private getChildConfig(injector: EnvironmentInjector, route: Route, segments: UrlSegment[]):       Observable<LoadedRouterConfig> {     if (route.children) {       // The children belong to the same module       return of({routes: route.children, injector});     }      if (route.loadChildren) {       // lazy children belong to the loaded module       if (route._loadedRoutes !== undefined) {         return of({routes: route._loadedRoutes, injector: route._loadedInjector});       }        return runCanLoadGuards(injector, route, segments, this.urlSerializer)           .pipe(mergeMap((shouldLoadResult: boolean) => {             if (shouldLoadResult) {               return this.configLoader.loadChildren(injector, route)                   .pipe(tap((cfg: LoadedRouterConfig) => {                     route._loadedRoutes = cfg.routes;                     route._loadedInjector = cfg.injector;                   }));             }             return canLoadFails(route);           }));     }      return of({routes: [], injector});   }    private lineralizeSegments(route: Route, urlTree: UrlTree): Observable<UrlSegment[]> {     let res: UrlSegment[] = [];     let c = urlTree.root;     while (true) {       res = res.concat(c.segments);       if (c.numberOfChildren === 0) {         return of(res);       }        if (c.numberOfChildren > 1 || !c.children[PRIMARY_OUTLET]) {         return namedOutletsRedirect(route.redirectTo!);       }        c = c.children[PRIMARY_OUTLET];     }   }    private applyRedirectCommands(       segments: UrlSegment[], redirectTo: string, posParams: {[k: string]: UrlSegment}): UrlTree {     return this.applyRedirectCreateUrlTree(         redirectTo, this.urlSerializer.parse(redirectTo), segments, posParams);   }    private applyRedirectCreateUrlTree(       redirectTo: string, urlTree: UrlTree, segments: UrlSegment[],       posParams: {[k: string]: UrlSegment}): UrlTree {     const newRoot = this.createSegmentGroup(redirectTo, urlTree.root, segments, posParams);     return new UrlTree(         newRoot, this.createQueryParams(urlTree.queryParams, this.urlTree.queryParams),         urlTree.fragment);   }    private createQueryParams(redirectToParams: Params, actualParams: Params): Params {     const res: Params = {};     forEach(redirectToParams, (v: any, k: string) => {       const copySourceValue = typeof v === 'string' && v.startsWith(':');       if (copySourceValue) {         const sourceName = v.substring(1);         res[k] = actualParams[sourceName];       } else {         res[k] = v;       }     });     return res;   }    private createSegmentGroup(       redirectTo: string, group: UrlSegmentGroup, segments: UrlSegment[],       posParams: {[k: string]: UrlSegment}): UrlSegmentGroup {     const updatedSegments = this.createSegments(redirectTo, group.segments, segments, posParams);      let children: {[n: string]: UrlSegmentGroup} = {};     forEach(group.children, (child: UrlSegmentGroup, name: string) => {       children[name] = this.createSegmentGroup(redirectTo, child, segments, posParams);     });      return new UrlSegmentGroup(updatedSegments, children);   }    private createSegments(       redirectTo: string, redirectToSegments: UrlSegment[], actualSegments: UrlSegment[],       posParams: {[k: string]: UrlSegment}): UrlSegment[] {     return redirectToSegments.map(         s => s.path.startsWith(':') ? this.findPosParam(redirectTo, s, posParams) :                                       this.findOrReturn(s, actualSegments));   }    private findPosParam(       redirectTo: string, redirectToUrlSegment: UrlSegment,       posParams: {[k: string]: UrlSegment}): UrlSegment {     const pos = posParams[redirectToUrlSegment.path.substring(1)];     if (!pos)       throw new RuntimeError(           RuntimeErrorCode.MISSING_REDIRECT,           NG_DEV_MODE &&               `Cannot redirect to '${redirectTo}'. Cannot find '${redirectToUrlSegment.path}'.`);     return pos;   }    private findOrReturn(redirectToUrlSegment: UrlSegment, actualSegments: UrlSegment[]): UrlSegment {     let idx = 0;     for (const s of actualSegments) {       if (s.path === redirectToUrlSegment.path) {         actualSegments.splice(idx);         return s;       }       idx++;     }     return redirectToUrlSegment;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector} from '@angular/core'; import {MonoTypeOperatorFunction} from 'rxjs'; import {map, switchMap} from 'rxjs/operators';  import {applyRedirects as applyRedirectsFn} from '../apply_redirects'; import {Routes} from '../models'; import {NavigationTransition} from '../navigation_transition'; import {RouterConfigLoader} from '../router_config_loader'; import {UrlSerializer} from '../url_tree';  export function applyRedirects(     environmentInjector: EnvironmentInjector, configLoader: RouterConfigLoader,     urlSerializer: UrlSerializer, config: Routes): MonoTypeOperatorFunction<NavigationTransition> {   return switchMap(       t =>           applyRedirectsFn(environmentInjector, configLoader, urlSerializer, t.extractedUrl, config)               .pipe(map(urlAfterRedirects => ({...t, urlAfterRedirects})))); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, Type, ɵRuntimeError as RuntimeError} from '@angular/core'; import {EmptyError, from, Observable, Observer, of} from 'rxjs'; import {catchError, concatMap, defaultIfEmpty, first, last as rxjsLast, map, scan, switchMap, takeWhile} from 'rxjs/operators';  import {RuntimeErrorCode} from './errors'; import {Data, ResolveData, Route, Routes} from './models'; import {ActivatedRouteSnapshot, inheritedParamsDataResolve, ParamsInheritanceStrategy, RouterStateSnapshot} from './router_state'; import {PRIMARY_OUTLET} from './shared'; import {UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree} from './url_tree'; import {last} from './utils/collection'; import {getOutlet, sortByMatchingOutlets} from './utils/config'; import {isImmediateMatch, matchWithChecks, noLeftoversInUrl, split} from './utils/config_matching'; import {TreeNode} from './utils/tree'; import {isEmptyError} from './utils/type_guards';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  class NoMatch {}  function newObservableError(e: unknown): Observable<RouterStateSnapshot> {   // TODO(atscott): This pattern is used throughout the router code and can be `throwError` instead.   return new Observable<RouterStateSnapshot>((obs: Observer<RouterStateSnapshot>) => obs.error(e)); }  export function recognize(     injector: EnvironmentInjector, rootComponentType: Type<any>|null, config: Routes,     urlTree: UrlTree, url: string, urlSerializer: UrlSerializer,     paramsInheritanceStrategy: ParamsInheritanceStrategy =         'emptyOnly'): Observable<RouterStateSnapshot> {   return new Recognizer(              injector, rootComponentType, config, urlTree, url, paramsInheritanceStrategy,              urlSerializer)       .recognize()       .pipe(switchMap(result => {         if (result === null) {           return newObservableError(new NoMatch());         } else {           return of(result);         }       })); }  export class Recognizer {   constructor(       private injector: EnvironmentInjector, private rootComponentType: Type<any>|null,       private config: Routes, private urlTree: UrlTree, private url: string,       private paramsInheritanceStrategy: ParamsInheritanceStrategy,       private readonly urlSerializer: UrlSerializer) {}    recognize(): Observable<RouterStateSnapshot|null> {     const rootSegmentGroup =         split(this.urlTree.root, [], [], this.config.filter(c => c.redirectTo === undefined))             .segmentGroup;      return this.processSegmentGroup(this.injector, this.config, rootSegmentGroup, PRIMARY_OUTLET)         .pipe(map(children => {           if (children === null) {             return null;           }            // Use Object.freeze to prevent readers of the Router state from modifying it outside of a           // navigation, resulting in the router being out of sync with the browser.           const root = new ActivatedRouteSnapshot(               [], Object.freeze({}), Object.freeze({...this.urlTree.queryParams}),               this.urlTree.fragment, {}, PRIMARY_OUTLET, this.rootComponentType, null,               this.urlTree.root, -1, {});            const rootNode = new TreeNode<ActivatedRouteSnapshot>(root, children);           const routeState = new RouterStateSnapshot(this.url, rootNode);           this.inheritParamsAndData(routeState._root);           return routeState;         }));   }    inheritParamsAndData(routeNode: TreeNode<ActivatedRouteSnapshot>): void {     const route = routeNode.value;      const i = inheritedParamsDataResolve(route, this.paramsInheritanceStrategy);     route.params = Object.freeze(i.params);     route.data = Object.freeze(i.data);      routeNode.children.forEach(n => this.inheritParamsAndData(n));   }    processSegmentGroup(       injector: EnvironmentInjector, config: Route[], segmentGroup: UrlSegmentGroup,       outlet: string): Observable<TreeNode<ActivatedRouteSnapshot>[]|null> {     if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {       return this.processChildren(injector, config, segmentGroup);     }      return this.processSegment(injector, config, segmentGroup, segmentGroup.segments, outlet);   }    /**    * Matches every child outlet in the `segmentGroup` to a `Route` in the config. Returns `null` if    * we cannot find a match for _any_ of the children.    *    * @param config - The `Routes` to match against    * @param segmentGroup - The `UrlSegmentGroup` whose children need to be matched against the    *     config.    */   processChildren(injector: EnvironmentInjector, config: Route[], segmentGroup: UrlSegmentGroup):       Observable<TreeNode<ActivatedRouteSnapshot>[]|null> {     return from(Object.keys(segmentGroup.children))         .pipe(             concatMap(childOutlet => {               const child = segmentGroup.children[childOutlet];               // Sort the config so that routes with outlets that match the one being activated               // appear first, followed by routes for other outlets, which might match if they have               // an empty path.               const sortedConfig = sortByMatchingOutlets(config, childOutlet);               return this.processSegmentGroup(injector, sortedConfig, child, childOutlet);             }),             scan((children, outletChildren) => {               if (!children || !outletChildren) return null;               children.push(...outletChildren);               return children;             }),             takeWhile(children => children !== null),             defaultIfEmpty(null as TreeNode<ActivatedRouteSnapshot>[] | null),             rxjsLast(),             map(children => {               if (children === null) return null;               // Because we may have matched two outlets to the same empty path segment, we can have               // multiple activated results for the same outlet. We should merge the children of               // these results so the final return value is only one `TreeNode` per outlet.               const mergedChildren = mergeEmptyPathMatches(children);               if (NG_DEV_MODE) {                 // This should really never happen - we are only taking the first match for each                 // outlet and merge the empty path matches.                 checkOutletNameUniqueness(mergedChildren);               }               sortActivatedRouteSnapshots(mergedChildren);               return mergedChildren;             }),         );   }    processSegment(       injector: EnvironmentInjector, routes: Route[], segmentGroup: UrlSegmentGroup,       segments: UrlSegment[], outlet: string): Observable<TreeNode<ActivatedRouteSnapshot>[]|null> {     return from(routes).pipe(         concatMap(r => {           return this.processSegmentAgainstRoute(               r._injector ?? injector, r, segmentGroup, segments, outlet);         }),         first((x): x is TreeNode<ActivatedRouteSnapshot>[] => !!x), catchError(e => {           if (isEmptyError(e)) {             if (noLeftoversInUrl(segmentGroup, segments, outlet)) {               return of([]);             }             return of(null);           }           throw e;         }));   }    processSegmentAgainstRoute(       injector: EnvironmentInjector, route: Route, rawSegment: UrlSegmentGroup,       segments: UrlSegment[], outlet: string): Observable<TreeNode<ActivatedRouteSnapshot>[]|null> {     if (route.redirectTo || !isImmediateMatch(route, rawSegment, segments, outlet)) return of(null);      let matchResult: Observable<{       snapshot: ActivatedRouteSnapshot,       consumedSegments: UrlSegment[],       remainingSegments: UrlSegment[],     }|null>;      if (route.path === '**') {       const params = segments.length > 0 ? last(segments)!.parameters : {};       const pathIndexShift = getPathIndexShift(rawSegment) + segments.length;       const snapshot = new ActivatedRouteSnapshot(           segments, params, Object.freeze({...this.urlTree.queryParams}), this.urlTree.fragment,           getData(route), getOutlet(route), route.component ?? route._loadedComponent ?? null,           route, getSourceSegmentGroup(rawSegment), pathIndexShift, getResolve(route));       matchResult = of({         snapshot,         consumedSegments: [],         remainingSegments: [],       });     } else {       matchResult =           matchWithChecks(rawSegment, route, segments, injector, this.urlSerializer)               .pipe(map(({matched, consumedSegments, remainingSegments, parameters}) => {                 if (!matched) {                   return null;                 }                 const pathIndexShift = getPathIndexShift(rawSegment) + consumedSegments.length;                  const snapshot = new ActivatedRouteSnapshot(                     consumedSegments, parameters, Object.freeze({...this.urlTree.queryParams}),                     this.urlTree.fragment, getData(route), getOutlet(route),                     route.component ?? route._loadedComponent ?? null, route,                     getSourceSegmentGroup(rawSegment), pathIndexShift, getResolve(route));                 return {snapshot, consumedSegments, remainingSegments};               }));     }      return matchResult.pipe(switchMap((result) => {       if (result === null) {         return of(null);       }       const {snapshot, consumedSegments, remainingSegments} = result;       // If the route has an injector created from providers, we should start using that.       injector = route._injector ?? injector;       const childInjector = route._loadedInjector ?? injector;       const childConfig: Route[] = getChildConfig(route);        const {segmentGroup, slicedSegments} = split(           rawSegment, consumedSegments, remainingSegments,           // Filter out routes with redirectTo because we are trying to create activated route           // snapshots and don't handle redirects here. That should have been done in           // `applyRedirects`.           childConfig.filter(c => c.redirectTo === undefined));        if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {         return this.processChildren(childInjector, childConfig, segmentGroup).pipe(map(children => {           if (children === null) {             return null;           }           return [new TreeNode<ActivatedRouteSnapshot>(snapshot, children)];         }));       }        if (childConfig.length === 0 && slicedSegments.length === 0) {         return of([new TreeNode<ActivatedRouteSnapshot>(snapshot, [])]);       }        const matchedOnOutlet = getOutlet(route) === outlet;       // If we matched a config due to empty path match on a different outlet, we need to       // continue passing the current outlet for the segment rather than switch to PRIMARY.       // Note that we switch to primary when we have a match because outlet configs look like       // this: {path: 'a', outlet: 'a', children: [       //  {path: 'b', component: B},       //  {path: 'c', component: C},       // ]}       // Notice that the children of the named outlet are configured with the primary outlet       return this           .processSegment(               childInjector, childConfig, segmentGroup, slicedSegments,               matchedOnOutlet ? PRIMARY_OUTLET : outlet)           .pipe(map(children => {             if (children === null) {               return null;             }             return [new TreeNode<ActivatedRouteSnapshot>(snapshot, children)];           }));     }));   } }  function sortActivatedRouteSnapshots(nodes: TreeNode<ActivatedRouteSnapshot>[]): void {   nodes.sort((a, b) => {     if (a.value.outlet === PRIMARY_OUTLET) return -1;     if (b.value.outlet === PRIMARY_OUTLET) return 1;     return a.value.outlet.localeCompare(b.value.outlet);   }); }  function getChildConfig(route: Route): Route[] {   if (route.children) {     return route.children;   }    if (route.loadChildren) {     return route._loadedRoutes!;   }    return []; }  function hasEmptyPathConfig(node: TreeNode<ActivatedRouteSnapshot>) {   const config = node.value.routeConfig;   return config && config.path === '' && config.redirectTo === undefined; }  /**  * Finds `TreeNode`s with matching empty path route configs and merges them into `TreeNode` with  * the children from each duplicate. This is necessary because different outlets can match a  * single empty path route config and the results need to then be merged.  */ function mergeEmptyPathMatches(nodes: Array<TreeNode<ActivatedRouteSnapshot>>):     Array<TreeNode<ActivatedRouteSnapshot>> {   const result: Array<TreeNode<ActivatedRouteSnapshot>> = [];   // The set of nodes which contain children that were merged from two duplicate empty path nodes.   const mergedNodes: Set<TreeNode<ActivatedRouteSnapshot>> = new Set();    for (const node of nodes) {     if (!hasEmptyPathConfig(node)) {       result.push(node);       continue;     }      const duplicateEmptyPathNode =         result.find(resultNode => node.value.routeConfig === resultNode.value.routeConfig);     if (duplicateEmptyPathNode !== undefined) {       duplicateEmptyPathNode.children.push(...node.children);       mergedNodes.add(duplicateEmptyPathNode);     } else {       result.push(node);     }   }   // For each node which has children from multiple sources, we need to recompute a new `TreeNode`   // by also merging those children. This is necessary when there are multiple empty path configs   // in a row. Put another way: whenever we combine children of two nodes, we need to also check   // if any of those children can be combined into a single node as well.   for (const mergedNode of mergedNodes) {     const mergedChildren = mergeEmptyPathMatches(mergedNode.children);     result.push(new TreeNode(mergedNode.value, mergedChildren));   }   return result.filter(n => !mergedNodes.has(n)); }  function checkOutletNameUniqueness(nodes: TreeNode<ActivatedRouteSnapshot>[]): void {   const names: {[k: string]: ActivatedRouteSnapshot} = {};   nodes.forEach(n => {     const routeWithSameOutletName = names[n.value.outlet];     if (routeWithSameOutletName) {       const p = routeWithSameOutletName.url.map(s => s.toString()).join('/');       const c = n.value.url.map(s => s.toString()).join('/');       throw new RuntimeError(           RuntimeErrorCode.TWO_SEGMENTS_WITH_SAME_OUTLET,           NG_DEV_MODE && `Two segments cannot have the same outlet name: '${p}' and '${c}'.`);     }     names[n.value.outlet] = n.value;   }); }  function getSourceSegmentGroup(segmentGroup: UrlSegmentGroup): UrlSegmentGroup {   let s = segmentGroup;   while (s._sourceSegment) {     s = s._sourceSegment;   }   return s; }  function getPathIndexShift(segmentGroup: UrlSegmentGroup): number {   let s = segmentGroup;   let res = s._segmentIndexShift ?? 0;   while (s._sourceSegment) {     s = s._sourceSegment;     res += s._segmentIndexShift ?? 0;   }   return res - 1; }  function getCorrectedPathIndexShift(segmentGroup: UrlSegmentGroup): number {   let s = segmentGroup;   let res = s._segmentIndexShiftCorrected ?? s._segmentIndexShift ?? 0;   while (s._sourceSegment) {     s = s._sourceSegment;     res += s._segmentIndexShiftCorrected ?? s._segmentIndexShift ?? 0;   }   return res - 1; }  function getData(route: Route): Data {   return route.data || {}; }  function getResolve(route: Route): ResolveData {   return route.resolve || {}; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, Type} from '@angular/core'; import {MonoTypeOperatorFunction} from 'rxjs'; import {map, mergeMap} from 'rxjs/operators';  import {Route} from '../models'; import {NavigationTransition} from '../navigation_transition'; import {recognize as recognizeFn} from '../recognize'; import {UrlSerializer} from '../url_tree';  export function recognize(     injector: EnvironmentInjector, rootComponentType: Type<any>|null, config: Route[],     serializer: UrlSerializer, paramsInheritanceStrategy: 'emptyOnly'|'always'):     MonoTypeOperatorFunction<NavigationTransition> {   return mergeMap(       t => recognizeFn(                injector, rootComponentType, config, t.urlAfterRedirects!,                serializer.serialize(t.urlAfterRedirects!), serializer, paramsInheritanceStrategy)                .pipe(map(targetSnapshot => ({...t, targetSnapshot})))); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, ProviderToken} from '@angular/core'; import {EMPTY, from, MonoTypeOperatorFunction, Observable, of, throwError} from 'rxjs'; import {catchError, concatMap, first, map, mapTo, mergeMap, takeLast, tap} from 'rxjs/operators';  import {ResolveData, Route} from '../models'; import {NavigationTransition} from '../navigation_transition'; import {ActivatedRouteSnapshot, inheritedParamsDataResolve, RouterStateSnapshot} from '../router_state'; import {RouteTitleKey} from '../shared'; import {wrapIntoObservable} from '../utils/collection'; import {getClosestRouteInjector} from '../utils/config'; import {getTokenOrFunctionIdentity} from '../utils/preactivation'; import {isEmptyError} from '../utils/type_guards';  export function resolveData(     paramsInheritanceStrategy: 'emptyOnly'|'always',     injector: EnvironmentInjector): MonoTypeOperatorFunction<NavigationTransition> {   return mergeMap(t => {     const {targetSnapshot, guards: {canActivateChecks}} = t;      if (!canActivateChecks.length) {       return of(t);     }     let canActivateChecksResolved = 0;     return from(canActivateChecks)         .pipe(             concatMap(                 check =>                     runResolve(check.route, targetSnapshot!, paramsInheritanceStrategy, injector)),             tap(() => canActivateChecksResolved++),             takeLast(1),             mergeMap(_ => canActivateChecksResolved === canActivateChecks.length ? of(t) : EMPTY),         );   }); }  function runResolve(     futureARS: ActivatedRouteSnapshot, futureRSS: RouterStateSnapshot,     paramsInheritanceStrategy: 'emptyOnly'|'always', injector: EnvironmentInjector) {   const config = futureARS.routeConfig;   const resolve = futureARS._resolve;   if (config?.title !== undefined && !hasStaticTitle(config)) {     resolve[RouteTitleKey] = config.title;   }   return resolveNode(resolve, futureARS, futureRSS, injector).pipe(map((resolvedData: any) => {     futureARS._resolvedData = resolvedData;     futureARS.data = inheritedParamsDataResolve(futureARS, paramsInheritanceStrategy).resolve;     if (config && hasStaticTitle(config)) {       futureARS.data[RouteTitleKey] = config.title;     }     return null;   })); }  function resolveNode(     resolve: ResolveData, futureARS: ActivatedRouteSnapshot, futureRSS: RouterStateSnapshot,     injector: EnvironmentInjector): Observable<any> {   const keys = getDataKeys(resolve);   if (keys.length === 0) {     return of({});   }   const data: {[k: string|symbol]: any} = {};   return from(keys).pipe(       mergeMap(           key => getResolver(resolve[key], futureARS, futureRSS, injector)                      .pipe(first(), tap((value: any) => {                              data[key] = value;                            }))),       takeLast(1),       mapTo(data),       catchError((e: unknown) => isEmptyError(e as Error) ? EMPTY : throwError(e)),   ); }  function getDataKeys(obj: Object): Array<string|symbol> {   return [...Object.keys(obj), ...Object.getOwnPropertySymbols(obj)]; }  function getResolver(     injectionToken: ProviderToken<any>|Function, futureARS: ActivatedRouteSnapshot,     futureRSS: RouterStateSnapshot, injector: EnvironmentInjector): Observable<any> {   const closestInjector = getClosestRouteInjector(futureARS) ?? injector;   const resolver = getTokenOrFunctionIdentity(injectionToken, closestInjector);   const resolverValue = resolver.resolve ?       resolver.resolve(futureARS, futureRSS) :       closestInjector.runInContext(() => resolver(futureARS, futureRSS));   return wrapIntoObservable(resolverValue); }  function hasStaticTitle(config: Route) {   return typeof config.title === 'string' || config.title === null; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {from, MonoTypeOperatorFunction, ObservableInput, of} from 'rxjs'; import {map, switchMap} from 'rxjs/operators';  /**  * Perform a side effect through a switchMap for every emission on the source Observable,  * but return an Observable that is identical to the source. It's essentially the same as  * the `tap` operator, but if the side effectful `next` function returns an ObservableInput,  * it will wait before continuing with the original value.  */ export function switchTap<T>(next: (x: T) => void|ObservableInput<any>):     MonoTypeOperatorFunction<T> {   return switchMap(v => {     const nextResult = next(v);     if (nextResult) {       return from(nextResult).pipe(map(() => v));     }     return of(v);   }); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injector, NgModuleFactory} from '@angular/core'; import {Observable} from 'rxjs';  // This file exists to support the legacy `loadChildren: string` behavior being patched back into // Angular.  export function deprecatedLoadChildrenString(     injector: Injector, loadChildren: unknown): Observable<NgModuleFactory<any>>|null {   return null; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Compiler, EnvironmentInjector, Injectable, InjectFlags, InjectionToken, Injector, NgModuleFactory, Type} from '@angular/core'; import {ConnectableObservable, from, Observable, of, Subject} from 'rxjs'; import {catchError, finalize, map, mergeMap, refCount, tap} from 'rxjs/operators';  import {deprecatedLoadChildrenString} from './deprecated_load_children'; import {DefaultExport, LoadChildren, LoadChildrenCallback, LoadedRouterConfig, Route, Routes} from './models'; import {flatten, wrapIntoObservable} from './utils/collection'; import {assertStandalone, standardizeConfig, validateConfig} from './utils/config';   const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  /**  * The [DI token](guide/glossary/#di-token) for a router configuration.  *  * `ROUTES` is a low level API for router configuration via dependency injection.  *  * We recommend that in almost all cases to use higher level APIs such as `RouterModule.forRoot()`,  * `provideRouter`, or `Router.resetConfig()`.  *  * @publicApi  */ export const ROUTES = new InjectionToken<Route[][]>('ROUTES');  type ComponentLoader = Observable<Type<unknown>>;  @Injectable({providedIn: 'root'}) export class RouterConfigLoader {   private componentLoaders = new WeakMap<Route, ComponentLoader>();   private childrenLoaders = new WeakMap<Route, Observable<LoadedRouterConfig>>();   onLoadStartListener?: (r: Route) => void;   onLoadEndListener?: (r: Route) => void;    constructor(       private injector: Injector,       private compiler: Compiler,   ) {}    loadComponent(route: Route): Observable<Type<unknown>> {     if (this.componentLoaders.get(route)) {       return this.componentLoaders.get(route)!;     } else if (route._loadedComponent) {       return of(route._loadedComponent);     }      if (this.onLoadStartListener) {       this.onLoadStartListener(route);     }     const loadRunner = wrapIntoObservable(route.loadComponent!())                            .pipe(                                map(maybeUnwrapDefaultExport),                                tap(component => {                                  if (this.onLoadEndListener) {                                    this.onLoadEndListener(route);                                  }                                  NG_DEV_MODE && assertStandalone(route.path ?? '', component);                                  route._loadedComponent = component;                                }),                                finalize(() => {                                  this.componentLoaders.delete(route);                                }),                            );     // Use custom ConnectableObservable as share in runners pipe increasing the bundle size too much     const loader =         new ConnectableObservable(loadRunner, () => new Subject<Type<unknown>>()).pipe(refCount());     this.componentLoaders.set(route, loader);     return loader;   }    loadChildren(parentInjector: Injector, route: Route): Observable<LoadedRouterConfig> {     if (this.childrenLoaders.get(route)) {       return this.childrenLoaders.get(route)!;     } else if (route._loadedRoutes) {       return of({routes: route._loadedRoutes, injector: route._loadedInjector});     }      if (this.onLoadStartListener) {       this.onLoadStartListener(route);     }     const moduleFactoryOrRoutes$ = this.loadModuleFactoryOrRoutes(route.loadChildren!);     const loadRunner = moduleFactoryOrRoutes$.pipe(         map((factoryOrRoutes: NgModuleFactory<any>|Routes) => {           if (this.onLoadEndListener) {             this.onLoadEndListener(route);           }           // This injector comes from the `NgModuleRef` when lazy loading an `NgModule`. There is no           // injector associated with lazy loading a `Route` array.           let injector: EnvironmentInjector|undefined;           let rawRoutes: Route[];           let requireStandaloneComponents = false;           if (Array.isArray(factoryOrRoutes)) {             rawRoutes = factoryOrRoutes;             requireStandaloneComponents = true;           } else {             injector = factoryOrRoutes.create(parentInjector).injector;             // When loading a module that doesn't provide `RouterModule.forChild()` preloader             // will get stuck in an infinite loop. The child module's Injector will look to             // its parent `Injector` when it doesn't find any ROUTES so it will return routes             // for it's parent module instead.             rawRoutes = flatten(injector.get(ROUTES, [], InjectFlags.Self | InjectFlags.Optional));           }           const routes = rawRoutes.map(standardizeConfig);           NG_DEV_MODE && validateConfig(routes, route.path, requireStandaloneComponents);           return {routes, injector};         }),         finalize(() => {           this.childrenLoaders.delete(route);         }),     );     // Use custom ConnectableObservable as share in runners pipe increasing the bundle size too much     const loader = new ConnectableObservable(loadRunner, () => new Subject<LoadedRouterConfig>())                        .pipe(refCount());     this.childrenLoaders.set(route, loader);     return loader;   }    private loadModuleFactoryOrRoutes(loadChildren: LoadChildren):       Observable<NgModuleFactory<any>|Routes> {     const deprecatedResult = deprecatedLoadChildrenString(this.injector, loadChildren);     if (deprecatedResult) {       return deprecatedResult;     }     return wrapIntoObservable((loadChildren as LoadChildrenCallback)())         .pipe(             map(maybeUnwrapDefaultExport),             mergeMap((t) => {               if (t instanceof NgModuleFactory || Array.isArray(t)) {                 return of(t);               } else {                 return from(this.compiler.compileModuleAsync(t));               }             }),         );   } }  function isWrappedDefaultExport<T>(value: T|DefaultExport<T>): value is DefaultExport<T> {   // We use `in` here with a string key `'default'`, because we expect `DefaultExport` objects to be   // dynamically imported ES modules with a spec-mandated `default` key. Thus we don't expect that   // `default` will be a renamed property.   return value && typeof value === 'object' && 'default' in value; }  function maybeUnwrapDefaultExport<T>(input: T|DefaultExport<T>): T {   // As per `isWrappedDefaultExport`, the `default` key here is generated by the browser and not   // subject to property renaming, so we reference it with bracket access.   return isWrappedDefaultExport(input) ? input['default'] : input; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, inject, Injectable, Type} from '@angular/core'; import {BehaviorSubject, combineLatest, EMPTY, Observable, of, Subject} from 'rxjs'; import {catchError, defaultIfEmpty, filter, finalize, map, switchMap, take, tap} from 'rxjs/operators';  import {createRouterState} from './create_router_state'; import {Event, GuardsCheckEnd, GuardsCheckStart, IMPERATIVE_NAVIGATION, NavigationCancel, NavigationCancellationCode, NavigationEnd, NavigationError, NavigationSkipped, NavigationSkippedCode, NavigationStart, NavigationTrigger, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RoutesRecognized} from './events'; import {NavigationBehaviorOptions, QueryParamsHandling, Route, Routes} from './models'; import {isNavigationCancelingError, isRedirectingNavigationCancelingError, redirectingNavigationError} from './navigation_canceling_error'; import {activateRoutes} from './operators/activate_routes'; import {applyRedirects} from './operators/apply_redirects'; import {checkGuards} from './operators/check_guards'; import {recognize} from './operators/recognize'; import {resolveData} from './operators/resolve_data'; import {switchTap} from './operators/switch_tap'; import {TitleStrategy} from './page_title_strategy'; import {RouteReuseStrategy} from './route_reuse_strategy'; import {ErrorHandler} from './router_config'; import {RouterConfigLoader} from './router_config_loader'; import {ChildrenOutletContexts} from './router_outlet_context'; import {ActivatedRoute, ActivatedRouteSnapshot, createEmptyState, RouterState, RouterStateSnapshot} from './router_state'; import {Params} from './shared'; import {UrlHandlingStrategy} from './url_handling_strategy'; import {isUrlTree, UrlSerializer, UrlTree} from './url_tree'; import {Checks, getAllRouteGuards} from './utils/preactivation';   const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  /**  * @description  *  * Options that modify the `Router` URL.  * Supply an object containing any of these properties to a `Router` navigation function to  * control how the target URL should be constructed.  *  * @see [Router.navigate() method](api/router/Router#navigate)  * @see [Router.createUrlTree() method](api/router/Router#createurltree)  * @see [Routing and Navigation guide](guide/router)  *  * @publicApi  */ export interface UrlCreationOptions {   /**    * Specifies a root URI to use for relative navigation.    *    * For example, consider the following route configuration where the parent route    * has two children.    *    * ```    * [{    *   path: 'parent',    *   component: ParentComponent,    *   children: [{    *     path: 'list',    *     component: ListComponent    *   },{    *     path: 'child',    *     component: ChildComponent    *   }]    * }]    * ```    *    * The following `go()` function navigates to the `list` route by    * interpreting the destination URI as relative to the activated `child`  route    *    * ```    *  @Component({...})    *  class ChildComponent {    *    constructor(private router: Router, private route: ActivatedRoute) {}    *    *    go() {    *      router.navigate(['../list'], { relativeTo: this.route });    *    }    *  }    * ```    *    * A value of `null` or `undefined` indicates that the navigation commands should be applied    * relative to the root.    */   relativeTo?: ActivatedRoute|null;    /**    * Sets query parameters to the URL.    *    * ```    * // Navigate to /results?page=1    * router.navigate(['/results'], { queryParams: { page: 1 } });    * ```    */   queryParams?: Params|null;    /**    * Sets the hash fragment for the URL.    *    * ```    * // Navigate to /results#top    * router.navigate(['/results'], { fragment: 'top' });    * ```    */   fragment?: string;    /**    * How to handle query parameters in the router link for the next navigation.    * One of:    * * `preserve` : Preserve current parameters.    * * `merge` : Merge new with current parameters.    *    * The \"preserve\" option discards any new query params:    * ```    * // from /view1?page=1 to/view2?page=1    * router.navigate(['/view2'], { queryParams: { page: 2 },  queryParamsHandling: \"preserve\"    * });    * ```    * The \"merge\" option appends new query params to the params from the current URL:    * ```    * // from /view1?page=1 to/view2?page=1&otherKey=2    * router.navigate(['/view2'], { queryParams: { otherKey: 2 },  queryParamsHandling: \"merge\"    * });    * ```    * In case of a key collision between current parameters and those in the `queryParams` object,    * the new value is used.    *    */   queryParamsHandling?: QueryParamsHandling|null;    /**    * When true, preserves the URL fragment for the next navigation    *    * ```    * // Preserve fragment from /results#top to /view#top    * router.navigate(['/view'], { preserveFragment: true });    * ```    */   preserveFragment?: boolean; }  /**  * @description  *  * Options that modify the `Router` navigation strategy.  * Supply an object containing any of these properties to a `Router` navigation function to  * control how the target URL should be constructed or interpreted.  *  * @see [Router.navigate() method](api/router/Router#navigate)  * @see [Router.navigateByUrl() method](api/router/Router#navigatebyurl)  * @see [Router.createUrlTree() method](api/router/Router#createurltree)  * @see [Routing and Navigation guide](guide/router)  * @see UrlCreationOptions  * @see NavigationBehaviorOptions  *  * @publicApi  */ export interface NavigationExtras extends UrlCreationOptions, NavigationBehaviorOptions {}  export type RestoredState = {   [k: string]: any,   // TODO(#27607): Remove `navigationId` and `ɵrouterPageId` and move to `ng` or `ɵ` namespace.   navigationId: number,   // The `ɵ` prefix is there to reduce the chance of colliding with any existing user properties on   // the history state.   ɵrouterPageId?: number, };  /**  * Information about a navigation operation.  * Retrieve the most recent navigation object with the  * [Router.getCurrentNavigation() method](api/router/Router#getcurrentnavigation) .  *  * * *id* : The unique identifier of the current navigation.  * * *initialUrl* : The target URL passed into the `Router#navigateByUrl()` call before navigation.  * This is the value before the router has parsed or applied redirects to it.  * * *extractedUrl* : The initial target URL after being parsed with `UrlSerializer.extract()`.  * * *finalUrl* : The extracted URL after redirects have been applied.  * This URL may not be available immediately, therefore this property can be `undefined`.  * It is guaranteed to be set after the `RoutesRecognized` event fires.  * * *trigger* : Identifies how this navigation was triggered.  * -- 'imperative'--Triggered by `router.navigateByUrl` or `router.navigate`.  * -- 'popstate'--Triggered by a popstate event.  * -- 'hashchange'--Triggered by a hashchange event.  * * *extras* : A `NavigationExtras` options object that controlled the strategy used for this  * navigation.  * * *previousNavigation* : The previously successful `Navigation` object. Only one previous  * navigation is available, therefore this previous `Navigation` object has a `null` value for its  * own `previousNavigation`.  *  * @publicApi  */ export interface Navigation {   /**    * The unique identifier of the current navigation.    */   id: number;   /**    * The target URL passed into the `Router#navigateByUrl()` call before navigation. This is    * the value before the router has parsed or applied redirects to it.    */   initialUrl: UrlTree;   /**    * The initial target URL after being parsed with `UrlHandlingStrategy.extract()`.    */   extractedUrl: UrlTree;   /**    * The extracted URL after redirects have been applied.    * This URL may not be available immediately, therefore this property can be `undefined`.    * It is guaranteed to be set after the `RoutesRecognized` event fires.    */   finalUrl?: UrlTree;   /**    * Identifies how this navigation was triggered.    *    * * 'imperative'--Triggered by `router.navigateByUrl` or `router.navigate`.    * * 'popstate'--Triggered by a popstate event.    * * 'hashchange'--Triggered by a hashchange event.    */   trigger: 'imperative'|'popstate'|'hashchange';   /**    * Options that controlled the strategy used for this navigation.    * See `NavigationExtras`.    */   extras: NavigationExtras;   /**    * The previously successful `Navigation` object. Only one previous navigation    * is available, therefore this previous `Navigation` object has a `null` value    * for its own `previousNavigation`.    */   previousNavigation: Navigation|null; }  export interface NavigationTransition {   id: number;   targetPageId: number;   currentUrlTree: UrlTree;   extractedUrl: UrlTree;   currentRawUrl: UrlTree;   urlAfterRedirects?: UrlTree;   rawUrl: UrlTree;   extras: NavigationExtras;   resolve: any;   reject: any;   promise: Promise<boolean>;   source: NavigationTrigger;   restoredState: RestoredState|null;   currentSnapshot: RouterStateSnapshot;   targetSnapshot: RouterStateSnapshot|null;   currentRouterState: RouterState;   targetRouterState: RouterState|null;   guards: Checks;   guardsResult: boolean|UrlTree|null; }  /**  * The interface from the Router needed by the transitions. Used to avoid a circular dependency on  * Router. This interface should be whittled down with future refactors. For example, we do not need  * to get `UrlSerializer` from the Router. We can instead inject it in `NavigationTransitions`  * directly.  */ interface InternalRouterInterface {   browserUrlTree: UrlTree;   currentUrlTree: UrlTree;   rawUrlTree: UrlTree;   readonly routerState: RouterState;   errorHandler: ErrorHandler;   titleStrategy?: TitleStrategy;   navigated: boolean;   urlHandlingStrategy: UrlHandlingStrategy;   routeReuseStrategy: RouteReuseStrategy;   onSameUrlNavigation: 'reload'|'ignore';   paramsInheritanceStrategy: 'emptyOnly'|'always';   urlUpdateStrategy: 'deferred'|'eager';   serializeUrl(url: UrlTree): string;   config: Routes;   setBrowserUrl(url: UrlTree, t: NavigationTransition): void;   restoreHistory(t: NavigationTransition, restoringFromCaughtError?: boolean): void;   scheduleNavigation(       rawUrl: UrlTree, source: NavigationTrigger, restoredState: RestoredState|null,       extras: NavigationExtras,       priorPromise?: {resolve: any, reject: any, promise: Promise<boolean>}): Promise<boolean>; }  @Injectable({providedIn: 'root'}) export class NavigationTransitions {   currentNavigation: Navigation|null = null;   lastSuccessfulNavigation: Navigation|null = null;   readonly events = new Subject<Event>();   private readonly configLoader = inject(RouterConfigLoader);   private readonly environmentInjector = inject(EnvironmentInjector);   private readonly urlSerializer = inject(UrlSerializer);   private readonly rootContexts = inject(ChildrenOutletContexts);   navigationId = 0;   get hasRequestedNavigation() {     return this.navigationId !== 0;   }   private transitions?: BehaviorSubject<NavigationTransition>;   /**    * Hook that enables you to pause navigation after the preactivation phase.    * Used by `RouterModule`.    *    * @internal    */   afterPreactivation: () => Observable<void> = () => of(void 0);   /** @internal */   rootComponentType: Type<any>|null = null;    constructor() {     const onLoadStart = (r: Route) => this.events.next(new RouteConfigLoadStart(r));     const onLoadEnd = (r: Route) => this.events.next(new RouteConfigLoadEnd(r));     this.configLoader.onLoadEndListener = onLoadEnd;     this.configLoader.onLoadStartListener = onLoadStart;   }    complete() {     this.transitions?.complete();   }    handleNavigationRequest(       request: Pick<           NavigationTransition,           'targetPageId'|'source'|'restoredState'|'currentUrlTree'|'currentRawUrl'|'rawUrl'|           'extras'|'resolve'|'reject'|'promise'|'currentSnapshot'|'currentRouterState'>) {     const id = ++this.navigationId;     this.transitions?.next({...this.transitions.value, ...request, id});   }    setupNavigations(router: InternalRouterInterface): Observable<NavigationTransition> {     this.transitions = new BehaviorSubject<NavigationTransition>({       id: 0,       targetPageId: 0,       currentUrlTree: router.currentUrlTree,       currentRawUrl: router.currentUrlTree,       extractedUrl: router.urlHandlingStrategy.extract(router.currentUrlTree),       urlAfterRedirects: router.urlHandlingStrategy.extract(router.currentUrlTree),       rawUrl: router.currentUrlTree,       extras: {},       resolve: null,       reject: null,       promise: Promise.resolve(true),       source: IMPERATIVE_NAVIGATION,       restoredState: null,       currentSnapshot: router.routerState.snapshot,       targetSnapshot: null,       currentRouterState: router.routerState,       targetRouterState: null,       guards: {canActivateChecks: [], canDeactivateChecks: []},       guardsResult: null,     });     return this.transitions.pipe(                filter(t => t.id !== 0),                 // Extract URL                map(t =>                        ({...t, extractedUrl: router.urlHandlingStrategy.extract(t.rawUrl)} as                         NavigationTransition)),                 // Using switchMap so we cancel executing navigations when a new one comes in                switchMap(overallTransitionState => {                  let completed = false;                  let errored = false;                  return of(overallTransitionState)                      .pipe(                          // Store the Navigation object                          tap(t => {                            this.currentNavigation = {                              id: t.id,                              initialUrl: t.rawUrl,                              extractedUrl: t.extractedUrl,                              trigger: t.source,                              extras: t.extras,                              previousNavigation: !this.lastSuccessfulNavigation ? null : {                                ...this.lastSuccessfulNavigation,                                previousNavigation: null,                              },                            };                          }),                          switchMap(t => {                            const browserUrlTree = router.browserUrlTree.toString();                            const urlTransition = !router.navigated ||                                t.extractedUrl.toString() !== browserUrlTree ||                                // Navigations which succeed or ones which fail and are cleaned up                                // correctly should result in `browserUrlTree` and `currentUrlTree`                                // matching. If this is not the case, assume something went wrong and                                // try processing the URL again.                                browserUrlTree !== router.currentUrlTree.toString();                              const onSameUrlNavigation =                                t.extras.onSameUrlNavigation ?? router.onSameUrlNavigation;                            if (!urlTransition && onSameUrlNavigation !== 'reload') {                              const reason = NG_DEV_MODE ?                                  `Navigation to ${                                      t.rawUrl} was ignored because it is the same as the current Router URL.` :                                  '';                              this.events.next(new NavigationSkipped(                                  t.id, router.serializeUrl(overallTransitionState.rawUrl), reason,                                  NavigationSkippedCode.IgnoredSameUrlNavigation));                              router.rawUrlTree = t.rawUrl;                              t.resolve(null);                              return EMPTY;                            }                             if (router.urlHandlingStrategy.shouldProcessUrl(t.rawUrl)) {                              // If the source of the navigation is from a browser event, the URL is                              // already updated. We already need to sync the internal state.                              if (isBrowserTriggeredNavigation(t.source)) {                                router.browserUrlTree = t.extractedUrl;                              }                              return of(t).pipe(                                  // Fire NavigationStart event                                  switchMap(t => {                                    const transition = this.transitions?.getValue();                                    this.events.next(new NavigationStart(                                        t.id, this.urlSerializer.serialize(t.extractedUrl), t.source,                                        t.restoredState));                                    if (transition !== this.transitions?.getValue()) {                                      return EMPTY;                                    }                                     // This delay is required to match old behavior that forced                                    // navigation to always be async                                    return Promise.resolve(t);                                  }),                                   // ApplyRedirects                                  applyRedirects(                                      this.environmentInjector, this.configLoader,                                      this.urlSerializer, router.config),                                   // Update the currentNavigation                                  // `urlAfterRedirects` is guaranteed to be set after this point                                  tap(t => {                                    this.currentNavigation = {                                      ...this.currentNavigation!,                                      finalUrl: t.urlAfterRedirects                                    };                                    overallTransitionState.urlAfterRedirects = t.urlAfterRedirects;                                  }),                                   // Recognize                                  recognize(                                      this.environmentInjector, this.rootComponentType,                                      router.config, this.urlSerializer,                                      router.paramsInheritanceStrategy),                                   // Update URL if in `eager` update mode                                  tap(t => {                                    overallTransitionState.targetSnapshot = t.targetSnapshot;                                    if (router.urlUpdateStrategy === 'eager') {                                      if (!t.extras.skipLocationChange) {                                        const rawUrl = router.urlHandlingStrategy.merge(                                            t.urlAfterRedirects!, t.rawUrl);                                        router.setBrowserUrl(rawUrl, t);                                      }                                      router.browserUrlTree = t.urlAfterRedirects!;                                    }                                     // Fire RoutesRecognized                                    const routesRecognized = new RoutesRecognized(                                        t.id, this.urlSerializer.serialize(t.extractedUrl),                                        this.urlSerializer.serialize(t.urlAfterRedirects!),                                        t.targetSnapshot!);                                    this.events.next(routesRecognized);                                  }));                            } else if (                                urlTransition &&                                router.urlHandlingStrategy.shouldProcessUrl(router.rawUrlTree)) {                              /* When the current URL shouldn't be processed, but the previous one                               * was, we handle this \"error condition\" by navigating to the                               * previously successful URL, but leaving the URL intact.*/                              const {id, extractedUrl, source, restoredState, extras} = t;                              const navStart = new NavigationStart(                                  id, this.urlSerializer.serialize(extractedUrl), source,                                  restoredState);                              this.events.next(navStart);                              const targetSnapshot =                                  createEmptyState(extractedUrl, this.rootComponentType).snapshot;                               overallTransitionState = {                                ...t,                                targetSnapshot,                                urlAfterRedirects: extractedUrl,                                extras: {...extras, skipLocationChange: false, replaceUrl: false},                              };                              return of(overallTransitionState);                            } else {                              /* When neither the current or previous URL can be processed, do                               * nothing other than update router's internal reference to the                               * current \"settled\" URL. This way the next navigation will be coming                               * from the current URL in the browser.                               */                              const reason = NG_DEV_MODE ?                                  `Navigation was ignored because the UrlHandlingStrategy` +                                      ` indicated neither the current URL ${                                          router.rawUrlTree} nor target URL ${                                          t.rawUrl} should be processed.` :                                  '';                              this.events.next(new NavigationSkipped(                                  t.id, router.serializeUrl(overallTransitionState.extractedUrl),                                  reason, NavigationSkippedCode.IgnoredByUrlHandlingStrategy));                              router.rawUrlTree = t.rawUrl;                              t.resolve(null);                              return EMPTY;                            }                          }),                           // --- GUARDS ---                          tap(t => {                            const guardsStart = new GuardsCheckStart(                                t.id, this.urlSerializer.serialize(t.extractedUrl),                                this.urlSerializer.serialize(t.urlAfterRedirects!),                                t.targetSnapshot!);                            this.events.next(guardsStart);                          }),                           map(t => {                            overallTransitionState = {                              ...t,                              guards: getAllRouteGuards(                                  t.targetSnapshot!, t.currentSnapshot, this.rootContexts)                            };                            return overallTransitionState;                          }),                           checkGuards(                              this.environmentInjector, (evt: Event) => this.events.next(evt)),                          tap(t => {                            overallTransitionState.guardsResult = t.guardsResult;                            if (isUrlTree(t.guardsResult)) {                              throw redirectingNavigationError(this.urlSerializer, t.guardsResult);                            }                             const guardsEnd = new GuardsCheckEnd(                                t.id, this.urlSerializer.serialize(t.extractedUrl),                                this.urlSerializer.serialize(t.urlAfterRedirects!),                                t.targetSnapshot!, !!t.guardsResult);                            this.events.next(guardsEnd);                          }),                           filter(t => {                            if (!t.guardsResult) {                              router.restoreHistory(t);                              this.cancelNavigationTransition(                                  t, '', NavigationCancellationCode.GuardRejected);                              return false;                            }                            return true;                          }),                           // --- RESOLVE ---                          switchTap(t => {                            if (t.guards.canActivateChecks.length) {                              return of(t).pipe(                                  tap(t => {                                    const resolveStart = new ResolveStart(                                        t.id, this.urlSerializer.serialize(t.extractedUrl),                                        this.urlSerializer.serialize(t.urlAfterRedirects!),                                        t.targetSnapshot!);                                    this.events.next(resolveStart);                                  }),                                  switchMap(t => {                                    let dataResolved = false;                                    return of(t).pipe(                                        resolveData(                                            router.paramsInheritanceStrategy,                                            this.environmentInjector),                                        tap({                                          next: () => dataResolved = true,                                          complete: () => {                                            if (!dataResolved) {                                              router.restoreHistory(t);                                              this.cancelNavigationTransition(                                                  t,                                                  NG_DEV_MODE ?                                                      `At least one route resolver didn't emit any value.` :                                                      '',                                                  NavigationCancellationCode.NoDataFromResolver);                                            }                                          }                                        }),                                    );                                  }),                                  tap(t => {                                    const resolveEnd = new ResolveEnd(                                        t.id, this.urlSerializer.serialize(t.extractedUrl),                                        this.urlSerializer.serialize(t.urlAfterRedirects!),                                        t.targetSnapshot!);                                    this.events.next(resolveEnd);                                  }));                            }                            return undefined;                          }),                           // --- LOAD COMPONENTS ---                          switchTap((t: NavigationTransition) => {                            const loadComponents =                                (route: ActivatedRouteSnapshot): Array<Observable<void>> => {                                  const loaders: Array<Observable<void>> = [];                                  if (route.routeConfig?.loadComponent &&                                      !route.routeConfig._loadedComponent) {                                    loaders.push(this.configLoader.loadComponent(route.routeConfig)                                                     .pipe(                                                         tap(loadedComponent => {                                                           route.component = loadedComponent;                                                         }),                                                         map(() => void 0),                                                         ));                                  }                                  for (const child of route.children) {                                    loaders.push(...loadComponents(child));                                  }                                  return loaders;                                };                            return combineLatest(loadComponents(t.targetSnapshot!.root))                                .pipe(defaultIfEmpty(), take(1));                          }),                           switchTap(() => this.afterPreactivation()),                           map((t: NavigationTransition) => {                            const targetRouterState = createRouterState(                                router.routeReuseStrategy, t.targetSnapshot!, t.currentRouterState);                            overallTransitionState = {...t, targetRouterState};                            return (overallTransitionState);                          }),                           /* Once here, we are about to activate synchronously. The assumption is                             this will succeed, and user code may read from the Router service.                             Therefore before activation, we need to update router properties storing                             the current URL and the RouterState, as well as updated the browser URL.                             All this should happen *before* activating. */                          tap((t: NavigationTransition) => {                            router.currentUrlTree = t.urlAfterRedirects!;                            router.rawUrlTree =                                router.urlHandlingStrategy.merge(t.urlAfterRedirects!, t.rawUrl);                             (router as {routerState: RouterState}).routerState =                                t.targetRouterState!;                             if (router.urlUpdateStrategy === 'deferred') {                              if (!t.extras.skipLocationChange) {                                router.setBrowserUrl(router.rawUrlTree, t);                              }                              router.browserUrlTree = t.urlAfterRedirects!;                            }                          }),                           activateRoutes(                              this.rootContexts, router.routeReuseStrategy,                              (evt: Event) => this.events.next(evt)),                           tap({                            next: (t: NavigationTransition) => {                              completed = true;                              this.lastSuccessfulNavigation = this.currentNavigation;                              router.navigated = true;                              this.events.next(new NavigationEnd(                                  t.id, this.urlSerializer.serialize(t.extractedUrl),                                  this.urlSerializer.serialize(router.currentUrlTree)));                              router.titleStrategy?.updateTitle(t.targetRouterState!.snapshot);                              t.resolve(true);                            },                            complete: () => {                              completed = true;                            }                          }),                          finalize(() => {                            /* When the navigation stream finishes either through error or success,                             * we set the `completed` or `errored` flag. However, there are some                             * situations where we could get here without either of those being set.                             * For instance, a redirect during NavigationStart. Therefore, this is a                             * catch-all to make sure the NavigationCancel event is fired when a                             * navigation gets cancelled but not caught by other means. */                            if (!completed && !errored) {                              const cancelationReason = NG_DEV_MODE ?                                  `Navigation ID ${                                      overallTransitionState                                          .id} is not equal to the current navigation id ${                                      this.navigationId}` :                                  '';                              this.cancelNavigationTransition(                                  overallTransitionState, cancelationReason,                                  NavigationCancellationCode.SupersededByNewNavigation);                            }                            // Only clear current navigation if it is still set to the one that                            // finalized.                            if (this.currentNavigation?.id === overallTransitionState.id) {                              this.currentNavigation = null;                            }                          }),                          catchError((e) => {                            errored = true;                            /* This error type is issued during Redirect, and is handled as a                             * cancellation rather than an error. */                            if (isNavigationCancelingError(e)) {                              if (!isRedirectingNavigationCancelingError(e)) {                                // Set property only if we're not redirecting. If we landed on a page                                // and redirect to `/` route, the new navigation is going to see the                                // `/` isn't a change from the default currentUrlTree and won't                                // navigate. This is only applicable with initial navigation, so                                // setting `navigated` only when not redirecting resolves this                                // scenario.                                router.navigated = true;                                router.restoreHistory(overallTransitionState, true);                              }                              const navCancel = new NavigationCancel(                                  overallTransitionState.id,                                  this.urlSerializer.serialize(overallTransitionState.extractedUrl),                                  e.message, e.cancellationCode);                              this.events.next(navCancel);                               // When redirecting, we need to delay resolving the navigation                              // promise and push it to the redirect navigation                              if (!isRedirectingNavigationCancelingError(e)) {                                overallTransitionState.resolve(false);                              } else {                                const mergedTree =                                    router.urlHandlingStrategy.merge(e.url, router.rawUrlTree);                                const extras = {                                  skipLocationChange:                                      overallTransitionState.extras.skipLocationChange,                                  // The URL is already updated at this point if we have 'eager' URL                                  // updates or if the navigation was triggered by the browser (back                                  // button, URL bar, etc). We want to replace that item in history                                  // if the navigation is rejected.                                  replaceUrl: router.urlUpdateStrategy === 'eager' ||                                      isBrowserTriggeredNavigation(overallTransitionState.source)                                };                                 router.scheduleNavigation(                                    mergedTree, IMPERATIVE_NAVIGATION, null, extras, {                                      resolve: overallTransitionState.resolve,                                      reject: overallTransitionState.reject,                                      promise: overallTransitionState.promise                                    });                              }                               /* All other errors should reset to the router's internal URL reference                               * to the pre-error state. */                            } else {                              router.restoreHistory(overallTransitionState, true);                              const navError = new NavigationError(                                  overallTransitionState.id,                                  this.urlSerializer.serialize(overallTransitionState.extractedUrl),                                  e, overallTransitionState.targetSnapshot ?? undefined);                              this.events.next(navError);                              try {                                overallTransitionState.resolve(router.errorHandler(e));                              } catch (ee) {                                overallTransitionState.reject(ee);                              }                            }                            return EMPTY;                          }));                  // casting because `pipe` returns observable({}) when called with 8+ arguments                })) as Observable<NavigationTransition>;   }    private cancelNavigationTransition(       t: NavigationTransition, reason: string, code: NavigationCancellationCode) {     const navCancel =         new NavigationCancel(t.id, this.urlSerializer.serialize(t.extractedUrl), reason, code);     this.events.next(navCancel);     t.resolve(false);   } }  export function isBrowserTriggeredNavigation(source: NavigationTrigger) {   return source !== IMPERATIVE_NAVIGATION; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {inject, Injectable} from '@angular/core'; import {Title} from '@angular/platform-browser';  import {ActivatedRouteSnapshot, RouterStateSnapshot} from './router_state'; import {PRIMARY_OUTLET, RouteTitleKey} from './shared';  /**  * Provides a strategy for setting the page title after a router navigation.  *  * The built-in implementation traverses the router state snapshot and finds the deepest primary  * outlet with `title` property. Given the `Routes` below, navigating to  * `/base/child(popup:aux)` would result in the document title being set to \"child\".  * ```  * [  *   {path: 'base', title: 'base', children: [  *     {path: 'child', title: 'child'},  *   ],  *   {path: 'aux', outlet: 'popup', title: 'popupTitle'}  * ]  * ```  *  * This class can be used as a base class for custom title strategies. That is, you can create your  * own class that extends the `TitleStrategy`. Note that in the above example, the `title`  * from the named outlet is never used. However, a custom strategy might be implemented to  * incorporate titles in named outlets.  *  * @publicApi  * @see [Page title guide](guide/router#setting-the-page-title)  */ @Injectable({providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy)}) export abstract class TitleStrategy {   /** Performs the application title update. */   abstract updateTitle(snapshot: RouterStateSnapshot): void;    /**    * @returns The `title` of the deepest primary route.    */   buildTitle(snapshot: RouterStateSnapshot): string|undefined {     let pageTitle: string|undefined;     let route: ActivatedRouteSnapshot|undefined = snapshot.root;     while (route !== undefined) {       pageTitle = this.getResolvedTitleForRoute(route) ?? pageTitle;       route = route.children.find(child => child.outlet === PRIMARY_OUTLET);     }     return pageTitle;   }    /**    * Given an `ActivatedRouteSnapshot`, returns the final value of the    * `Route.title` property, which can either be a static string or a resolved value.    */   getResolvedTitleForRoute(snapshot: ActivatedRouteSnapshot) {     return snapshot.data[RouteTitleKey];   } }  /**  * The default `TitleStrategy` used by the router that updates the title using the `Title` service.  */ @Injectable({providedIn: 'root'}) export class DefaultTitleStrategy extends TitleStrategy {   constructor(readonly title: Title) {     super();   }    /**    * Sets the title of the browser to the given value.    *    * @param title The `pageTitle` from the deepest primary route.    */   override updateTitle(snapshot: RouterStateSnapshot): void {     const title = this.buildTitle(snapshot);     if (title !== undefined) {       this.title.setTitle(title);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ComponentRef, inject, Injectable} from '@angular/core';  import {OutletContext} from './router_outlet_context'; import {ActivatedRoute, ActivatedRouteSnapshot} from './router_state'; import {TreeNode} from './utils/tree';  /**  * @description  *  * Represents the detached route tree.  *  * This is an opaque value the router will give to a custom route reuse strategy  * to store and retrieve later on.  *  * @publicApi  */ export type DetachedRouteHandle = {};  /** @internal */ export type DetachedRouteHandleInternal = {   contexts: Map<string, OutletContext>,   componentRef: ComponentRef<any>,   route: TreeNode<ActivatedRoute>, };  /**  * @description  *  * Provides a way to customize when activated routes get reused.  *  * @publicApi  */ @Injectable({providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy)}) export abstract class RouteReuseStrategy {   /** Determines if this route (and its subtree) should be detached to be reused later */   abstract shouldDetach(route: ActivatedRouteSnapshot): boolean;    /**    * Stores the detached route.    *    * Storing a `null` value should erase the previously stored value.    */   abstract store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle|null): void;    /** Determines if this route (and its subtree) should be reattached */   abstract shouldAttach(route: ActivatedRouteSnapshot): boolean;    /** Retrieves the previously stored route */   abstract retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle|null;    /** Determines if a route should be reused */   abstract shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean; }  /**  * @description  *  * This base route reuse strategy only reuses routes when the matched router configs are  * identical. This prevents components from being destroyed and recreated  * when just the route parameters, query parameters or fragment change  * (that is, the existing component is _reused_).  *  * This strategy does not store any routes for later reuse.  *  * Angular uses this strategy by default.  *  *  * It can be used as a base class for custom route reuse strategies, i.e. you can create your own  * class that extends the `BaseRouteReuseStrategy` one.  * @publicApi  */ export abstract class BaseRouteReuseStrategy implements RouteReuseStrategy {   /**    * Whether the given route should detach for later reuse.    * Always returns false for `BaseRouteReuseStrategy`.    * */   shouldDetach(route: ActivatedRouteSnapshot): boolean {     return false;   }    /**    * A no-op; the route is never stored since this strategy never detaches routes for later re-use.    */   store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle): void {}    /** Returns `false`, meaning the route (and its subtree) is never reattached */   shouldAttach(route: ActivatedRouteSnapshot): boolean {     return false;   }    /** Returns `null` because this strategy does not store routes for later re-use. */   retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle|null {     return null;   }    /**    * Determines if a route should be reused.    * This strategy returns `true` when the future route config and current route config are    * identical.    */   shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {     return future.routeConfig === curr.routeConfig;   } }  @Injectable({providedIn: 'root'}) export class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy { } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core';  import {OnSameUrlNavigation} from './models'; import {UrlSerializer, UrlTree} from './url_tree';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  /**  * Error handler that is invoked when a navigation error occurs.  *  * If the handler returns a value, the navigation Promise is resolved with this value.  * If the handler throws an exception, the navigation Promise is rejected with  * the exception.  *  * @publicApi  * @deprecated Subscribe to the `Router` events and watch for `NavigationError` instead.  */ export type ErrorHandler = (error: any) => any;  /**  * Allowed values in an `ExtraOptions` object that configure  * when the router performs the initial navigation operation.  *  * * 'enabledNonBlocking' - (default) The initial navigation starts after the  * root component has been created. The bootstrap is not blocked on the completion of the initial  * navigation.  * * 'enabledBlocking' - The initial navigation starts before the root component is created.  * The bootstrap is blocked until the initial navigation is complete. This value is required  * for [server-side rendering](guide/universal) to work.  * * 'disabled' - The initial navigation is not performed. The location listener is set up before  * the root component gets created. Use if there is a reason to have  * more control over when the router starts its initial navigation due to some complex  * initialization logic.  *  * @see `forRoot()`  *  * @publicApi  */ export type InitialNavigation = 'disabled'|'enabledBlocking'|'enabledNonBlocking';  /**  * Extra configuration options that can be used with the `withRouterConfig` function.  *  * @publicApi  */ export interface RouterConfigOptions {   /**    * Configures how the Router attempts to restore state when a navigation is cancelled.    *    * 'replace' - Always uses `location.replaceState` to set the browser state to the state of the    * router before the navigation started. This means that if the URL of the browser is updated    * _before_ the navigation is canceled, the Router will simply replace the item in history rather    * than trying to restore to the previous location in the session history. This happens most    * frequently with `urlUpdateStrategy: 'eager'` and navigations with the browser back/forward    * buttons.    *    * 'computed' - Will attempt to return to the same index in the session history that corresponds    * to the Angular route when the navigation gets cancelled. For example, if the browser back    * button is clicked and the navigation is cancelled, the Router will trigger a forward navigation    * and vice versa.    *    * Note: the 'computed' option is incompatible with any `UrlHandlingStrategy` which only    * handles a portion of the URL because the history restoration navigates to the previous place in    * the browser history rather than simply resetting a portion of the URL.    *    * The default value is `replace` when not set.    */   canceledNavigationResolution?: 'replace'|'computed';    /**    * Configures the default for handling a navigation request to the current URL.    *    * If unset, the `Router` will use `'ignore'`.    *    * @see `OnSameUrlNavigation`    */   onSameUrlNavigation?: OnSameUrlNavigation;    /**    * Defines how the router merges parameters, data, and resolved data from parent to child    * routes. By default ('emptyOnly'), inherits parent parameters only for    * path-less or component-less routes.    *    * Set to 'always' to enable unconditional inheritance of parent parameters.    *    * Note that when dealing with matrix parameters, \"parent\" refers to the parent `Route`    * config which does not necessarily mean the \"URL segment to the left\". When the `Route` `path`    * contains multiple segments, the matrix parameters must appear on the last segment. For example,    * matrix parameters for `{path: 'a/b', component: MyComp}` should appear as `a/b;foo=bar` and not    * `a;foo=bar/b`.    *    */   paramsInheritanceStrategy?: 'emptyOnly'|'always';    /**    * Defines when the router updates the browser URL. By default ('deferred'),    * update after successful navigation.    * Set to 'eager' if prefer to update the URL at the beginning of navigation.    * Updating the URL early allows you to handle a failure of navigation by    * showing an error message with the URL that failed.    */   urlUpdateStrategy?: 'deferred'|'eager'; }  /**  * Configuration options for the scrolling feature which can be used with `withInMemoryScrolling`  * function.  *  * @publicApi  */ export interface InMemoryScrollingOptions {   /**    * When set to 'enabled', scrolls to the anchor element when the URL has a fragment.    * Anchor scrolling is disabled by default.    *    * Anchor scrolling does not happen on 'popstate'. Instead, we restore the position    * that we stored or scroll to the top.    */   anchorScrolling?: 'disabled'|'enabled';    /**    * Configures if the scroll position needs to be restored when navigating back.    *    * * 'disabled'- (Default) Does nothing. Scroll position is maintained on navigation.    * * 'top'- Sets the scroll position to x = 0, y = 0 on all navigation.    * * 'enabled'- Restores the previous scroll position on backward navigation, else sets the    * position to the anchor if one is provided, or sets the scroll position to [0, 0] (forward    * navigation). This option will be the default in the future.    *    * You can implement custom scroll restoration behavior by adapting the enabled behavior as    * in the following example.    *    * ```typescript    * class AppComponent {    *   movieData: any;    *    *   constructor(private router: Router, private viewportScroller: ViewportScroller,    * changeDetectorRef: ChangeDetectorRef) {    *   router.events.pipe(filter((event: Event): event is Scroll => event instanceof Scroll)    *     ).subscribe(e => {    *       fetch('http://example.com/movies.json').then(response => {    *         this.movieData = response.json();    *         // update the template with the data before restoring scroll    *         changeDetectorRef.detectChanges();    *    *         if (e.position) {    *           viewportScroller.scrollToPosition(e.position);    *         }    *       });    *     });    *   }    * }    * ```    */   scrollPositionRestoration?: 'disabled'|'enabled'|'top'; }  /**  * A set of configuration options for a router module, provided in the  * `forRoot()` method.  *  * @see `forRoot()`  *  *  * @publicApi  */ export interface ExtraOptions extends InMemoryScrollingOptions, RouterConfigOptions {   /**    * When true, log all internal navigation events to the console.    * Use for debugging.    */   enableTracing?: boolean;    /**    * When true, enable the location strategy that uses the URL fragment    * instead of the history API.    */   useHash?: boolean;    /**    * One of `enabled`, `enabledBlocking`, `enabledNonBlocking` or `disabled`.    * When set to `enabled` or `enabledBlocking`, the initial navigation starts before the root    * component is created. The bootstrap is blocked until the initial navigation is complete. This    * value is required for [server-side rendering](guide/universal) to work. When set to    * `enabledNonBlocking`, the initial navigation starts after the root component has been created.    * The bootstrap is not blocked on the completion of the initial navigation. When set to    * `disabled`, the initial navigation is not performed. The location listener is set up before the    * root component gets created. Use if there is a reason to have more control over when the router    * starts its initial navigation due to some complex initialization logic.    */   initialNavigation?: InitialNavigation;    /**    * A custom error handler for failed navigations.    * If the handler returns a value, the navigation Promise is resolved with this value.    * If the handler throws an exception, the navigation Promise is rejected with the exception.    *    * @deprecated Subscribe to the `Router` events and watch for `NavigationError` instead.    */   errorHandler?: (error: any) => any;    /**    * Configures a preloading strategy.    * One of `PreloadAllModules` or `NoPreloading` (the default).    */   preloadingStrategy?: any;    /**    * Configures the scroll offset the router will use when scrolling to an element.    *    * When given a tuple with x and y position value,    * the router uses that offset each time it scrolls.    * When given a function, the router invokes the function every time    * it restores scroll position.    */   scrollOffset?: [number, number]|(() => [number, number]);    /**    * A custom handler for malformed URI errors. The handler is invoked when `encodedURI` contains    * invalid character sequences.    * The default implementation is to redirect to the root URL, dropping    * any path or parameter information. The function takes three parameters:    *    * - `'URIError'` - Error thrown when parsing a bad URL.    * - `'UrlSerializer'` - UrlSerializer that’s configured with the router.    * - `'url'` -  The malformed URL that caused the URIError    *    * @deprecated URI parsing errors should be handled in the `UrlSerializer` instead.    * */   malformedUriErrorHandler?:       (error: URIError, urlSerializer: UrlSerializer, url: string) => UrlTree; }  /**  * A [DI token](guide/glossary/#di-token) for the router service.  *  * @publicApi  */ export const ROUTER_CONFIGURATION =     new InjectionToken<ExtraOptions>(NG_DEV_MODE ? 'router config' : '', {       providedIn: 'root',       factory: () => ({}),     }); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {inject, Injectable} from '@angular/core';  import {UrlTree} from './url_tree';  /**  * @description  *  * Provides a way to migrate AngularJS applications to Angular.  *  * @publicApi  */ @Injectable({providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy)}) export abstract class UrlHandlingStrategy {   /**    * Tells the router if this URL should be processed.    *    * When it returns true, the router will execute the regular navigation.    * When it returns false, the router will set the router state to an empty state.    * As a result, all the active components will be destroyed.    *    */   abstract shouldProcessUrl(url: UrlTree): boolean;    /**    * Extracts the part of the URL that should be handled by the router.    * The rest of the URL will remain untouched.    */   abstract extract(url: UrlTree): UrlTree;    /**    * Merges the URL fragment with the rest of the URL.    */   abstract merge(newUrlPart: UrlTree, rawUrl: UrlTree): UrlTree; }  /**  * @publicApi  */ @Injectable({providedIn: 'root'}) export class DefaultUrlHandlingStrategy implements UrlHandlingStrategy {   shouldProcessUrl(url: UrlTree): boolean {     return true;   }   extract(url: UrlTree): UrlTree {     return url;   }   merge(newUrlPart: UrlTree, wholeUrl: UrlTree): UrlTree {     return newUrlPart;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Location} from '@angular/common'; import {inject, Injectable, NgZone, Type, ɵConsole as Console, ɵRuntimeError as RuntimeError} from '@angular/core'; import {Observable, of, SubscriptionLike} from 'rxjs';  import {CreateUrlTreeStrategy} from './create_url_tree_strategy'; import {RuntimeErrorCode} from './errors'; import {Event, IMPERATIVE_NAVIGATION, NavigationTrigger} from './events'; import {NavigationBehaviorOptions, OnSameUrlNavigation, Routes} from './models'; import {Navigation, NavigationExtras, NavigationTransition, NavigationTransitions, RestoredState, UrlCreationOptions} from './navigation_transition'; import {TitleStrategy} from './page_title_strategy'; import {RouteReuseStrategy} from './route_reuse_strategy'; import {ROUTER_CONFIGURATION} from './router_config'; import {ROUTES} from './router_config_loader'; import {createEmptyState, RouterState} from './router_state'; import {Params} from './shared'; import {UrlHandlingStrategy} from './url_handling_strategy'; import {containsTree, IsActiveMatchOptions, isUrlTree, UrlSerializer, UrlTree} from './url_tree'; import {flatten} from './utils/collection'; import {standardizeConfig, validateConfig} from './utils/config';   const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  function defaultErrorHandler(error: any): any {   throw error; }  function defaultMalformedUriErrorHandler(     error: URIError, urlSerializer: UrlSerializer, url: string): UrlTree {   return urlSerializer.parse('/'); }  /**  * The equivalent `IsActiveMatchOptions` options for `Router.isActive` is called with `true`  * (exact = true).  */ export const exactMatchOptions: IsActiveMatchOptions = {   paths: 'exact',   fragment: 'ignored',   matrixParams: 'ignored',   queryParams: 'exact' };  /**  * The equivalent `IsActiveMatchOptions` options for `Router.isActive` is called with `false`  * (exact = false).  */ export const subsetMatchOptions: IsActiveMatchOptions = {   paths: 'subset',   fragment: 'ignored',   matrixParams: 'ignored',   queryParams: 'subset' };  /**  * @description  *  * A service that provides navigation among views and URL manipulation capabilities.  *  * @see `Route`.  * @see [Routing and Navigation Guide](guide/router).  *  * @ngModule RouterModule  *  * @publicApi  */ @Injectable({providedIn: 'root'}) export class Router {   /**    * Represents the activated `UrlTree` that the `Router` is configured to handle (through    * `UrlHandlingStrategy`). That is, after we find the route config tree that we're going to    * activate, run guards, and are just about to activate the route, we set the currentUrlTree.    *    * This should match the `browserUrlTree` when a navigation succeeds. If the    * `UrlHandlingStrategy.shouldProcessUrl` is `false`, only the `browserUrlTree` is updated.    * @internal    */   currentUrlTree: UrlTree;   /**    * Meant to represent the entire browser url after a successful navigation. In the life of a    * navigation transition:    * 1. The rawUrl represents the full URL that's being navigated to    * 2. We apply redirects, which might only apply to _part_ of the URL (due to    * `UrlHandlingStrategy`).    * 3. Right before activation (because we assume activation will succeed), we update the    * rawUrlTree to be a combination of the urlAfterRedirects (again, this might only apply to part    * of the initial url) and the rawUrl of the transition (which was the original navigation url in    * its full form).    * @internal    *    * Note that this is _only_ here to support `UrlHandlingStrategy.extract` and    * `UrlHandlingStrategy.shouldProcessUrl`. If those didn't exist, we could get by with    * `currentUrlTree` alone. If a new Router were to be provided (i.e. one that works with the    * browser navigation API), we should think about whether this complexity should be carried over.    *    * - extract: `rawUrlTree` is needed because `extract` may only return part    * of the navigation URL. Thus, `currentUrlTree` may only represent _part_ of the browser URL.    * When a navigation gets cancelled and we need to reset the URL or a new navigation occurs, we    * need to know the _whole_ browser URL, not just the part handled by UrlHandlingStrategy.    * - shouldProcessUrl: When this returns `false`, the router just ignores the navigation but still    * updates the `rawUrlTree` with the assumption that the navigation was caused by the location    * change listener due to a URL update by the AngularJS router. In this case, we still need to    * know what the browser's URL is for future navigations.    *    */   rawUrlTree: UrlTree;   /**    * Meant to represent the part of the browser url that the `Router` is set up to handle (via the    * `UrlHandlingStrategy`). This value is updated immediately after the browser url is updated (or    * the browser url update is skipped via `skipLocationChange`). With that, note that    * `browserUrlTree` _may not_ reflect the actual browser URL for two reasons:    *    * 1. `UrlHandlingStrategy` only handles part of the URL    * 2. `skipLocationChange` does not update the browser url.    *    * So to reiterate, `browserUrlTree` only represents the Router's internal understanding of the    * current route, either before guards with `urlUpdateStrategy === 'eager'` or right before    * activation with `'deferred'`.    *    * This should match the `currentUrlTree` when the navigation succeeds.    * @internal    */   browserUrlTree: UrlTree;   private disposed = false;    private locationSubscription?: SubscriptionLike;   // TODO(b/260747083): This should not exist and navigationId should be private in   // `NavigationTransitions`   private get navigationId() {     return this.navigationTransitions.navigationId;   }    /**    * The id of the currently active page in the router.    * Updated to the transition's target id on a successful navigation.    *    * This is used to track what page the router last activated. When an attempted navigation fails,    * the router can then use this to compute how to restore the state back to the previously active    * page.    */   private currentPageId: number = 0;   /**    * The ɵrouterPageId of whatever page is currently active in the browser history. This is    * important for computing the target page id for new navigations because we need to ensure each    * page id in the browser history is 1 more than the previous entry.    */   private get browserPageId(): number|undefined {     return (this.location.getState() as RestoredState | null)?.ɵrouterPageId;   }   private console = inject(Console);   private isNgZoneEnabled: boolean = false;    /**    * An event stream for routing events.    */   public get events(): Observable<Event> {     // TODO(atscott): This _should_ be events.asObservable(). However, this change requires internal     // cleanup: tests are doing `(route.events as Subject<Event>).next(...)`. This isn't     // allowed/supported but we still have to fix these or file bugs against the teams before making     // the change.     return this.navigationTransitions.events;   }   /**    * The current state of routing in this NgModule.    */   public readonly routerState: RouterState;    private options = inject(ROUTER_CONFIGURATION, {optional: true}) || {};    /**    * A handler for navigation errors in this NgModule.    *    * @deprecated Subscribe to the `Router` events and watch for `NavigationError` instead.    *   `provideRouter` has the `withNavigationErrorHandler` feature to make this easier.    * @see `withNavigationErrorHandler`    */   errorHandler = this.options.errorHandler || defaultErrorHandler;    /**    * A handler for errors thrown by `Router.parseUrl(url)`    * when `url` contains an invalid character.    * The most common case is a `%` sign    * that's not encoded and is not part of a percent encoded sequence.    *    * @deprecated URI parsing errors should be handled in the `UrlSerializer`.    *    * @see `RouterModule`    */   malformedUriErrorHandler =       this.options.malformedUriErrorHandler || defaultMalformedUriErrorHandler;    /**    * True if at least one navigation event has occurred,    * false otherwise.    */   navigated: boolean = false;   private lastSuccessfulId: number = -1;    /**    * A strategy for extracting and merging URLs.    * Used for AngularJS to Angular migrations.    *    * @deprecated Configure using `providers` instead:    *   `{provide: UrlHandlingStrategy, useClass: MyStrategy}`.    */   urlHandlingStrategy = inject(UrlHandlingStrategy);    /**    * A strategy for re-using routes.    *    * @deprecated Configure using `providers` instead:    *   `{provide: RouteReuseStrategy, useClass: MyStrategy}`.    */   routeReuseStrategy = inject(RouteReuseStrategy);    /** Strategy used to create a UrlTree. */   private readonly urlCreationStrategy = inject(CreateUrlTreeStrategy);    /**    * A strategy for setting the title based on the `routerState`.    *    * @deprecated Configure using `providers` instead:    *   `{provide: TitleStrategy, useClass: MyStrategy}`.    */   titleStrategy?: TitleStrategy = inject(TitleStrategy);    /**    * How to handle a navigation request to the current URL.    *    *    * @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.    * @see `withRouterConfig`    * @see `provideRouter`    * @see `RouterModule`    */   onSameUrlNavigation: OnSameUrlNavigation = this.options.onSameUrlNavigation || 'ignore';    /**    * How to merge parameters, data, resolved data, and title from parent to child    * routes. One of:    *    * - `'emptyOnly'` : Inherit parent parameters, data, and resolved data    * for path-less or component-less routes.    * - `'always'` : Inherit parent parameters, data, and resolved data    * for all child routes.    *    * @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.    * @see `withRouterConfig`    * @see `provideRouter`    * @see `RouterModule`    */   paramsInheritanceStrategy: 'emptyOnly'|'always' =       this.options.paramsInheritanceStrategy || 'emptyOnly';    /**    * Determines when the router updates the browser URL.    * By default (`\"deferred\"`), updates the browser URL after navigation has finished.    * Set to `'eager'` to update the browser URL at the beginning of navigation.    * You can choose to update early so that, if navigation fails,    * you can show an error message with the URL that failed.    *    * @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.    * @see `withRouterConfig`    * @see `provideRouter`    * @see `RouterModule`    */   urlUpdateStrategy: 'deferred'|'eager' = this.options.urlUpdateStrategy || 'deferred';    /**    * Configures how the Router attempts to restore state when a navigation is cancelled.    *    * 'replace' - Always uses `location.replaceState` to set the browser state to the state of the    * router before the navigation started. This means that if the URL of the browser is updated    * _before_ the navigation is canceled, the Router will simply replace the item in history rather    * than trying to restore to the previous location in the session history. This happens most    * frequently with `urlUpdateStrategy: 'eager'` and navigations with the browser back/forward    * buttons.    *    * 'computed' - Will attempt to return to the same index in the session history that corresponds    * to the Angular route when the navigation gets cancelled. For example, if the browser back    * button is clicked and the navigation is cancelled, the Router will trigger a forward navigation    * and vice versa.    *    * Note: the 'computed' option is incompatible with any `UrlHandlingStrategy` which only    * handles a portion of the URL because the history restoration navigates to the previous place in    * the browser history rather than simply resetting a portion of the URL.    *    * The default value is `replace`.    *    * @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.    * @see `withRouterConfig`    * @see `provideRouter`    * @see `RouterModule`    */   canceledNavigationResolution: 'replace'|'computed' =       this.options.canceledNavigationResolution || 'replace';    config: Routes = flatten(inject(ROUTES, {optional: true}) ?? []);    private readonly navigationTransitions = inject(NavigationTransitions);   private readonly urlSerializer = inject(UrlSerializer);   private readonly location = inject(Location);    constructor() {     this.isNgZoneEnabled = inject(NgZone) instanceof NgZone && NgZone.isInAngularZone();      this.resetConfig(this.config);     this.currentUrlTree = new UrlTree();     this.rawUrlTree = this.currentUrlTree;     this.browserUrlTree = this.currentUrlTree;      this.routerState = createEmptyState(this.currentUrlTree, null);      this.navigationTransitions.setupNavigations(this).subscribe(         t => {           this.lastSuccessfulId = t.id;           this.currentPageId = t.targetPageId;         },         e => {           this.console.warn(`Unhandled Navigation Error: ${e}`);         });   }    /** @internal */   resetRootComponentType(rootComponentType: Type<any>): void {     // TODO: vsavkin router 4.0 should make the root component set to null     // this will simplify the lifecycle of the router.     this.routerState.root.component = rootComponentType;     this.navigationTransitions.rootComponentType = rootComponentType;   }    /**    * Sets up the location change listener and performs the initial navigation.    */   initialNavigation(): void {     this.setUpLocationChangeListener();     if (!this.navigationTransitions.hasRequestedNavigation) {       const state = this.location.getState() as RestoredState;       this.navigateToSyncWithBrowser(this.location.path(true), IMPERATIVE_NAVIGATION, state);     }   }    /**    * Sets up the location change listener. This listener detects navigations triggered from outside    * the Router (the browser back/forward buttons, for example) and schedules a corresponding Router    * navigation so that the correct events, guards, etc. are triggered.    */   setUpLocationChangeListener(): void {     // Don't need to use Zone.wrap any more, because zone.js     // already patch onPopState, so location change callback will     // run into ngZone     if (!this.locationSubscription) {       this.locationSubscription = this.location.subscribe(event => {         const source = event['type'] === 'popstate' ? 'popstate' : 'hashchange';         if (source === 'popstate') {           // The `setTimeout` was added in #12160 and is likely to support Angular/AngularJS           // hybrid apps.           setTimeout(() => {             this.navigateToSyncWithBrowser(event['url']!, source, event.state);           }, 0);         }       });     }   }    /**    * Schedules a router navigation to synchronize Router state with the browser state.    *    * This is done as a response to a popstate event and the initial navigation. These    * two scenarios represent times when the browser URL/state has been updated and    * the Router needs to respond to ensure its internal state matches.    */   private navigateToSyncWithBrowser(       url: string, source: NavigationTrigger, state: RestoredState|undefined) {     const extras: NavigationExtras = {replaceUrl: true};      // TODO: restoredState should always include the entire state, regardless     // of navigationId. This requires a breaking change to update the type on     // NavigationStart’s restoredState, which currently requires navigationId     // to always be present. The Router used to only restore history state if     // a navigationId was present.      // The stored navigationId is used by the RouterScroller to retrieve the scroll     // position for the page.     const restoredState = state?.navigationId ? state : null;      // Separate to NavigationStart.restoredState, we must also restore the state to     // history.state and generate a new navigationId, since it will be overwritten     if (state) {       const stateCopy = {...state} as Partial<RestoredState>;       delete stateCopy.navigationId;       delete stateCopy.ɵrouterPageId;       if (Object.keys(stateCopy).length !== 0) {         extras.state = stateCopy;       }     }      const urlTree = this.parseUrl(url);     this.scheduleNavigation(urlTree, source, restoredState, extras);   }    /** The current URL. */   get url(): string {     return this.serializeUrl(this.currentUrlTree);   }    /**    * Returns the current `Navigation` object when the router is navigating,    * and `null` when idle.    */   getCurrentNavigation(): Navigation|null {     return this.navigationTransitions.currentNavigation;   }    /**    * Resets the route configuration used for navigation and generating links.    *    * @param config The route array for the new configuration.    *    * @usageNotes    *    * ```    * router.resetConfig([    *  { path: 'team/:id', component: TeamCmp, children: [    *    { path: 'simple', component: SimpleCmp },    *    { path: 'user/:name', component: UserCmp }    *  ]}    * ]);    * ```    */   resetConfig(config: Routes): void {     NG_DEV_MODE && validateConfig(config);     this.config = config.map(standardizeConfig);     this.navigated = false;     this.lastSuccessfulId = -1;   }    /** @nodoc */   ngOnDestroy(): void {     this.dispose();   }    /** Disposes of the router. */   dispose(): void {     this.navigationTransitions.complete();     if (this.locationSubscription) {       this.locationSubscription.unsubscribe();       this.locationSubscription = undefined;     }     this.disposed = true;   }    /**    * Appends URL segments to the current URL tree to create a new URL tree.    *    * @param commands An array of URL fragments with which to construct the new URL tree.    * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path    * segments, followed by the parameters for each segment.    * The fragments are applied to the current URL tree or the one provided  in the `relativeTo`    * property of the options object, if supplied.    * @param navigationExtras Options that control the navigation strategy.    * @returns The new URL tree.    *    * @usageNotes    *    * ```    * // create /team/33/user/11    * router.createUrlTree(['/team', 33, 'user', 11]);    *    * // create /team/33;expand=true/user/11    * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);    *    * // you can collapse static segments like this (this works only with the first passed-in value):    * router.createUrlTree(['/team/33/user', userId]);    *    * // If the first segment can contain slashes, and you do not want the router to split it,    * // you can do the following:    * router.createUrlTree([{segmentPath: '/one/two'}]);    *    * // create /team/33/(user/11//right:chat)    * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: 'chat'}}]);    *    * // remove the right secondary node    * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: null}}]);    *    * // assuming the current url is `/team/33/user/11` and the route points to `user/11`    *    * // navigate to /team/33/user/11/details    * router.createUrlTree(['details'], {relativeTo: route});    *    * // navigate to /team/33/user/22    * router.createUrlTree(['../22'], {relativeTo: route});    *    * // navigate to /team/44/user/22    * router.createUrlTree(['../../team/44/user/22'], {relativeTo: route});    *    * Note that a value of `null` or `undefined` for `relativeTo` indicates that the    * tree should be created relative to the root.    * ```    */   createUrlTree(commands: any[], navigationExtras: UrlCreationOptions = {}): UrlTree {     const {relativeTo, queryParams, fragment, queryParamsHandling, preserveFragment} =         navigationExtras;     const f = preserveFragment ? this.currentUrlTree.fragment : fragment;     let q: Params|null = null;     switch (queryParamsHandling) {       case 'merge':         q = {...this.currentUrlTree.queryParams, ...queryParams};         break;       case 'preserve':         q = this.currentUrlTree.queryParams;         break;       default:         q = queryParams || null;     }     if (q !== null) {       q = this.removeEmptyProps(q);     }     return this.urlCreationStrategy.createUrlTree(         relativeTo, this.routerState, this.currentUrlTree, commands, q, f ?? null);   }    /**    * Navigates to a view using an absolute route path.    *    * @param url An absolute path for a defined route. The function does not apply any delta to the    *     current URL.    * @param extras An object containing properties that modify the navigation strategy.    *    * @returns A Promise that resolves to 'true' when navigation succeeds,    * to 'false' when navigation fails, or is rejected on error.    *    * @usageNotes    *    * The following calls request navigation to an absolute path.    *    * ```    * router.navigateByUrl(\"/team/33/user/11\");    *    * // Navigate without updating the URL    * router.navigateByUrl(\"/team/33/user/11\", { skipLocationChange: true });    * ```    *    * @see [Routing and Navigation guide](guide/router)    *    */   navigateByUrl(url: string|UrlTree, extras: NavigationBehaviorOptions = {     skipLocationChange: false   }): Promise<boolean> {     if (NG_DEV_MODE) {       if (this.isNgZoneEnabled && !NgZone.isInAngularZone()) {         this.console.warn(             `Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?`);       }       if (url instanceof UrlTree && url._warnIfUsedForNavigation) {         this.console.warn(url._warnIfUsedForNavigation);       }     }      const urlTree = isUrlTree(url) ? url : this.parseUrl(url);     const mergedTree = this.urlHandlingStrategy.merge(urlTree, this.rawUrlTree);      return this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras);   }    /**    * Navigate based on the provided array of commands and a starting point.    * If no starting route is provided, the navigation is absolute.    *    * @param commands An array of URL fragments with which to construct the target URL.    * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path    * segments, followed by the parameters for each segment.    * The fragments are applied to the current URL or the one provided  in the `relativeTo` property    * of the options object, if supplied.    * @param extras An options object that determines how the URL should be constructed or    *     interpreted.    *    * @returns A Promise that resolves to `true` when navigation succeeds, to `false` when navigation    *     fails,    * or is rejected on error.    *    * @usageNotes    *    * The following calls request navigation to a dynamic route path relative to the current URL.    *    * ```    * router.navigate(['team', 33, 'user', 11], {relativeTo: route});    *    * // Navigate without updating the URL, overriding the default behavior    * router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true});    * ```    *    * @see [Routing and Navigation guide](guide/router)    *    */   navigate(commands: any[], extras: NavigationExtras = {skipLocationChange: false}):       Promise<boolean> {     validateCommands(commands);     return this.navigateByUrl(this.createUrlTree(commands, extras), extras);   }    /** Serializes a `UrlTree` into a string */   serializeUrl(url: UrlTree): string {     return this.urlSerializer.serialize(url);   }    /** Parses a string into a `UrlTree` */   parseUrl(url: string): UrlTree {     let urlTree: UrlTree;     try {       urlTree = this.urlSerializer.parse(url);     } catch (e) {       urlTree = this.malformedUriErrorHandler(e as URIError, this.urlSerializer, url);     }     return urlTree;   }    /**    * Returns whether the url is activated.    *    * @deprecated    * Use `IsActiveMatchOptions` instead.    *    * - The equivalent `IsActiveMatchOptions` for `true` is    * `{paths: 'exact', queryParams: 'exact', fragment: 'ignored', matrixParams: 'ignored'}`.    * - The equivalent for `false` is    * `{paths: 'subset', queryParams: 'subset', fragment: 'ignored', matrixParams: 'ignored'}`.    */   isActive(url: string|UrlTree, exact: boolean): boolean;   /**    * Returns whether the url is activated.    */   isActive(url: string|UrlTree, matchOptions: IsActiveMatchOptions): boolean;   /** @internal */   isActive(url: string|UrlTree, matchOptions: boolean|IsActiveMatchOptions): boolean;   isActive(url: string|UrlTree, matchOptions: boolean|IsActiveMatchOptions): boolean {     let options: IsActiveMatchOptions;     if (matchOptions === true) {       options = {...exactMatchOptions};     } else if (matchOptions === false) {       options = {...subsetMatchOptions};     } else {       options = matchOptions;     }     if (isUrlTree(url)) {       return containsTree(this.currentUrlTree, url, options);     }      const urlTree = this.parseUrl(url);     return containsTree(this.currentUrlTree, urlTree, options);   }    private removeEmptyProps(params: Params): Params {     return Object.keys(params).reduce((result: Params, key: string) => {       const value: any = params[key];       if (value !== null && value !== undefined) {         result[key] = value;       }       return result;     }, {});   }    /** @internal */   scheduleNavigation(       rawUrl: UrlTree, source: NavigationTrigger, restoredState: RestoredState|null,       extras: NavigationExtras,       priorPromise?: {resolve: any, reject: any, promise: Promise<boolean>}): Promise<boolean> {     if (this.disposed) {       return Promise.resolve(false);     }      let resolve: any;     let reject: any;     let promise: Promise<boolean>;     if (priorPromise) {       resolve = priorPromise.resolve;       reject = priorPromise.reject;       promise = priorPromise.promise;     } else {       promise = new Promise<boolean>((res, rej) => {         resolve = res;         reject = rej;       });     }      let targetPageId: number;     if (this.canceledNavigationResolution === 'computed') {       // If the `ɵrouterPageId` exist in the state then `targetpageId` should have the value of       // `ɵrouterPageId`. This is the case for something like a page refresh where we assign the       // target id to the previously set value for that page.       if (restoredState && restoredState.ɵrouterPageId) {         targetPageId = restoredState.ɵrouterPageId;       } else {         // If we're replacing the URL or doing a silent navigation, we do not want to increment the         // page id because we aren't pushing a new entry to history.         if (extras.replaceUrl || extras.skipLocationChange) {           targetPageId = this.browserPageId ?? 0;         } else {           targetPageId = (this.browserPageId ?? 0) + 1;         }       }     } else {       // This is unused when `canceledNavigationResolution` is not computed.       targetPageId = 0;     }      this.navigationTransitions.handleNavigationRequest({       targetPageId,       source,       restoredState,       currentUrlTree: this.currentUrlTree,       currentRawUrl: this.currentUrlTree,       rawUrl,       extras,       resolve,       reject,       promise,       currentSnapshot: this.routerState.snapshot,       currentRouterState: this.routerState     });      // Make sure that the error is propagated even though `processNavigations` catch     // handler does not rethrow     return promise.catch((e: any) => {       return Promise.reject(e);     });   }    /** @internal */   setBrowserUrl(url: UrlTree, transition: NavigationTransition) {     const path = this.urlSerializer.serialize(url);     const state = {       ...transition.extras.state,       ...this.generateNgRouterState(transition.id, transition.targetPageId)     };     if (this.location.isCurrentPathEqualTo(path) || !!transition.extras.replaceUrl) {       this.location.replaceState(path, '', state);     } else {       this.location.go(path, '', state);     }   }    /**    * Performs the necessary rollback action to restore the browser URL to the    * state before the transition.    * @internal    */   restoreHistory(transition: NavigationTransition, restoringFromCaughtError = false) {     if (this.canceledNavigationResolution === 'computed') {       const targetPagePosition = this.currentPageId - transition.targetPageId;       // The navigator change the location before triggered the browser event,       // so we need to go back to the current url if the navigation is canceled.       // Also, when navigation gets cancelled while using url update strategy eager, then we need to       // go back. Because, when `urlUpdateStrategy` is `eager`; `setBrowserUrl` method is called       // before any verification.       const browserUrlUpdateOccurred =           (transition.source === 'popstate' || this.urlUpdateStrategy === 'eager' ||            this.currentUrlTree === this.getCurrentNavigation()?.finalUrl);       if (browserUrlUpdateOccurred && targetPagePosition !== 0) {         this.location.historyGo(targetPagePosition);       } else if (           this.currentUrlTree === this.getCurrentNavigation()?.finalUrl &&           targetPagePosition === 0) {         // We got to the activation stage (where currentUrlTree is set to the navigation's         // finalUrl), but we weren't moving anywhere in history (skipLocationChange or replaceUrl).         // We still need to reset the router state back to what it was when the navigation started.         this.resetState(transition);         // TODO(atscott): resetting the `browserUrlTree` should really be done in `resetState`.         // Investigate if this can be done by running TGP.         this.browserUrlTree = transition.currentUrlTree;         this.resetUrlToCurrentUrlTree();       } else {         // The browser URL and router state was not updated before the navigation cancelled so         // there's no restoration needed.       }     } else if (this.canceledNavigationResolution === 'replace') {       // TODO(atscott): It seems like we should _always_ reset the state here. It would be a no-op       // for `deferred` navigations that haven't change the internal state yet because guards       // reject. For 'eager' navigations, it seems like we also really should reset the state       // because the navigation was cancelled. Investigate if this can be done by running TGP.       if (restoringFromCaughtError) {         this.resetState(transition);       }       this.resetUrlToCurrentUrlTree();     }   }    private resetState(t: NavigationTransition): void {     (this as {routerState: RouterState}).routerState = t.currentRouterState;     this.currentUrlTree = t.currentUrlTree;     // Note here that we use the urlHandlingStrategy to get the reset `rawUrlTree` because it may be     // configured to handle only part of the navigation URL. This means we would only want to reset     // the part of the navigation handled by the Angular router rather than the whole URL. In     // addition, the URLHandlingStrategy may be configured to specifically preserve parts of the URL     // when merging, such as the query params so they are not lost on a refresh.     this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, t.rawUrl);   }    private resetUrlToCurrentUrlTree(): void {     this.location.replaceState(         this.urlSerializer.serialize(this.rawUrlTree), '',         this.generateNgRouterState(this.lastSuccessfulId, this.currentPageId));   }    private generateNgRouterState(navigationId: number, routerPageId?: number) {     if (this.canceledNavigationResolution === 'computed') {       return {navigationId, ɵrouterPageId: routerPageId};     }     return {navigationId};   } }  function validateCommands(commands: string[]): void {   for (let i = 0; i < commands.length; i++) {     const cmd = commands[i];     if (cmd == null) {       throw new RuntimeError(           RuntimeErrorCode.NULLISH_COMMAND,           NG_DEV_MODE && `The requested path contains ${cmd} segment at index ${i}`);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {LocationStrategy} from '@angular/common'; import {Attribute, Directive, ElementRef, HostBinding, HostListener, Input, OnChanges, OnDestroy, Renderer2, SimpleChanges, ɵcoerceToBoolean as coerceToBoolean, ɵɵsanitizeUrlOrResourceUrl} from '@angular/core'; import {Subject, Subscription} from 'rxjs';  import {Event, NavigationEnd} from '../events'; import {QueryParamsHandling} from '../models'; import {Router} from '../router'; import {ActivatedRoute} from '../router_state'; import {Params} from '../shared'; import {UrlTree} from '../url_tree';   /**  * @description  *  * When applied to an element in a template, makes that element a link  * that initiates navigation to a route. Navigation opens one or more routed components  * in one or more `<router-outlet>` locations on the page.  *  * Given a route configuration `[{ path: 'user/:name', component: UserCmp }]`,  * the following creates a static link to the route:  * `<a routerLink=\"/user/bob\">link to user component</a>`  *  * You can use dynamic values to generate the link.  * For a dynamic link, pass an array of path segments,  * followed by the params for each segment.  * For example, `['/team', teamId, 'user', userName, {details: true}]`  * generates a link to `/team/11/user/bob;details=true`.  *  * Multiple static segments can be merged into one term and combined with dynamic segments.  * For example, `['/team/11/user', userName, {details: true}]`  *  * The input that you provide to the link is treated as a delta to the current URL.  * For instance, suppose the current URL is `/user/(box//aux:team)`.  * The link `<a [routerLink]=\"['/user/jim']\">Jim</a>` creates the URL  * `/user/(jim//aux:team)`.  * See {@link Router#createUrlTree createUrlTree} for more information.  *  * @usageNotes  *  * You can use absolute or relative paths in a link, set query parameters,  * control how parameters are handled, and keep a history of navigation states.  *  * ### Relative link paths  *  * The first segment name can be prepended with `/`, `./`, or `../`.  * * If the first segment begins with `/`, the router looks up the route from the root of the  *   app.  * * If the first segment begins with `./`, or doesn't begin with a slash, the router  *   looks in the children of the current activated route.  * * If the first segment begins with `../`, the router goes up one level in the route tree.  *  * ### Setting and handling query params and fragments  *  * The following link adds a query parameter and a fragment to the generated URL:  *  * ```  * <a [routerLink]=\"['/user/bob']\" [queryParams]=\"{debug: true}\" fragment=\"education\">  *   link to user component  * </a>  * ```  * By default, the directive constructs the new URL using the given query parameters.  * The example generates the link: `/user/bob?debug=true#education`.  *  * You can instruct the directive to handle query parameters differently  * by specifying the `queryParamsHandling` option in the link.  * Allowed values are:  *  *  - `'merge'`: Merge the given `queryParams` into the current query params.  *  - `'preserve'`: Preserve the current query params.  *  * For example:  *  * ```  * <a [routerLink]=\"['/user/bob']\" [queryParams]=\"{debug: true}\" queryParamsHandling=\"merge\">  *   link to user component  * </a>  * ```  *  * See {@link UrlCreationOptions.queryParamsHandling UrlCreationOptions#queryParamsHandling}.  *  * ### Preserving navigation history  *  * You can provide a `state` value to be persisted to the browser's  * [`History.state` property](https://developer.mozilla.org/en-US/docs/Web/API/History#Properties).  * For example:  *  * ```  * <a [routerLink]=\"['/user/bob']\" [state]=\"{tracingId: 123}\">  *   link to user component  * </a>  * ```  *  * Use {@link Router.getCurrentNavigation() Router#getCurrentNavigation} to retrieve a saved  * navigation-state value. For example, to capture the `tracingId` during the `NavigationStart`  * event:  *  * ```  * // Get NavigationStart events  * router.events.pipe(filter(e => e instanceof NavigationStart)).subscribe(e => {  *   const navigation = router.getCurrentNavigation();  *   tracingService.trace({id: navigation.extras.state.tracingId});  * });  * ```  *  * @ngModule RouterModule  *  * @publicApi  */ @Directive({   selector: '[routerLink]',   standalone: true, }) export class RouterLink implements OnChanges, OnDestroy {   private _preserveFragment = false;   private _skipLocationChange = false;   private _replaceUrl = false;    /**    * Represents an `href` attribute value applied to a host element,    * when a host element is `<a>`. For other tags, the value is `null`.    */   href: string|null = null;    /**    * Represents the `target` attribute on a host element.    * This is only used when the host element is an `<a>` tag.    */   @HostBinding('attr.target') @Input() target?: string;    /**    * Passed to {@link Router#createUrlTree Router#createUrlTree} as part of the    * `UrlCreationOptions`.    * @see {@link UrlCreationOptions#queryParams UrlCreationOptions#queryParams}    * @see {@link Router#createUrlTree Router#createUrlTree}    */   @Input() queryParams?: Params|null;   /**    * Passed to {@link Router#createUrlTree Router#createUrlTree} as part of the    * `UrlCreationOptions`.    * @see {@link UrlCreationOptions#fragment UrlCreationOptions#fragment}    * @see {@link Router#createUrlTree Router#createUrlTree}    */   @Input() fragment?: string;   /**    * Passed to {@link Router#createUrlTree Router#createUrlTree} as part of the    * `UrlCreationOptions`.    * @see {@link UrlCreationOptions#queryParamsHandling UrlCreationOptions#queryParamsHandling}    * @see {@link Router#createUrlTree Router#createUrlTree}    */   @Input() queryParamsHandling?: QueryParamsHandling|null;   /**    * Passed to {@link Router#navigateByUrl Router#navigateByUrl} as part of the    * `NavigationBehaviorOptions`.    * @see {@link NavigationBehaviorOptions#state NavigationBehaviorOptions#state}    * @see {@link Router#navigateByUrl Router#navigateByUrl}    */   @Input() state?: {[k: string]: any};   /**    * Passed to {@link Router#createUrlTree Router#createUrlTree} as part of the    * `UrlCreationOptions`.    * Specify a value here when you do not want to use the default value    * for `routerLink`, which is the current activated route.    * Note that a value of `undefined` here will use the `routerLink` default.    * @see {@link UrlCreationOptions#relativeTo UrlCreationOptions#relativeTo}    * @see {@link Router#createUrlTree Router#createUrlTree}    */   @Input() relativeTo?: ActivatedRoute|null;    private commands: any[]|null = null;    /** Whether a host element is an `<a>` tag. */   private isAnchorElement: boolean;    private subscription?: Subscription;    /** @internal */   onChanges = new Subject<RouterLink>();    constructor(       private router: Router, private route: ActivatedRoute,       @Attribute('tabindex') private readonly tabIndexAttribute: string|null|undefined,       private readonly renderer: Renderer2, private readonly el: ElementRef,       private locationStrategy?: LocationStrategy) {     const tagName = el.nativeElement.tagName?.toLowerCase();     this.isAnchorElement = tagName === 'a' || tagName === 'area';      if (this.isAnchorElement) {       this.subscription = router.events.subscribe((s: Event) => {         if (s instanceof NavigationEnd) {           this.updateHref();         }       });     } else {       this.setTabIndexIfNotOnNativeEl('0');     }   }    /**    * Passed to {@link Router#createUrlTree Router#createUrlTree} as part of the    * `UrlCreationOptions`.    * @see {@link UrlCreationOptions#preserveFragment UrlCreationOptions#preserveFragment}    * @see {@link Router#createUrlTree Router#createUrlTree}    */   @Input()   set preserveFragment(preserveFragment: boolean|string|null|undefined) {     this._preserveFragment = coerceToBoolean(preserveFragment);   }    get preserveFragment(): boolean {     return this._preserveFragment;   }    /**    * Passed to {@link Router#navigateByUrl Router#navigateByUrl} as part of the    * `NavigationBehaviorOptions`.    * @see {@link NavigationBehaviorOptions#skipLocationChange NavigationBehaviorOptions#skipLocationChange}    * @see {@link Router#navigateByUrl Router#navigateByUrl}    */   @Input()   set skipLocationChange(skipLocationChange: boolean|string|null|undefined) {     this._skipLocationChange = coerceToBoolean(skipLocationChange);   }    get skipLocationChange(): boolean {     return this._skipLocationChange;   }    /**    * Passed to {@link Router#navigateByUrl Router#navigateByUrl} as part of the    * `NavigationBehaviorOptions`.    * @see {@link NavigationBehaviorOptions#replaceUrl NavigationBehaviorOptions#replaceUrl}    * @see {@link Router#navigateByUrl Router#navigateByUrl}    */   @Input()   set replaceUrl(replaceUrl: boolean|string|null|undefined) {     this._replaceUrl = coerceToBoolean(replaceUrl);   }    get replaceUrl(): boolean {     return this._replaceUrl;   }    /**    * Modifies the tab index if there was not a tabindex attribute on the element during    * instantiation.    */   private setTabIndexIfNotOnNativeEl(newTabIndex: string|null) {     if (this.tabIndexAttribute != null /* both `null` and `undefined` */ || this.isAnchorElement) {       return;     }     this.applyAttributeValue('tabindex', newTabIndex);   }    /** @nodoc */   ngOnChanges(changes: SimpleChanges) {     if (this.isAnchorElement) {       this.updateHref();     }     // This is subscribed to by `RouterLinkActive` so that it knows to update when there are changes     // to the RouterLinks it's tracking.     this.onChanges.next(this);   }    /**    * Commands to pass to {@link Router#createUrlTree Router#createUrlTree}.    *   - **array**: commands to pass to {@link Router#createUrlTree Router#createUrlTree}.    *   - **string**: shorthand for array of commands with just the string, i.e. `['/route']`    *   - **null|undefined**: effectively disables the `routerLink`    * @see {@link Router#createUrlTree Router#createUrlTree}    */   @Input()   set routerLink(commands: any[]|string|null|undefined) {     if (commands != null) {       this.commands = Array.isArray(commands) ? commands : [commands];       this.setTabIndexIfNotOnNativeEl('0');     } else {       this.commands = null;       this.setTabIndexIfNotOnNativeEl(null);     }   }    /** @nodoc */   @HostListener(       'click',       ['$event.button', '$event.ctrlKey', '$event.shiftKey', '$event.altKey', '$event.metaKey'])   onClick(button: number, ctrlKey: boolean, shiftKey: boolean, altKey: boolean, metaKey: boolean):       boolean {     if (this.urlTree === null) {       return true;     }      if (this.isAnchorElement) {       if (button !== 0 || ctrlKey || shiftKey || altKey || metaKey) {         return true;       }        if (typeof this.target === 'string' && this.target != '_self') {         return true;       }     }      const extras = {       skipLocationChange: this.skipLocationChange,       replaceUrl: this.replaceUrl,       state: this.state,     };     this.router.navigateByUrl(this.urlTree, extras);      // Return `false` for `<a>` elements to prevent default action     // and cancel the native behavior, since the navigation is handled     // by the Router.     return !this.isAnchorElement;   }    /** @nodoc */   ngOnDestroy(): any {     this.subscription?.unsubscribe();   }    private updateHref(): void {     this.href = this.urlTree !== null && this.locationStrategy ?         this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(this.urlTree)) :         null;      const sanitizedValue = this.href === null ?         null :         // This class represents a directive that can be added to both `<a>` elements,         // as well as other elements. As a result, we can't define security context at         // compile time. So the security context is deferred to runtime.         // The `ɵɵsanitizeUrlOrResourceUrl` selects the necessary sanitizer function         // based on the tag and property names. The logic mimics the one from         // `packages/compiler/src/schema/dom_security_schema.ts`, which is used at compile time.         //         // Note: we should investigate whether we can switch to using `@HostBinding('attr.href')`         // instead of applying a value via a renderer, after a final merge of the         // `RouterLinkWithHref` directive.         ɵɵsanitizeUrlOrResourceUrl(this.href, this.el.nativeElement.tagName.toLowerCase(), 'href');     this.applyAttributeValue('href', sanitizedValue);   }    private applyAttributeValue(attrName: string, attrValue: string|null) {     const renderer = this.renderer;     const nativeElement = this.el.nativeElement;     if (attrValue !== null) {       renderer.setAttribute(nativeElement, attrName, attrValue);     } else {       renderer.removeAttribute(nativeElement, attrName);     }   }    get urlTree(): UrlTree|null {     if (this.commands === null) {       return null;     }     return this.router.createUrlTree(this.commands, {       // If the `relativeTo` input is not defined, we want to use `this.route` by default.       // Otherwise, we should use the value provided by the user in the input.       relativeTo: this.relativeTo !== undefined ? this.relativeTo : this.route,       queryParams: this.queryParams,       fragment: this.fragment,       queryParamsHandling: this.queryParamsHandling,       preserveFragment: this.preserveFragment,     });   } }  /**  * @description  * An alias for the `RouterLink` directive.  * Deprecated since v15, use `RouterLink` directive instead.  *  * @deprecated use `RouterLink` directive instead.  * @publicApi  */ export {RouterLink as RouterLinkWithHref}; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AfterContentInit, ChangeDetectorRef, ContentChildren, Directive, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, Optional, Output, QueryList, Renderer2, SimpleChanges} from '@angular/core'; import {from, of, Subscription} from 'rxjs'; import {mergeAll} from 'rxjs/operators';  import {Event, NavigationEnd} from '../events'; import {Router} from '../router'; import {IsActiveMatchOptions} from '../url_tree';  import {RouterLink} from './router_link';   /**  *  * @description  *  * Tracks whether the linked route of an element is currently active, and allows you  * to specify one or more CSS classes to add to the element when the linked route  * is active.  *  * Use this directive to create a visual distinction for elements associated with an active route.  * For example, the following code highlights the word \"Bob\" when the router  * activates the associated route:  *  * ```  * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\">Bob</a>  * ```  *  * Whenever the URL is either '/user' or '/user/bob', the \"active-link\" class is  * added to the anchor tag. If the URL changes, the class is removed.  *  * You can set more than one class using a space-separated string or an array.  * For example:  *  * ```  * <a routerLink=\"/user/bob\" routerLinkActive=\"class1 class2\">Bob</a>  * <a routerLink=\"/user/bob\" [routerLinkActive]=\"['class1', 'class2']\">Bob</a>  * ```  *  * To add the classes only when the URL matches the link exactly, add the option `exact: true`:  *  * ```  * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\" [routerLinkActiveOptions]=\"{exact:  * true}\">Bob</a>  * ```  *  * To directly check the `isActive` status of the link, assign the `RouterLinkActive`  * instance to a template variable.  * For example, the following checks the status without assigning any CSS classes:  *  * ```  * <a routerLink=\"/user/bob\" routerLinkActive #rla=\"routerLinkActive\">  *   Bob {{ rla.isActive ? '(already open)' : ''}}  * </a>  * ```  *  * You can apply the `RouterLinkActive` directive to an ancestor of linked elements.  * For example, the following sets the active-link class on the `<div>`  parent tag  * when the URL is either '/user/jim' or '/user/bob'.  *  * ```  * <div routerLinkActive=\"active-link\" [routerLinkActiveOptions]=\"{exact: true}\">  *   <a routerLink=\"/user/jim\">Jim</a>  *   <a routerLink=\"/user/bob\">Bob</a>  * </div>  * ```  *  * The `RouterLinkActive` directive can also be used to set the aria-current attribute  * to provide an alternative distinction for active elements to visually impaired users.  *  * For example, the following code adds the 'active' class to the Home Page link when it is  * indeed active and in such case also sets its aria-current attribute to 'page':  *  * ```  * <a routerLink=\"/\" routerLinkActive=\"active\" ariaCurrentWhenActive=\"page\">Home Page</a>  * ```  *  * @ngModule RouterModule  *  * @publicApi  */ @Directive({   selector: '[routerLinkActive]',   exportAs: 'routerLinkActive',   standalone: true, }) export class RouterLinkActive implements OnChanges, OnDestroy, AfterContentInit {   @ContentChildren(RouterLink, {descendants: true}) links!: QueryList<RouterLink>;    private classes: string[] = [];   private routerEventsSubscription: Subscription;   private linkInputChangesSubscription?: Subscription;   private _isActive = false;    get isActive() {     return this._isActive;   }    /**    * Options to configure how to determine if the router link is active.    *    * These options are passed to the `Router.isActive()` function.    *    * @see Router.isActive    */   @Input() routerLinkActiveOptions: {exact: boolean}|IsActiveMatchOptions = {exact: false};     /**    * Aria-current attribute to apply when the router link is active.    *    * Possible values: `'page'` | `'step'` | `'location'` | `'date'` | `'time'` | `true` | `false`.    *    * @see {@link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current}    */   @Input() ariaCurrentWhenActive?: 'page'|'step'|'location'|'date'|'time'|true|false;    /**    *    * You can use the output `isActiveChange` to get notified each time the link becomes    * active or inactive.    *    * Emits:    * true  -> Route is active    * false -> Route is inactive    *    * ```    * <a    *  routerLink=\"/user/bob\"    *  routerLinkActive=\"active-link\"    *  (isActiveChange)=\"this.onRouterLinkActive($event)\">Bob</a>    * ```    */   @Output() readonly isActiveChange: EventEmitter<boolean> = new EventEmitter();    constructor(       private router: Router, private element: ElementRef, private renderer: Renderer2,       private readonly cdr: ChangeDetectorRef, @Optional() private link?: RouterLink) {     this.routerEventsSubscription = router.events.subscribe((s: Event) => {       if (s instanceof NavigationEnd) {         this.update();       }     });   }    /** @nodoc */   ngAfterContentInit(): void {     // `of(null)` is used to force subscribe body to execute once immediately (like `startWith`).     of(this.links.changes, of(null)).pipe(mergeAll()).subscribe(_ => {       this.update();       this.subscribeToEachLinkOnChanges();     });   }    private subscribeToEachLinkOnChanges() {     this.linkInputChangesSubscription?.unsubscribe();     const allLinkChanges = [...this.links.toArray(), this.link]                                .filter((link): link is RouterLink => !!link)                                .map(link => link.onChanges);     this.linkInputChangesSubscription = from(allLinkChanges).pipe(mergeAll()).subscribe(link => {       if (this._isActive !== this.isLinkActive(this.router)(link)) {         this.update();       }     });   }    @Input()   set routerLinkActive(data: string[]|string) {     const classes = Array.isArray(data) ? data : data.split(' ');     this.classes = classes.filter(c => !!c);   }    /** @nodoc */   ngOnChanges(changes: SimpleChanges): void {     this.update();   }   /** @nodoc */   ngOnDestroy(): void {     this.routerEventsSubscription.unsubscribe();     this.linkInputChangesSubscription?.unsubscribe();   }    private update(): void {     if (!this.links || !this.router.navigated) return;     Promise.resolve().then(() => {       const hasActiveLinks = this.hasActiveLinks();       if (this._isActive !== hasActiveLinks) {         this._isActive = hasActiveLinks;         this.cdr.markForCheck();         this.classes.forEach((c) => {           if (hasActiveLinks) {             this.renderer.addClass(this.element.nativeElement, c);           } else {             this.renderer.removeClass(this.element.nativeElement, c);           }         });         if (hasActiveLinks && this.ariaCurrentWhenActive !== undefined) {           this.renderer.setAttribute(               this.element.nativeElement, 'aria-current', this.ariaCurrentWhenActive.toString());         } else {           this.renderer.removeAttribute(this.element.nativeElement, 'aria-current');         }          // Emit on isActiveChange after classes are updated         this.isActiveChange.emit(hasActiveLinks);       }     });   }    private isLinkActive(router: Router): (link: RouterLink) => boolean {     const options: boolean|IsActiveMatchOptions =         isActiveMatchOptions(this.routerLinkActiveOptions) ?         this.routerLinkActiveOptions :         // While the types should disallow `undefined` here, it's possible without strict inputs         (this.routerLinkActiveOptions.exact || false);     return (link: RouterLink) => link.urlTree ? router.isActive(link.urlTree, options) : false;   }    private hasActiveLinks(): boolean {     const isActiveCheckFn = this.isLinkActive(this.router);     return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn);   } }  /**  * Use instead of `'paths' in options` to be compatible with property renaming  */ function isActiveMatchOptions(options: {exact: boolean}|                               IsActiveMatchOptions): options is IsActiveMatchOptions {   return !!(options as IsActiveMatchOptions).paths; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Compiler, createEnvironmentInjector, EnvironmentInjector, Injectable, OnDestroy} from '@angular/core'; import {from, Observable, of, Subscription} from 'rxjs'; import {catchError, concatMap, filter, mergeAll, mergeMap} from 'rxjs/operators';  import {Event, NavigationEnd} from './events'; import {LoadedRouterConfig, Route, Routes} from './models'; import {Router} from './router'; import {RouterConfigLoader} from './router_config_loader';   /**  * @description  *  * Provides a preloading strategy.  *  * @publicApi  */ export abstract class PreloadingStrategy {   abstract preload(route: Route, fn: () => Observable<any>): Observable<any>; }  /**  * @description  *  * Provides a preloading strategy that preloads all modules as quickly as possible.  *  * ```  * RouterModule.forRoot(ROUTES, {preloadingStrategy: PreloadAllModules})  * ```  *  * @publicApi  */ @Injectable({providedIn: 'root'}) export class PreloadAllModules implements PreloadingStrategy {   preload(route: Route, fn: () => Observable<any>): Observable<any> {     return fn().pipe(catchError(() => of(null)));   } }  /**  * @description  *  * Provides a preloading strategy that does not preload any modules.  *  * This strategy is enabled by default.  *  * @publicApi  */ @Injectable({providedIn: 'root'}) export class NoPreloading implements PreloadingStrategy {   preload(route: Route, fn: () => Observable<any>): Observable<any> {     return of(null);   } }  /**  * The preloader optimistically loads all router configurations to  * make navigations into lazily-loaded sections of the application faster.  *  * The preloader runs in the background. When the router bootstraps, the preloader  * starts listening to all navigation events. After every such event, the preloader  * will check if any configurations can be loaded lazily.  *  * If a route is protected by `canLoad` guards, the preloaded will not load it.  *  * @publicApi  */ @Injectable({providedIn: 'root'}) export class RouterPreloader implements OnDestroy {   private subscription?: Subscription;    constructor(       private router: Router, compiler: Compiler, private injector: EnvironmentInjector,       private preloadingStrategy: PreloadingStrategy, private loader: RouterConfigLoader) {}    setUpPreloading(): void {     this.subscription =         this.router.events             .pipe(filter((e: Event) => e instanceof NavigationEnd), concatMap(() => this.preload()))             .subscribe(() => {});   }    preload(): Observable<any> {     return this.processRoutes(this.injector, this.router.config);   }    /** @nodoc */   ngOnDestroy(): void {     if (this.subscription) {       this.subscription.unsubscribe();     }   }    private processRoutes(injector: EnvironmentInjector, routes: Routes): Observable<void> {     const res: Observable<any>[] = [];     for (const route of routes) {       if (route.providers && !route._injector) {         route._injector =             createEnvironmentInjector(route.providers, injector, `Route: ${route.path}`);       }        const injectorForCurrentRoute = route._injector ?? injector;       const injectorForChildren = route._loadedInjector ?? injectorForCurrentRoute;        // Note that `canLoad` is only checked as a condition that prevents `loadChildren` and not       // `loadComponent`. `canLoad` guards only block loading of child routes by design. This       // happens as a consequence of needing to descend into children for route matching immediately       // while component loading is deferred until route activation. Because `canLoad` guards can       // have side effects, we cannot execute them here so we instead skip preloading altogether       // when present. Lastly, it remains to be decided whether `canLoad` should behave this way       // at all. Code splitting and lazy loading is separate from client-side authorization checks       // and should not be used as a security measure to prevent loading of code.       if ((route.loadChildren && !route._loadedRoutes && route.canLoad === undefined) ||           (route.loadComponent && !route._loadedComponent)) {         res.push(this.preloadConfig(injectorForCurrentRoute, route));       } else if (route.children || route._loadedRoutes) {         res.push(this.processRoutes(injectorForChildren, (route.children ?? route._loadedRoutes)!));       }     }     return from(res).pipe(mergeAll());   }    private preloadConfig(injector: EnvironmentInjector, route: Route): Observable<void> {     return this.preloadingStrategy.preload(route, () => {       let loadedChildren$: Observable<LoadedRouterConfig|null>;       if (route.loadChildren && route.canLoad === undefined) {         loadedChildren$ = this.loader.loadChildren(injector, route);       } else {         loadedChildren$ = of(null);       }        const recursiveLoadChildren$ =           loadedChildren$.pipe(mergeMap((config: LoadedRouterConfig|null) => {             if (config === null) {               return of(void 0);             }             route._loadedRoutes = config.routes;             route._loadedInjector = config.injector;             // If the loaded config was a module, use that as the module/module injector going             // forward. Otherwise, continue using the current module/module injector.             return this.processRoutes(config.injector ?? injector, config.routes);           }));       if (route.loadComponent && !route._loadedComponent) {         const loadComponent$ = this.loader.loadComponent(route);         return from([recursiveLoadChildren$, loadComponent$]).pipe(mergeAll());       } else {         return recursiveLoadChildren$;       }     });   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ViewportScroller} from '@angular/common'; import {Injectable, InjectionToken, NgZone, OnDestroy} from '@angular/core'; import {Unsubscribable} from 'rxjs';  import {NavigationEnd, NavigationStart, Scroll} from './events'; import {NavigationTransitions} from './navigation_transition'; import {Router} from './router'; import {UrlSerializer} from './url_tree';  export const ROUTER_SCROLLER = new InjectionToken<RouterScroller>('');  @Injectable() export class RouterScroller implements OnDestroy {   private routerEventsSubscription?: Unsubscribable;   private scrollEventsSubscription?: Unsubscribable;    private lastId = 0;   private lastSource: 'imperative'|'popstate'|'hashchange'|undefined = 'imperative';   private restoredId = 0;   private store: {[key: string]: [number, number]} = {};    /** @nodoc */   constructor(       readonly urlSerializer: UrlSerializer, private transitions: NavigationTransitions,       public readonly viewportScroller: ViewportScroller, private readonly zone: NgZone,       private options: {         scrollPositionRestoration?: 'disabled'|'enabled'|'top',         anchorScrolling?: 'disabled'|'enabled'       } = {}) {     // Default both options to 'disabled'     options.scrollPositionRestoration = options.scrollPositionRestoration || 'disabled';     options.anchorScrolling = options.anchorScrolling || 'disabled';   }    init(): void {     // we want to disable the automatic scrolling because having two places     // responsible for scrolling results race conditions, especially given     // that browser don't implement this behavior consistently     if (this.options.scrollPositionRestoration !== 'disabled') {       this.viewportScroller.setHistoryScrollRestoration('manual');     }     this.routerEventsSubscription = this.createScrollEvents();     this.scrollEventsSubscription = this.consumeScrollEvents();   }    private createScrollEvents() {     return this.transitions.events.subscribe(e => {       if (e instanceof NavigationStart) {         // store the scroll position of the current stable navigations.         this.store[this.lastId] = this.viewportScroller.getScrollPosition();         this.lastSource = e.navigationTrigger;         this.restoredId = e.restoredState ? e.restoredState.navigationId : 0;       } else if (e instanceof NavigationEnd) {         this.lastId = e.id;         this.scheduleScrollEvent(e, this.urlSerializer.parse(e.urlAfterRedirects).fragment);       }     });   }    private consumeScrollEvents() {     return this.transitions.events.subscribe(e => {       if (!(e instanceof Scroll)) return;       // a popstate event. The pop state event will always ignore anchor scrolling.       if (e.position) {         if (this.options.scrollPositionRestoration === 'top') {           this.viewportScroller.scrollToPosition([0, 0]);         } else if (this.options.scrollPositionRestoration === 'enabled') {           this.viewportScroller.scrollToPosition(e.position);         }         // imperative navigation \"forward\"       } else {         if (e.anchor && this.options.anchorScrolling === 'enabled') {           this.viewportScroller.scrollToAnchor(e.anchor);         } else if (this.options.scrollPositionRestoration !== 'disabled') {           this.viewportScroller.scrollToPosition([0, 0]);         }       }     });   }    private scheduleScrollEvent(routerEvent: NavigationEnd, anchor: string|null): void {     this.zone.runOutsideAngular(() => {       // The scroll event needs to be delayed until after change detection. Otherwise, we may       // attempt to restore the scroll position before the router outlet has fully rendered the       // component by executing its update block of the template function.       setTimeout(() => {         this.zone.run(() => {           this.transitions.events.next(new Scroll(               routerEvent, this.lastSource === 'popstate' ? this.store[this.restoredId] : null,               anchor));         });       }, 0);     });   }    /** @nodoc */   ngOnDestroy() {     this.routerEventsSubscription?.unsubscribe();     this.scrollEventsSubscription?.unsubscribe();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {filter, map, take} from 'rxjs/operators';  import {NavigationCancel, NavigationCancellationCode, NavigationEnd, NavigationError, NavigationSkipped} from '../events'; import {Router} from '../router';  enum NavigationResult {   COMPLETE,   FAILED,   REDIRECTING, }  /**  * Performs the given action once the router finishes its next/current navigation.  *  * The navigation is considered complete under the following conditions:  * - `NavigationCancel` event emits and the code is not `NavigationCancellationCode.Redirect` or  * `NavigationCancellationCode.SupersededByNewNavigation`. In these cases, the  * redirecting/superseding navigation must finish.  * - `NavigationError`, `NavigationEnd`, or `NavigationSkipped` event emits  */ export function afterNextNavigation(router: Router, action: () => void) {   router.events       .pipe(           filter(               (e): e is NavigationEnd|NavigationCancel|NavigationError|NavigationSkipped =>                   e instanceof NavigationEnd || e instanceof NavigationCancel ||                   e instanceof NavigationError || e instanceof NavigationSkipped),           map(e => {             if (e instanceof NavigationEnd || e instanceof NavigationSkipped) {               return NavigationResult.COMPLETE;             }             const redirecting = e instanceof NavigationCancel ?                 (e.code === NavigationCancellationCode.Redirect ||                  e.code === NavigationCancellationCode.SupersededByNewNavigation) :                 false;             return redirecting ? NavigationResult.REDIRECTING : NavigationResult.FAILED;           }),           filter(               (result): result is NavigationResult.COMPLETE|NavigationResult.FAILED =>                   result !== NavigationResult.REDIRECTING),           take(1),           )       .subscribe(() => {         action();       }); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HashLocationStrategy, LOCATION_INITIALIZED, LocationStrategy, ViewportScroller} from '@angular/common'; import {APP_BOOTSTRAP_LISTENER, APP_INITIALIZER, ApplicationRef, ComponentRef, ENVIRONMENT_INITIALIZER, EnvironmentInjector, EnvironmentProviders, inject, InjectFlags, InjectionToken, Injector, makeEnvironmentProviders, NgZone, Provider, Type} from '@angular/core'; import {of, Subject} from 'rxjs'; import {filter, map, take} from 'rxjs/operators';  import {Event, NavigationCancel, NavigationCancellationCode, NavigationEnd, NavigationError, stringifyEvent} from './events'; import {Routes} from './models'; import {NavigationTransitions} from './navigation_transition'; import {Router} from './router'; import {InMemoryScrollingOptions, ROUTER_CONFIGURATION, RouterConfigOptions} from './router_config'; import {ROUTES} from './router_config_loader'; import {PreloadingStrategy, RouterPreloader} from './router_preloader'; import {ROUTER_SCROLLER, RouterScroller} from './router_scroller'; import {ActivatedRoute} from './router_state'; import {UrlSerializer} from './url_tree'; import {afterNextNavigation} from './utils/navigations';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;  /**  * Sets up providers necessary to enable `Router` functionality for the application.  * Allows to configure a set of routes as well as extra features that should be enabled.  *  * @usageNotes  *  * Basic example of how you can add a Router to your application:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent, {  *   providers: [provideRouter(appRoutes)]  * });  * ```  *  * You can also enable optional features in the Router by adding functions from the `RouterFeatures`  * type:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes,  *         withDebugTracing(),  *         withRouterConfig({paramsInheritanceStrategy: 'always'}))  *     ]  *   }  * );  * ```  *  * @see `RouterFeatures`  *  * @publicApi  * @param routes A set of `Route`s to use for the application routing table.  * @param features Optional features to configure additional router behaviors.  * @returns A set of providers to setup a Router.  */ export function provideRouter(routes: Routes, ...features: RouterFeatures[]): EnvironmentProviders {   return makeEnvironmentProviders([     {provide: ROUTES, multi: true, useValue: routes},     NG_DEV_MODE ? {provide: ROUTER_IS_PROVIDED, useValue: true} : [],     {provide: ActivatedRoute, useFactory: rootRoute, deps: [Router]},     {provide: APP_BOOTSTRAP_LISTENER, multi: true, useFactory: getBootstrapListener},     features.map(feature => feature.ɵproviders),   ]); }  export function rootRoute(router: Router): ActivatedRoute {   return router.routerState.root; }  /**  * Helper type to represent a Router feature.  *  * @publicApi  */ export interface RouterFeature<FeatureKind extends RouterFeatureKind> {   ɵkind: FeatureKind;   ɵproviders: Provider[]; }  /**  * Helper function to create an object that represents a Router feature.  */ function routerFeature<FeatureKind extends RouterFeatureKind>(     kind: FeatureKind, providers: Provider[]): RouterFeature<FeatureKind> {   return {ɵkind: kind, ɵproviders: providers}; }   /**  * An Injection token used to indicate whether `provideRouter` or `RouterModule.forRoot` was ever  * called.  */ export const ROUTER_IS_PROVIDED =     new InjectionToken<boolean>('', {providedIn: 'root', factory: () => false});  const routerIsProvidedDevModeCheck = {   provide: ENVIRONMENT_INITIALIZER,   multi: true,   useFactory() {     return () => {       if (!inject(ROUTER_IS_PROVIDED)) {         console.warn(             '`provideRoutes` was called without `provideRouter` or `RouterModule.forRoot`. ' +             'This is likely a mistake.');       }     };   } };  /**  * Registers a [DI provider](guide/glossary#provider) for a set of routes.  * @param routes The route configuration to provide.  *  * @usageNotes  *  * ```  * @NgModule({  *   providers: [provideRoutes(ROUTES)]  * })  * class LazyLoadedChildModule {}  * ```  *  * @deprecated If necessary, provide routes using the `ROUTES` `InjectionToken`.  * @see `ROUTES`  * @publicApi  */ export function provideRoutes(routes: Routes): Provider[] {   return [     {provide: ROUTES, multi: true, useValue: routes},     NG_DEV_MODE ? routerIsProvidedDevModeCheck : [],   ]; }  /**  * A type alias for providers returned by `withInMemoryScrolling` for use with `provideRouter`.  *  * @see `withInMemoryScrolling`  * @see `provideRouter`  *  * @publicApi  */ export type InMemoryScrollingFeature = RouterFeature<RouterFeatureKind.InMemoryScrollingFeature>;  /**  * Enables customizable scrolling behavior for router navigations.  *  * @usageNotes  *  * Basic example of how you can enable scrolling feature:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withInMemoryScrolling())  *     ]  *   }  * );  * ```  *  * @see `provideRouter`  * @see `ViewportScroller`  *  * @publicApi  * @param options Set of configuration parameters to customize scrolling behavior, see  *     `InMemoryScrollingOptions` for additional information.  * @returns A set of providers for use with `provideRouter`.  */ export function withInMemoryScrolling(options: InMemoryScrollingOptions = {}):     InMemoryScrollingFeature {   const providers = [{     provide: ROUTER_SCROLLER,     useFactory: () => {       const viewportScroller = inject(ViewportScroller);       const zone = inject(NgZone);       const transitions = inject(NavigationTransitions);       const urlSerializer = inject(UrlSerializer);       return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, options);     },   }];   return routerFeature(RouterFeatureKind.InMemoryScrollingFeature, providers); }  export function getBootstrapListener() {   const injector = inject(Injector);   return (bootstrappedComponentRef: ComponentRef<unknown>) => {     const ref = injector.get(ApplicationRef);      if (bootstrappedComponentRef !== ref.components[0]) {       return;     }      const router = injector.get(Router);     const bootstrapDone = injector.get(BOOTSTRAP_DONE);      if (injector.get(INITIAL_NAVIGATION) === InitialNavigation.EnabledNonBlocking) {       router.initialNavigation();     }      injector.get(ROUTER_PRELOADER, null, InjectFlags.Optional)?.setUpPreloading();     injector.get(ROUTER_SCROLLER, null, InjectFlags.Optional)?.init();     router.resetRootComponentType(ref.componentTypes[0]);     if (!bootstrapDone.closed) {       bootstrapDone.next();       bootstrapDone.unsubscribe();     }   }; }  /**  * A subject used to indicate that the bootstrapping phase is done. When initial navigation is  * `enabledBlocking`, the first navigation waits until bootstrapping is finished before continuing  * to the activation phase.  */ const BOOTSTRAP_DONE =     new InjectionToken<Subject<void>>(NG_DEV_MODE ? 'bootstrap done indicator' : '', {       factory: () => {         return new Subject<void>();       }     });  /**  * This and the INITIAL_NAVIGATION token are used internally only. The public API side of this is  * configured through the `ExtraOptions`.  *  * When set to `EnabledBlocking`, the initial navigation starts before the root  * component is created. The bootstrap is blocked until the initial navigation is complete. This  * value is required for [server-side rendering](guide/universal) to work.  *  * When set to `EnabledNonBlocking`, the initial navigation starts after the root component has been  * created. The bootstrap is not blocked on the completion of the initial navigation.  *  * When set to `Disabled`, the initial navigation is not performed. The location listener is set up  * before the root component gets created. Use if there is a reason to have more control over when  * the router starts its initial navigation due to some complex initialization logic.  *  * @see `ExtraOptions`  */ const enum InitialNavigation {   EnabledBlocking,   EnabledNonBlocking,   Disabled, }  const INITIAL_NAVIGATION = new InjectionToken<InitialNavigation>(     NG_DEV_MODE ? 'initial navigation' : '',     {providedIn: 'root', factory: () => InitialNavigation.EnabledNonBlocking});  /**  * A type alias for providers returned by `withEnabledBlockingInitialNavigation` for use with  * `provideRouter`.  *  * @see `withEnabledBlockingInitialNavigation`  * @see `provideRouter`  *  * @publicApi  */ export type EnabledBlockingInitialNavigationFeature =     RouterFeature<RouterFeatureKind.EnabledBlockingInitialNavigationFeature>;  /**  * A type alias for providers returned by `withEnabledBlockingInitialNavigation` or  * `withDisabledInitialNavigation` functions for use with `provideRouter`.  *  * @see `withEnabledBlockingInitialNavigation`  * @see `withDisabledInitialNavigation`  * @see `provideRouter`  *  * @publicApi  */ export type InitialNavigationFeature =     EnabledBlockingInitialNavigationFeature|DisabledInitialNavigationFeature;  /**  * Configures initial navigation to start before the root component is created.  *  * The bootstrap is blocked until the initial navigation is complete. This value is required for  * [server-side rendering](guide/universal) to work.  *  * @usageNotes  *  * Basic example of how you can enable this navigation behavior:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withEnabledBlockingInitialNavigation())  *     ]  *   }  * );  * ```  *  * @see `provideRouter`  *  * @publicApi  * @returns A set of providers for use with `provideRouter`.  */ export function withEnabledBlockingInitialNavigation(): EnabledBlockingInitialNavigationFeature {   const providers = [     {provide: INITIAL_NAVIGATION, useValue: InitialNavigation.EnabledBlocking},     {       provide: APP_INITIALIZER,       multi: true,       deps: [Injector],       useFactory: (injector: Injector) => {         const locationInitialized: Promise<any> =             injector.get(LOCATION_INITIALIZED, Promise.resolve());          return () => {           return locationInitialized.then(() => {             return new Promise(resolve => {               const router = injector.get(Router);               const bootstrapDone = injector.get(BOOTSTRAP_DONE);               afterNextNavigation(router, () => {                 // Unblock APP_INITIALIZER in case the initial navigation was canceled or errored                 // without a redirect.                 resolve(true);               });                injector.get(NavigationTransitions).afterPreactivation = () => {                 // Unblock APP_INITIALIZER once we get to `afterPreactivation`. At this point, we                 // assume activation will complete successfully (even though this is not                 // guaranteed).                 resolve(true);                 return bootstrapDone.closed ? of(void 0) : bootstrapDone;               };               router.initialNavigation();             });           });         };       }     },   ];   return routerFeature(RouterFeatureKind.EnabledBlockingInitialNavigationFeature, providers); }  /**  * A type alias for providers returned by `withDisabledInitialNavigation` for use with  * `provideRouter`.  *  * @see `withDisabledInitialNavigation`  * @see `provideRouter`  *  * @publicApi  */ export type DisabledInitialNavigationFeature =     RouterFeature<RouterFeatureKind.DisabledInitialNavigationFeature>;  /**  * Disables initial navigation.  *  * Use if there is a reason to have more control over when the router starts its initial navigation  * due to some complex initialization logic.  *  * @usageNotes  *  * Basic example of how you can disable initial navigation:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withDisabledInitialNavigation())  *     ]  *   }  * );  * ```  *  * @see `provideRouter`  *  * @returns A set of providers for use with `provideRouter`.  *  * @publicApi  */ export function withDisabledInitialNavigation(): DisabledInitialNavigationFeature {   const providers = [     {       provide: APP_INITIALIZER,       multi: true,       useFactory: () => {         const router = inject(Router);         return () => {           router.setUpLocationChangeListener();         };       }     },     {provide: INITIAL_NAVIGATION, useValue: InitialNavigation.Disabled}   ];   return routerFeature(RouterFeatureKind.DisabledInitialNavigationFeature, providers); }  /**  * A type alias for providers returned by `withDebugTracing` for use with `provideRouter`.  *  * @see `withDebugTracing`  * @see `provideRouter`  *  * @publicApi  */ export type DebugTracingFeature = RouterFeature<RouterFeatureKind.DebugTracingFeature>;  /**  * Enables logging of all internal navigation events to the console.  * Extra logging might be useful for debugging purposes to inspect Router event sequence.  *  * @usageNotes  *  * Basic example of how you can enable debug tracing:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withDebugTracing())  *     ]  *   }  * );  * ```  *  * @see `provideRouter`  *  * @returns A set of providers for use with `provideRouter`.  *  * @publicApi  */ export function withDebugTracing(): DebugTracingFeature {   let providers: Provider[] = [];   if (NG_DEV_MODE) {     providers = [{       provide: ENVIRONMENT_INITIALIZER,       multi: true,       useFactory: () => {         const router = inject(Router);         return () => router.events.subscribe((e: Event) => {           // tslint:disable:no-console           console.group?.(`Router Event: ${(<any>e.constructor).name}`);           console.log(stringifyEvent(e));           console.log(e);           console.groupEnd?.();           // tslint:enable:no-console         });       }     }];   } else {     providers = [];   }   return routerFeature(RouterFeatureKind.DebugTracingFeature, providers); }  const ROUTER_PRELOADER = new InjectionToken<RouterPreloader>(NG_DEV_MODE ? 'router preloader' : '');  /**  * A type alias that represents a feature which enables preloading in Router.  * The type is used to describe the return value of the `withPreloading` function.  *  * @see `withPreloading`  * @see `provideRouter`  *  * @publicApi  */ export type PreloadingFeature = RouterFeature<RouterFeatureKind.PreloadingFeature>;  /**  * Allows to configure a preloading strategy to use. The strategy is configured by providing a  * reference to a class that implements a `PreloadingStrategy`.  *  * @usageNotes  *  * Basic example of how you can configure preloading:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withPreloading(PreloadAllModules))  *     ]  *   }  * );  * ```  *  * @see `provideRouter`  *  * @param preloadingStrategy A reference to a class that implements a `PreloadingStrategy` that  *     should be used.  * @returns A set of providers for use with `provideRouter`.  *  * @publicApi  */ export function withPreloading(preloadingStrategy: Type<PreloadingStrategy>): PreloadingFeature {   const providers = [     {provide: ROUTER_PRELOADER, useExisting: RouterPreloader},     {provide: PreloadingStrategy, useExisting: preloadingStrategy},   ];   return routerFeature(RouterFeatureKind.PreloadingFeature, providers); }  /**  * A type alias for providers returned by `withRouterConfig` for use with `provideRouter`.  *  * @see `withRouterConfig`  * @see `provideRouter`  *  * @publicApi  */ export type RouterConfigurationFeature =     RouterFeature<RouterFeatureKind.RouterConfigurationFeature>;  /**  * Allows to provide extra parameters to configure Router.  *  * @usageNotes  *  * Basic example of how you can provide extra configuration options:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withRouterConfig({  *          onSameUrlNavigation: 'reload'  *       }))  *     ]  *   }  * );  * ```  *  * @see `provideRouter`  *  * @param options A set of parameters to configure Router, see `RouterConfigOptions` for  *     additional information.  * @returns A set of providers for use with `provideRouter`.  *  * @publicApi  */ export function withRouterConfig(options: RouterConfigOptions): RouterConfigurationFeature {   const providers = [     {provide: ROUTER_CONFIGURATION, useValue: options},   ];   return routerFeature(RouterFeatureKind.RouterConfigurationFeature, providers); }  /**  * A type alias for providers returned by `withHashLocation` for use with `provideRouter`.  *  * @see `withHashLocation`  * @see `provideRouter`  *  * @publicApi  */ export type RouterHashLocationFeature = RouterFeature<RouterFeatureKind.RouterHashLocationFeature>;  /**  * Provides the location strategy that uses the URL fragment instead of the history API.  *  * @usageNotes  *  * Basic example of how you can use the hash location option:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withHashLocation())  *     ]  *   }  * );  * ```  *  * @see `provideRouter`  * @see `HashLocationStrategy`  *  * @returns A set of providers for use with `provideRouter`.  *  * @publicApi  */ export function withHashLocation(): RouterConfigurationFeature {   const providers = [     {provide: LocationStrategy, useClass: HashLocationStrategy},   ];   return routerFeature(RouterFeatureKind.RouterConfigurationFeature, providers); }  /**  * A type alias for providers returned by `withNavigationErrorHandler` for use with `provideRouter`.  *  * @see `withNavigationErrorHandler`  * @see `provideRouter`  *  * @publicApi  */ export type NavigationErrorHandlerFeature =     RouterFeature<RouterFeatureKind.NavigationErrorHandlerFeature>;  /**  * Subscribes to the Router's navigation events and calls the given function when a  * `NavigationError` happens.  *  * This function is run inside application's injection context so you can use the `inject` function.  *  * @usageNotes  *  * Basic example of how you can use the error handler option:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withNavigationErrorHandler((e: NavigationError) =>  * inject(MyErrorTracker).trackError(e)))  *     ]  *   }  * );  * ```  *  * @see `NavigationError`  * @see `inject`  * @see `EnvironmentInjector#runInContext`  *  * @returns A set of providers for use with `provideRouter`.  *  * @publicApi  */ export function withNavigationErrorHandler(fn: (error: NavigationError) => void):     NavigationErrorHandlerFeature {   const providers = [{     provide: ENVIRONMENT_INITIALIZER,     multi: true,     useValue: () => {       const injector = inject(EnvironmentInjector);       inject(Router).events.subscribe((e) => {         if (e instanceof NavigationError) {           injector.runInContext(() => fn(e));         }       });     }   }];   return routerFeature(RouterFeatureKind.NavigationErrorHandlerFeature, providers); }  /**  * A type alias that represents all Router features available for use with `provideRouter`.  * Features can be enabled by adding special functions to the `provideRouter` call.  * See documentation for each symbol to find corresponding function name. See also `provideRouter`  * documentation on how to use those functions.  *  * @see `provideRouter`  *  * @publicApi  */ export type RouterFeatures = PreloadingFeature|DebugTracingFeature|InitialNavigationFeature|     InMemoryScrollingFeature|RouterConfigurationFeature|NavigationErrorHandlerFeature;  /**  * The list of features as an enum to uniquely type each feature.  */ export const enum RouterFeatureKind {   PreloadingFeature,   DebugTracingFeature,   EnabledBlockingInitialNavigationFeature,   DisabledInitialNavigationFeature,   InMemoryScrollingFeature,   RouterConfigurationFeature,   RouterHashLocationFeature,   NavigationErrorHandlerFeature, } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HashLocationStrategy, Location, LocationStrategy, PathLocationStrategy, ViewportScroller} from '@angular/common'; import {APP_BOOTSTRAP_LISTENER, ComponentRef, inject, Inject, InjectionToken, ModuleWithProviders, NgModule, NgProbeToken, NgZone, Optional, Provider, SkipSelf, ɵRuntimeError as RuntimeError} from '@angular/core';  import {EmptyOutletComponent} from './components/empty_outlet'; import {RouterLink} from './directives/router_link'; import {RouterLinkActive} from './directives/router_link_active'; import {RouterOutlet} from './directives/router_outlet'; import {RuntimeErrorCode} from './errors'; import {Routes} from './models'; import {NavigationTransitions} from './navigation_transition'; import {getBootstrapListener, rootRoute, ROUTER_IS_PROVIDED, withDebugTracing, withDisabledInitialNavigation, withEnabledBlockingInitialNavigation, withPreloading} from './provide_router'; import {Router} from './router'; import {ExtraOptions, ROUTER_CONFIGURATION} from './router_config'; import {RouterConfigLoader, ROUTES} from './router_config_loader'; import {ChildrenOutletContexts} from './router_outlet_context'; import {ROUTER_SCROLLER, RouterScroller} from './router_scroller'; import {ActivatedRoute} from './router_state'; import {DefaultUrlSerializer, UrlSerializer} from './url_tree';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;  /**  * The directives defined in the `RouterModule`.  */ const ROUTER_DIRECTIVES = [RouterOutlet, RouterLink, RouterLinkActive, EmptyOutletComponent];  /**  * @docsNotRequired  */ export const ROUTER_FORROOT_GUARD = new InjectionToken<void>(     NG_DEV_MODE ? 'router duplicate forRoot guard' : 'ROUTER_FORROOT_GUARD');  // TODO(atscott): All of these except `ActivatedRoute` are `providedIn: 'root'`. They are only kept // here to avoid a breaking change whereby the provider order matters based on where the // `RouterModule`/`RouterTestingModule` is imported. These can/should be removed as a \"breaking\" // change in a major version. export const ROUTER_PROVIDERS: Provider[] = [   Location,   {provide: UrlSerializer, useClass: DefaultUrlSerializer},   Router,   ChildrenOutletContexts,   {provide: ActivatedRoute, useFactory: rootRoute, deps: [Router]},   RouterConfigLoader,   // Only used to warn when `provideRoutes` is used without `RouterModule` or `provideRouter`. Can   // be removed when `provideRoutes` is removed.   NG_DEV_MODE ? {provide: ROUTER_IS_PROVIDED, useValue: true} : [], ];  export function routerNgProbeToken() {   return new NgProbeToken('Router', Router); }  /**  * @description  *  * Adds directives and providers for in-app navigation among views defined in an application.  * Use the Angular `Router` service to declaratively specify application states and manage state  * transitions.  *  * You can import this NgModule multiple times, once for each lazy-loaded bundle.  * However, only one `Router` service can be active.  * To ensure this, there are two ways to register routes when importing this module:  *  * * The `forRoot()` method creates an `NgModule` that contains all the directives, the given  * routes, and the `Router` service itself.  * * The `forChild()` method creates an `NgModule` that contains all the directives and the given  * routes, but does not include the `Router` service.  *  * @see [Routing and Navigation guide](guide/router) for an  * overview of how the `Router` service should be used.  *  * @publicApi  */ @NgModule({   imports: ROUTER_DIRECTIVES,   exports: ROUTER_DIRECTIVES, }) export class RouterModule {   constructor(@Optional() @Inject(ROUTER_FORROOT_GUARD) guard: any) {}    /**    * Creates and configures a module with all the router providers and directives.    * Optionally sets up an application listener to perform an initial navigation.    *    * When registering the NgModule at the root, import as follows:    *    * ```    * @NgModule({    *   imports: [RouterModule.forRoot(ROUTES)]    * })    * class MyNgModule {}    * ```    *    * @param routes An array of `Route` objects that define the navigation paths for the application.    * @param config An `ExtraOptions` configuration object that controls how navigation is performed.    * @return The new `NgModule`.    *    */   static forRoot(routes: Routes, config?: ExtraOptions): ModuleWithProviders<RouterModule> {     return {       ngModule: RouterModule,       providers: [         ROUTER_PROVIDERS,         NG_DEV_MODE ? (config?.enableTracing ? withDebugTracing().ɵproviders : []) : [],         {provide: ROUTES, multi: true, useValue: routes},         {           provide: ROUTER_FORROOT_GUARD,           useFactory: provideForRootGuard,           deps: [[Router, new Optional(), new SkipSelf()]]         },         {provide: ROUTER_CONFIGURATION, useValue: config ? config : {}},         config?.useHash ? provideHashLocationStrategy() : providePathLocationStrategy(),         provideRouterScroller(),         config?.preloadingStrategy ? withPreloading(config.preloadingStrategy).ɵproviders : [],         {provide: NgProbeToken, multi: true, useFactory: routerNgProbeToken},         config?.initialNavigation ? provideInitialNavigation(config) : [],         provideRouterInitializer(),       ],     };   }    /**    * Creates a module with all the router directives and a provider registering routes,    * without creating a new Router service.    * When registering for submodules and lazy-loaded submodules, create the NgModule as follows:    *    * ```    * @NgModule({    *   imports: [RouterModule.forChild(ROUTES)]    * })    * class MyNgModule {}    * ```    *    * @param routes An array of `Route` objects that define the navigation paths for the submodule.    * @return The new NgModule.    *    */   static forChild(routes: Routes): ModuleWithProviders<RouterModule> {     return {       ngModule: RouterModule,       providers: [{provide: ROUTES, multi: true, useValue: routes}],     };   } }  /**  * For internal use by `RouterModule` only. Note that this differs from `withInMemoryRouterScroller`  * because it reads from the `ExtraOptions` which should not be used in the standalone world.  */ export function provideRouterScroller(): Provider {   return {     provide: ROUTER_SCROLLER,     useFactory: () => {       const viewportScroller = inject(ViewportScroller);       const zone = inject(NgZone);       const config: ExtraOptions = inject(ROUTER_CONFIGURATION);       const transitions = inject(NavigationTransitions);       const urlSerializer = inject(UrlSerializer);       if (config.scrollOffset) {         viewportScroller.setOffset(config.scrollOffset);       }       return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, config);     },   }; }  // Note: For internal use only with `RouterModule`. Standalone setup via `provideRouter` should // provide hash location directly via `{provide: LocationStrategy, useClass: HashLocationStrategy}`. function provideHashLocationStrategy(): Provider {   return {provide: LocationStrategy, useClass: HashLocationStrategy}; }  // Note: For internal use only with `RouterModule`. Standalone setup via `provideRouter` does not // need this at all because `PathLocationStrategy` is the default factory for `LocationStrategy`. function providePathLocationStrategy(): Provider {   return {provide: LocationStrategy, useClass: PathLocationStrategy}; }  export function provideForRootGuard(router: Router): any {   if (NG_DEV_MODE && router) {     throw new RuntimeError(         RuntimeErrorCode.FOR_ROOT_CALLED_TWICE,         `The Router was provided more than once. This can happen if 'forRoot' is used outside of the root injector.` +             ` Lazy loaded modules should use RouterModule.forChild() instead.`);   }   return 'guarded'; }  // Note: For internal use only with `RouterModule`. Standalone router setup with `provideRouter` // users call `withXInitialNavigation` directly. function provideInitialNavigation(config: Pick<ExtraOptions, 'initialNavigation'>): Provider[] {   return [     config.initialNavigation === 'disabled' ? withDisabledInitialNavigation().ɵproviders : [],     config.initialNavigation === 'enabledBlocking' ?         withEnabledBlockingInitialNavigation().ɵproviders :         [],   ]; }  // TODO(atscott): This should not be in the public API /**  * A [DI token](guide/glossary/#di-token) for the router initializer that  * is called after the app is bootstrapped.  *  * @publicApi  */ export const ROUTER_INITIALIZER = new InjectionToken<(compRef: ComponentRef<any>) => void>(     NG_DEV_MODE ? 'Router Initializer' : '');  function provideRouterInitializer(): Provider[] {   return [     // ROUTER_INITIALIZER token should be removed. It's public API but shouldn't be. We can just     // have `getBootstrapListener` directly attached to APP_BOOTSTRAP_LISTENER.     {provide: ROUTER_INITIALIZER, useFactory: getBootstrapListener},     {provide: APP_BOOTSTRAP_LISTENER, multi: true, useExisting: ROUTER_INITIALIZER},   ]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the router package.  */  import {Version} from '@angular/core';  /**  * @publicApi  */ export const VERSION = new Version('15.2.0'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/index';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["isObservable","isPromise","NG_DEV_MODE","RuntimeError","isRedirectingNavigationCancelingError","isNavigationCancelingError","EmptyOutletComponent","isInjectable","noMatch","NoMatch","applyRedirects","last","applyRedirectsFn","recognize","rxjsLast","recognizeFn","Console","coerceToBoolean","i1.Router","i2.RouterLink","i2.RouterConfigLoader"],"mappings":";;;;;;;;;;;;;;AAYA;;;;AAIG;AACI,MAAM,cAAc,GAAG,UAAU;AAExC;;;;AAIG;AACI,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAmDlD,MAAM,WAAW,CAAA;AAGf,IAAA,WAAA,CAAY,MAAc,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;KAC5B;AAED,IAAA,GAAG,CAAC,IAAY,EAAA;AACd,QAAA,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAChE;AAED,IAAA,GAAG,CAAC,IAAY,EAAA;AACd,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAClB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,CAAC,IAAY,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAClB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,SAAA;AAED,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACjC;AACF,CAAA;AAED;;;;;;AAMG;AACG,SAAU,iBAAiB,CAAC,MAAc,EAAA;AAC9C,IAAA,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;;AAcG;SACa,iBAAiB,CAC7B,QAAsB,EAAE,YAA6B,EAAE,KAAY,EAAA;IACrE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAErC,IAAA,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;;AAElC,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM;AAC1B,SAAC,YAAY,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE;;AAElE,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IAED,MAAM,SAAS,GAAgC,EAAE,CAAC;;AAGlD,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACjD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACzC,QAAA,IAAI,WAAW,EAAE;YACf,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;AACxC,SAAA;AAAM,aAAA,IAAI,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;;AAEhC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACF,KAAA;AAED,IAAA,OAAO,EAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAC,CAAC;AAChE;;ACzJgB,SAAA,kBAAkB,CAAC,CAAQ,EAAE,CAAQ,EAAA;AACnD,IAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AAAE,QAAA,OAAO,KAAK,CAAC;AACxC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;AAC7C,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAEe,SAAA,YAAY,CAAC,CAAS,EAAE,CAAS,EAAA;;;AAG/C,IAAA,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAC1C,IAAA,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAC1C,IAAA,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE;AACxC,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACD,IAAA,IAAI,GAAW,CAAC;AAChB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClC,QAAA,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACZ,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACxC,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACF,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;AAEG;AACa,SAAA,mBAAmB,CAAC,CAAkB,EAAE,CAAkB,EAAA;AACxE,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACxC,QAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK,CAAC;QACxC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9B,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAC9D,KAAA;AAAM,SAAA;QACL,OAAO,CAAC,KAAK,CAAC,CAAC;AAChB,KAAA;AACH,CAAC;AAED;;AAEG;AACG,SAAU,OAAO,CAAI,GAAU,EAAA;AACnC,IAAA,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED;;AAEG;AACG,SAAU,IAAI,CAAI,CAAM,EAAA;IAC5B,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAC/C,CAAC;AAED;;AAEG;AACG,SAAU,GAAG,CAAC,KAAgB,EAAA;AAClC,IAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAEe,SAAA,OAAO,CAAO,GAAuB,EAAE,QAAmC,EAAA;AACxF,IAAA,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;AACtB,QAAA,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC5B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3B,SAAA;AACF,KAAA;AACH,CAAC;AAEK,SAAU,kBAAkB,CAAI,KAAiC,EAAA;AACrE,IAAA,IAAIA,aAAY,CAAC,KAAK,CAAC,EAAE;AACvB,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AAED,IAAA,IAAIC,UAAS,CAAC,KAAK,CAAC,EAAE;;;;QAIpB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC,KAAA;AAED,IAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACnB;;ACjFA,MAAMC,aAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC;AAyDlE,MAAM,cAAc,GAAyD;AAC3E,IAAA,OAAO,EAAE,kBAAkB;AAC3B,IAAA,QAAQ,EAAE,oBAAoB;CAC/B,CAAC;AACF,MAAM,eAAe,GAA8C;AACjE,IAAA,OAAO,EAAE,WAAW;AACpB,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,SAAS,EAAE,MAAM,IAAI;CACtB,CAAC;SAEc,YAAY,CACxB,SAAkB,EAAE,SAAkB,EAAE,OAA6B,EAAA;AACvE,IAAA,OAAO,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;AACtF,QAAA,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC;AAClF,QAAA,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,WAAW,CAAC,SAAiB,EAAE,SAAiB,EAAA;;AAEvD,IAAA,OAAO,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,kBAAkB,CACvB,SAA0B,EAAE,SAA0B,EACtD,YAA+B,EAAA;IACjC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;AAAE,QAAA,OAAO,KAAK,CAAC;AACrE,IAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;AAC5E,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACD,IAAA,IAAI,SAAS,CAAC,gBAAgB,KAAK,SAAS,CAAC,gBAAgB;AAAE,QAAA,OAAO,KAAK,CAAC;AAC5E,IAAA,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;AACzC,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC;AACjF,YAAA,OAAO,KAAK,CAAC;AAChB,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,SAAiB,EAAA;AAC1D,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM;QACjE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,mBAAmB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,oBAAoB,CACzB,SAA0B,EAAE,SAA0B,EACtD,YAA+B,EAAA;AACjC,IAAA,OAAO,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,0BAA0B,CAC/B,SAA0B,EAAE,SAA0B,EAAE,cAA4B,EACpF,YAA+B,EAAA;IACjC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE;AACrD,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;QACtD,IAAI,SAAS,CAAC,WAAW,EAAE;AAAE,YAAA,OAAO,KAAK,CAAC;QAC1C,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,YAAY,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;AAC5E,QAAA,OAAO,IAAI,CAAC;AAEb,KAAA;SAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,EAAE;QAC9D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;QACjE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,cAAc,EAAE,YAAY,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;AACvF,QAAA,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAC;AACzC,YAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE;AACrF,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AACF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;AAEb,KAAA;AAAM,SAAA;AACL,QAAA,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACnE,QAAA,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;QAC1D,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;AAChF,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;AACtD,QAAA,OAAO,0BAA0B,CAC7B,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AACxE,KAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CACtB,cAA4B,EAAE,cAA4B,EAAE,OAA0B,EAAA;IACxF,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC,KAAI;AAClD,QAAA,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAC7F,KAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;MACU,OAAO,CAAA;AAMlB,IAAA,WAAA;;AAEW,IAAA,IAAA,GAAwB,IAAI,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC;;AAEnD,IAAA,WAAA,GAAsB,EAAE;;AAExB,IAAA,QAAA,GAAwB,IAAI,EAAA;AAJ5B,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAA+C;AAEnD,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AAExB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAoB;AACrC,QAAA,IAAIA,aAAW,EAAE;AACf,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,gBAAA,MAAM,IAAIC,aAAY,CAAA,IAAA,kDAElB,4DAA4D;AACxD,oBAAA,iGAAiG,CAAC,CAAC;AAC5G,aAAA;AACF,SAAA;KACF;AAED,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3D,SAAA;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;;IAGD,QAAQ,GAAA;AACN,QAAA,OAAO,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAC3C;AACF,CAAA;AAED;;;;;;;;AAQG;MACU,eAAe,CAAA;AAe1B,IAAA,WAAA;;IAEW,QAAsB;;IAEtB,QAA0C,EAAA;AAF1C,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAc;AAEtB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkC;;AANrD,QAAA,IAAM,CAAA,MAAA,GAAyB,IAAI,CAAC;AAOlC,QAAA,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAM,EAAE,CAAM,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;KACxD;;IAGD,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;KAClC;;AAGD,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;KAC1C;;IAGD,QAAQ,GAAA;AACN,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;KAC7B;AACF,CAAA;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;MACU,UAAU,CAAA;AAIrB,IAAA,WAAA;;IAEW,IAAY;;IAGZ,UAAoC,EAAA;AAHpC,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AAGZ,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAA0B;KAAI;AAEnD,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzD,SAAA;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;;IAGD,QAAQ,GAAA;AACN,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;KAC5B;AACF,CAAA;AAEe,SAAA,aAAa,CAAC,EAAgB,EAAE,EAAgB,EAAA;AAC9D,IAAA,OAAO,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/F,CAAC;AAEe,SAAA,SAAS,CAAC,EAAgB,EAAE,EAAgB,EAAA;AAC1D,IAAA,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;AAAE,QAAA,OAAO,KAAK,CAAC;IAC1C,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAEe,SAAA,oBAAoB,CAChC,OAAwB,EAAE,EAA0C,EAAA;IACtE,IAAI,GAAG,GAAQ,EAAE,CAAC;IAClB,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAsB,EAAE,WAAmB,KAAI;QACxE,IAAI,WAAW,KAAK,cAAc,EAAE;AAClC,YAAA,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AAC1C,SAAA;AACH,KAAC,CAAC,CAAC;IACH,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAsB,EAAE,WAAmB,KAAI;QACxE,IAAI,WAAW,KAAK,cAAc,EAAE;AAClC,YAAA,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AAC1C,SAAA;AACH,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAGD;;;;;;;;;;;AAWG;MAEmB,aAAa,CAAA;;qHAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;yHAAb,aAAa,EAAA,UAAA,EADV,MAAM,EAAc,UAAA,EAAA,MAAM,IAAI,oBAAoB,EAAE,EAAA,CAAA,CAAA;sGACvD,aAAa,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA,EAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,oBAAoB,EAAE,EAAC,CAAA;;AAS9E;;;;;;;;;;;;;;;;;AAiBG;MACU,oBAAoB,CAAA;;AAE/B,IAAA,KAAK,CAAC,GAAW,EAAA;AACf,QAAA,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7B,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;KACnF;;AAGD,IAAA,SAAS,CAAC,IAAa,EAAA;AACrB,QAAA,MAAM,OAAO,GAAG,CAAI,CAAA,EAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA,CAAE,CAAC;QACxD,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,QAAQ,GACV,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAQ,MAAA,CAAA,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;AAEpF,QAAA,OAAO,GAAG,OAAO,CAAA,EAAG,KAAK,CAAG,EAAA,QAAQ,EAAE,CAAC;KACxC;AACF,CAAA;AAED,MAAM,kBAAkB,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAEhD,SAAU,cAAc,CAAC,OAAwB,EAAA;IACrD,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAwB,EAAE,IAAa,EAAA;AAC/D,IAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE;AAC1B,QAAA,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AAChC,KAAA;AAED,IAAA,IAAI,IAAI,EAAE;QACR,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC5C,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC;AACzD,YAAA,EAAE,CAAC;QACP,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAkB,EAAE,CAAS,KAAI;YAC1D,IAAI,CAAC,KAAK,cAAc,EAAE;AACxB,gBAAA,QAAQ,CAAC,IAAI,CAAC,CAAA,EAAG,CAAC,CAAI,CAAA,EAAA,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;AACrD,aAAA;AACH,SAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;AAE7E,KAAA;AAAM,SAAA;QACL,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAkB,EAAE,CAAS,KAAI;YAC/E,IAAI,CAAC,KAAK,cAAc,EAAE;AACxB,gBAAA,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACpE,aAAA;AAED,YAAA,OAAO,CAAC,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAE,CAAA,CAAC,CAAC;AAChD,SAAC,CAAC,CAAC;;QAGH,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,IAAI,EAAE;YAC1F,OAAO,CAAA,EAAG,cAAc,CAAC,OAAO,CAAC,CAAI,CAAA,EAAA,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;AACpD,SAAA;AAED,QAAA,OAAO,CAAG,EAAA,cAAc,CAAC,OAAO,CAAC,CAAA,EAAA,EAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9D,KAAA;AACH,CAAC;AAED;;;;;AAKG;AACH,SAAS,eAAe,CAAC,CAAS,EAAA;IAChC,OAAO,kBAAkB,CAAC,CAAC,CAAC;AACvB,SAAA,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACpB,SAAA,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AACrB,SAAA,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACpB,SAAA,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;AAKG;AACG,SAAU,cAAc,CAAC,CAAS,EAAA;IACtC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAClD,CAAC;AAED;;;;;AAKG;AACG,SAAU,iBAAiB,CAAC,CAAS,EAAA;AACzC,IAAA,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;AAMG;AACG,SAAU,gBAAgB,CAAC,CAAS,EAAA;IACxC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC9F,CAAC;AAEK,SAAU,MAAM,CAAC,CAAS,EAAA;AAC9B,IAAA,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED;AACA;AACM,SAAU,WAAW,CAAC,CAAS,EAAA;IACnC,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC;AAEK,SAAU,aAAa,CAAC,IAAgB,EAAA;AAC5C,IAAA,OAAO,CAAG,EAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAG,EAAA,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AACnF,CAAC;AAED,SAAS,qBAAqB,CAAC,MAA+B,EAAA;AAC5D,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACrB,SAAA,GAAG,CAAC,GAAG,IAAI,CAAA,CAAA,EAAI,gBAAgB,CAAC,GAAG,CAAC,CAAI,CAAA,EAAA,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;SACxE,IAAI,CAAC,EAAE,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA4B,EAAA;AACxD,IAAA,MAAM,SAAS,GACX,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACd,SAAA,GAAG,CAAC,CAAC,IAAI,KAAI;AACZ,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACvB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA,EAAG,cAAc,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAE,CAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACxE,CAAG,EAAA,cAAc,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,cAAc,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;AACzD,KAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1B,IAAA,OAAO,SAAS,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE,GAAG,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,GAAG,eAAe,CAAC;AACnC,SAAS,aAAa,CAAC,GAAW,EAAA;IAChC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACpC,IAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,cAAc,GAAG,WAAW,CAAC;AACnC;AACA,SAAS,gBAAgB,CAAC,GAAW,EAAA;IACnC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AACxC,IAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,oBAAoB,GAAG,SAAS,CAAC;AACvC;AACA,SAAS,uBAAuB,CAAC,GAAW,EAAA;IAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAC9C,IAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,SAAS,CAAA;AAGb,IAAA,WAAA,CAAoB,GAAW,EAAA;AAAX,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;KACtB;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAE1B,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACjF,YAAA,OAAO,IAAI,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,SAAA;;QAGD,OAAO,IAAI,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;KACtD;IAED,gBAAgB,GAAA;QACd,MAAM,MAAM,GAAW,EAAE,CAAC;AAC1B,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;YAC7B,GAAG;AACD,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAC9B,aAAA,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;AACrC,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;IAED,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;KAC9E;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE;AACzB,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAE1B,MAAM,QAAQ,GAAiB,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YAC7B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACpC,SAAA;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AAC3F,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACpC,SAAA;QAED,IAAI,QAAQ,GAAwC,EAAE,CAAC;AACvD,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAClB,YAAA,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACnC,SAAA;QAED,IAAI,GAAG,GAAwC,EAAE,CAAC;AAClD,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC5B,YAAA,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;AAED,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3D,GAAG,CAAC,cAAc,CAAC,GAAG,IAAI,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/D,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACZ;;;IAIO,YAAY,GAAA;QAClB,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC3C,YAAA,MAAM,IAAIA,aAAY,CAAA,IAAA,gDAElBD,aAAW,IAAI,mDAAmD,IAAI,CAAC,SAAS,CAAA,EAAA,CAAI,CAAC,CAAC;AAC3F,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnB,QAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;KAC/D;IAEO,iBAAiB,GAAA;QACvB,MAAM,MAAM,GAA4B,EAAE,CAAC;AAC3C,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACzB,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,UAAU,CAAC,MAA+B,EAAA;QAChD,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE;YACR,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,KAAK,GAAQ,EAAE,CAAC;AACpB,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;YAC7B,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjD,YAAA,IAAI,UAAU,EAAE;gBACd,KAAK,GAAG,UAAU,CAAC;AACnB,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrB,aAAA;AACF,SAAA;QAED,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;KACrC;;AAGO,IAAA,eAAe,CAAC,MAAc,EAAA;QACpC,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,EAAE;YACR,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,KAAK,GAAQ,EAAE,CAAC;AACpB,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;YAC7B,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3D,YAAA,IAAI,UAAU,EAAE;gBACd,KAAK,GAAG,UAAU,CAAC;AACnB,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrB,aAAA;AACF,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AACpC,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;AAEtC,QAAA,IAAI,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;;AAErC,YAAA,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC9B,gBAAA,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC;AAC1B,gBAAA,MAAM,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AACjC,aAAA;AACD,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7B,SAAA;AAAM,aAAA;;AAEL,YAAA,MAAM,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AACjC,SAAA;KACF;;AAGO,IAAA,WAAW,CAAC,YAAqB,EAAA;QACvC,MAAM,QAAQ,GAAqC,EAAE,CAAC;AACtD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAElB,QAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE3C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;;YAIzC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;AAChD,gBAAA,MAAM,IAAIC,aAAY,CAAA,IAAA,wCACeD,aAAW,IAAI,qBAAqB,IAAI,CAAC,GAAG,CAAA,CAAA,CAAG,CAAC,CAAC;AACvF,aAAA;YAED,IAAI,UAAU,GAAW,SAAU,CAAC;YACpC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAC1B,gBAAA,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,gBAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACzB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnB,aAAA;AAAM,iBAAA,IAAI,YAAY,EAAE;gBACvB,UAAU,GAAG,cAAc,CAAC;AAC7B,aAAA;AAED,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC;AACxB,gBAAA,IAAI,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC9F,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC;KACjB;AAEO,IAAA,cAAc,CAAC,GAAW,EAAA;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KACvC;;AAGO,IAAA,eAAe,CAAC,GAAW,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,OAAO,CAAC,GAAW,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;AAC9B,YAAA,MAAM,IAAIC,aAAY,CACwB,IAAA,iDAAAD,aAAW,IAAI,CAAA,UAAA,EAAa,GAAG,CAAA,EAAA,CAAI,CAAC,CAAC;AACpF,SAAA;KACF;AACF,CAAA;AAEK,SAAU,UAAU,CAAC,aAA8B,EAAA;IACvD,OAAO,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AACpC,QAAA,IAAI,eAAe,CAAC,EAAE,EAAE,EAAC,CAAC,cAAc,GAAG,aAAa,EAAC,CAAC;AAC1D,QAAA,aAAa,CAAC;AACpB,CAAC;AAED;;;;AAIG;AACG,SAAU,kBAAkB,CAAC,YAA6B,EAAA;IAC9D,MAAM,WAAW,GAAoC,EAAE,CAAC;IACxD,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;QAC5D,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACjD,QAAA,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;;AAEjD,QAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,WAAW,EAAE,EAAE;AACtE,YAAA,WAAW,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC;AAC3C,SAAA;AACF,KAAA;IACD,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAClE,IAAA,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;AAOG;AACH,SAAS,oBAAoB,CAAC,CAAkB,EAAA;AAC9C,IAAA,IAAI,CAAC,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;QAC1D,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACrC,QAAA,OAAO,IAAI,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvE,KAAA;AAED,IAAA,OAAO,CAAC,CAAC;AACX,CAAC;AAEK,SAAU,SAAS,CAAC,CAAM,EAAA;IAC9B,OAAO,CAAC,YAAY,OAAO,CAAC;AAC9B;;ACrwBA,MAAMA,aAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDG;AACa,SAAA,yBAAyB,CACrC,UAAkC,EAAE,QAAe,EAAE,WAA2B,GAAA,IAAI,EACpF,QAAA,GAAwB,IAAI,EAAA;AAC9B,IAAA,MAAM,yBAAyB,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;IAC1E,OAAO,6BAA6B,CAAC,yBAAyB,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AACnG,CAAC;AAEK,SAAU,2BAA2B,CAAC,KAA6B,EAAA;AACvE,IAAA,IAAI,WAAsC,CAAC;IAE3C,SAAS,oCAAoC,CAAC,YAAoC,EAAA;QAEhF,MAAM,YAAY,GAAwC,EAAE,CAAC;AAC7D,QAAA,KAAK,MAAM,aAAa,IAAI,YAAY,CAAC,QAAQ,EAAE;AACjD,YAAA,MAAM,IAAI,GAAG,oCAAoC,CAAC,aAAa,CAAC,CAAC;AACjE,YAAA,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3C,SAAA;QACD,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACzE,IAAI,YAAY,KAAK,KAAK,EAAE;YAC1B,WAAW,GAAG,YAAY,CAAC;AAC5B,SAAA;AACD,QAAA,OAAO,YAAY,CAAC;KACrB;IACD,MAAM,aAAa,GAAG,oCAAoC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACvE,IAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AAEnD,IAAA,OAAO,WAAW,KAAX,IAAA,IAAA,WAAW,cAAX,WAAW,GAAI,gBAAgB,CAAC;AACzC,CAAC;AAEK,SAAU,6BAA6B,CACzC,UAA2B,EAAE,QAAe,EAAE,WAAwB,EACtE,QAAqB,EAAA;IACvB,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,OAAO,IAAI,CAAC,MAAM,EAAE;AAClB,QAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;AACpB,KAAA;;;;AAID,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AACtD,KAAA;AAED,IAAA,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAExC,IAAA,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC7E,KAAA;IAED,MAAM,QAAQ,GAAG,kCAAkC,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAC3E,IAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe;AAC5C,QAAA,0BAA0B,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;AAC/E,QAAA,kBAAkB,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5E,IAAA,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AACnF,CAAC;AAEK,SAAU,aAAa,CACzB,KAAqB,EAAE,OAAgB,EAAE,QAAe,EAAE,WAAwB,EAClF,QAAqB,EAAA;;AACvB,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC9E,KAAA;AAED,IAAA,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAExC,IAAA,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC7F,KAAA;IAED,SAAS,wBAAwB,CAAC,aAAqB,EAAA;;AACrD,QAAA,MAAM,gBAAgB,GAClB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAEnF,QAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,eAAe;AACjD,YAAA,0BAA0B,CACtB,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;AACxE,YAAA,kBAAkB,CAAC,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5F,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KAC/F;;;;;IAKD,MAAM,MAAM,GAAG,wBAAwB,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC,CAAC;AAExE,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,OAAY,EAAA;AAClC,IAAA,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACpG,CAAC;AAED;;;AAGG;AACH,SAAS,oBAAoB,CAAC,OAAY,EAAA;AACxC,IAAA,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;AAC3E,CAAC;AAED,SAAS,IAAI,CACT,OAAwB,EAAE,eAAgC,EAAE,eAAgC,EAC5F,WAAwB,EAAE,QAAqB,EAAA;IACjD,IAAI,EAAE,GAAQ,EAAE,CAAC;AACjB,IAAA,IAAI,WAAW,EAAE;QACf,OAAO,CAAC,WAAW,EAAE,CAAC,KAAU,EAAE,IAAS,KAAI;AAC7C,YAAA,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,GAAG,CAAC,CAAA,CAAE,CAAC,GAAG,CAAG,EAAA,KAAK,EAAE,CAAC;AAC/E,SAAC,CAAC,CAAC;AACJ,KAAA;AAED,IAAA,IAAI,aAA8B,CAAC;IACnC,IAAI,OAAO,KAAK,eAAe,EAAE;QAC/B,aAAa,GAAG,eAAe,CAAC;AACjC,KAAA;AAAM,SAAA;QACL,aAAa,GAAG,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;AAC3E,KAAA;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;IAC9D,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;AAMG;AACH,SAAS,cAAc,CACnB,OAAwB,EAAE,UAA2B,EACrD,UAA2B,EAAA;IAC7B,MAAM,QAAQ,GAAqC,EAAE,CAAC;IACtD,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAkB,EAAE,UAAkB,KAAI;QACnE,IAAI,CAAC,KAAK,UAAU,EAAE;AACpB,YAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AACnC,SAAA;AAAM,aAAA;AACL,YAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAClE,SAAA;AACH,KAAC,CAAC,CAAC;IACH,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,CAAA;AACd,IAAA,WAAA,CACW,UAAmB,EAAS,kBAA0B,EAAS,QAAe,EAAA;AAA9E,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAS;AAAS,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAQ;AAAS,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAO;AACvF,QAAA,IAAI,UAAU,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACpE,MAAM,IAAIC,aAAY,CAAA,IAAA,oDAElBD,aAAW,IAAI,4CAA4C,CAAC,CAAC;AAClE,SAAA;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC1D,IAAI,aAAa,IAAI,aAAa,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE;YACrD,MAAM,IAAIC,aAAY,CAAA,IAAA,mDAElBD,aAAW,IAAI,yCAAyC,CAAC,CAAC;AAC/D,SAAA;KACF;IAEM,MAAM,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;KACjF;AACF,CAAA;AAED;AACA,SAAS,iBAAiB,CAAC,QAAe,EAAA;IACxC,IAAI,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,KAAK,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QACrF,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC1C,KAAA;IAED,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,IAAA,MAAM,GAAG,GAAU,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,KAAI;QACtD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,IAAI,EAAE;YAC1C,IAAI,GAAG,CAAC,OAAO,EAAE;gBACf,MAAM,OAAO,GAAuB,EAAE,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,QAAa,EAAE,IAAY,KAAI;oBACnD,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;AAChF,iBAAC,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,GAAG,EAAE,EAAC,OAAO,EAAC,CAAC,CAAC;AAC5B,aAAA;YAED,IAAI,GAAG,CAAC,WAAW,EAAE;gBACnB,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;AAClC,aAAA;AACF,SAAA;AAED,QAAA,IAAI,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,EAAE;AAC9B,YAAA,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;AACtB,SAAA;QAED,IAAI,MAAM,KAAK,CAAC,EAAE;AAChB,YAAA,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,SAAS,KAAI;AAC5C,gBAAA,IAAI,SAAS,IAAI,CAAC,IAAI,OAAO,KAAK,GAAG,EAAE;;AAEtC,iBAAA;qBAAM,IAAI,SAAS,IAAI,CAAC,IAAI,OAAO,KAAK,EAAE,EAAE;oBAC3C,UAAU,GAAG,IAAI,CAAC;AACnB,iBAAA;AAAM,qBAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AAC3B,oBAAA,kBAAkB,EAAE,CAAC;AACtB,iBAAA;qBAAM,IAAI,OAAO,IAAI,EAAE,EAAE;AACxB,oBAAA,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,iBAAA;AACH,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,GAAG,CAAC;AACZ,SAAA;AAED,QAAA,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;KACtB,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,IAAI,UAAU,CAAC,UAAU,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,QAAQ,CAAA;AACZ,IAAA,WAAA,CACW,YAA6B,EAAS,eAAwB,EAAS,KAAa,EAAA;AAApF,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAiB;AAAS,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAS;AAAS,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;KAC9F;AACF,CAAA;AAED,SAAS,kCAAkC,CACvC,GAAe,EAAE,IAAqB,EAAE,MAAuB,EAAA;IACjE,IAAI,GAAG,CAAC,UAAU,EAAE;QAClB,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACpC,KAAA;IAED,IAAI,CAAC,MAAM,EAAE;;;;;QAKX,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACvC,KAAA;AACD,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE;QAC1B,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,KAAA;AAED,IAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC;IACpD,OAAO,gCAAgC,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,oBAAoB,CACzB,GAAe,EAAE,IAAa,EAAE,YAA6B,EAC7D,aAAqB,EAAA;IACvB,IAAI,GAAG,CAAC,UAAU,EAAE;QAClB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,KAAA;AAED,IAAA,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;;;;AAIxB,QAAA,MAAM,eAAe,GAAG,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC;QACnD,OAAO,IAAI,QAAQ,CAAC,YAAY,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;AACvD,KAAA;AAED,IAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzD,IAAA,MAAM,KAAK,GAAG,aAAa,GAAG,QAAQ,CAAC;IACvC,OAAO,gCAAgC,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,gCAAgC,CACrC,KAAsB,EAAE,KAAa,EAAE,kBAA0B,EAAA;IACnE,IAAI,CAAC,GAAG,KAAK,CAAC;IACd,IAAI,EAAE,GAAG,KAAK,CAAC;IACf,IAAI,EAAE,GAAG,kBAAkB,CAAC;IAC5B,OAAO,EAAE,GAAG,EAAE,EAAE;QACd,EAAE,IAAI,EAAE,CAAC;AACT,QAAA,CAAC,GAAG,CAAC,CAAC,MAAO,CAAC;QACd,IAAI,CAAC,CAAC,EAAE;YACN,MAAM,IAAIC,aAAY,CAAA,IAAA,6CACoBD,aAAW,IAAI,2BAA2B,CAAC,CAAC;AACvF,SAAA;AACD,QAAA,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxB,KAAA;IACD,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,UAAU,CAAC,QAAmB,EAAA;AACrC,IAAA,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AACrC,QAAA,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC5B,KAAA;AAED,IAAA,OAAO,EAAC,CAAC,cAAc,GAAG,QAAQ,EAAC,CAAC;AACtC,CAAC;AAED,SAAS,kBAAkB,CACvB,YAA6B,EAAE,UAAkB,EAAE,QAAe,EAAA;IACpE,IAAI,CAAC,YAAY,EAAE;QACjB,YAAY,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5C,KAAA;AACD,IAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE;QACpE,OAAO,0BAA0B,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACvE,KAAA;IAED,MAAM,CAAC,GAAG,YAAY,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AACtD,IAAA,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE;QACzD,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/E,QAAA,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;AACtB,YAAA,IAAI,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzF,OAAO,0BAA0B,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;AACzD,KAAA;SAAM,IAAI,CAAC,CAAC,KAAK,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;QACjD,OAAO,IAAI,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACvD,KAAA;SAAM,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE;QACjD,OAAO,qBAAqB,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAClE,KAAA;SAAM,IAAI,CAAC,CAAC,KAAK,EAAE;QAClB,OAAO,0BAA0B,CAAC,YAAY,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;AACpE,KAAA;AAAM,SAAA;QACL,OAAO,qBAAqB,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAClE,KAAA;AACH,CAAC;AAED,SAAS,0BAA0B,CAC/B,YAA6B,EAAE,UAAkB,EAAE,QAAe,EAAA;AACpE,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACzB,OAAO,IAAI,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACvD,KAAA;AAAM,SAAA;AACL,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAqC,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;QAqBtD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;YACjE,YAAY,CAAC,gBAAgB,KAAK,CAAC;YACnC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/D,YAAA,OAAO,0BAA0B,CAC7B,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAClE,SAAA;QAED,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAI;AACpC,YAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,gBAAA,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;AACvB,aAAA;YACD,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,gBAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,kBAAkB,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC5F,aAAA;AACH,SAAC,CAAC,CAAC;QAEH,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAsB,EAAE,WAAmB,KAAI;AAC7E,YAAA,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE;AACtC,gBAAA,QAAQ,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;AAC/B,aAAA;AACH,SAAC,CAAC,CAAC;QACH,OAAO,IAAI,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC7D,KAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,YAA6B,EAAE,UAAkB,EAAE,QAAe,EAAA;IACtF,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,gBAAgB,GAAG,UAAU,CAAC;AAElC,IAAA,MAAM,OAAO,GAAG,EAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAC,CAAC;AAC9D,IAAA,OAAO,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE;AACtD,QAAA,IAAI,mBAAmB,IAAI,QAAQ,CAAC,MAAM;AAAE,YAAA,OAAO,OAAO,CAAC;QAC3D,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACrD,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;;;;AAI9C,QAAA,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE;YACjC,MAAM;AACP,SAAA;AACD,QAAA,MAAM,IAAI,GAAG,CAAG,EAAA,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,GACN,mBAAmB,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,mBAAmB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAEzF,QAAA,IAAI,gBAAgB,GAAG,CAAC,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM;AAEtD,QAAA,IAAI,IAAI,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YAC5E,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAAE,gBAAA,OAAO,OAAO,CAAC;YAC/C,mBAAmB,IAAI,CAAC,CAAC;AAC1B,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC;AAAE,gBAAA,OAAO,OAAO,CAAC;AAC7C,YAAA,mBAAmB,EAAE,CAAC;AACvB,SAAA;AACD,QAAA,gBAAgB,EAAE,CAAC;AACpB,KAAA;AAED,IAAA,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,EAAC,CAAC;AACvF,CAAC;AAED,SAAS,qBAAqB,CAC1B,YAA6B,EAAE,UAAkB,EAAE,QAAe,EAAA;AACpE,IAAA,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAEzD,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAA,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE;AAC1B,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAA,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE;YACjC,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3D,YAAA,OAAO,IAAI,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC7C,SAAA;;QAGD,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YAC1C,MAAM,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC5C,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,YAAA,CAAC,EAAE,CAAC;YACJ,SAAS;AACV,SAAA;QAED,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAA,EAAG,OAAO,CAAA,CAAE,CAAC;QAC5F,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QAChE,IAAI,IAAI,IAAI,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;AACxC,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC,IAAI,CAAC,CAAC;AACR,SAAA;AAAM,aAAA;YACL,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AACrC,YAAA,CAAC,EAAE,CAAC;AACL,SAAA;AACF,KAAA;AACD,IAAA,OAAO,IAAI,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,wBAAwB,CAAC,OAA2C,EAAA;IAE3E,MAAM,QAAQ,GAAwC,EAAE,CAAC;IACzD,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAI;AACpC,QAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,YAAA,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;AACvB,SAAA;QACD,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,YAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAAC,IAAI,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpF,SAAA;AACH,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,MAA4B,EAAA;IAC7C,MAAM,GAAG,GAA4B,EAAE,CAAC;AACxC,IAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAM,EAAE,CAAS,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA,CAAE,CAAC,CAAC;AACxD,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,MAA4B,EAAE,OAAmB,EAAA;AAC9E,IAAA,OAAO,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AAC1E;;ACvfO,MAAM,qBAAqB,GAAG,YAAY,CAAC;AA2BlD;;;;;;;;;;;;;;;;;;;;;;;AAuBG;MACU,WAAW,CAAA;AACtB,IAAA,WAAA;;IAEW,EAAU;;IAEV,GAAW,EAAA;AAFX,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAQ;AAEV,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;KAAI;AAC3B,CAAA;AAED;;;;AAIG;AACG,MAAO,eAAgB,SAAQ,WAAW,CAAA;AAgC9C,IAAA,WAAA;;IAEI,EAAU;;IAEV,GAAW;;AAEX,IAAA,iBAAA,GAAuC,YAAY;;AAEnD,IAAA,aAAA,GAA+D,IAAI,EAAA;AACrE,QAAA,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAxCR,QAAA,IAAA,CAAA,IAAI,GAA6B,CAAA,iCAAA;AAyCxC,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;AAC3C,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACpC;;IAGQ,QAAQ,GAAA;QACf,OAAO,CAAA,oBAAA,EAAuB,IAAI,CAAC,EAAE,WAAW,IAAI,CAAC,GAAG,CAAA,EAAA,CAAI,CAAC;KAC9D;AACF,CAAA;AAED;;;;;;;;AAQG;AACG,MAAO,aAAc,SAAQ,WAAW,CAAA;AAG5C,IAAA,WAAA;;IAEI,EAAU;;IAEV,GAAW;;IAEJ,iBAAyB,EAAA;AAClC,QAAA,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AADN,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAQ;AAR3B,QAAA,IAAA,CAAA,IAAI,GAA2B,CAAA,+BAAA;KAUvC;;IAGQ,QAAQ,GAAA;AACf,QAAA,OAAO,CAAqB,kBAAA,EAAA,IAAI,CAAC,EAAE,CAAW,QAAA,EAAA,IAAI,CAAC,GAAG,CAClD,uBAAA,EAAA,IAAI,CAAC,iBAAiB,IAAI,CAAC;KAChC;AACF,CAAA;AA+CD;;;;;;;;;;AAUG;AACG,MAAO,gBAAiB,SAAQ,WAAW,CAAA;AAG/C,IAAA,WAAA;;IAEI,EAAU;;IAEV,GAAW;AACX;;;AAGG;IACI,MAAc;AACrB;;;;AAIG;IACM,IAAiC,EAAA;AAC5C,QAAA,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAPN,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAMZ,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAA6B;AAjBrC,QAAA,IAAA,CAAA,IAAI,GAA8B,CAAA,kCAAA;KAmB1C;;IAGQ,QAAQ,GAAA;QACf,OAAO,CAAA,qBAAA,EAAwB,IAAI,CAAC,EAAE,WAAW,IAAI,CAAC,GAAG,CAAA,EAAA,CAAI,CAAC;KAC/D;AACF,CAAA;AAED;;;;;;;AAOG;AACG,MAAO,iBAAkB,SAAQ,WAAW,CAAA;AAGhD,IAAA,WAAA;;IAEI,EAAU;;IAEV,GAAW;AACX;;;AAGG;IACI,MAAc;AACrB;;;;AAIG;IACM,IAA4B,EAAA;AACvC,QAAA,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAPN,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAMZ,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAwB;AAjBhC,QAAA,IAAA,CAAA,IAAI,GAA+B,EAAA,mCAAA;KAmB3C;AACF,CAAA;AAED;;;;;;;;AAQG;AACG,MAAO,eAAgB,SAAQ,WAAW,CAAA;AAG9C,IAAA,WAAA;;IAEI,EAAU;;IAEV,GAAW;;IAEJ,KAAU;AACjB;;;;;AAKG;IACM,MAA4B,EAAA;AACvC,QAAA,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AARN,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAK;AAOR,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAsB;AAfhC,QAAA,IAAA,CAAA,IAAI,GAA6B,CAAA,iCAAA;KAiBzC;;IAGQ,QAAQ,GAAA;AACf,QAAA,OAAO,CAAuB,oBAAA,EAAA,IAAI,CAAC,EAAE,CAAW,QAAA,EAAA,IAAI,CAAC,GAAG,CAAa,UAAA,EAAA,IAAI,CAAC,KAAK,GAAG,CAAC;KACpF;AACF,CAAA;AAED;;;;AAIG;AACG,MAAO,gBAAiB,SAAQ,WAAW,CAAA;AAG/C,IAAA,WAAA;;IAEI,EAAU;;IAEV,GAAW;;IAEJ,iBAAyB;;IAEzB,KAA0B,EAAA;AACnC,QAAA,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAHN,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAQ;AAEzB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAqB;AAV5B,QAAA,IAAA,CAAA,IAAI,GAA8B,CAAA,kCAAA;KAY1C;;IAGQ,QAAQ,GAAA;AACf,QAAA,OAAO,wBAAwB,IAAI,CAAC,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,GAAG,CACrD,uBAAA,EAAA,IAAI,CAAC,iBAAiB,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,GAAG,CAAC;KACtD;AACF,CAAA;AAED;;;;;;AAMG;AACG,MAAO,gBAAiB,SAAQ,WAAW,CAAA;AAG/C,IAAA,WAAA;;IAEI,EAAU;;IAEV,GAAW;;IAEJ,iBAAyB;;IAEzB,KAA0B,EAAA;AACnC,QAAA,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAHN,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAQ;AAEzB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAqB;AAV5B,QAAA,IAAA,CAAA,IAAI,GAA8B,CAAA,kCAAA;KAY1C;IAEQ,QAAQ,GAAA;AACf,QAAA,OAAO,wBAAwB,IAAI,CAAC,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,GAAG,CACrD,uBAAA,EAAA,IAAI,CAAC,iBAAiB,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,GAAG,CAAC;KACtD;AACF,CAAA;AAED;;;;;;AAMG;AACG,MAAO,cAAe,SAAQ,WAAW,CAAA;AAG7C,IAAA,WAAA;;IAEI,EAAU;;IAEV,GAAW;;IAEJ,iBAAyB;;IAEzB,KAA0B;;IAE1B,cAAuB,EAAA;AAChC,QAAA,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AALN,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAQ;AAEzB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAqB;AAE1B,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAS;AAZzB,QAAA,IAAA,CAAA,IAAI,GAA4B,CAAA,gCAAA;KAcxC;IAEQ,QAAQ,GAAA;QACf,OAAO,CAAA,mBAAA,EAAsB,IAAI,CAAC,EAAE,WAAW,IAAI,CAAC,GAAG,CACnD,uBAAA,EAAA,IAAI,CAAC,iBAAiB,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,qBAAqB,IAAI,CAAC,cAAc,CAAA,CAAA,CAAG,CAAC;KAC9F;AACF,CAAA;AAED;;;;;;;;;AASG;AACG,MAAO,YAAa,SAAQ,WAAW,CAAA;AAG3C,IAAA,WAAA;;IAEI,EAAU;;IAEV,GAAW;;IAEJ,iBAAyB;;IAEzB,KAA0B,EAAA;AACnC,QAAA,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAHN,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAQ;AAEzB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAqB;AAV5B,QAAA,IAAA,CAAA,IAAI,GAA0B,CAAA,8BAAA;KAYtC;IAEQ,QAAQ,GAAA;AACf,QAAA,OAAO,oBAAoB,IAAI,CAAC,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,GAAG,CACjD,uBAAA,EAAA,IAAI,CAAC,iBAAiB,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,GAAG,CAAC;KACtD;AACF,CAAA;AAED;;;;;AAKG;AACG,MAAO,UAAW,SAAQ,WAAW,CAAA;AAGzC,IAAA,WAAA;;IAEI,EAAU;;IAEV,GAAW;;IAEJ,iBAAyB;;IAEzB,KAA0B,EAAA;AACnC,QAAA,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAHN,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAQ;AAEzB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAqB;AAV5B,QAAA,IAAA,CAAA,IAAI,GAAwB,CAAA,4BAAA;KAYpC;IAEQ,QAAQ,GAAA;AACf,QAAA,OAAO,kBAAkB,IAAI,CAAC,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,GAAG,CAC/C,uBAAA,EAAA,IAAI,CAAC,iBAAiB,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,GAAG,CAAC;KACtD;AACF,CAAA;AAED;;;;;;AAMG;MACU,oBAAoB,CAAA;AAG/B,IAAA,WAAA;;IAEW,KAAY,EAAA;AAAZ,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;AAJd,QAAA,IAAA,CAAA,IAAI,GAAkC,CAAA,sCAAA;KAIpB;IAC3B,QAAQ,GAAA;AACN,QAAA,OAAO,8BAA8B,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;KACzD;AACF,CAAA;AAED;;;;;;AAMG;MACU,kBAAkB,CAAA;AAG7B,IAAA,WAAA;;IAEW,KAAY,EAAA;AAAZ,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;AAJd,QAAA,IAAA,CAAA,IAAI,GAAgC,EAAA,oCAAA;KAIlB;IAC3B,QAAQ,GAAA;AACN,QAAA,OAAO,4BAA4B,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;KACvD;AACF,CAAA;AAED;;;;;;;AAOG;MACU,oBAAoB,CAAA;AAG/B,IAAA,WAAA;;IAEW,QAAgC,EAAA;AAAhC,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;AAJlC,QAAA,IAAA,CAAA,IAAI,GAAkC,EAAA,sCAAA;KAIA;IAC/C,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/E,OAAO,CAAA,4BAAA,EAA+B,IAAI,CAAA,EAAA,CAAI,CAAC;KAChD;AACF,CAAA;AAED;;;;;;AAMG;MACU,kBAAkB,CAAA;AAG7B,IAAA,WAAA;;IAEW,QAAgC,EAAA;AAAhC,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;AAJlC,QAAA,IAAA,CAAA,IAAI,GAAgC,EAAA,oCAAA;KAIE;IAC/C,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/E,OAAO,CAAA,0BAAA,EAA6B,IAAI,CAAA,EAAA,CAAI,CAAC;KAC9C;AACF,CAAA;AAED;;;;;;;AAOG;MACU,eAAe,CAAA;AAG1B,IAAA,WAAA;;IAEW,QAAgC,EAAA;AAAhC,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;AAJlC,QAAA,IAAA,CAAA,IAAI,GAA6B,EAAA,iCAAA;KAIK;IAC/C,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/E,OAAO,CAAA,uBAAA,EAA0B,IAAI,CAAA,EAAA,CAAI,CAAC;KAC3C;AACF,CAAA;AAED;;;;;;;AAOG;MACU,aAAa,CAAA;AAGxB,IAAA,WAAA;;IAEW,QAAgC,EAAA;AAAhC,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;AAJlC,QAAA,IAAA,CAAA,IAAI,GAA2B,EAAA,+BAAA;KAIO;IAC/C,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/E,OAAO,CAAA,qBAAA,EAAwB,IAAI,CAAA,EAAA,CAAI,CAAC;KACzC;AACF,CAAA;AAED;;;;AAIG;MACU,MAAM,CAAA;AAGjB,IAAA,WAAA;;IAEa,WAA0B;;IAG1B,QAA+B;;IAG/B,MAAmB,EAAA;AANnB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;AAG1B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAuB;AAG/B,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAa;AAVvB,QAAA,IAAA,CAAA,IAAI,GAAoB,EAAA,wBAAA;KAUG;IAEpC,QAAQ,GAAA;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAK,EAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC;AAC9E,QAAA,OAAO,mBAAmB,IAAI,CAAC,MAAM,CAAiB,cAAA,EAAA,GAAG,IAAI,CAAC;KAC/D;AACF,CAAA;AAyCK,SAAU,cAAc,CAAC,WAAkB,EAAA;;AAC/C,IAAA,IAAI,EAAE,MAAM,IAAI,WAAW,CAAC,EAAE;AAC5B,QAAA,OAAO,yBAAyB,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AAChE,KAAA;IACD,QAAQ,WAAW,CAAC,IAAI;QACtB,KAAA,EAAA;AACE,YAAA,OAAO,CAAwB,qBAAA,EAAA,CAAA,CAAA,EAAA,GAAA,WAAW,CAAC,QAAQ,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,EAAE,IAAI,CAAC;QAClF,KAAA,EAAA;AACE,YAAA,OAAO,CAA0B,uBAAA,EAAA,CAAA,CAAA,EAAA,GAAA,WAAW,CAAC,QAAQ,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,EAAE,IAAI,CAAC;QACpF,KAAA,EAAA;AACE,YAAA,OAAO,CAA6B,0BAAA,EAAA,CAAA,CAAA,EAAA,GAAA,WAAW,CAAC,QAAQ,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,EAAE,IAAI,CAAC;QACvF,KAAA,EAAA;AACE,YAAA,OAAO,CAA+B,4BAAA,EAAA,CAAA,CAAA,EAAA,GAAA,WAAW,CAAC,QAAQ,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,EAAE,IAAI,CAAC;QACzF,KAAA,CAAA;YACE,OAAO,CAAA,mBAAA,EAAsB,WAAW,CAAC,EAAE,WACvC,WAAW,CAAC,GAAG,CAA0B,uBAAA,EAAA,WAAW,CAAC,iBAAiB,CAAA,UAAA,EACtE,WAAW,CAAC,KAAK,qBAAqB,WAAW,CAAC,cAAc,CAAA,CAAA,CAAG,CAAC;QAC1E,KAAA,CAAA;AACE,YAAA,OAAO,wBAAwB,WAAW,CAAC,EAAE,CAAA,QAAA,EACzC,WAAW,CAAC,GAAG,CAA0B,uBAAA,EAAA,WAAW,CAAC,iBAAiB,CAAA,UAAA,EACtE,WAAW,CAAC,KAAK,GAAG,CAAC;QAC3B,KAAA,CAAA;YACE,OAAO,CAAA,qBAAA,EAAwB,WAAW,CAAC,EAAE,WAAW,WAAW,CAAC,GAAG,CAAA,EAAA,CAAI,CAAC;QAC9E,KAAA,EAAA;YACE,OAAO,CAAA,sBAAA,EAAyB,WAAW,CAAC,EAAE,WAAW,WAAW,CAAC,GAAG,CAAA,EAAA,CAAI,CAAC;QAC/E,KAAA,CAAA;AACE,YAAA,OAAO,CAAqB,kBAAA,EAAA,WAAW,CAAC,EAAE,CAAW,QAAA,EAAA,WAAW,CAAC,GAAG,CAChE,uBAAA,EAAA,WAAW,CAAC,iBAAiB,IAAI,CAAC;QACxC,KAAA,CAAA;AACE,YAAA,OAAO,CAAuB,oBAAA,EAAA,WAAW,CAAC,EAAE,CAAW,QAAA,EAAA,WAAW,CAAC,GAAG,CAClE,UAAA,EAAA,WAAW,CAAC,KAAK,GAAG,CAAC;QAC3B,KAAA,CAAA;YACE,OAAO,CAAA,oBAAA,EAAuB,WAAW,CAAC,EAAE,WAAW,WAAW,CAAC,GAAG,CAAA,EAAA,CAAI,CAAC;QAC7E,KAAA,CAAA;AACE,YAAA,OAAO,kBAAkB,WAAW,CAAC,EAAE,CAAA,QAAA,EAAW,WAAW,CAAC,GAAG,CAC7D,uBAAA,EAAA,WAAW,CAAC,iBAAiB,CAAA,UAAA,EAAa,WAAW,CAAC,KAAK,GAAG,CAAC;QACrE,KAAA,CAAA;AACE,YAAA,OAAO,oBAAoB,WAAW,CAAC,EAAE,CAAA,QAAA,EAAW,WAAW,CAAC,GAAG,CAC/D,uBAAA,EAAA,WAAW,CAAC,iBAAiB,CAAA,UAAA,EAAa,WAAW,CAAC,KAAK,GAAG,CAAC;QACrE,KAAA,EAAA;AACE,YAAA,OAAO,4BAA4B,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;QAC/D,KAAA,CAAA;AACE,YAAA,OAAO,8BAA8B,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;QACjE,KAAA,CAAA;AACE,YAAA,OAAO,wBAAwB,WAAW,CAAC,EAAE,CAAA,QAAA,EACzC,WAAW,CAAC,GAAG,CAA0B,uBAAA,EAAA,WAAW,CAAC,iBAAiB,CAAA,UAAA,EACtE,WAAW,CAAC,KAAK,GAAG,CAAC;QAC3B,KAAA,EAAA;YACE,MAAM,GAAG,GACL,WAAW,CAAC,QAAQ,GAAG,CAAA,EAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAK,EAAA,EAAA,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC;AAC3F,YAAA,OAAO,mBAAmB,WAAW,CAAC,MAAM,CAAiB,cAAA,EAAA,GAAG,IAAI,CAAC;AACxE,KAAA;AACH;;AClqBA,MAAMA,aAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC;MAGrD,mBAAmB,CAAA;IAC9B,aAAa,CACT,UAAyC,EAAE,YAAyB,EAAE,cAAuB,EAC7F,QAAe,EAAE,WAAwB,EAAE,QAAqB,EAAA;AAClE,QAAA,MAAM,CAAC,GAAG,UAAU,IAAI,YAAY,CAAC,IAAI,CAAC;AAC1C,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC/E,QAAA,IAAIA,aAAW,EAAE;YACf,MAAM,wBAAwB,GAAG,IAAI,0BAA0B,EAAE,CAAC,aAAa,CAC3E,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC/E,IAAI,wBAAwB,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC3D,gBAAA,IAAI,aAAa,GAAG,CAAqB,kBAAA,EAAA,IAAI,CAAC,QAAQ,EAAE,CAAA,oBAAA,EACpD,wBAAwB,CAAC,QAAQ,EAAE,qCAAqC,CAAC;gBAC7E,IAAI,CAAC,CAAC,UAAU,EAAE;oBAChB,aAAa,IAAI,uEAAuE,CAAC;AAC1F,iBAAA;AACD,gBAAA,IAAI,CAAC,wBAAwB,GAAG,aAAa,CAAC;AAC/C,aAAA;AACF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;2HAnBU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+HAAnB,mBAAmB,EAAA,CAAA,CAAA;sGAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;MAwBE,0BAA0B,CAAA;IACrC,aAAa,CACT,UAAyC,EAAE,YAAyB,EAAE,cAAuB,EAC7F,QAAe,EAAE,WAAwB,EAAE,QAAqB,EAAA;AAClE,QAAA,IAAI,yBAAoD,CAAC;QACzD,IAAI;AACF,YAAA,MAAM,kBAAkB,GAAG,UAAU,GAAG,UAAU,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzF,YAAA,yBAAyB,GAAG,2BAA2B,CAAC,kBAAkB,CAAC,CAAC;AAC7E,SAAA;AAAC,QAAA,OAAO,CAAU,EAAE;;;;;;AAMnB,YAAA,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;;;;;;;;gBAQnE,QAAQ,GAAG,EAAE,CAAC;AACf,aAAA;AACD,YAAA,yBAAyB,GAAG,cAAc,CAAC,IAAI,CAAC;AACjD,SAAA;QACD,OAAO,6BAA6B,CAChC,yBAAyB,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KACjE;;kIA5BU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;sIAA1B,0BAA0B,EAAA,CAAA,CAAA;sGAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;;MAiCW,qBAAqB,CAAA;;6HAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iIAArB,qBAAqB,EAAA,UAAA,EADlB,MAAM,EAAA,QAAA,EAAY,mBAAmB,EAAA,CAAA,CAAA;sGACxC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAD1C,UAAU;YAAC,IAAA,EAAA,CAAA,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAC,CAAA;;;MChElD,IAAI,CAAA;AAIf,IAAA,WAAA,CAAY,IAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACnB;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;KACzB;AAED;;AAEG;AACH,IAAA,MAAM,CAAC,CAAI,EAAA;QACT,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;KAC9C;AAED;;AAEG;AACH,IAAA,QAAQ,CAAC,CAAI,EAAA;QACX,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;KAC9C;AAED;;AAEG;AACH,IAAA,UAAU,CAAC,CAAI,EAAA;QACb,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;KAChE;AAED;;AAEG;AACH,IAAA,QAAQ,CAAC,CAAI,EAAA;QACX,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;QAE5B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AACrD,QAAA,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;KACjC;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,CAAI,EAAA;AACf,QAAA,OAAO,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;KAClD;AACF,CAAA;AAGD;AACA,SAAS,QAAQ,CAAI,KAAQ,EAAE,IAAiB,EAAA;AAC9C,IAAA,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,IAAI,CAAC;AAEtC,IAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACpC,QAAA,IAAI,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;AACvB,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;AACA,SAAS,QAAQ,CAAI,KAAQ,EAAE,IAAiB,EAAA;AAC9C,IAAA,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAExC,IAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACF,KAAA;AAED,IAAA,OAAO,EAAE,CAAC;AACZ,CAAC;MAEY,QAAQ,CAAA;IACnB,WAAmB,CAAA,KAAQ,EAAS,QAAuB,EAAA;AAAxC,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAG;AAAS,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAe;KAAI;IAE/D,QAAQ,GAAA;AACN,QAAA,OAAO,CAAY,SAAA,EAAA,IAAI,CAAC,KAAK,GAAG,CAAC;KAClC;AACF,CAAA;AAED;AACM,SAAU,iBAAiB,CAA6B,IAAsB,EAAA;IAClF,MAAM,GAAG,GAAoC,EAAE,CAAC;AAEhD,IAAA,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC;AACjE,KAAA;AAED,IAAA,OAAO,GAAG,CAAC;AACb;;AC1FA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;AACG,MAAO,WAAY,SAAQ,IAAoB,CAAA;;AAEnD,IAAA,WAAA,CACI,IAA8B;;IAEvB,QAA6B,EAAA;QACtC,KAAK,CAAC,IAAI,CAAC,CAAC;AADH,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAqB;AAEtC,QAAA,cAAc,CAAc,IAAI,EAAE,IAAI,CAAC,CAAC;KACzC;IAEQ,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KACjC;AACF,CAAA;AAEe,SAAA,gBAAgB,CAAC,OAAgB,EAAE,aAA6B,EAAA;IAC9E,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAClE,IAAA,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/D,IAAA,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;AAC1C,IAAA,MAAM,gBAAgB,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;AACjD,IAAA,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,cAAc,CAChC,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAC3F,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnB,IAAA,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;AACnC,IAAA,OAAO,IAAI,WAAW,CAAC,IAAI,QAAQ,CAAiB,SAAS,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChF,CAAC;AAEe,SAAA,wBAAwB,CACpC,OAAgB,EAAE,aAA6B,EAAA;IACjD,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,IAAA,MAAM,SAAS,GAAG,IAAI,sBAAsB,CACxC,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,EAC3F,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1B,IAAA,OAAO,IAAI,mBAAmB,CAAC,EAAE,EAAE,IAAI,QAAQ,CAAyB,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED;;;;;;;;;;;;;;;;;;AAkBG;MACU,cAAc,CAAA;;AAiBzB,IAAA,WAAA;;IAEW,GAA6B;;IAE7B,MAA0B;;IAE1B,WAA+B;;IAE/B,QAAiC;;IAEjC,IAAsB;;IAEtB,MAAc;;AAEd,IAAA,SAAyB,EAAE,cAAsC,EAAA;;AAZjE,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAA0B;AAE7B,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAoB;AAE1B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;AAE/B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAyB;AAEjC,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAkB;AAEtB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAEd,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAgB;;AAlB3B,QAAA,IAAK,CAAA,KAAA,GACV,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAO,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC,SAAS,CAAC,CAAC;AAkBvE,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;KACvC;;AAGD,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;KACzC;;AAGD,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;KAC/B;;AAGD,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KACvC;;AAGD,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAC3C;;AAGD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACzC;;AAGD,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KAC7C;AAED;;;;AAIG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAS,KAAe,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,SAAA;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED;;;AAGG;AACH,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc;AACf,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAS,KAAe,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,SAAA;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;IAED,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAA,OAAA,EAAU,IAAI,CAAC,eAAe,GAAG,CAAC;KACrF;AACF,CAAA;AAWD;;;;AAIG;SACa,0BAA0B,CACtC,KAA6B,EAC7B,4BAAuD,WAAW,EAAA;AACpE,IAAA,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IAExC,IAAI,sBAAsB,GAAG,CAAC,CAAC;IAC/B,IAAI,yBAAyB,KAAK,QAAQ,EAAE;AAC1C,QAAA,sBAAsB,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAEjD,OAAO,sBAAsB,IAAI,CAAC,EAAE;AAClC,YAAA,MAAM,OAAO,GAAG,YAAY,CAAC,sBAAsB,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,YAAY,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC;;YAExD,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,EAAE,EAAE;AAC1D,gBAAA,sBAAsB,EAAE,CAAC;;AAG1B,aAAA;AAAM,iBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC5B,gBAAA,sBAAsB,EAAE,CAAC;AAE1B,aAAA;AAAM,iBAAA;gBACL,MAAM;AACP,aAAA;AACF,SAAA;AACF,KAAA;IAED,OAAO,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;AACA,SAAS,gBAAgB,CAAC,YAAsC,EAAA;IAC9D,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;;QACvC,MAAM,MAAM,GAAO,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,GAAG,CAAC,MAAM,GAAK,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAO,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,GAAG,CAAC,IAAI,GAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,OAAO,+DACL,IAAI,CAAC,IAAI,CAAK,EAAA,GAAG,CAAC,OAAO,CAAA,EAAK,MAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,GAAK,IAAI,CAAC,aAAa,CAAC,CAAC;AACrF,QAAA,OAAO,EAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC;AACjC,KAAC,EAAE,EAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;AAsBG;MACU,sBAAsB,CAAA;;AAmBjC,IAAA,IAAI,KAAK,GAAA;;;;AAGP,QAAA,OAAO,MAAA,IAAI,CAAC,IAAI,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,CAAC,CAAC;KACnC;;AAGD,IAAA,WAAA;;IAEW,GAAiB;AACxB;;;;;;;;;;;;;;;;;;AAkBG;IACI,MAAc;;IAEd,WAAmB;;IAEnB,QAAqB;;IAErB,IAAU;;IAEV,MAAc;;AAEd,IAAA,SAAyB,EAAE,WAAuB,EAAE,UAA2B,EACtF,aAAqB,EAAE,OAAoB,EAAA;AA/BpC,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAc;AAoBjB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAEd,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;AAEnB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;AAErB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAM;AAEV,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAEd,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAgB;AAElC,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACpC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;KACzB;;AAGD,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;KAC/B;;AAGD,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KACvC;;AAGD,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAC3C;;AAGD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACzC;;AAGD,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KAC7C;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjD,SAAA;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3D,SAAA;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;IAED,QAAQ,GAAA;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC;AAC9D,QAAA,OAAO,CAAc,WAAA,EAAA,GAAG,CAAY,SAAA,EAAA,OAAO,IAAI,CAAC;KACjD;AACF,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;AACG,MAAO,mBAAoB,SAAQ,IAA4B,CAAA;;AAEnE,IAAA,WAAA;;AAEW,IAAA,GAAW,EAAE,IAAsC,EAAA;QAC5D,KAAK,CAAC,IAAI,CAAC,CAAC;AADH,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;AAEpB,QAAA,cAAc,CAAsB,IAAI,EAAE,IAAI,CAAC,CAAC;KACjD;IAEQ,QAAQ,GAAA;AACf,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;AACF,CAAA;AAED,SAAS,cAAc,CAAiC,KAAQ,EAAE,IAAiB,EAAA;AACjF,IAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;AAChC,IAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,IAAsC,EAAA;AAC3D,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAK,GAAA,CAAA,GAAG,EAAE,CAAC;AACjG,IAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAG,EAAA,CAAC,EAAE,CAAC;AAC7B,CAAC;AAED;;;;AAIG;AACG,SAAU,qBAAqB,CAAC,KAAqB,EAAA;IACzD,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC;AACvC,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC;AAC3C,QAAA,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE;YAClE,KAAK,CAAC,WAAY,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACzD,SAAA;AACD,QAAA,IAAI,eAAe,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ,EAAE;YAChD,KAAK,CAAC,QAAS,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACnD,SAAA;QACD,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE;YACxD,KAAK,CAAC,MAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC/C,SAAA;QACD,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE;YACxD,KAAK,CAAC,GAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACzC,SAAA;QACD,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE;YACpD,KAAK,CAAC,IAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC3C,SAAA;AACF,KAAA;AAAM,SAAA;AACL,QAAA,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;;QAGjC,KAAK,CAAC,IAAK,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACpD,KAAA;AACH,CAAC;AAGe,SAAA,yBAAyB,CACrC,CAAyB,EAAE,CAAyB,EAAA;IACtD,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACvF,MAAM,eAAe,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAEhD,OAAO,cAAc,IAAI,CAAC,eAAe;AACrC,SAAC,CAAC,CAAC,CAAC,MAAM,IAAI,yBAAyB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAO,CAAC,CAAC,CAAC;AACpE;;SCtdgB,iBAAiB,CAC7B,kBAAsC,EAAE,IAAyB,EACjE,SAAsB,EAAA;IACxB,MAAM,IAAI,GAAG,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;AACjG,IAAA,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,UAAU,CACf,kBAAsC,EAAE,IAAsC,EAC9E,SAAoC,EAAA;;AAEtC,IAAA,IAAI,SAAS,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AAC1F,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AAC9B,QAAA,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC;QACnC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,kBAAkB,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAC5E,QAAA,OAAO,IAAI,QAAQ,CAAiB,KAAK,EAAE,QAAQ,CAAC,CAAC;AACtD,KAAA;AAAM,SAAA;QACL,IAAI,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;;YAE/C,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpE,IAAI,mBAAmB,KAAK,IAAI,EAAE;AAChC,gBAAA,MAAM,IAAI,GAAI,mBAAmD,CAAC,KAAK,CAAC;gBACxE,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC;gBACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1E,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACF,SAAA;QAED,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3E,QAAA,OAAO,IAAI,QAAQ,CAAiB,KAAK,EAAE,QAAQ,CAAC,CAAC;AACtD,KAAA;AACH,CAAC;AAED,SAAS,qBAAqB,CAC1B,kBAAsC,EAAE,IAAsC,EAC9E,SAAmC,EAAA;IACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAG;AAC/B,QAAA,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;gBACtE,OAAO,UAAU,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACjD,aAAA;AACF,SAAA;AACD,QAAA,OAAO,UAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAC/C,KAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAyB,EAAA;IACrD,OAAO,IAAI,cAAc,CACrB,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,EAC7F,IAAI,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC9F;;ACrDO,MAAM,0BAA0B,GAAG,4BAA4B,CAAC;AAUvD,SAAA,0BAA0B,CACtC,aAA4B,EAAE,QAAiB,EAAA;IACjD,MAAM,EAAC,UAAU,EAAE,yBAAyB,EAAC,GACzC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAC,UAAU,EAAE,QAAQ,EAAE,yBAAyB,EAAE,SAAS,EAAC,GAAG,QAAQ,CAAC;IAClG,MAAM,KAAK,GACP,wBAAwB,CACpB,SAAS,IAAI,CAAA,gBAAA,EAAmB,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EACjC,CAAA,4CAAA,QAAQ,CAAwC,CAAC;AAC9F,IAAA,KAAK,CAAC,GAAG,GAAG,UAAU,CAAC;AACvB,IAAA,KAAK,CAAC,yBAAyB,GAAG,yBAAyB,CAAC;AAC5D,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;SAEe,wBAAwB,CACpC,OAA0B,EAAE,IAAgC,EAAE,WAAqB,EAAA;AACrF,IAAA,MAAM,KAAK,GACP,IAAI,KAAK,CAAC,4BAA4B,IAAI,OAAO,IAAI,EAAE,CAAC,CAA6B,CAAC;AAC1F,IAAA,KAAK,CAAC,0BAA0B,CAAC,GAAG,IAAI,CAAC;AACzC,IAAA,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC9B,IAAA,IAAI,WAAW,EAAE;AACd,QAAA,KAA6C,CAAC,GAAG,GAAG,WAAW,CAAC;AAClE,KAAA;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAEK,SAAUE,uCAAqC,CACjD,KACmC,EAAA;IACrC,OAAOC,4BAA0B,CAAC,KAAK,CAAC,IAAI,SAAS,CAAE,KAAa,CAAC,GAAG,CAAC,CAAC;AAC5E,CAAC;AACK,SAAUA,4BAA0B,CAAC,KAAc,EAAA;AACvD,IAAA,OAAO,KAAK,IAAK,KAAa,CAAC,0BAA0B,CAAC,CAAC;AAC7D;;ACxCA;;;;AAIG;MACU,aAAa,CAAA;AAA1B,IAAA,WAAA,GAAA;AACE,QAAA,IAAM,CAAA,MAAA,GAA8B,IAAI,CAAC;AACzC,QAAA,IAAK,CAAA,KAAA,GAAwB,IAAI,CAAC;AAClC;;;AAGG;AACH,QAAA,IAAQ,CAAA,QAAA,GAAkC,IAAI,CAAC;AAC/C,QAAA,IAAQ,CAAA,QAAA,GAA6B,IAAI,CAAC;AAC1C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAC;AACxC,QAAA,IAAS,CAAA,SAAA,GAA2B,IAAI,CAAC;KAC1C;AAAA,CAAA;AAED;;;;AAIG;MAEU,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;;AAGU,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;KAkDrD;;IA/CC,oBAAoB,CAAC,SAAiB,EAAE,MAA4B,EAAA;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;AACnD,QAAA,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;KACvC;AAED;;;;AAIG;AACH,IAAA,sBAAsB,CAAC,SAAiB,EAAA;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;AACtB,YAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,SAAA;KACF;AAED;;;AAGG;IACH,mBAAmB,GAAA;AACjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;AAC1B,QAAA,OAAO,QAAQ,CAAC;KACjB;AAED,IAAA,kBAAkB,CAAC,QAAoC,EAAA;AACrD,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;AAED,IAAA,kBAAkB,CAAC,SAAiB,EAAA;QAClC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACvC,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KAChB;AAED,IAAA,UAAU,CAAC,SAAiB,EAAA;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;KAC7C;;8HAnDU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADV,MAAM,EAAA,CAAA,CAAA;sGAClB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;;ACrBhC,MAAMH,aAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC;AA4FlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDG;MAMU,YAAY,CAAA;AALzB,IAAA,WAAA,GAAA;AAMU,QAAA,IAAS,CAAA,SAAA,GAA2B,IAAI,CAAC;AACzC,QAAA,IAAe,CAAA,eAAA,GAAwB,IAAI,CAAC;AACpD;;;;AAIG;AACM,QAAA,IAAI,CAAA,IAAA,GAAG,cAAc,CAAC;AAEX,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAO,CAAC;AACvC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO,CAAC;AACjE;;;AAGI;AACc,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW,CAAC;AAC7D;;;AAGG;AACe,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW,CAAC;AAErD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;KAuJ3D;;AApJC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YACnB,MAAM,EAAC,WAAW,EAAE,aAAa,EAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACrD,YAAA,IAAI,WAAW,EAAE;;;gBAGf,OAAO;AACR,aAAA;;AAGD,YAAA,IAAI,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,EAAE;gBACjD,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,gBAAA,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;AAC3D,aAAA;;YAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACjC,SAAA;KACF;;IAGD,WAAW,GAAA;;QAET,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7C,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,SAAA;KACF;AAEO,IAAA,yBAAyB,CAAC,UAAkB,EAAA;;AAClD,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MAAK,IAAI,CAAC;KACpE;;IAGD,QAAQ,GAAA;QACN,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;IAEO,wBAAwB,GAAA;QAC9B,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;AACR,SAAA;;;AAID,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1D,QAAA,IAAI,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,KAAK,EAAE;YAClB,IAAI,OAAO,CAAC,SAAS,EAAE;;gBAErB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/C,aAAA;AAAM,iBAAA;;gBAEL,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,aAAA;AACF,SAAA;KACF;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;KACzB;AAED;;;AAGG;AACH,IAAA,IAAI,SAAS,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB,MAAM,IAAIC,aAAY,CAAA,IAAA,8CACqBD,aAAW,IAAI,yBAAyB,CAAC,CAAC;AACvF,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;KAChC;AAED,IAAA,IAAI,cAAc,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB,MAAM,IAAIC,aAAY,CAAA,IAAA,8CACqBD,aAAW,IAAI,yBAAyB,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC,eAAiC,CAAC;KAC/C;AAED,IAAA,IAAI,kBAAkB,GAAA;QACpB,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3C,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACX;AAED;;AAEG;IACH,MAAM,GAAA;QACJ,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB,MAAM,IAAIC,aAAY,CAAA,IAAA,8CACqBD,aAAW,IAAI,yBAAyB,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AACvB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACrC,QAAA,OAAO,GAAG,CAAC;KACZ;AAED;;AAEG;IACH,MAAM,CAAC,GAAsB,EAAE,cAA8B,EAAA;AAC3D,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KACtC;IAED,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAA;KACF;IAED,YAAY,CACR,cAA8B,EAC9B,kBAAsE,EAAA;QACxE,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,MAAM,IAAIC,aAAY,CAAA,IAAA,kDAElBD,aAAW,IAAI,6CAA6C,CAAC,CAAC;AACnE,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AACtC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;AACzC,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAU,CAAC;AACtC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;AACjF,QAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,cAAc,EAAE,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAEtF,QAAA,IAAI,kBAAkB,IAAI,0BAA0B,CAAC,kBAAkB,CAAC,EAAE;YACxE,MAAM,OAAO,GAAG,kBAAkB,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;AACtE,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/E,SAAA;AAAM,aAAA;YACL,MAAM,mBAAmB,GAAG,kBAAkB,KAAlB,IAAA,IAAA,kBAAkB,KAAlB,KAAA,CAAA,GAAA,kBAAkB,GAAI,IAAI,CAAC,mBAAmB,CAAC;YAC3E,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,eAAe,CACrC,SAAS,EAAE,EAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAC,CAAC,CAAC;AACzE,SAAA;;;AAGD,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KACnD;;oHAhLU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,UAAU,EAAE,IAAI;iBACjB,CAAA;8BASU,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEc,cAAc,EAAA,CAAA;sBAAjC,MAAM;uBAAC,UAAU,CAAA;gBACI,gBAAgB,EAAA,CAAA;sBAArC,MAAM;uBAAC,YAAY,CAAA;gBAKF,YAAY,EAAA,CAAA;sBAA7B,MAAM;uBAAC,QAAQ,CAAA;gBAKE,YAAY,EAAA,CAAA;sBAA7B,MAAM;uBAAC,QAAQ,CAAA;;AA8JlB,MAAM,cAAc,CAAA;AAClB,IAAA,WAAA,CACY,KAAqB,EAAU,aAAqC,EACpE,MAAgB,EAAA;AADhB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAAU,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAwB;AACpE,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAU;KAAI;IAEhC,GAAG,CAAC,KAAU,EAAE,aAAmB,EAAA;QACjC,IAAI,KAAK,KAAK,cAAc,EAAE;YAC5B,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,SAAA;QAED,IAAI,KAAK,KAAK,sBAAsB,EAAE;YACpC,OAAO,IAAI,CAAC,aAAa,CAAC;AAC3B,SAAA;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;KAC9C;AACF,CAAA;AAED,SAAS,0BAA0B,CAAC,IAAS,EAAA;AAC3C,IAAA,OAAO,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC;AACxC;;AC/VA;;;;;;;;AAQG;MAMU,qBAAqB,CAAA;;6HAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iHAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJtB,CAAA,+BAAA,CAAiC,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjC,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;sGAGX,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,CAAiC,+BAAA,CAAA;oBAC3C,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,UAAU,EAAE,IAAI;iBACjB,CAAA;;;ACTD;;;;;;;AAOG;AACa,SAAA,gCAAgC,CAC5C,KAAY,EAAE,eAAoC,EAAA;;IACpD,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACvC,QAAA,KAAK,CAAC,SAAS;AACX,YAAA,yBAAyB,CAAC,KAAK,CAAC,SAAS,EAAE,eAAe,EAAE,CAAA,OAAA,EAAU,KAAK,CAAC,IAAI,CAAA,CAAE,CAAC,CAAC;AACzF,KAAA;AACD,IAAA,OAAO,MAAA,KAAK,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,eAAe,CAAC;AAC5C,CAAC;AAEK,SAAU,eAAe,CAAC,KAAY,EAAA;IAC1C,OAAO,KAAK,CAAC,aAAa,CAAC;AAC7B,CAAC;AAEK,SAAU,iBAAiB,CAAC,KAAY,EAAA;IAC5C,OAAO,KAAK,CAAC,eAAe,CAAC;AAC/B,CAAC;AACK,SAAU,kBAAkB,CAAC,KAAY,EAAA;IAC7C,OAAO,KAAK,CAAC,gBAAgB,CAAC;AAChC,CAAC;AAEK,SAAU,oBAAoB,CAAC,KAAY,EAAA;IAC/C,OAAO,KAAK,CAAC,SAAS,CAAC;AACzB,CAAC;AAEK,SAAU,cAAc,CAC1B,MAAc,EAAE,aAAqB,EAAE,EAAE,2BAA2B,GAAG,KAAK,EAAA;;AAE9E,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,QAAA,MAAM,KAAK,GAAU,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAW,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACxD,QAAA,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,2BAA2B,CAAC,CAAC;AAC5D,KAAA;AACH,CAAC;AAEe,SAAA,gBAAgB,CAAC,QAAgB,EAAE,SAAkC,EAAA;AACnF,IAAA,IAAI,SAAS,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;QACzC,MAAM,IAAIC,aAAY,CAAA,IAAA,8CAElB,CAAmC,gCAAA,EAAA,QAAQ,CAAsC,oCAAA,CAAA,CAAC,CAAC;AACxF,KAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAY,EAAE,QAAgB,EAAE,2BAAoC,EAAA;AACxF,IAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;QACjD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,MAAM,IAAIA,aAAY,CAAwC,IAAA,8CAAA,CAAA;wCAC5B,QAAQ,CAAA;;;;;;;;;AAS3C,IAAA,CAAA,CAAC,CAAC;AACF,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,IAAIA,aAAY,CAAA,IAAA,8CAElB,CAAmC,gCAAA,EAAA,QAAQ,CAA8B,4BAAA,CAAA,CAAC,CAAC;AAChF,SAAA;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,QAAQ;AAChF,YAAA,CAAC,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,CAAC,EAAE;YAC5E,MAAM,IAAIA,aAAY,CAAA,IAAA,8CAElB,CACI,gCAAA,EAAA,QAAQ,CAA0F,wFAAA,CAAA,CAAC,CAAC;AAC7G,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE;YACtC,MAAM,IAAIA,aAAY,CAAA,IAAA,8CAElB,CACI,gCAAA,EAAA,QAAQ,CAAoD,kDAAA,CAAA,CAAC,CAAC;AACvE,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,EAAE;YAC1C,MAAM,IAAIA,aAAY,CAAA,IAAA,8CAElB,CACI,gCAAA,EAAA,QAAQ,CAAwD,sDAAA,CAAA,CAAC,CAAC;AAC3E,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,EAAE;YACxC,MAAM,IAAIA,aAAY,CAAA,IAAA,8CAElB,CACI,gCAAA,EAAA,QAAQ,CAAsD,oDAAA,CAAA,CAAC,CAAC;AACzE,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE;YAChE,MAAM,IAAIA,aAAY,CAAA,IAAA,8CAElB,CACI,gCAAA,EAAA,QAAQ,CAAmE,iEAAA,CAAA,CAAC,CAAC;AACtF,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,aAAa,EAAE;YAC1C,MAAM,IAAIA,aAAY,CAAA,IAAA,8CAElB,CACI,gCAAA,EAAA,QAAQ,CAAwD,sDAAA,CAAA,CAAC,CAAC;AAC3E,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,WAAW,EAAE;YACzC,MAAM,IAAIA,aAAY,CAElB,IAAA,8CAAA,CACI,gCAAA,EAAA,QAAQ,CAA4F,0FAAA,CAAA;AACpG,gBAAA,CAAA,sCAAA,CAAwC,CAAC,CAAC;AACnD,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE;YAC/B,MAAM,IAAIA,aAAY,CAAA,IAAA,8CAElB,CAAmC,gCAAA,EAAA,QAAQ,CAA6C,2CAAA,CAAA,CAAC,CAAC;AAC/F,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,aAAa;YACvE,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YAC1C,MAAM,IAAIA,aAAY,CAAA,IAAA,8CAElB,CACI,gCAAA,EAAA,QAAQ,CAA0G,wGAAA,CAAA,CAAC,CAAC;AAC7H,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE;YACrD,MAAM,IAAIA,aAAY,CAAA,IAAA,8CAElB,CACI,gCAAA,EAAA,QAAQ,CAA0D,wDAAA,CAAA,CAAC,CAAC;AAC7E,SAAA;AACD,QAAA,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YAClE,MAAM,IAAIA,aAAY,CAAA,IAAA,8CAElB,CAAmC,gCAAA,EAAA,QAAQ,CAAmC,iCAAA,CAAA,CAAC,CAAC;AACrF,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE;YAClF,MAAM,GAAG,GACL,CAAA,oFAAA,CAAsF,CAAC;AAC3F,YAAA,MAAM,IAAIA,aAAY,CAElB,IAAA,8CAAA,CAAA,wCAAA,EAA2C,QAAQ,CAAA,gBAAA,EAC/C,KAAK,CAAC,UAAU,oCAAoC,GAAG,CAAA,CAAE,CAAC,CAAC;AACpE,SAAA;AACD,QAAA,IAAI,2BAA2B,EAAE;AAC/B,YAAA,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7C,SAAA;AACF,KAAA;IACD,IAAI,KAAK,CAAC,QAAQ,EAAE;QAClB,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,2BAA2B,CAAC,CAAC;AACvE,KAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,UAAkB,EAAE,YAAmB,EAAA;IAC1D,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,OAAO,UAAU,CAAC;AACnB,KAAA;AACD,IAAA,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACrC,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;AAAM,SAAA,IAAI,UAAU,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC3C,OAAO,CAAA,EAAG,UAAU,CAAA,CAAA,CAAG,CAAC;AACzB,KAAA;AAAM,SAAA,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,IAAI,EAAE;QAC3C,OAAO,YAAY,CAAC,IAAI,CAAC;AAC1B,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,GAAG,UAAU,CAAA,CAAA,EAAI,YAAY,CAAC,IAAI,EAAE,CAAC;AAC7C,KAAA;AACH,CAAC;AAED;;AAEG;AACG,SAAU,iBAAiB,CAAC,CAAQ,EAAA;AACxC,IAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACjE,IAAA,MAAM,CAAC,GAAG,QAAQ,GAAO,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAC,CAAE,EAAA,EAAA,QAAQ,EAAE,CAAA,GAAM,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAC,CAAC,CAAC;AAC/C,IAAA,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,aAAa,MAAM,QAAQ,IAAI,CAAC,CAAC,YAAY,CAAC;SACjE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,EAAE;AAC7C,QAAA,CAAC,CAAC,SAAS,GAAGG,qBAAoB,CAAC;AACpC,KAAA;AACD,IAAA,OAAO,CAAC,CAAC;AACX,CAAC;AAED;AACM,SAAU,SAAS,CAAC,KAAY,EAAA;AACpC,IAAA,OAAO,KAAK,CAAC,MAAM,IAAI,cAAc,CAAC;AACxC,CAAC;AAED;;;AAGG;AACa,SAAA,qBAAqB,CAAC,MAAc,EAAE,UAAkB,EAAA;AACtE,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC;IACrE,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC;AACtE,IAAA,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;AAWG;AACG,SAAU,uBAAuB,CAAC,QAAgC,EAAA;;AAEtE,IAAA,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,IAAI,CAAC;;;;AAK3B,IAAA,IAAI,MAAA,QAAQ,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,EAAE;AACnC,QAAA,OAAO,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC;AACvC,KAAA;AAED,IAAA,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AAC7C,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC;;;;;AAK5B,QAAA,IAAI,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,eAAe;YAAE,OAAO,KAAK,CAAC,eAAe,CAAC;AACzD,QAAA,IAAI,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,SAAS;YAAE,OAAO,KAAK,CAAC,SAAS,CAAC;AAC9C,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AACd;;AClOO,MAAM,cAAc,GACvB,CAAC,YAAoC,EAAE,kBAAsC,EAC5E,YAAkC,KAC/B,GAAG,CAAC,CAAC,IAAG;AACN,IAAA,IAAI,cAAc,CACd,kBAAkB,EAAE,CAAC,CAAC,iBAAkB,EAAE,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC;SAC5E,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC5B,IAAA,OAAO,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;MAEE,cAAc,CAAA;AACzB,IAAA,WAAA,CACY,kBAAsC,EAAU,WAAwB,EACxE,SAAsB,EAAU,YAAkC,EAAA;AADlE,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAAU,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxE,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAa;AAAU,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAsB;KAAI;AAElF,IAAA,QAAQ,CAAC,cAAsC,EAAA;AAC7C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC1C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;QAE9D,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACjE,QAAA,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;KAChE;;AAGO,IAAA,qBAAqB,CACzB,UAAoC,EAAE,QAAuC,EAC7E,QAAgC,EAAA;AAClC,QAAA,MAAM,QAAQ,GAAqD,iBAAiB,CAAC,QAAQ,CAAC,CAAC;;AAG/F,QAAA,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,IAAG;AACxC,YAAA,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;AACjD,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxE,YAAA,OAAO,QAAQ,CAAC,eAAe,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;;QAGH,OAAO,CAAC,QAAQ,EAAE,CAAC,CAA2B,EAAE,SAAiB,KAAI;AACnE,YAAA,IAAI,CAAC,6BAA6B,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClD,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,gBAAgB,CACpB,UAAoC,EAAE,QAAkC,EACxE,aAAqC,EAAA;AACvC,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;AAChC,QAAA,MAAM,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;QAE9C,IAAI,MAAM,KAAK,IAAI,EAAE;;YAEnB,IAAI,MAAM,CAAC,SAAS,EAAE;;gBAEpB,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxD,gBAAA,IAAI,OAAO,EAAE;oBACX,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpE,iBAAA;AACF,aAAA;AAAM,iBAAA;;gBAEL,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACjE,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,IAAI,EAAE;;AAER,gBAAA,IAAI,CAAC,6BAA6B,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC7D,aAAA;AACF,SAAA;KACF;IAEO,6BAA6B,CACjC,KAA+B,EAAE,cAAsC,EAAA;;;AAGzE,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AACvF,YAAA,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACxD,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACtD,SAAA;KACF;IAEO,0BAA0B,CAC9B,KAA+B,EAAE,cAAsC,EAAA;AACzE,QAAA,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC9D,QAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,GAAG,cAAc,CAAC;AACtF,QAAA,MAAM,QAAQ,GAAqD,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAE5F,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC/C,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;YAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;AACxD,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;AACtF,SAAA;KACF;IAEO,wBAAwB,CAC5B,KAA+B,EAAE,cAAsC,EAAA;AACzE,QAAA,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;;AAG9D,QAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,GAAG,cAAc,CAAC;AACtF,QAAA,MAAM,QAAQ,GAAqD,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAE5F,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC/C,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;;AAE7B,YAAA,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;;AAE5B,YAAA,OAAO,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;;;AAGvC,YAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,YAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxB,YAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,SAAA;KACF;AAEO,IAAA,mBAAmB,CACvB,UAAoC,EAAE,QAAuC,EAC7E,QAAgC,EAAA;AAClC,QAAA,MAAM,QAAQ,GAAiD,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC3F,QAAA,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAG;AAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC9B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtE,SAAA;KACF;AAEO,IAAA,cAAc,CAClB,UAAoC,EAAE,QAAkC,EACxE,cAAsC,EAAA;;AACxC,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;AAChC,QAAA,MAAM,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;QAE9C,qBAAqB,CAAC,MAAM,CAAC,CAAC;;QAG9B,IAAI,MAAM,KAAK,IAAI,EAAE;YACnB,IAAI,MAAM,CAAC,SAAS,EAAE;;gBAEpB,MAAM,OAAO,GAAG,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACjE,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAClE,aAAA;AAAM,iBAAA;;gBAEL,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAChE,aAAA;AACF,SAAA;AAAM,aAAA;YACL,IAAI,MAAM,CAAC,SAAS,EAAE;;gBAEpB,MAAM,OAAO,GAAG,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAEjE,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACzD,oBAAA,MAAM,MAAM,GACsB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAE,CAAC;oBACrF,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBACrD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrD,oBAAA,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;oBACxC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;oBACnC,IAAI,OAAO,CAAC,MAAM,EAAE;;;AAGlB,wBAAA,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAChE,qBAAA;AAED,oBAAA,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC1C,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9D,iBAAA;AAAM,qBAAA;oBACL,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1D,oBAAA,MAAM,kBAAkB,GAAG,CAAA,EAAA,GAAA,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,GAAG,CAAC,wBAAwB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC;AAC3E,oBAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,oBAAA,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;AACvB,oBAAA,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC;AACtC,oBAAA,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBAC5B,IAAI,OAAO,CAAC,MAAM,EAAE;;;wBAGlB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AACvD,qBAAA;oBAED,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9D,iBAAA;AACF,aAAA;AAAM,iBAAA;;gBAEL,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAC5D,aAAA;AACF,SAAA;KACF;AACF;;MCtMY,WAAW,CAAA;AAEtB,IAAA,WAAA,CAAmB,IAA8B,EAAA;AAA9B,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAA0B;AAC/C,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAC9C;AACF,CAAA;MAEY,aAAa,CAAA;IACxB,WAAmB,CAAA,SAAsB,EAAS,KAA6B,EAAA;AAA5D,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAa;AAAS,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAwB;KAAI;AACpF,CAAA;SAOe,iBAAiB,CAC7B,MAA2B,EAAE,IAAyB,EACtD,cAAsC,EAAA;AACxC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;AAChC,IAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAE1C,IAAA,OAAO,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACvF,CAAC;AAEK,SAAU,mBAAmB,CAAC,CAAyB,EAAA;AAE3D,IAAA,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC/E,IAAA,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;IACpE,OAAO,EAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAC,CAAC;AAC7C,CAAC;AAEe,SAAA,0BAA0B,CACtC,eAA0C,EAAE,QAAkB,EAAA;AAChE,IAAA,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAW,eAAe,EAAE,SAAS,CAAC,CAAC;IAClE,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,IAAI,OAAO,eAAe,KAAK,UAAU,IAAI,CAACC,aAAY,CAAC,eAAe,CAAC,EAAE;;AAE3E,YAAA,OAAO,eAAe,CAAC;AACxB,SAAA;AAAM,aAAA;;AAEL,YAAA,OAAO,QAAQ,CAAC,GAAG,CAAI,eAAe,CAAC,CAAC;AACzC,SAAA;AACF,KAAA;AACD,IAAA,OAAO,MAAW,CAAC;AACrB,CAAC;AAED,SAAS,mBAAmB,CACxB,UAA4C,EAAE,QAA+C,EAC7F,QAAqC,EAAE,UAAoC,EAAE,MAAiB,GAAA;AAC5F,IAAA,mBAAmB,EAAE,EAAE;AACvB,IAAA,iBAAiB,EAAE,EAAE;AACtB,CAAA,EAAA;AACH,IAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;;AAGjD,IAAA,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAG;QAC9B,cAAc,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAChG,OAAO,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACtC,KAAC,CAAC,CAAC;;IAGH,OAAO,CACH,YAAY,EACZ,CAAC,CAAmC,EAAE,CAAS,KAC3C,6BAA6B,CAAC,CAAC,EAAE,QAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAE3E,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CACnB,UAA4C,EAAE,QAA0C,EACxF,cAA2C,EAAE,UAAoC,EACjF,MAAiB,GAAA;AACf,IAAA,mBAAmB,EAAE,EAAE;AACvB,IAAA,iBAAiB,EAAE,EAAE;AACtB,CAAA,EAAA;AACH,IAAA,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;AAChC,IAAA,MAAM,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;IAC9C,MAAM,OAAO,GAAG,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;;IAG3F,IAAI,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE;AACnD,QAAA,MAAM,SAAS,GACX,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,WAAY,CAAC,qBAAqB,CAAC,CAAC;AACzF,QAAA,IAAI,SAAS,EAAE;YACb,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5D,SAAA;AAAM,aAAA;;AAEL,YAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACxB,YAAA,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AAC3C,SAAA;;QAGD,IAAI,MAAM,CAAC,SAAS,EAAE;YACpB,mBAAmB,CACf,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;;AAGlF,SAAA;AAAM,aAAA;YACL,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AAC/E,SAAA;AAED,QAAA,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;AACxE,YAAA,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AACpF,SAAA;AACF,KAAA;AAAM,SAAA;AACL,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,6BAA6B,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1D,SAAA;QAED,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;;QAE3D,IAAI,MAAM,CAAC,SAAS,EAAE;YACpB,mBAAmB,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;;AAG9F,SAAA;AAAM,aAAA;YACL,mBAAmB,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AAC3E,SAAA;AACF,KAAA;AAED,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,2BAA2B,CAChC,IAA4B,EAAE,MAA8B,EAC5D,IAAqC,EAAA;AACvC,IAAA,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,KAAA;AACD,IAAA,QAAQ,IAAI;AACV,QAAA,KAAK,kBAAkB;YACrB,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAE1C,QAAA,KAAK,+BAA+B;YAClC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;gBACnC,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAE1D,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,IAAI,CAAC;AAEd,QAAA,KAAK,2BAA2B;AAC9B,YAAA,OAAO,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC;gBAC3C,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAE1D,QAAA,KAAK,cAAc,CAAC;AACpB,QAAA;AACE,YAAA,OAAO,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACnD,KAAA;AACH,CAAC;AAED,SAAS,6BAA6B,CAClC,KAAuC,EAAE,OAA2B,EAAE,MAAc,EAAA;AACtF,IAAA,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC1C,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IAEtB,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAsC,EAAE,SAAiB,KAAI;AAC9E,QAAA,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE;AAChB,YAAA,6BAA6B,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACtD,SAAA;AAAM,aAAA,IAAI,OAAO,EAAE;AAClB,YAAA,6BAA6B,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AACrF,SAAA;AAAM,aAAA;AACL,YAAA,6BAA6B,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACnD,SAAA;AACH,KAAC,CAAC,CAAC;AAEH,IAAA,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE;AAChB,QAAA,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7D,KAAA;SAAM,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;AAClE,QAAA,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AACjF,KAAA;AAAM,SAAA;AACL,QAAA,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7D,KAAA;AACH;;AClLA;;;;;;;;;;;;AAYG;AACG,SAAU,UAAU,CAAI,CAAM,EAAA;AAClC,IAAA,OAAO,OAAO,CAAC,KAAK,UAAU,CAAC;AACjC,CAAC;AAEK,SAAU,SAAS,CAAC,CAAM,EAAA;AAC9B,IAAA,OAAO,OAAO,CAAC,KAAK,SAAS,CAAC;AAChC,CAAC;AAEK,SAAU,SAAS,CAAC,KAAU,EAAA;IAClC,OAAO,KAAK,IAAI,UAAU,CAAU,KAAK,CAAC,OAAO,CAAC,CAAC;AACrD,CAAC;AAEK,SAAU,aAAa,CAAC,KAAU,EAAA;IACtC,OAAO,KAAK,IAAI,UAAU,CAAc,KAAK,CAAC,WAAW,CAAC,CAAC;AAC7D,CAAC;AAEK,SAAU,kBAAkB,CAAC,KAAU,EAAA;IAC3C,OAAO,KAAK,IAAI,UAAU,CAAmB,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACvE,CAAC;AAEK,SAAU,eAAe,CAAI,KAAU,EAAA;IAC3C,OAAO,KAAK,IAAI,UAAU,CAAmB,KAAK,CAAC,aAAa,CAAC,CAAC;AACpE,CAAC;AACK,SAAU,UAAU,CAAC,KAAU,EAAA;IACnC,OAAO,KAAK,IAAI,UAAU,CAAW,KAAK,CAAC,QAAQ,CAAC,CAAC;AACvD,CAAC;AAEK,SAAU,qCAAqC,CACjD,KACmC,EAAA;IACrC,OAAO,0BAA0B,CAAC,KAAK,CAAC,IAAI,SAAS,CAAE,KAAa,CAAC,GAAG,CAAC,CAAC;AAC5E,CAAC;AAEK,SAAU,0BAA0B,CAAC,KAAc,EAAA;AACvD,IAAA,OAAO,KAAK,IAAK,KAAa,CAAC,0BAA0B,CAAC,CAAC;AAC7D,CAAC;AAEK,SAAU,YAAY,CAAC,CAAQ,EAAA;AACnC,IAAA,OAAO,CAAC,YAAY,UAAU,IAAI,CAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,IAAI,MAAK,YAAY,CAAC;AAC7D;;ACrDA,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;SAG9B,qBAAqB,GAAA;AAEnC,IAAA,OAAO,SAAS,CAAC,GAAG,IAAG;QACrB,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,aAA+B,CAAC,CAAC,CAAC,CAAC;AAC1F,aAAA,IAAI,CACD,GAAG,CAAC,CAAC,OAAyB,KAAI;AAChC,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,IAAI,MAAM,KAAK,IAAI,EAAE;;oBAEnB,SAAS;AACV,iBAAA;qBAAM,IAAI,MAAM,KAAK,aAAa,EAAE;;AAEnC,oBAAA,OAAO,aAAa,CAAC;AACtB,iBAAA;AAAM,qBAAA,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,YAAY,OAAO,EAAE;;;;AAIxD,oBAAA,OAAO,MAAM,CAAC;AACf,iBAAA;AACF,aAAA;;AAED,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC,EACF,MAAM,CAAC,CAAC,IAAI,KAA8B,IAAI,KAAK,aAAa,CAAC,EACjE,IAAI,CAAC,CAAC,CAAC,CACV,CAAC;AACR,KAAC,CAAC,CAAC;AACL;;AClBgB,SAAA,WAAW,CAAC,QAA6B,EAAE,YAAmC,EAAA;AAE5F,IAAA,OAAO,QAAQ,CAAC,CAAC,IAAG;AAClB,QAAA,MAAM,EAAC,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,EAAC,GAAG,CAAC,CAAC;QAC9F,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;YACtE,OAAO,EAAE,iCAAK,CAAC,CAAA,EAAA,EAAE,YAAY,EAAE,IAAI,IAAE,CAAC;AACvC,SAAA;QAED,OAAO,sBAAsB,CAAC,mBAAmB,EAAE,cAAe,EAAE,eAAe,EAAE,QAAQ,CAAC;AACzF,aAAA,IAAI,CACD,QAAQ,CAAC,aAAa,IAAG;AACvB,YAAA,OAAO,aAAa,IAAI,SAAS,CAAC,aAAa,CAAC;gBAC5C,oBAAoB,CAAC,cAAe,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,CAAC;gBAChF,EAAE,CAAC,aAAa,CAAC,CAAC;AACxB,SAAC,CAAC,EACF,GAAG,CAAC,YAAY,KAAI,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAK,CAAC,CAAE,EAAA,EAAA,YAAY,EAAE,CAAA,CAAA,CAAC,CAAC,CAAC;AACvD,KAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAC3B,MAAuB,EAAE,SAA8B,EAAE,OAA4B,EACrF,QAA6B,EAAA;AAC/B,IAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACpB,QAAQ,CACJ,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,EAC1F,KAAK,CAAC,MAAM,IAAG;QACb,OAAO,MAAM,KAAK,IAAI,CAAC;AACzB,KAAC,EAAE,IAAyB,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,oBAAoB,CACzB,cAAmC,EAAE,MAAqB,EAAE,QAA6B,EACzF,YAAmC,EAAA;AACrC,IAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACpB,SAAS,CAAC,CAAC,KAAkB,KAAI;QAC/B,OAAO,MAAM,CACT,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,EAC1D,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,EAC9C,mBAAmB,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,EACzD,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7D,KAAC,CAAC,EACF,KAAK,CAAC,MAAM,IAAG;QACb,OAAO,MAAM,KAAK,IAAI,CAAC;AACzB,KAAC,EAAE,IAAyB,CAAC,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;AAOG;AACH,SAAS,mBAAmB,CACxB,QAAqC,EACrC,YAAmC,EAAA;AACrC,IAAA,IAAI,QAAQ,KAAK,IAAI,IAAI,YAAY,EAAE;AACrC,QAAA,YAAY,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7C,KAAA;AACD,IAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;AAOG;AACH,SAAS,wBAAwB,CAC7B,QAAqC,EACrC,YAAmC,EAAA;AACrC,IAAA,IAAI,QAAQ,KAAK,IAAI,IAAI,YAAY,EAAE;AACrC,QAAA,YAAY,CAAC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClD,KAAA;AACD,IAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,cAAc,CACnB,SAA8B,EAAE,SAAiC,EACjE,QAA6B,EAAA;AAC/B,IAAA,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;AACrF,IAAA,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IAE9D,MAAM,sBAAsB,GACxB,WAAW,CAAC,GAAG,CAAC,CAAC,WAAiD,KAAI;QACpE,OAAO,KAAK,CAAC,MAAK;;YAChB,MAAM,eAAe,GAAG,CAAA,EAAA,GAAA,uBAAuB,CAAC,SAAS,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,QAAQ,CAAC;YACvE,MAAM,KAAK,GAAG,0BAA0B,CAAc,WAAW,EAAE,eAAe,CAAC,CAAC;AACpF,YAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC;gBACjC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC;AACvC,gBAAA,eAAe,CAAC,YAAY,CAAC,MAAO,KAAuB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;YACvF,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACpD,SAAC,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;IACP,OAAO,EAAE,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,mBAAmB,CACxB,SAA8B,EAAE,IAA8B,EAC9D,QAA6B,EAAA;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAExC,IAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACzB,SAAA,OAAO,EAAE;SACT,GAAG,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;SAChC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAE5D,MAAM,4BAA4B,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAM,KAAI;QACzE,OAAO,KAAK,CAAC,MAAK;YAChB,MAAM,YAAY,GACd,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,gBAA2D,KAAI;;gBAC3E,MAAM,eAAe,GAAG,CAAA,EAAA,GAAA,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,QAAQ,CAAC;gBACpE,MAAM,KAAK,GACP,0BAA0B,CAAmB,gBAAgB,EAAE,eAAe,CAAC,CAAC;AACpF,gBAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC;oBACtC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;AAC5C,oBAAA,eAAe,CAAC,YAAY,CACxB,MAAO,KAA4B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnE,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACpD,aAAC,CAAC,CAAC;YACP,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;AACxD,SAAC,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;IACH,OAAO,EAAE,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,gBAAgB,CACrB,SAAsB,EAAE,OAA+B,EAAE,OAA4B,EACrF,SAA8B,EAAE,QAA6B,EAAA;AAC/D,IAAA,MAAM,aAAa,GAAG,OAAO,IAAI,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC;AAChG,IAAA,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IAClE,MAAM,wBAAwB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAM,KAAI;;QAC5D,MAAM,eAAe,GAAG,CAAA,EAAA,GAAA,uBAAuB,CAAC,OAAO,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,QAAQ,CAAC;QACrE,MAAM,KAAK,GAAG,0BAA0B,CAAM,CAAC,EAAE,eAAe,CAAC,CAAC;AAClE,QAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC;AACnC,YAAA,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;AAC3D,YAAA,eAAe,CAAC,YAAY,CACxB,MAAO,KAA8B,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACvF,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACpD,KAAC,CAAC,CAAC;IACH,OAAO,EAAE,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;AACpE,CAAC;AAEK,SAAU,gBAAgB,CAC5B,QAA6B,EAAE,KAAY,EAAE,QAAsB,EACnE,aAA4B,EAAA;AAC9B,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACjD,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,KAAA;IAED,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,cAAmB,KAAI;QAC7D,MAAM,KAAK,GAAG,0BAA0B,CAAM,cAAc,EAAE,QAAQ,CAAC,CAAC;AACxE,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC;YAC7B,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC9B,YAAA,QAAQ,CAAC,YAAY,CAAC,MAAO,KAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AACvE,QAAA,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACtC,KAAC,CAAC,CAAC;IAEH,OAAO,EAAE,CAAC,kBAAkB,CAAC;SACxB,IAAI,CACD,qBAAqB,EAAE,EACvB,iBAAiB,CAAC,aAAa,CAAC,CACnC,CAAC;AACR,CAAC;AAED,SAAS,iBAAiB,CAAC,aAA4B,EAAA;AAErD,IAAA,OAAO,IAAI,CACP,GAAG,CAAC,CAAC,MAAuB,KAAI;AAC9B,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAAE,OAAO;AAE/B,QAAA,MAAM,0BAA0B,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC1D,KAAC,CAAC,EACF,GAAG,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,CACjC,CAAC;AACJ,CAAC;AAEK,SAAU,iBAAiB,CAC7B,QAA6B,EAAE,KAAY,EAAE,QAAsB,EACnE,aAA4B,EAAA;AAC9B,IAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AAChC,IAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IAExD,MAAM,mBAAmB,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,IAAG;QACxD,MAAM,KAAK,GAAG,0BAA0B,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AACnE,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;YAC9B,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC/B,YAAA,QAAQ,CAAC,YAAY,CAAC,MAAO,KAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxE,QAAA,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACtC,KAAC,CAAC,CAAC;IAEH,OAAO,EAAE,CAAC,mBAAmB,CAAC;SACzB,IAAI,CACD,qBAAqB,EAAE,EACvB,iBAAiB,CAAC,aAAa,CAAC,CACnC,CAAC;AACR;;ACrMA,MAAMC,SAAO,GAAgB;AAC3B,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,gBAAgB,EAAE,EAAE;AACpB,IAAA,iBAAiB,EAAE,EAAE;AACrB,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,uBAAuB,EAAE,EAAE;CAC5B,CAAC;AAEI,SAAU,eAAe,CAC3B,YAA6B,EAAE,KAAY,EAAE,QAAsB,EACnE,QAA6B,EAAE,aAA4B,EAAA;IAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACpD,IAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACnB,QAAA,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;AACnB,KAAA;;;AAID,IAAA,QAAQ,GAAG,gCAAgC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7D,OAAO,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,CAAC;SAC7D,IAAI,CACD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,MAAM,qBAAOA,SAAO,CAAC,CAAC,CACjD,CAAC;AACR,CAAC;SAEe,KAAK,CACjB,YAA6B,EAAE,KAAY,EAAE,QAAsB,EAAA;;AACrE,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE;AACrB,QAAA,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,KAAK,YAAY,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACrF,YAAA,OAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAWA,SAAO,CAAE,CAAA;AACrB,SAAA;QAED,OAAO;AACL,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,gBAAgB,EAAE,EAAE;AACpB,YAAA,iBAAiB,EAAE,QAAQ;AAC3B,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,uBAAuB,EAAE,EAAE;SAC5B,CAAC;AACH,KAAA;AAED,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,iBAAiB,CAAC;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AACnD,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAWA,SAAO,CAAE,CAAA;IAE9B,MAAM,SAAS,GAA0B,EAAE,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,SAAU,EAAE,CAAC,CAAa,EAAE,CAAS,KAAI;AACnD,QAAA,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACxB,KAAC,CAAC,CAAC;AACH,IAAA,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAE,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACpC,SAAS,CAAA,EAAK,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU;AAClE,QAAA,SAAS,CAAC;IAEd,OAAO;AACL,QAAA,OAAO,EAAE,IAAI;QACb,gBAAgB,EAAE,GAAG,CAAC,QAAQ;QAC9B,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;;QAEtD,UAAU;AACV,QAAA,uBAAuB,EAAE,CAAA,EAAA,GAAA,GAAG,CAAC,SAAS,mCAAI,EAAE;KAC7C,CAAC;AACJ,CAAC;AAEK,SAAU,KAAK,CACjB,YAA6B,EAAE,gBAA8B,EAAE,cAA4B,EAC3F,MAAe,EAAA;AACjB,IAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;AACzB,QAAA,wCAAwC,CAAC,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE;QAClF,MAAM,CAAC,GAAG,IAAI,eAAe,CACzB,gBAAgB,EAChB,2BAA2B,CACvB,YAAY,EAAE,gBAAgB,EAAE,MAAM,EACtC,IAAI,eAAe,CAAC,cAAc,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrE,QAAA,CAAC,CAAC,cAAc,GAAG,YAAY,CAAC;AAChC,QAAA,CAAC,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAC/C,OAAO,EAAC,YAAY,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAC,CAAC;AAC9C,KAAA;AAED,IAAA,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;AAC3B,QAAA,wBAAwB,CAAC,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE;QAClE,MAAM,CAAC,GAAG,IAAI,eAAe,CACzB,YAAY,CAAC,QAAQ,EACrB,+BAA+B,CAC3B,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxF,QAAA,CAAC,CAAC,cAAc,GAAG,YAAY,CAAC;AAChC,QAAA,CAAC,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAC/C,QAAA,OAAO,EAAC,YAAY,EAAE,CAAC,EAAE,cAAc,EAAC,CAAC;AAC1C,KAAA;AAED,IAAA,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC5E,IAAA,CAAC,CAAC,cAAc,GAAG,YAAY,CAAC;AAChC,IAAA,CAAC,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAC/C,IAAA,OAAO,EAAC,YAAY,EAAE,CAAC,EAAE,cAAc,EAAC,CAAC;AAC3C,CAAC;AAED,SAAS,+BAA+B,CACpC,YAA6B,EAAE,gBAA8B,EAAE,cAA4B,EAC3F,MAAe,EACf,QAA2C,EAAA;IAC7C,MAAM,GAAG,GAAsC,EAAE,CAAC;AAClD,IAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;AACtB,QAAA,IAAI,cAAc,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;YAC9E,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,YAAA,CAAC,CAAC,cAAc,GAAG,YAAY,CAAC;AAChC,YAAA,CAAC,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC;YAC/C,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,SAAA;AACF,KAAA;IACD,OAAW,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,QAAQ,CAAK,EAAA,GAAG,CAAE,CAAA;AAC/B,CAAC;AAED,SAAS,2BAA2B,CAChC,YAA6B,EAAE,gBAA8B,EAAE,MAAe,EAC9E,cAA+B,EAAA;IACjC,MAAM,GAAG,GAAsC,EAAE,CAAC;AAClD,IAAA,GAAG,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC;AACrC,IAAA,cAAc,CAAC,cAAc,GAAG,YAAY,CAAC;AAC7C,IAAA,cAAc,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAE5D,IAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;AACtB,QAAA,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,cAAc,EAAE;YACpD,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,YAAA,CAAC,CAAC,cAAc,GAAG,YAAY,CAAC;AAChC,YAAA,CAAC,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC;YAC/C,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,SAAA;AACF,KAAA;AACD,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,wCAAwC,CAC7C,YAA6B,EAAE,cAA4B,EAAE,MAAe,EAAA;IAC9E,OAAO,MAAM,CAAC,IAAI,CACd,CAAC,IAAI,cAAc,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,wBAAwB,CAC7B,YAA6B,EAAE,cAA4B,EAAE,MAAe,EAAA;AAC9E,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,cAAc,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,cAAc,CACnB,YAA6B,EAAE,cAA4B,EAAE,CAAQ,EAAA;AACvE,IAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,MAAM,EAAE;AACvF,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AAED,IAAA,OAAO,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;AACvB,CAAC;AAED;;;;AAIG;AACG,SAAU,gBAAgB,CAC5B,KAAY,EAAE,UAA2B,EAAE,QAAsB,EAAE,MAAc,EAAA;;;;;;;;;;;;AAYnF,IAAA,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM;AAC3B,SAAC,MAAM,KAAK,cAAc,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE;AAC/E,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACD,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;AACvB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IACD,OAAO,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC;AACpD,CAAC;SAEe,gBAAgB,CAC5B,YAA6B,EAAE,QAAsB,EAAE,MAAc,EAAA;AACvE,IAAA,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjE;;ACxLA,MAAMN,aAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC;AAElE,MAAMO,SAAO,CAAA;AAGX,IAAA,WAAA,CAAY,YAA8B,EAAA;AACxC,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,IAAI,CAAC;KAC1C;AACF,CAAA;AAED,MAAM,gBAAgB,CAAA;AACpB,IAAA,WAAA,CAAmB,OAAgB,EAAA;AAAhB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;KAAI;AACxC,CAAA;AAED,SAAS,OAAO,CAAC,YAA6B,EAAA;IAC5C,OAAO,UAAU,CAAC,IAAIA,SAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB,EAAA;IACxC,OAAO,UAAU,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB,EAAA;IAC9C,OAAO,UAAU,CAAC,IAAIN,aAAY,oDAE9BD,aAAW;AACP,QAAA,CAAA,6DAAA,EAAgE,UAAU,CAAA,CAAA,CAAG,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,YAAY,CAAC,KAAY,EAAA;AAChC,IAAA,OAAO,UAAU,CAAC,wBAAwB,CACtCA,aAAW;QACP,CACI,4DAAA,EAAA,KAAK,CAAC,IAAI,CAAmB,iBAAA,CAAA,EAAA,CAAA,gDACI,CAAC,CAAC;AACjD,CAAC;AAED;;;;AAIG;AACG,SAAUQ,gBAAc,CAC1B,QAA6B,EAAE,YAAgC,EAAE,aAA4B,EAC7F,OAAgB,EAAE,MAAc,EAAA;AAClC,IAAA,OAAO,IAAI,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5F,CAAC;AAED,MAAM,cAAc,CAAA;IAGlB,WACY,CAAA,QAA6B,EAAU,YAAgC,EACvE,aAA4B,EAAU,OAAgB,EAAU,MAAc,EAAA;AAD9E,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAqB;AAAU,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAoB;AACvE,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAAU,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;AAAU,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAJlF,QAAA,IAAc,CAAA,cAAA,GAAY,IAAI,CAAC;KAIuD;IAE9F,KAAK,GAAA;QACH,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;;;;;;;AAO9E,QAAA,MAAM,gBAAgB,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;AAEvF,QAAA,MAAM,SAAS,GACX,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAC1F,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,gBAAiC,KAAI;YACzE,OAAO,IAAI,CAAC,aAAa,CACrB,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC5F,CAAC,CAAC,CAAC;QACJ,OAAO,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAM,KAAI;YAC1C,IAAI,CAAC,YAAY,gBAAgB,EAAE;;;AAGjC,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;;gBAE5B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC9B,aAAA;YAED,IAAI,CAAC,YAAYD,SAAO,EAAE;AACxB,gBAAA,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC5B,aAAA;AAED,YAAA,MAAM,CAAC,CAAC;SACT,CAAC,CAAC,CAAC;KACL;AAEO,IAAA,KAAK,CAAC,IAAa,EAAA;QACzB,MAAM,SAAS,GACX,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QACnF,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,gBAAiC,KAAI;AACvE,YAAA,OAAO,IAAI,CAAC,aAAa,CACrB,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC5E,CAAC,CAAC,CAAC;QACJ,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAM,KAAyB;YAC7D,IAAI,CAAC,YAAYA,SAAO,EAAE;AACxB,gBAAA,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC5B,aAAA;AAED,YAAA,MAAM,CAAC,CAAC;SACT,CAAC,CAAC,CAAC;KACL;AAEO,IAAA,YAAY,CAAC,CAAU,EAAA;AAC7B,QAAA,OAAO,IAAIN,aAAY,CAAA,IAAA,kCAEnBD,aAAW,IAAI,0CAA0C,CAAC,CAAC,YAAY,CAAA,CAAA,CAAG,CAAC,CAAC;KACjF;AAEO,IAAA,aAAa,CAAC,aAA8B,EAAE,WAAmB,EAAE,QAAqB,EAAA;AAE9F,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;QACvC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KACjD;AAEO,IAAA,kBAAkB,CACtB,QAA6B,EAAE,MAAe,EAAE,YAA6B,EAC7E,MAAc,EAAA;AAChB,QAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE;YACpE,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC;AACrD,iBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,QAAa,KAAK,IAAI,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtE,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;KAChG;;AAGO,IAAA,cAAc,CAClB,QAA6B,EAAE,MAAe,EAC9C,YAA6B,EAAA;;;QAG/B,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;YACtD,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,gBAAA,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7B,aAAA;AAAM,iBAAA;AACL,gBAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,aAAA;AACF,SAAA;QAED,OAAO,IAAI,CAAC,YAAY,CAAC;AACpB,aAAA,IAAI,CACD,SAAS,CAAC,WAAW,IAAG;YACtB,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;;;;YAIjD,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,CAAC;iBACrE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAC,CAAC,CAAC,CAAC,CAAC;SAC1D,CAAC,EACF,IAAI,CACA,CAAC,QAAQ,EAAE,aAAa,KAAI;YAC1B,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC;AACvD,YAAA,OAAO,QAAQ,CAAC;AAClB,SAAC,EACD,EAAyC,CAAC,EAC9CS,MAAI,EAAE,CACT,CAAC;KACP;IAEO,aAAa,CACjB,QAA6B,EAAE,YAA6B,EAAE,MAAe,EAC7E,QAAsB,EAAE,MAAc,EACtC,cAAuB,EAAA;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACpB,SAAS,CAAC,CAAC,IAAG;YACZ,MAAM,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAC5C,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;YACzE,OAAO,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAM,KAAI;gBAC1C,IAAI,CAAC,YAAYF,SAAO,EAAE;AACxB,oBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,iBAAA;AACD,gBAAA,MAAM,CAAC,CAAC;aACT,CAAC,CAAC,CAAC;SACL,CAAC,EACF,KAAK,CAAC,CAAC,CAAC,KAA2B,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAM,EAAE,CAAM,KAAI;AACrE,YAAA,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;gBACnB,IAAI,gBAAgB,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;oBACpD,OAAO,EAAE,CAAC,IAAI,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,iBAAA;AACD,gBAAA,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;AAC9B,aAAA;AACD,YAAA,MAAM,CAAC,CAAC;SACT,CAAC,CAAC,CAAC;KACT;AAEO,IAAA,yBAAyB,CAC7B,QAA6B,EAAE,YAA6B,EAAE,MAAe,EAAE,KAAY,EAC3F,KAAmB,EAAE,MAAc,EAAE,cAAuB,EAAA;QAC9D,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE;AACzD,YAAA,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;AAC9B,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE;AAClC,YAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACpF,SAAA;AAED,QAAA,IAAI,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE;AACzC,YAAA,OAAO,IAAI,CAAC,sCAAsC,CAC9C,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3D,SAAA;AAED,QAAA,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;KAC9B;IAEO,sCAAsC,CAC1C,QAA6B,EAAE,YAA6B,EAAE,MAAe,EAAE,KAAY,EAC3F,QAAsB,EAAE,MAAc,EAAA;AACxC,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,iDAAiD,CACzD,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACtC,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,6CAA6C,CACrD,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KAC9D;AAEO,IAAA,iDAAiD,CACrD,QAA6B,EAAE,MAAe,EAAE,KAAY,EAC5D,MAAc,EAAA;AAChB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,KAAK,CAAC,UAAW,EAAE,EAAE,CAAC,CAAC;QACtE,IAAI,KAAK,CAAC,UAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACrC,YAAA,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAClC,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAyB,KAAI;YACzF,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACnD,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;SAChF,CAAC,CAAC,CAAC;KACL;IAEO,6CAA6C,CACjD,QAA6B,EAAE,YAA6B,EAAE,MAAe,EAAE,KAAY,EAC3F,QAAsB,EAAE,MAAc,EAAA;AACxC,QAAA,MAAM,EAAC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,uBAAuB,EAAC,GACzE,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;AAE3C,QAAA,MAAM,OAAO,GACT,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,KAAK,CAAC,UAAW,EAAE,uBAAuB,CAAC,CAAC;QAC7F,IAAI,KAAK,CAAC,UAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACrC,YAAA,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAClC,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAyB,KAAI;YACzF,OAAO,IAAI,CAAC,aAAa,CACrB,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;SAC3F,CAAC,CAAC,CAAC;KACL;IAEO,wBAAwB,CAC5B,QAA6B,EAAE,eAAgC,EAAE,KAAY,EAC7E,QAAsB,EAAE,MAAc,EAAA;AACxC,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;;AAEvB,YAAA,QAAQ,GAAG,gCAAgC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC7D,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,gBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa;AAC/B,oBAAA,EAAE,CAAC,EAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,eAAe,EAAC,CAAC;oBAClE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACpD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAuB,KAAI;AAClD,oBAAA,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC;AACjC,oBAAA,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,QAAQ,CAAC;AACrC,oBAAA,OAAO,IAAI,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;iBAC1C,CAAC,CAAC,CAAC;AACL,aAAA;YAED,OAAO,EAAE,CAAC,IAAI,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9C,SAAA;AAED,QAAA,OAAO,eAAe,CAAC,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC;AACjF,aAAA,IAAI,CACD,SAAS,CAAC,CAAC,EAAC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAC,KAAI;;AAC3D,YAAA,IAAI,CAAC,OAAO;AAAE,gBAAA,OAAO,OAAO,CAAC,eAAe,CAAC,CAAC;;AAG9C,YAAA,QAAQ,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,QAAQ,CAAC;AACvC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAEpE,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,YAAgC,KAAI;;gBACrE,MAAM,aAAa,GAAG,CAAA,EAAA,GAAA,YAAY,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,QAAQ,CAAC;AACxD,gBAAA,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;AAExC,gBAAA,MAAM,EAAC,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAC,GACnD,KAAK,CAAC,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;;AAE7E,gBAAA,MAAM,YAAY,GACd,IAAI,eAAe,CAAC,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBAEhF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE;AAC7D,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;oBAChF,OAAO,SAAS,CAAC,IAAI,CACjB,GAAG,CAAC,CAAC,QAAa,KAAK,IAAI,eAAe,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9E,iBAAA;gBAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC3D,OAAO,EAAE,CAAC,IAAI,eAAe,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;AACtD,iBAAA;gBAED,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;gBACpD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAChC,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EACxD,eAAe,GAAG,cAAc,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC;AACrD,gBAAA,OAAO,SAAS,CAAC,IAAI,CACjB,GAAG,CAAC,CAAC,EAAmB,KAAK,IAAI,eAAe,CACxC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAClE,CAAC,CAAC,CAAC;SACL,CAAC,CACL,CAAC;KACP;AAEO,IAAA,cAAc,CAAC,QAA6B,EAAE,KAAY,EAAE,QAAsB,EAAA;QAExF,IAAI,KAAK,CAAC,QAAQ,EAAE;;AAElB,YAAA,OAAO,EAAE,CAAC,EAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC;AAC/C,SAAA;QAED,IAAI,KAAK,CAAC,YAAY,EAAE;;AAEtB,YAAA,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE;AACrC,gBAAA,OAAO,EAAE,CAAC,EAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,eAAe,EAAC,CAAC,CAAC;AAC3E,aAAA;YAED,OAAO,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC;AACjE,iBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,gBAAyB,KAAI;AAC3C,gBAAA,IAAI,gBAAgB,EAAE;oBACpB,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;AACjD,yBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAuB,KAAI;AACpC,wBAAA,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC;AACjC,wBAAA,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,QAAQ,CAAC;qBACtC,CAAC,CAAC,CAAC;AACT,iBAAA;AACD,gBAAA,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;aAC5B,CAAC,CAAC,CAAC;AACT,SAAA;QAED,OAAO,EAAE,CAAC,EAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAC,CAAC,CAAC;KACnC;IAEO,kBAAkB,CAAC,KAAY,EAAE,OAAgB,EAAA;QACvD,IAAI,GAAG,GAAiB,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AACrB,QAAA,OAAO,IAAI,EAAE;YACX,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,CAAC,gBAAgB,KAAK,CAAC,EAAE;AAC5B,gBAAA,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AAChB,aAAA;AAED,YAAA,IAAI,CAAC,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AACzD,gBAAA,OAAO,oBAAoB,CAAC,KAAK,CAAC,UAAW,CAAC,CAAC;AAChD,aAAA;AAED,YAAA,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAChC,SAAA;KACF;AAEO,IAAA,qBAAqB,CACzB,QAAsB,EAAE,UAAkB,EAAE,SAAoC,EAAA;AAClF,QAAA,OAAO,IAAI,CAAC,0BAA0B,CAClC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;KAC5E;AAEO,IAAA,0BAA0B,CAC9B,UAAkB,EAAE,OAAgB,EAAE,QAAsB,EAC5D,SAAoC,EAAA;AACtC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACvF,OAAO,IAAI,OAAO,CACd,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAC9E,OAAO,CAAC,QAAQ,CAAC,CAAC;KACvB;IAEO,iBAAiB,CAAC,gBAAwB,EAAE,YAAoB,EAAA;QACtE,MAAM,GAAG,GAAW,EAAE,CAAC;QACvB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAM,EAAE,CAAS,KAAI;AAC9C,YAAA,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACnE,YAAA,IAAI,eAAe,EAAE;gBACnB,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAClC,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;AACnC,aAAA;AAAM,iBAAA;AACL,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACZ,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,GAAG,CAAC;KACZ;AAEO,IAAA,kBAAkB,CACtB,UAAkB,EAAE,KAAsB,EAAE,QAAsB,EAClE,SAAoC,EAAA;AACtC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAE7F,IAAI,QAAQ,GAAmC,EAAE,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAsB,EAAE,IAAY,KAAI;AAC/D,YAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnF,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,IAAI,eAAe,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;KACvD;AAEO,IAAA,cAAc,CAClB,UAAkB,EAAE,kBAAgC,EAAE,cAA4B,EAClF,SAAoC,EAAA;AACtC,QAAA,OAAO,kBAAkB,CAAC,GAAG,CACzB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,EAAE,SAAS,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;KACzE;AAEO,IAAA,YAAY,CAChB,UAAkB,EAAE,oBAAgC,EACpD,SAAoC,EAAA;AACtC,QAAA,MAAM,GAAG,GAAG,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,GAAG;AACN,YAAA,MAAM,IAAIN,aAAY,CAAA,IAAA,0CAElBD,aAAW;AACP,gBAAA,CAAA,oBAAA,EAAuB,UAAU,CAAmB,gBAAA,EAAA,oBAAoB,CAAC,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;AAC7F,QAAA,OAAO,GAAG,CAAC;KACZ;IAEO,YAAY,CAAC,oBAAgC,EAAE,cAA4B,EAAA;QACjF,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,QAAA,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE;AAC9B,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,IAAI,EAAE;AACxC,gBAAA,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,gBAAA,OAAO,CAAC,CAAC;AACV,aAAA;AACD,YAAA,GAAG,EAAE,CAAC;AACP,SAAA;AACD,QAAA,OAAO,oBAAoB,CAAC;KAC7B;AACF;;ACxbK,SAAU,cAAc,CAC1B,mBAAwC,EAAE,YAAgC,EAC1E,aAA4B,EAAE,MAAc,EAAA;AAC9C,IAAA,OAAO,SAAS,CACZ,CAAC,IACGU,gBAAgB,CAAC,mBAAmB,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC;AACrF,SAAA,IAAI,CAAC,GAAG,CAAC,iBAAiB,KAAS,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAC,KAAE,iBAAiB,EAAA,CAAA,CAAE,CAAC,CAAC,CAAC,CAAC;AAC5E;;ACFA,MAAMV,aAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC;AAEpE,MAAM,OAAO,CAAA;AAAG,CAAA;AAEhB,SAAS,kBAAkB,CAAC,CAAU,EAAA;;AAEpC,IAAA,OAAO,IAAI,UAAU,CAAsB,CAAC,GAAkC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACnG,CAAC;SAEeW,WAAS,CACrB,QAA6B,EAAE,iBAAiC,EAAE,MAAc,EAChF,OAAgB,EAAE,GAAW,EAAE,aAA4B,EAC3D,4BACI,WAAW,EAAA;AACjB,IAAA,OAAO,IAAI,UAAU,CACV,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,yBAAyB,EAC5E,aAAa,CAAC;AACpB,SAAA,SAAS,EAAE;AACX,SAAA,IAAI,CAAC,SAAS,CAAC,MAAM,IAAG;QACvB,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,YAAA,OAAO,kBAAkB,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;AAC1C,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;AACnB,SAAA;KACF,CAAC,CAAC,CAAC;AACV,CAAC;MAEY,UAAU,CAAA;AACrB,IAAA,WAAA,CACY,QAA6B,EAAU,iBAAiC,EACxE,MAAc,EAAU,OAAgB,EAAU,GAAW,EAC7D,yBAAoD,EAC3C,aAA4B,EAAA;AAHrC,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAqB;AAAU,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAgB;AACxE,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAAU,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;AAAU,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;AAC7D,QAAA,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAA2B;AAC3C,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;KAAI;IAErD,SAAS,GAAA;AACP,QAAA,MAAM,gBAAgB,GAClB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;AAChF,aAAA,YAAY,CAAC;AAEtB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,cAAc,CAAC;AACxF,aAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;YACnB,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;;;YAID,MAAM,IAAI,GAAG,IAAI,sBAAsB,CACnC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAK,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAA,CAAE,EACnE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,EACvE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAE/B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAyB,IAAI,EAAE,QAAQ,CAAC,CAAC;YACtE,MAAM,UAAU,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC5C,YAAA,OAAO,UAAU,CAAC;SACnB,CAAC,CAAC,CAAC;KACT;AAED,IAAA,oBAAoB,CAAC,SAA2C,EAAA;AAC9D,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAE9B,MAAM,CAAC,GAAG,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC5E,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAEnC,QAAA,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;KAC/D;AAED,IAAA,mBAAmB,CACf,QAA6B,EAAE,MAAe,EAAE,YAA6B,EAC7E,MAAc,EAAA;AAChB,QAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE;YACpE,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAC7D,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;KAC3F;AAED;;;;;;;AAOG;AACH,IAAA,eAAe,CAAC,QAA6B,EAAE,MAAe,EAAE,YAA6B,EAAA;QAE3F,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC1C,aAAA,IAAI,CACD,SAAS,CAAC,WAAW,IAAG;YACtB,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;;;;YAIjD,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAChE,YAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;SAC7E,CAAC,EACF,IAAI,CAAC,CAAC,QAAQ,EAAE,cAAc,KAAI;AAChC,YAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc;AAAE,gBAAA,OAAO,IAAI,CAAC;AAC9C,YAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;AACjC,YAAA,OAAO,QAAQ,CAAC;SACjB,CAAC,EACF,SAAS,CAAC,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,EACxC,cAAc,CAAC,IAAiD,CAAC,EACjEC,MAAQ,EAAE,EACV,GAAG,CAAC,QAAQ,IAAG;YACb,IAAI,QAAQ,KAAK,IAAI;AAAE,gBAAA,OAAO,IAAI,CAAC;;;;AAInC,YAAA,MAAM,cAAc,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACvD,YAAA,IAAIZ,aAAW,EAAE;;;gBAGf,yBAAyB,CAAC,cAAc,CAAC,CAAC;AAC3C,aAAA;YACD,2BAA2B,CAAC,cAAc,CAAC,CAAC;AAC5C,YAAA,OAAO,cAAc,CAAC;SACvB,CAAC,CACL,CAAC;KACP;IAED,cAAc,CACV,QAA6B,EAAE,MAAe,EAAE,YAA6B,EAC7E,QAAsB,EAAE,MAAc,EAAA;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACpB,SAAS,CAAC,CAAC,IAAG;;AACZ,YAAA,OAAO,IAAI,CAAC,0BAA0B,CAClC,CAAA,EAAA,GAAA,CAAC,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAClE,SAAC,CAAC,EACF,KAAK,CAAC,CAAC,CAAC,KAA8C,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAG;AACzE,YAAA,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;gBACnB,IAAI,gBAAgB,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;AACpD,oBAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACf,iBAAA;AACD,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,aAAA;AACD,YAAA,MAAM,CAAC,CAAC;SACT,CAAC,CAAC,CAAC;KACT;IAED,0BAA0B,CACtB,QAA6B,EAAE,KAAY,EAAE,UAA2B,EACxE,QAAsB,EAAE,MAAc,EAAA;;AACxC,QAAA,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAEhG,QAAA,IAAI,WAIG,CAAC;AAER,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;YACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAE,CAAC,UAAU,GAAG,EAAE,CAAC;YACrE,MAAM,cAAc,GAAG,iBAAiB,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;AACvE,YAAA,MAAM,QAAQ,GAAG,IAAI,sBAAsB,CACvC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAK,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAE,CAAA,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrF,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,SAAS,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,KAAK,CAAC,gBAAgB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,EACnF,KAAK,EAAE,qBAAqB,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YACjF,WAAW,GAAG,EAAE,CAAC;gBACf,QAAQ;AACR,gBAAA,gBAAgB,EAAE,EAAE;AACpB,gBAAA,iBAAiB,EAAE,EAAE;AACtB,aAAA,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;YACL,WAAW;AACP,gBAAA,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC;AACrE,qBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,EAAC,KAAI;;oBACvE,IAAI,CAAC,OAAO,EAAE;AACZ,wBAAA,OAAO,IAAI,CAAC;AACb,qBAAA;oBACD,MAAM,cAAc,GAAG,iBAAiB,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAE/E,oBAAA,MAAM,QAAQ,GAAG,IAAI,sBAAsB,CACvC,gBAAgB,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAK,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAE,CAAA,EAC1E,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,EACvD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,SAAS,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,KAAK,CAAC,gBAAgB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,EAAE,KAAK,EACxD,qBAAqB,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1E,oBAAA,OAAO,EAAC,QAAQ,EAAE,gBAAgB,EAAE,iBAAiB,EAAC,CAAC;iBACxD,CAAC,CAAC,CAAC;AACb,SAAA;QAED,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;;YAC3C,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,aAAA;YACD,MAAM,EAAC,QAAQ,EAAE,gBAAgB,EAAE,iBAAiB,EAAC,GAAG,MAAM,CAAC;;AAE/D,YAAA,QAAQ,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,QAAQ,CAAC;YACvC,MAAM,aAAa,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,QAAQ,CAAC;AACxD,YAAA,MAAM,WAAW,GAAY,cAAc,CAAC,KAAK,CAAC,CAAC;AAEnD,YAAA,MAAM,EAAC,YAAY,EAAE,cAAc,EAAC,GAAG,KAAK,CACxC,UAAU,EAAE,gBAAgB,EAAE,iBAAiB;;;;AAI/C,YAAA,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC;YAEzD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE;AAC7D,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;oBACxF,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,wBAAA,OAAO,IAAI,CAAC;AACb,qBAAA;oBACD,OAAO,CAAC,IAAI,QAAQ,CAAyB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;iBACnE,CAAC,CAAC,CAAC;AACL,aAAA;YAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3D,gBAAA,OAAO,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAyB,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,aAAA;YAED,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;;;;;;;;;AASpD,YAAA,OAAO,IAAI;AACN,iBAAA,cAAc,CACX,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EACxD,eAAe,GAAG,cAAc,GAAG,MAAM,CAAC;AAC7C,iBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;gBACnB,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,oBAAA,OAAO,IAAI,CAAC;AACb,iBAAA;gBACD,OAAO,CAAC,IAAI,QAAQ,CAAyB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;aACnE,CAAC,CAAC,CAAC;SACT,CAAC,CAAC,CAAC;KACL;AACF,CAAA;AAED,SAAS,2BAA2B,CAAC,KAAyC,EAAA;IAC5E,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAClB,QAAA,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,cAAc;YAAE,OAAO,CAAC,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,cAAc;AAAE,YAAA,OAAO,CAAC,CAAC;AAChD,QAAA,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACtD,KAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,KAAY,EAAA;IAClC,IAAI,KAAK,CAAC,QAAQ,EAAE;QAClB,OAAO,KAAK,CAAC,QAAQ,CAAC;AACvB,KAAA;IAED,IAAI,KAAK,CAAC,YAAY,EAAE;QACtB,OAAO,KAAK,CAAC,aAAc,CAAC;AAC7B,KAAA;AAED,IAAA,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAsC,EAAA;AAChE,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;AACtC,IAAA,OAAO,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC;AACzE,CAAC;AAED;;;;AAIG;AACH,SAAS,qBAAqB,CAAC,KAA8C,EAAA;IAE3E,MAAM,MAAM,GAA4C,EAAE,CAAC;;AAE3D,IAAA,MAAM,WAAW,GAA0C,IAAI,GAAG,EAAE,CAAC;AAErE,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;AAC7B,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,SAAS;AACV,SAAA;QAED,MAAM,sBAAsB,GACxB,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvF,IAAI,sBAAsB,KAAK,SAAS,EAAE;YACxC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvD,YAAA,WAAW,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACzC,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;AACF,KAAA;;;;;AAKD,IAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QACpC,MAAM,cAAc,GAAG,qBAAqB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAClE,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;AAC7D,KAAA;AACD,IAAA,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAyC,EAAA;IAC1E,MAAM,KAAK,GAA0C,EAAE,CAAC;AACxD,IAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;QAChB,MAAM,uBAAuB,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACtD,QAAA,IAAI,uBAAuB,EAAE;YAC3B,MAAM,CAAC,GAAG,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvD,YAAA,MAAM,IAAIC,aAAY,CAAA,IAAA,uDAElBD,aAAW,IAAI,mDAAmD,CAAC,CAAA,OAAA,EAAU,CAAC,CAAA,EAAA,CAAI,CAAC,CAAC;AACzF,SAAA;QACD,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAClC,KAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,YAA6B,EAAA;IAC1D,IAAI,CAAC,GAAG,YAAY,CAAC;IACrB,OAAO,CAAC,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;AACtB,KAAA;AACD,IAAA,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,iBAAiB,CAAC,YAA6B,EAAA;;IACtD,IAAI,CAAC,GAAG,YAAY,CAAC;IACrB,IAAI,GAAG,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;IACpC,OAAO,CAAC,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;AACrB,QAAA,GAAG,IAAI,CAAA,EAAA,GAAA,CAAC,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;AAClC,KAAA;IACD,OAAO,GAAG,GAAG,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,0BAA0B,CAAC,YAA6B,EAAA;;IAC/D,IAAI,CAAC,GAAG,YAAY,CAAC;AACrB,IAAA,IAAI,GAAG,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,2BAA2B,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;IACrE,OAAO,CAAC,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;AACrB,QAAA,GAAG,IAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,2BAA2B,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,CAAC,kBAAkB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,CAAC;AACnE,KAAA;IACD,OAAO,GAAG,GAAG,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,OAAO,CAAC,KAAY,EAAA;AAC3B,IAAA,OAAO,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,UAAU,CAAC,KAAY,EAAA;AAC9B,IAAA,OAAO,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;AAC7B;;AClWM,SAAU,SAAS,CACrB,QAA6B,EAAE,iBAAiC,EAAE,MAAe,EACjF,UAAyB,EAAE,yBAA+C,EAAA;AAE5E,IAAA,OAAO,QAAQ,CACX,CAAC,IAAIa,WAAW,CACP,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,CAAC,iBAAkB,EACzD,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAkB,CAAC,EAAE,UAAU,EAAE,yBAAyB,CAAC;AACjF,SAAA,IAAI,CAAC,GAAG,CAAC,cAAc,KAAS,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAC,KAAE,cAAc,EAAA,CAAA,CAAE,CAAC,CAAC,CAAC,CAAC;AACvE;;ACLgB,SAAA,WAAW,CACvB,yBAA+C,EAC/C,QAA6B,EAAA;AAC/B,IAAA,OAAO,QAAQ,CAAC,CAAC,IAAG;QAClB,MAAM,EAAC,cAAc,EAAE,MAAM,EAAE,EAAC,iBAAiB,EAAC,EAAC,GAAG,CAAC,CAAC;AAExD,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC7B,YAAA,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACd,SAAA;QACD,IAAI,yBAAyB,GAAG,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,iBAAiB,CAAC;aACzB,IAAI,CACD,SAAS,CACL,KAAK,IACD,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,cAAe,EAAE,yBAAyB,EAAE,QAAQ,CAAC,CAAC,EACtF,GAAG,CAAC,MAAM,yBAAyB,EAAE,CAAC,EACtC,QAAQ,CAAC,CAAC,CAAC,EACX,QAAQ,CAAC,CAAC,IAAI,yBAAyB,KAAK,iBAAiB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CACxF,CAAC;AACR,KAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CACf,SAAiC,EAAE,SAA8B,EACjE,yBAA+C,EAAE,QAA6B,EAAA;AAChF,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC;AACrC,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC;AACnC,IAAA,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,KAAK,MAAK,SAAS,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;AAC1D,QAAA,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;AACvC,KAAA;AACD,IAAA,OAAO,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAiB,KAAI;AACzF,QAAA,SAAS,CAAC,aAAa,GAAG,YAAY,CAAC;QACvC,SAAS,CAAC,IAAI,GAAG,0BAA0B,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC,OAAO,CAAC;AAC1F,QAAA,IAAI,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE;YACpC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9C,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,WAAW,CAChB,OAAoB,EAAE,SAAiC,EAAE,SAA8B,EACvF,QAA6B,EAAA;AAC/B,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAClC,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACf,KAAA;IACD,MAAM,IAAI,GAA8B,EAAE,CAAC;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAClB,QAAQ,CACJ,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;SACpD,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,KAAU,KAAI;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACpB,KAAC,CAAC,CAAC,CAAC,EACzB,QAAQ,CAAC,CAAC,CAAC,EACX,KAAK,CAAC,IAAI,CAAC,EACX,UAAU,CAAC,CAAC,CAAU,KAAK,YAAY,CAAC,CAAU,CAAC,GAAG,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAC/E,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAA;AAC9B,IAAA,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,WAAW,CAChB,cAA2C,EAAE,SAAiC,EAC9E,SAA8B,EAAE,QAA6B,EAAA;;IAC/D,MAAM,eAAe,GAAG,CAAA,EAAA,GAAA,uBAAuB,CAAC,SAAS,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,QAAQ,CAAC;IACvE,MAAM,QAAQ,GAAG,0BAA0B,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAC7E,IAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO;QAClC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;AACtC,QAAA,eAAe,CAAC,YAAY,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AACvE,IAAA,OAAO,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,cAAc,CAAC,MAAa,EAAA;AACnC,IAAA,OAAO,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;AACnE;;ACvFA;;;;;AAKG;AACG,SAAU,SAAS,CAAI,IAAyC,EAAA;AAEpE,IAAA,OAAO,SAAS,CAAC,CAAC,IAAG;AACnB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5C,SAAA;AACD,QAAA,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACf,KAAC,CAAC,CAAC;AACL;;ACfA;AACA;AAEgB,SAAA,4BAA4B,CACxC,QAAkB,EAAE,YAAqB,EAAA;AAC3C,IAAA,OAAO,IAAI,CAAC;AACd;;ACCA,MAAMb,aAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC;AAEpE;;;;;;;;;AASG;MACU,MAAM,GAAG,IAAI,cAAc,CAAY,QAAQ,EAAE;MAKjD,kBAAkB,CAAA;IAM7B,WACY,CAAA,QAAkB,EAClB,QAAkB,EAAA;AADlB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAClB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAPtB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAA0B,CAAC;AACzD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAyC,CAAC;KAO3E;AAEJ,IAAA,aAAa,CAAC,KAAY,EAAA;QACxB,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;AAC1C,SAAA;aAAM,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACjC,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACnC,SAAA;QAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACjC,SAAA;QACD,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,aAAc,EAAE,CAAC;aACrC,IAAI,CACD,GAAG,CAAC,wBAAwB,CAAC,EAC7B,GAAG,CAAC,SAAS,IAAG;;YACd,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC/B,aAAA;AACD,YAAAA,aAAW,IAAI,gBAAgB,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAC7D,YAAA,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAC;AACrC,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACrC,CAAC,CACL,CAAC;;QAEzB,MAAM,MAAM,GACR,IAAI,qBAAqB,CAAC,UAAU,EAAE,MAAM,IAAI,OAAO,EAAiB,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/F,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzC,QAAA,OAAO,MAAM,CAAC;KACf;IAED,YAAY,CAAC,cAAwB,EAAE,KAAY,EAAA;QACjD,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACnC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;AACzC,SAAA;aAAM,IAAI,KAAK,CAAC,aAAa,EAAE;AAC9B,YAAA,OAAO,EAAE,CAAC,EAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,eAAe,EAAC,CAAC,CAAC;AAC3E,SAAA;QAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACjC,SAAA;QACD,MAAM,sBAAsB,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,YAAa,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAC1C,GAAG,CAAC,CAAC,eAA4C,KAAI;YACnD,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC/B,aAAA;;;AAGD,YAAA,IAAI,QAAuC,CAAC;AAC5C,YAAA,IAAI,SAAkB,CAAC;YACvB,IAAI,2BAA2B,GAAG,KAAK,CAAC;AACxC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;gBAClC,SAAS,GAAG,eAAe,CAAC;gBAC5B,2BAA2B,GAAG,IAAI,CAAC;AACpC,aAAA;AAAM,iBAAA;gBACL,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC;;;;;gBAK3D,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxF,aAAA;YACD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAChDA,aAAW,IAAI,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;AAC/E,YAAA,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC;AAC5B,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACpC,CAAC,CACL,CAAC;;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,UAAU,EAAE,MAAM,IAAI,OAAO,EAAsB,CAAC;AACzE,aAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACxC,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,yBAAyB,CAAC,YAA0B,EAAA;QAE1D,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AACnF,QAAA,IAAI,gBAAgB,EAAE;AACpB,YAAA,OAAO,gBAAgB,CAAC;AACzB,SAAA;AACD,QAAA,OAAO,kBAAkB,CAAE,YAAqC,EAAE,CAAC;aAC9D,IAAI,CACD,GAAG,CAAC,wBAAwB,CAAC,EAC7B,QAAQ,CAAC,CAAC,CAAC,KAAI;YACb,IAAI,CAAC,YAAY,eAAe,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACpD,gBAAA,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACd,aAAA;AAAM,iBAAA;gBACL,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,aAAA;SACF,CAAC,CACL,CAAC;KACP;;0HA1GU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADN,MAAM,EAAA,CAAA,CAAA;sGAClB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;AA8GhC,SAAS,sBAAsB,CAAI,KAAyB,EAAA;;;;IAI1D,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,CAAC;AAClE,CAAC;AAED,SAAS,wBAAwB,CAAI,KAAyB,EAAA;;;AAG5D,IAAA,OAAO,sBAAsB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;AAClE;;ACzHA,MAAMA,aAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC;MA8PvD,qBAAqB,CAAA;AAShC,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC;KAChC;AAYD,IAAA,WAAA,GAAA;AAtBA,QAAA,IAAiB,CAAA,iBAAA,GAAoB,IAAI,CAAC;AAC1C,QAAA,IAAwB,CAAA,wBAAA,GAAoB,IAAI,CAAC;AACxC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAAS,CAAC;AACtB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAC/D,QAAA,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;AAKjB;;;;;AAKG;QACH,IAAkB,CAAA,kBAAA,GAA2B,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;;AAE9D,QAAA,IAAiB,CAAA,iBAAA,GAAmB,IAAI,CAAC;AAGvC,QAAA,MAAM,WAAW,GAAG,CAAC,CAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,QAAA,MAAM,SAAS,GAAG,CAAC,CAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,GAAG,SAAS,CAAC;AAChD,QAAA,IAAI,CAAC,YAAY,CAAC,mBAAmB,GAAG,WAAW,CAAC;KACrD;IAED,QAAQ,GAAA;;AACN,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,EAAE,CAAC;KAC9B;AAED,IAAA,uBAAuB,CACnB,OAGiF,EAAA;;AACnF,QAAA,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC;AAC/B,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,+CAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAK,EAAA,OAAO,CAAE,EAAA,EAAA,EAAE,IAAE,CAAC;KACrE;AAED,IAAA,gBAAgB,CAAC,MAA+B,EAAA;AAC9C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAuB;AAC3D,YAAA,EAAE,EAAE,CAAC;AACL,YAAA,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,aAAa,EAAE,MAAM,CAAC,cAAc;YACpC,YAAY,EAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;YACvE,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;YAC5E,MAAM,EAAE,MAAM,CAAC,cAAc;AAC7B,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAC9B,YAAA,MAAM,EAAE,qBAAqB;AAC7B,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ;AAC5C,YAAA,cAAc,EAAE,IAAI;YACpB,kBAAkB,EAAE,MAAM,CAAC,WAAW;AACtC,YAAA,iBAAiB,EAAE,IAAI;YACvB,MAAM,EAAE,EAAC,iBAAiB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAC;AACxD,YAAA,YAAY,EAAE,IAAI;AACnB,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CACjB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;;QAGvB,GAAG,CAAC,CAAC,KACQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAC,KAAE,YAAY,EAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAA,CAAA,CAC5C,CAAC;;QAG/B,SAAS,CAAC,sBAAsB,IAAG;YACjC,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,EAAE,CAAC,sBAAsB,CAAC;iBAC5B,IAAI;;YAED,GAAG,CAAC,CAAC,IAAG;gBACN,IAAI,CAAC,iBAAiB,GAAG;oBACvB,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,UAAU,EAAE,CAAC,CAAC,MAAM;oBACpB,YAAY,EAAE,CAAC,CAAC,YAAY;oBAC5B,OAAO,EAAE,CAAC,CAAC,MAAM;oBACjB,MAAM,EAAE,CAAC,CAAC,MAAM;AAChB,oBAAA,kBAAkB,EAAE,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI,GAAE,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACtD,IAAI,CAAC,wBAAwB,KAChC,kBAAkB,EAAE,IAAI,EACzB,CAAA;iBACF,CAAC;AACJ,aAAC,CAAC,EACF,SAAS,CAAC,CAAC,IAAG;;gBACZ,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;AACxD,gBAAA,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,SAAS;AACnC,oBAAA,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,cAAc;;;;;AAK5C,oBAAA,cAAc,KAAK,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;AAGxD,gBAAA,MAAM,mBAAmB,GACrB,CAAA,EAAA,GAAA,CAAC,CAAC,MAAM,CAAC,mBAAmB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,MAAM,CAAC,mBAAmB,CAAC;AAC/D,gBAAA,IAAI,CAAC,aAAa,IAAI,mBAAmB,KAAK,QAAQ,EAAE;AACtD,oBAAA,MAAM,MAAM,GAAGA,aAAW;AACtB,wBAAA,CAAA,cAAA,EACI,CAAC,CAAC,MAAM,CAAA,8DAAA,CAAgE;AAC5E,wBAAA,EAAE,CAAC;AACP,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAClC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,YAAY,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,MAAM,EACjB,CAAA,sDAAA,CAAC,CAAC;AACrD,oBAAA,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;AAC7B,oBAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;gBAED,IAAI,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;;;AAGzD,oBAAA,IAAI,4BAA4B,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AAC1C,wBAAA,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC;AACxC,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;;oBAEb,SAAS,CAAC,CAAC,IAAG;;wBACZ,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,EAAE,CAAC;AAChD,wBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAChC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,EAC5D,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;wBACtB,IAAI,UAAU,MAAK,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,EAAE,CAAA,EAAE;AAC/C,4BAAA,OAAO,KAAK,CAAC;AACd,yBAAA;;;AAID,wBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5B,qBAAC,CAAC;;AAGF,oBAAA,cAAc,CACV,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,YAAY,EAC3C,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC;;;oBAItC,GAAG,CAAC,CAAC,IAAG;AACN,wBAAA,IAAI,CAAC,iBAAiB,GACjB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,iBAAkB,CAC1B,EAAA,EAAA,QAAQ,EAAE,CAAC,CAAC,iBAAiB,GAC9B,CAAC;AACF,wBAAA,sBAAsB,CAAC,iBAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAC;AACjE,qBAAC,CAAC;;oBAGF,SAAS,CACL,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,iBAAiB,EAChD,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EACjC,MAAM,CAAC,yBAAyB,CAAC;;oBAGrC,GAAG,CAAC,CAAC,IAAG;AACN,wBAAA,sBAAsB,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC;AACzD,wBAAA,IAAI,MAAM,CAAC,iBAAiB,KAAK,OAAO,EAAE;AACxC,4BAAA,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE;AAChC,gCAAA,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAC3C,CAAC,CAAC,iBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACpC,gCAAA,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACjC,6BAAA;AACD,4BAAA,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,iBAAkB,CAAC;AAC9C,yBAAA;;AAGD,wBAAA,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CACzC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,EAClD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAkB,CAAC,EAClD,CAAC,CAAC,cAAe,CAAC,CAAC;AACvB,wBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;qBACpC,CAAC,CAAC,CAAC;AACT,iBAAA;AAAM,qBAAA,IACH,aAAa;oBACb,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AAClE;;AAE2D;AAC3D,oBAAA,MAAM,EAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAC,GAAG,CAAC,CAAC;oBAC5D,MAAM,QAAQ,GAAG,IAAI,eAAe,CAChC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,EACtD,aAAa,CAAC,CAAC;AACnB,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,oBAAA,MAAM,cAAc,GAChB,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC;oBAEpE,sBAAsB,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACjB,CAAC,CACJ,EAAA,EAAA,cAAc,EACd,iBAAiB,EAAE,YAAY,EAC/B,MAAM,kCAAM,MAAM,CAAA,EAAA,EAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAA,CAAA,EAAA,CACjE,CAAC;AACF,oBAAA,OAAO,EAAE,CAAC,sBAAsB,CAAC,CAAC;AACnC,iBAAA;AAAM,qBAAA;AACL;;;;AAIG;AACH,oBAAA,MAAM,MAAM,GAAGA,aAAW;wBACtB,CAAwD,sDAAA,CAAA;4BACpD,CACI,mCAAA,EAAA,MAAM,CAAC,UAAU,CAAA,gBAAA,EACjB,CAAC,CAAC,MAAM,CAAuB,qBAAA,CAAA;AACvC,wBAAA,EAAE,CAAC;AACP,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAClC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,YAAY,CAAC,sBAAsB,CAAC,YAAY,CAAC,EAC9D,MAAM,EAAqD,CAAA,0DAAA,CAAC,CAAC;AACjE,oBAAA,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;AAC7B,oBAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;AACH,aAAC,CAAC;;YAGF,GAAG,CAAC,CAAC,IAAG;AACN,gBAAA,MAAM,WAAW,GAAG,IAAI,gBAAgB,CACpC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,EAClD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAkB,CAAC,EAClD,CAAC,CAAC,cAAe,CAAC,CAAC;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAChC,aAAC,CAAC,EAEF,GAAG,CAAC,CAAC,IAAG;gBACN,sBAAsB,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACjB,CAAC,CACJ,EAAA,EAAA,MAAM,EAAE,iBAAiB,CACrB,CAAC,CAAC,cAAe,EAAE,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,GAC7D,CAAC;AACF,gBAAA,OAAO,sBAAsB,CAAC;aAC/B,CAAC,EAEF,WAAW,CACP,IAAI,CAAC,mBAAmB,EAAE,CAAC,GAAU,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACpE,GAAG,CAAC,CAAC,IAAG;AACN,gBAAA,sBAAsB,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;AACrD,gBAAA,IAAI,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE;oBAC7B,MAAM,0BAA0B,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;AACtE,iBAAA;AAED,gBAAA,MAAM,SAAS,GAAG,IAAI,cAAc,CAChC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,EAClD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAkB,CAAC,EAClD,CAAC,CAAC,cAAe,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AACzC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9B,aAAC,CAAC,EAEF,MAAM,CAAC,CAAC,IAAG;AACT,gBAAA,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE;AACnB,oBAAA,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oBACzB,IAAI,CAAC,0BAA0B,CAC3B,CAAC,EAAE,EAAE,mDAA2C,CAAC;AACrD,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;AACD,gBAAA,OAAO,IAAI,CAAC;AACd,aAAC,CAAC;;YAGF,SAAS,CAAC,CAAC,IAAG;AACZ,gBAAA,IAAI,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE;oBACrC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CACb,GAAG,CAAC,CAAC,IAAG;AACN,wBAAA,MAAM,YAAY,GAAG,IAAI,YAAY,CACjC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,EAClD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAkB,CAAC,EAClD,CAAC,CAAC,cAAe,CAAC,CAAC;AACvB,wBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACjC,qBAAC,CAAC,EACF,SAAS,CAAC,CAAC,IAAG;wBACZ,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,wBAAA,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CACb,WAAW,CACP,MAAM,CAAC,yBAAyB,EAChC,IAAI,CAAC,mBAAmB,CAAC,EAC7B,GAAG,CAAC;AACF,4BAAA,IAAI,EAAE,MAAM,YAAY,GAAG,IAAI;4BAC/B,QAAQ,EAAE,MAAK;gCACb,IAAI,CAAC,YAAY,EAAE;AACjB,oCAAA,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACzB,oCAAA,IAAI,CAAC,0BAA0B,CAC3B,CAAC,EACDA,aAAW;AACP,wCAAA,CAAA,kDAAA,CAAoD;AACpD,wCAAA,EAAE,wDACwC,CAAC;AACpD,iCAAA;6BACF;AACF,yBAAA,CAAC,CACL,CAAC;AACJ,qBAAC,CAAC,EACF,GAAG,CAAC,CAAC,IAAG;AACN,wBAAA,MAAM,UAAU,GAAG,IAAI,UAAU,CAC7B,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,EAClD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAkB,CAAC,EAClD,CAAC,CAAC,cAAe,CAAC,CAAC;AACvB,wBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;qBAC9B,CAAC,CAAC,CAAC;AACT,iBAAA;AACD,gBAAA,OAAO,SAAS,CAAC;AACnB,aAAC,CAAC;;AAGF,YAAA,SAAS,CAAC,CAAC,CAAuB,KAAI;AACpC,gBAAA,MAAM,cAAc,GAChB,CAAC,KAA6B,KAA6B;;oBACzD,MAAM,OAAO,GAA4B,EAAE,CAAC;AAC5C,oBAAA,IAAI,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,WAAW,0CAAE,aAAa;AAChC,wBAAA,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE;AACvC,wBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC;AAC7C,6BAAA,IAAI,CACD,GAAG,CAAC,eAAe,IAAG;AACpB,4BAAA,KAAK,CAAC,SAAS,GAAG,eAAe,CAAC;AACpC,yBAAC,CAAC,EACF,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAChB,CAAC,CAAC;AACzB,qBAAA;AACD,oBAAA,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE;wBAClC,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,qBAAA;AACD,oBAAA,OAAO,OAAO,CAAC;AACjB,iBAAC,CAAC;gBACN,OAAO,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,cAAe,CAAC,IAAI,CAAC,CAAC;qBACvD,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,aAAC,CAAC,EAEF,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAE1C,GAAG,CAAC,CAAC,CAAuB,KAAI;AAC9B,gBAAA,MAAM,iBAAiB,GAAG,iBAAiB,CACvC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,cAAe,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACxE,gBAAA,sBAAsB,GAAO,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAC,CAAE,EAAA,EAAA,iBAAiB,GAAC,CAAC;gBACnD,QAAQ,sBAAsB,EAAE;AAClC,aAAC,CAAC;AAEF;;;;AAIiD;AACjD,YAAA,GAAG,CAAC,CAAC,CAAuB,KAAI;AAC9B,gBAAA,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,iBAAkB,CAAC;AAC7C,gBAAA,MAAM,CAAC,UAAU;AACb,oBAAA,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,gBAAA,MAAqC,CAAC,WAAW;oBAC9C,CAAC,CAAC,iBAAkB,CAAC;AAEzB,gBAAA,IAAI,MAAM,CAAC,iBAAiB,KAAK,UAAU,EAAE;AAC3C,oBAAA,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE;wBAChC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC5C,qBAAA;AACD,oBAAA,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,iBAAkB,CAAC;AAC9C,iBAAA;AACH,aAAC,CAAC,EAEF,cAAc,CACV,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,kBAAkB,EAC5C,CAAC,GAAU,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAE1C,GAAG,CAAC;AACF,gBAAA,IAAI,EAAE,CAAC,CAAuB,KAAI;;oBAChC,SAAS,GAAG,IAAI,CAAC;AACjB,oBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACvD,oBAAA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,CAC9B,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,EAClD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC1D,oBAAA,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CAAC,CAAC,CAAC,iBAAkB,CAAC,QAAQ,CAAC,CAAC;AACjE,oBAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB;gBACD,QAAQ,EAAE,MAAK;oBACb,SAAS,GAAG,IAAI,CAAC;iBAClB;AACF,aAAA,CAAC,EACF,QAAQ,CAAC,MAAK;;AACZ;;;;;AAK8D;AAC9D,gBAAA,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE;AAC1B,oBAAA,MAAM,iBAAiB,GAAGA,aAAW;AACjC,wBAAA,CAAA,cAAA,EACI,sBAAsB;AACjB,6BAAA,EAAE,8CACP,IAAI,CAAC,YAAY,CAAA,CAAE;AACvB,wBAAA,EAAE,CAAC;oBACP,IAAI,CAAC,0BAA0B,CAC3B,sBAAsB,EAAE,iBAAiB,+DACY,CAAC;AAC3D,iBAAA;;;gBAGD,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,MAAK,sBAAsB,CAAC,EAAE,EAAE;AAC5D,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC/B,iBAAA;AACH,aAAC,CAAC,EACF,UAAU,CAAC,CAAC,CAAC,KAAI;;gBACf,OAAO,GAAG,IAAI,CAAC;AACf;AACwC;AACxC,gBAAA,IAAIG,4BAA0B,CAAC,CAAC,CAAC,EAAE;AACjC,oBAAA,IAAI,CAACD,uCAAqC,CAAC,CAAC,CAAC,EAAE;;;;;;;AAO7C,wBAAA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB,wBAAA,MAAM,CAAC,cAAc,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;AACrD,qBAAA;AACD,oBAAA,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAClC,sBAAsB,CAAC,EAAE,EACzB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,sBAAsB,CAAC,YAAY,CAAC,EACjE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC;AACnC,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;;AAI5B,oBAAA,IAAI,CAACA,uCAAqC,CAAC,CAAC,CAAC,EAAE;AAC7C,wBAAA,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvC,qBAAA;AAAM,yBAAA;AACL,wBAAA,MAAM,UAAU,GACZ,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AAC/D,wBAAA,MAAM,MAAM,GAAG;AACb,4BAAA,kBAAkB,EACd,sBAAsB,CAAC,MAAM,CAAC,kBAAkB;;;;;AAKpD,4BAAA,UAAU,EAAE,MAAM,CAAC,iBAAiB,KAAK,OAAO;AAC5C,gCAAA,4BAA4B,CAAC,sBAAsB,CAAC,MAAM,CAAC;yBAChE,CAAC;wBAEF,MAAM,CAAC,kBAAkB,CACrB,UAAU,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,EAAE;4BAC/C,OAAO,EAAE,sBAAsB,CAAC,OAAO;4BACvC,MAAM,EAAE,sBAAsB,CAAC,MAAM;4BACrC,OAAO,EAAE,sBAAsB,CAAC,OAAO;AACxC,yBAAA,CAAC,CAAC;AACR,qBAAA;AAED;AAC6B;AAC9B,iBAAA;AAAM,qBAAA;AACL,oBAAA,MAAM,CAAC,cAAc,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;AACpD,oBAAA,MAAM,QAAQ,GAAG,IAAI,eAAe,CAChC,sBAAsB,CAAC,EAAE,EACzB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,sBAAsB,CAAC,YAAY,CAAC,EACjE,CAAC,EAAE,CAAA,EAAA,GAAA,sBAAsB,CAAC,cAAc,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,SAAS,CAAC,CAAC;AAC3D,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC3B,IAAI;wBACF,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,qBAAA;AAAC,oBAAA,OAAO,EAAE,EAAE;AACX,wBAAA,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACnC,qBAAA;AACF,iBAAA;AACD,gBAAA,OAAO,KAAK,CAAC;aACd,CAAC,CAAC,CAAC;;SAEb,CAAC,CAAqC,CAAC;KACpD;AAEO,IAAA,0BAA0B,CAC9B,CAAuB,EAAE,MAAc,EAAE,IAAgC,EAAA;QAC3E,MAAM,SAAS,GACX,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC3F,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5B,QAAA,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAClB;;6HAjeU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cADT,MAAM,EAAA,CAAA,CAAA;sGAClB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;AAqe1B,SAAU,4BAA4B,CAAC,MAAyB,EAAA;IACpE,OAAO,MAAM,KAAK,qBAAqB,CAAC;AAC1C;;ACxvBA;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAEmB,aAAa,CAAA;AAIjC;;AAEG;AACH,IAAA,UAAU,CAAC,QAA6B,EAAA;;AACtC,QAAA,IAAI,SAA2B,CAAC;AAChC,QAAA,IAAI,KAAK,GAAqC,QAAQ,CAAC,IAAI,CAAC;QAC5D,OAAO,KAAK,KAAK,SAAS,EAAE;YAC1B,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,SAAS,CAAC;AAC9D,YAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC;AACvE,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;AAED;;;AAGG;AACH,IAAA,wBAAwB,CAAC,QAAgC,EAAA;AACvD,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACrC;;qHAvBmB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;yHAAb,aAAa,EAAA,UAAA,EADV,MAAM,EAAc,UAAA,EAAA,MAAM,MAAM,CAAC,oBAAoB,CAAC,EAAA,CAAA,CAAA;sGACzD,aAAa,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA,EAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC,oBAAoB,CAAC,EAAC,CAAA;;AA2BhF;;AAEG;AAEG,MAAO,oBAAqB,SAAQ,aAAa,CAAA;AACrD,IAAA,WAAA,CAAqB,KAAY,EAAA;AAC/B,QAAA,KAAK,EAAE,CAAC;AADW,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;KAEhC;AAED;;;;AAIG;AACM,IAAA,WAAW,CAAC,QAA6B,EAAA;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;KACF;;4HAfU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADR,MAAM,EAAA,CAAA,CAAA;sGAClB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;;AClChC;;;;;;AAMG;MAEmB,kBAAkB,CAAA;;0HAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8HAAlB,kBAAkB,EAAA,UAAA,EADf,MAAM,EAAc,UAAA,EAAA,MAAM,MAAM,CAAC,yBAAyB,CAAC,EAAA,CAAA,CAAA;sGAC9D,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA,EAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC,yBAAyB,CAAC,EAAC,CAAA;;AAsBrF;;;;;;;;;;;;;;;;AAgBG;MACmB,sBAAsB,CAAA;AAC1C;;;AAGK;AACL,IAAA,YAAY,CAAC,KAA6B,EAAA;AACxC,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;AAEG;AACH,IAAA,KAAK,CAAC,KAA6B,EAAE,YAAiC,KAAU;;AAGhF,IAAA,YAAY,CAAC,KAA6B,EAAA;AACxC,QAAA,OAAO,KAAK,CAAC;KACd;;AAGD,IAAA,QAAQ,CAAC,KAA6B,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;;AAIG;IACH,gBAAgB,CAAC,MAA8B,EAAE,IAA4B,EAAA;AAC3E,QAAA,OAAO,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC;KAChD;AACF,CAAA;AAGK,MAAO,yBAA0B,SAAQ,sBAAsB,CAAA;;iIAAxD,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cADb,MAAM,EAAA,CAAA,CAAA;sGAClB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;;ACpGhC,MAAMF,aAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC;AAoOpE;;;;AAIG;AACU,MAAA,oBAAoB,GAC7B,IAAI,cAAc,CAAeA,aAAW,GAAG,eAAe,GAAG,EAAE,EAAE;AACnE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,OAAO,EAAE,CAAC;AACpB,CAAA;;AC9OL;;;;;;AAMG;MAEmB,mBAAmB,CAAA;;2HAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+HAAnB,mBAAmB,EAAA,UAAA,EADhB,MAAM,EAAc,UAAA,EAAA,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAA,CAAA,CAAA;sGAC/D,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA,EAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAC,CAAA;;AAwBtF;;AAEG;MAEU,0BAA0B,CAAA;AACrC,IAAA,gBAAgB,CAAC,GAAY,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC;KACb;AACD,IAAA,OAAO,CAAC,GAAY,EAAA;AAClB,QAAA,OAAO,GAAG,CAAC;KACZ;IACD,KAAK,CAAC,UAAmB,EAAE,QAAiB,EAAA;AAC1C,QAAA,OAAO,UAAU,CAAC;KACnB;;kIATU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cADd,MAAM,EAAA,CAAA,CAAA;sGAClB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;;ACjBhC,MAAMA,aAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC;AAEpE,SAAS,mBAAmB,CAAC,KAAU,EAAA;AACrC,IAAA,MAAM,KAAK,CAAC;AACd,CAAC;AAED,SAAS,+BAA+B,CACpC,KAAe,EAAE,aAA4B,EAAE,GAAW,EAAA;AAC5D,IAAA,OAAO,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;;AAGG;AACI,MAAM,iBAAiB,GAAyB;AACrD,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,YAAY,EAAE,SAAS;AACvB,IAAA,WAAW,EAAE,OAAO;CACrB,CAAC;AAEF;;;AAGG;AACI,MAAM,kBAAkB,GAAyB;AACtD,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,YAAY,EAAE,SAAS;AACvB,IAAA,WAAW,EAAE,QAAQ;CACtB,CAAC;AAEF;;;;;;;;;;;AAWG;MAEU,MAAM,CAAA;;;AA6DjB,IAAA,IAAY,YAAY,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC;KAChD;AAWD;;;;AAIG;AACH,IAAA,IAAY,aAAa,GAAA;;QACvB,OAAQ,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAA2B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,CAAC;KAC1E;AAID;;AAEG;AACH,IAAA,IAAW,MAAM,GAAA;;;;;AAKf,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;KAC1C;AA8ID,IAAA,WAAA,GAAA;;AApLQ,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AASzB;;;;;;;AAOG;AACK,QAAA,IAAa,CAAA,aAAA,GAAW,CAAC,CAAC;AAS1B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAACc,QAAO,CAAC,CAAC;AAC1B,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AAiBjC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,EAAE,CAAC;AAEvE;;;;;;AAMG;QACH,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,mBAAmB,CAAC;AAEhE;;;;;;;;;AASG;QACH,IAAwB,CAAA,wBAAA,GACpB,IAAI,CAAC,OAAO,CAAC,wBAAwB,IAAI,+BAA+B,CAAC;AAE7E;;;AAGG;AACH,QAAA,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AACnB,QAAA,IAAgB,CAAA,gBAAA,GAAW,CAAC,CAAC,CAAC;AAEtC;;;;;;AAMG;AACH,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAElD;;;;;AAKG;AACH,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;;AAG/B,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAErE;;;;;AAKG;AACH,QAAA,IAAA,CAAA,aAAa,GAAmB,MAAM,CAAC,aAAa,CAAC,CAAC;AAEtD;;;;;;;;AAQG;QACH,IAAmB,CAAA,mBAAA,GAAwB,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,QAAQ,CAAC;AAExF;;;;;;;;;;;;;AAaG;QACH,IAAyB,CAAA,yBAAA,GACrB,IAAI,CAAC,OAAO,CAAC,yBAAyB,IAAI,WAAW,CAAC;AAE1D;;;;;;;;;;;AAWG;QACH,IAAiB,CAAA,iBAAA,GAAuB,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,UAAU,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;QACH,IAA4B,CAAA,4BAAA,GACxB,IAAI,CAAC,OAAO,CAAC,4BAA4B,IAAI,SAAS,CAAC;AAE3D,QAAA,IAAA,CAAA,MAAM,GAAW,OAAO,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC,CAAC;AAEhD,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAG3C,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,MAAM,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;AAEpF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;AACtC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAE1C,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AAE/D,QAAA,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,CACvD,CAAC,IAAG;AACF,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC;SACrC,EACD,CAAC,IAAG;YACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAA+B,4BAAA,EAAA,CAAC,CAAE,CAAA,CAAC,CAAC;AACxD,SAAC,CAAC,CAAC;KACR;;AAGD,IAAA,sBAAsB,CAAC,iBAA4B,EAAA;;;QAGjD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC;AACpD,QAAA,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;KAClE;AAED;;AAEG;IACH,iBAAiB,GAAA;QACf,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,EAAE;YACtD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAmB,CAAC;AACxD,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;AACxF,SAAA;KACF;AAED;;;;AAIG;IACH,2BAA2B,GAAA;;;;AAIzB,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAG;AAC1D,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;gBACxE,IAAI,MAAM,KAAK,UAAU,EAAE;;;oBAGzB,UAAU,CAAC,MAAK;AACd,wBAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAE,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;qBACpE,EAAE,CAAC,CAAC,CAAC;AACP,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;;;;;AAMG;AACK,IAAA,yBAAyB,CAC7B,GAAW,EAAE,MAAyB,EAAE,KAA8B,EAAA;AACxE,QAAA,MAAM,MAAM,GAAqB,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC;;;;;;;;AAUpD,QAAA,MAAM,aAAa,GAAG,CAAA,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,YAAY,IAAG,KAAK,GAAG,IAAI,CAAC;;;AAIzD,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,SAAS,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,KAAK,CAA2B,CAAC;YACvD,OAAO,SAAS,CAAC,YAAY,CAAC;YAC9B,OAAO,SAAS,CAAC,aAAa,CAAC;YAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACvC,gBAAA,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;AAC1B,aAAA;AACF,SAAA;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;KACjE;;AAGD,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAC/C;AAED;;;AAGG;IACH,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC;KACrD;AAED;;;;;;;;;;;;;;;AAeG;AACH,IAAA,WAAW,CAAC,MAAc,EAAA;AACxB,QAAAd,aAAW,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;KAC5B;;IAGD,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;;IAGD,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;AACxC,YAAA,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;AACvC,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CG;AACH,IAAA,aAAa,CAAC,QAAe,EAAE,gBAAA,GAAuC,EAAE,EAAA;AACtE,QAAA,MAAM,EAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB,EAAC,GAC5E,gBAAgB,CAAC;AACrB,QAAA,MAAM,CAAC,GAAG,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACrE,IAAI,CAAC,GAAgB,IAAI,CAAC;AAC1B,QAAA,QAAQ,mBAAmB;AACzB,YAAA,KAAK,OAAO;gBACV,CAAC,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAA,EAAK,WAAW,CAAC,CAAC;gBACzD,MAAM;AACR,YAAA,KAAK,UAAU;AACb,gBAAA,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;gBACpC,MAAM;AACR,YAAA;AACE,gBAAA,CAAC,GAAG,WAAW,IAAI,IAAI,CAAC;AAC3B,SAAA;QACD,IAAI,CAAC,KAAK,IAAI,EAAE;AACd,YAAA,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC9B,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,CACzC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,KAAA,CAAA,GAAD,CAAC,GAAI,IAAI,CAAC,CAAC;KAChF;AAED;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AACH,IAAA,aAAa,CAAC,GAAmB,EAAE,MAAoC,GAAA;AACrE,QAAA,kBAAkB,EAAE,KAAK;AAC1B,KAAA,EAAA;AACC,QAAA,IAAIA,aAAW,EAAE;YACf,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE;AACrD,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CACb,CAAA,iFAAA,CAAmF,CAAC,CAAC;AAC1F,aAAA;AACD,YAAA,IAAI,GAAG,YAAY,OAAO,IAAI,GAAG,CAAC,wBAAwB,EAAE;gBAC1D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACjD,aAAA;AACF,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC1D,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAE5E,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;KACjF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;IACH,QAAQ,CAAC,QAAe,EAAE,MAAA,GAA2B,EAAC,kBAAkB,EAAE,KAAK,EAAC,EAAA;QAE9E,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAC3B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;KACzE;;AAGD,IAAA,YAAY,CAAC,GAAY,EAAA;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;KAC1C;;AAGD,IAAA,QAAQ,CAAC,GAAW,EAAA;AAClB,QAAA,IAAI,OAAgB,CAAC;QACrB,IAAI;YACF,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzC,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAa,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACjF,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;IAoBD,QAAQ,CAAC,GAAmB,EAAE,YAA0C,EAAA;AACtE,QAAA,IAAI,OAA6B,CAAC;QAClC,IAAI,YAAY,KAAK,IAAI,EAAE;YACzB,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,iBAAiB,CAAC,CAAC;AAClC,SAAA;aAAM,IAAI,YAAY,KAAK,KAAK,EAAE;YACjC,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,kBAAkB,CAAC,CAAC;AACnC,SAAA;AAAM,aAAA;YACL,OAAO,GAAG,YAAY,CAAC;AACxB,SAAA;AACD,QAAA,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;YAClB,OAAO,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACxD,SAAA;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KAC5D;AAEO,IAAA,gBAAgB,CAAC,MAAc,EAAA;AACrC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAc,EAAE,GAAW,KAAI;AAChE,YAAA,MAAM,KAAK,GAAQ,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,YAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACrB,aAAA;AACD,YAAA,OAAO,MAAM,CAAC;SACf,EAAE,EAAE,CAAC,CAAC;KACR;;IAGD,kBAAkB,CACd,MAAe,EAAE,MAAyB,EAAE,aAAiC,EAC7E,MAAwB,EACxB,YAAqE,EAAA;;QACvE,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;AAED,QAAA,IAAI,OAAY,CAAC;AACjB,QAAA,IAAI,MAAW,CAAC;AAChB,QAAA,IAAI,OAAyB,CAAC;AAC9B,QAAA,IAAI,YAAY,EAAE;AAChB,YAAA,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;AAC/B,YAAA,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AAC7B,YAAA,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;AAChC,SAAA;AAAM,aAAA;YACL,OAAO,GAAG,IAAI,OAAO,CAAU,CAAC,GAAG,EAAE,GAAG,KAAI;gBAC1C,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM,GAAG,GAAG,CAAC;AACf,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,YAAoB,CAAC;AACzB,QAAA,IAAI,IAAI,CAAC,4BAA4B,KAAK,UAAU,EAAE;;;;AAIpD,YAAA,IAAI,aAAa,IAAI,aAAa,CAAC,aAAa,EAAE;AAChD,gBAAA,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC;AAC5C,aAAA;AAAM,iBAAA;;;AAGL,gBAAA,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,kBAAkB,EAAE;AAClD,oBAAA,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;AACxC,iBAAA;AAAM,qBAAA;oBACL,YAAY,GAAG,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,iBAAA;AACF,aAAA;AACF,SAAA;AAAM,aAAA;;YAEL,YAAY,GAAG,CAAC,CAAC;AAClB,SAAA;AAED,QAAA,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAAC;YACjD,YAAY;YACZ,MAAM;YACN,aAAa;YACb,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,aAAa,EAAE,IAAI,CAAC,cAAc;YAClC,MAAM;YACN,MAAM;YACN,OAAO;YACP,MAAM;YACN,OAAO;AACP,YAAA,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ;YAC1C,kBAAkB,EAAE,IAAI,CAAC,WAAW;AACrC,SAAA,CAAC,CAAC;;;AAIH,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAM,KAAI;AAC9B,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;;IAGD,aAAa,CAAC,GAAY,EAAE,UAAgC,EAAA;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,KAAK,mCACN,UAAU,CAAC,MAAM,CAAC,KAAK,GACvB,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,YAAY,CAAC,CACtE,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE;YAC9E,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7C,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACnC,SAAA;KACF;AAED;;;;AAIG;AACH,IAAA,cAAc,CAAC,UAAgC,EAAE,wBAAwB,GAAG,KAAK,EAAA;;AAC/E,QAAA,IAAI,IAAI,CAAC,4BAA4B,KAAK,UAAU,EAAE;YACpD,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC;;;;;;AAMxE,YAAA,MAAM,wBAAwB,IACzB,UAAU,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,iBAAiB,KAAK,OAAO;AACtE,gBAAA,IAAI,CAAC,cAAc,MAAK,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,EAAE,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAA,CAAC,CAAC;AACpE,YAAA,IAAI,wBAAwB,IAAI,kBAAkB,KAAK,CAAC,EAAE;AACxD,gBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;AAC7C,aAAA;iBAAM,IACH,IAAI,CAAC,cAAc,MAAK,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,EAAE,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAA;gBAC7D,kBAAkB,KAAK,CAAC,EAAE;;;;AAI5B,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;;;AAG5B,gBAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;gBAChD,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACjC,aAAA;AAAM,iBAAA;;;AAGN,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,4BAA4B,KAAK,SAAS,EAAE;;;;;AAK1D,YAAA,IAAI,wBAAwB,EAAE;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC7B,aAAA;YACD,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACjC,SAAA;KACF;AAEO,IAAA,UAAU,CAAC,CAAuB,EAAA;AACvC,QAAA,IAAmC,CAAC,WAAW,GAAG,CAAC,CAAC,kBAAkB,CAAC;AACxE,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC;;;;;;AAMvC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;KACjF;IAEO,wBAAwB,GAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CACtB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EACjD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;KAC5E;IAEO,qBAAqB,CAAC,YAAoB,EAAE,YAAqB,EAAA;AACvE,QAAA,IAAI,IAAI,CAAC,4BAA4B,KAAK,UAAU,EAAE;AACpD,YAAA,OAAO,EAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAC,CAAC;AACpD,SAAA;QACD,OAAO,EAAC,YAAY,EAAC,CAAC;KACvB;;8GAtuBU,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAN,MAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAM,cADM,MAAM,EAAA,CAAA,CAAA;sGAClB,MAAM,EAAA,UAAA,EAAA,CAAA;kBADlB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;AA0uBhC,SAAS,gBAAgB,CAAC,QAAkB,EAAA;AAC1C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,QAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,GAAG,IAAI,IAAI,EAAE;AACf,YAAA,MAAM,IAAIC,aAAY,CAAA,IAAA,yCAElBD,aAAW,IAAI,+BAA+B,GAAG,CAAA,kBAAA,EAAqB,CAAC,CAAA,CAAE,CAAC,CAAC;AAChF,SAAA;AACF,KAAA;AACH;;ACzyBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgGG;MAKU,UAAU,CAAA;IAkErB,WACY,CAAA,MAAc,EAAU,KAAqB,EACb,iBAAwC,EAC/D,QAAmB,EAAmB,EAAc,EAC7D,gBAAmC,EAAA;;AAHnC,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAAU,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AACb,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAuB;AAC/D,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAAmB,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAC7D,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAmB;AArEvC,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAE5B;;;AAGG;AACH,QAAA,IAAI,CAAA,IAAA,GAAgB,IAAI,CAAC;AA+CjB,QAAA,IAAQ,CAAA,QAAA,GAAe,IAAI,CAAC;;AAQpC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAc,CAAC;QAOpC,MAAM,OAAO,GAAG,CAAA,EAAA,GAAA,EAAE,CAAC,aAAa,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,EAAE,CAAC;QACxD,IAAI,CAAC,eAAe,GAAG,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,MAAM,CAAC;QAE7D,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAQ,KAAI;gBACvD,IAAI,CAAC,YAAY,aAAa,EAAE;oBAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;AACtC,SAAA;KACF;AAED;;;;;AAKG;IACH,IACI,gBAAgB,CAAC,gBAA+C,EAAA;AAClE,QAAA,IAAI,CAAC,iBAAiB,GAAGe,gBAAe,CAAC,gBAAgB,CAAC,CAAC;KAC5D;AAED,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;AAED;;;;;AAKG;IACH,IACI,kBAAkB,CAAC,kBAAiD,EAAA;AACtE,QAAA,IAAI,CAAC,mBAAmB,GAAGA,gBAAe,CAAC,kBAAkB,CAAC,CAAC;KAChE;AAED,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACjC;AAED;;;;;AAKG;IACH,IACI,UAAU,CAAC,UAAyC,EAAA;AACtD,QAAA,IAAI,CAAC,WAAW,GAAGA,gBAAe,CAAC,UAAU,CAAC,CAAC;KAChD;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;AAED;;;AAGG;AACK,IAAA,0BAA0B,CAAC,WAAwB,EAAA;QACzD,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,sCAAsC,IAAI,CAAC,eAAe,EAAE;YAC5F,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;KACnD;;AAGD,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,SAAA;;;AAGD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;AAED;;;;;;AAMG;IACH,IACI,UAAU,CAAC,QAAqC,EAAA;QAClD,IAAI,QAAQ,IAAI,IAAI,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChE,YAAA,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;AACtC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;AACvC,SAAA;KACF;;IAMD,OAAO,CAAC,MAAc,EAAE,OAAgB,EAAE,QAAiB,EAAE,MAAe,EAAE,OAAgB,EAAA;AAE5F,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,IAAI,OAAO,EAAE;AAC5D,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AAED,YAAA,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE;AAC7D,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACF,SAAA;AAED,QAAA,MAAM,MAAM,GAAG;YACb,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;;;;AAKhD,QAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;KAC9B;;IAGD,WAAW,GAAA;;AACT,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAC;KAClC;IAEO,UAAU,GAAA;;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,gBAAgB;AACtD,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,0CAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjF,YAAA,IAAI,CAAC;QAET,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI;AACrC,YAAA,IAAI;;;;;;;;;;;AAWJ,YAAA,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;AAC/F,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;KAClD;IAEO,mBAAmB,CAAC,QAAgB,EAAE,SAAsB,EAAA;AAClE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QAC5C,IAAI,SAAS,KAAK,IAAI,EAAE;YACtB,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC3D,SAAA;AAAM,aAAA;AACL,YAAA,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACnD,SAAA;KACF;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;;;AAG9C,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK;YACxE,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACxC,SAAA,CAAC,CAAC;KACJ;;AA3PU,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,gEAoEN,UAAU,EAAA,SAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGApEd,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,oFAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,aAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;iBACjB,CAAA;;;8BAqEM,SAAS;+BAAC,UAAU,CAAA;;yBArDY,MAAM,EAAA,CAAA;sBAA1C,WAAW;uBAAC,aAAa,CAAA;;sBAAG,KAAK;gBAQzB,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAOG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAOG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAOG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAUG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAsCF,gBAAgB,EAAA,CAAA;sBADnB,KAAK;gBAgBF,kBAAkB,EAAA,CAAA;sBADrB,KAAK;gBAgBF,UAAU,EAAA,CAAA;sBADb,KAAK;gBAsCF,UAAU,EAAA,CAAA;sBADb,KAAK;gBAeN,OAAO,EAAA,CAAA;sBAHN,YAAY;uBACT,OAAO;oBACP,CAAC,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAA;;;AClR/F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoEG;MAMU,gBAAgB,CAAA;AAQ3B,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAuCD,WACY,CAAA,MAAc,EAAU,OAAmB,EAAU,QAAmB,EAC/D,GAAsB,EAAsB,IAAiB,EAAA;AADtE,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAAU,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAC/D,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AAAsB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;AAhD1E,QAAA,IAAO,CAAA,OAAA,GAAa,EAAE,CAAC;AAGvB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAM1B;;;;;;AAMG;QACM,IAAA,CAAA,uBAAuB,GAA0C,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;AAYzF;;;;;;;;;;;;;;;AAeG;AACgB,QAAA,IAAA,CAAA,cAAc,GAA0B,IAAI,YAAY,EAAE,CAAC;AAK5E,QAAA,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAQ,KAAI;YACnE,IAAI,CAAC,YAAY,aAAa,EAAE;gBAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;IAGD,kBAAkB,GAAA;;QAEhB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;YAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,4BAA4B,EAAE,CAAC;AACtC,SAAC,CAAC,CAAC;KACJ;IAEO,4BAA4B,GAAA;;AAClC,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,4BAA4B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAC;AACjD,QAAA,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;aAC/B,MAAM,CAAC,CAAC,IAAI,KAAyB,CAAC,CAAC,IAAI,CAAC;aAC5C,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACzF,YAAA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE;gBAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,IACI,gBAAgB,CAAC,IAAqB,EAAA;QACxC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KACzC;;AAGD,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;;IAED,WAAW,GAAA;;AACT,QAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;AAC5C,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,4BAA4B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAC;KAClD;IAEO,MAAM,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,OAAO;AAClD,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AAC1B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC7C,YAAA,IAAI,IAAI,CAAC,SAAS,KAAK,cAAc,EAAE;AACrC,gBAAA,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC;AAChC,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBACxB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACzB,oBAAA,IAAI,cAAc,EAAE;AAClB,wBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AACvD,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AAC1D,qBAAA;AACH,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,cAAc,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS,EAAE;oBAC9D,IAAI,CAAC,QAAQ,CAAC,YAAY,CACtB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxF,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAC3E,iBAAA;;AAGD,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1C,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,YAAY,CAAC,MAAc,EAAA;QACjC,MAAM,OAAO,GACT,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,CAAC;YAClD,IAAI,CAAC,uBAAuB;;aAE3B,IAAI,CAAC,uBAAuB,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;QAClD,OAAO,CAAC,IAAgB,KAAK,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;KAC5F;IAEO,cAAc,GAAA;QACpB,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KACpF;;wHAvIU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,gBAAgB,ySACV,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGADhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;iBACjB,CAAA;;;8BAoD+C,QAAQ;;yBAlDJ,KAAK,EAAA,CAAA;sBAAtD,eAAe;gBAAC,IAAA,EAAA,CAAA,UAAU,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,CAAA;gBAkBvC,uBAAuB,EAAA,CAAA;sBAA/B,KAAK;gBAUG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBAkBa,cAAc,EAAA,CAAA;sBAAhC,MAAM;gBAkCH,gBAAgB,EAAA,CAAA;sBADnB,KAAK;;AA0DR;;AAEG;AACH,SAAS,oBAAoB,CAAC,OACoB,EAAA;AAChD,IAAA,OAAO,CAAC,CAAE,OAAgC,CAAC,KAAK,CAAC;AACnD;;AC3NA;;;;;;AAMG;MACmB,kBAAkB,CAAA;AAEvC,CAAA;AAED;;;;;;;;;;AAUG;MAEU,iBAAiB,CAAA;IAC5B,OAAO,CAAC,KAAY,EAAE,EAAyB,EAAA;AAC7C,QAAA,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC9C;;yHAHU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADL,MAAM,EAAA,CAAA,CAAA;sGAClB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;AAOhC;;;;;;;;AAQG;MAEU,YAAY,CAAA;IACvB,OAAO,CAAC,KAAY,EAAE,EAAyB,EAAA;AAC7C,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACjB;;oHAHU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADA,MAAM,EAAA,CAAA,CAAA;sGAClB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;AAOhC;;;;;;;;;;;AAWG;MAEU,eAAe,CAAA;IAG1B,WACY,CAAA,MAAc,EAAE,QAAkB,EAAU,QAA6B,EACzE,kBAAsC,EAAU,MAA0B,EAAA;AAD1E,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAA8B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAqB;AACzE,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAAU,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAoB;KAAI;IAE1F,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,YAAY;YACb,IAAI,CAAC,MAAM,CAAC,MAAM;iBACb,IAAI,CAAC,MAAM,CAAC,CAAC,CAAQ,KAAK,CAAC,YAAY,aAAa,CAAC,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACvF,iBAAA,SAAS,CAAC,MAAO,GAAC,CAAC,CAAC;KAC9B;IAED,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC9D;;IAGD,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AACjC,SAAA;KACF;IAEO,aAAa,CAAC,QAA6B,EAAE,MAAc,EAAA;;QACjE,MAAM,GAAG,GAAsB,EAAE,CAAC;AAClC,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACvC,gBAAA,KAAK,CAAC,SAAS;AACX,oBAAA,yBAAyB,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAA,OAAA,EAAU,KAAK,CAAC,IAAI,CAAA,CAAE,CAAC,CAAC;AAClF,aAAA;YAED,MAAM,uBAAuB,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,QAAQ,CAAC;YAC5D,MAAM,mBAAmB,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,uBAAuB,CAAC;;;;;;;;;AAU7E,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;iBACzE,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;AACpD,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9D,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,aAAa,EAAE;gBAChD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,GAAG,MAAA,KAAK,CAAC,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,KAAK,CAAC,aAAa,EAAG,CAAC,CAAC;AAC7F,aAAA;AACF,SAAA;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;KACnC;IAEO,aAAa,CAAC,QAA6B,EAAE,KAAY,EAAA;QAC/D,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,MAAK;AACjD,YAAA,IAAI,eAAoD,CAAC;YACzD,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;gBACrD,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC7D,aAAA;AAAM,iBAAA;AACL,gBAAA,eAAe,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5B,aAAA;YAED,MAAM,sBAAsB,GACxB,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAA+B,KAAI;;gBAChE,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,oBAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACnB,iBAAA;AACD,gBAAA,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,gBAAA,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC;;;AAGxC,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAA,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;aACvE,CAAC,CAAC,CAAC;YACR,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;gBAClD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACxD,gBAAA,OAAO,IAAI,CAAC,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxE,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,sBAAsB,CAAC;AAC/B,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;uHAjFU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADH,MAAM,EAAA,CAAA,CAAA;sGAClB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;;AC1DzB,MAAM,eAAe,GAAG,IAAI,cAAc,CAAiB,EAAE,CAAC,CAAC;MAGzD,cAAc,CAAA;;IAUzB,WACa,CAAA,aAA4B,EAAU,WAAkC,EACjE,gBAAkC,EAAmB,IAAY,EACzE,OAAA,GAGJ,EAAE,EAAA;AALG,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAAU,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAuB;AACjE,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAAmB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AACzE,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAGT;AAZF,QAAA,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;AACX,QAAA,IAAU,CAAA,UAAA,GAAmD,YAAY,CAAC;AAC1E,QAAA,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AACf,QAAA,IAAK,CAAA,KAAA,GAAsC,EAAE,CAAC;;QAWpD,OAAO,CAAC,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,IAAI,UAAU,CAAC;QACpF,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,UAAU,CAAC;KACjE;IAED,IAAI,GAAA;;;;AAIF,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,yBAAyB,KAAK,UAAU,EAAE;AACzD,YAAA,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;AAC7D,SAAA;AACD,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1D,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5D;IAEO,kBAAkB,GAAA;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAG;YAC3C,IAAI,CAAC,YAAY,eAAe,EAAE;;AAEhC,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC;AACpE,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,iBAAiB,CAAC;AACtC,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,YAAY,GAAG,CAAC,CAAC;AACtE,aAAA;iBAAM,IAAI,CAAC,YAAY,aAAa,EAAE;AACrC,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;AACnB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrF,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,mBAAmB,GAAA;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAG;AAC3C,YAAA,IAAI,EAAE,CAAC,YAAY,MAAM,CAAC;gBAAE,OAAO;;YAEnC,IAAI,CAAC,CAAC,QAAQ,EAAE;AACd,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,yBAAyB,KAAK,KAAK,EAAE;oBACpD,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,iBAAA;AAAM,qBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,yBAAyB,KAAK,SAAS,EAAE;oBAC/D,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACpD,iBAAA;;AAEF,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE;oBAC1D,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAChD,iBAAA;AAAM,qBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,yBAAyB,KAAK,UAAU,EAAE;oBAChE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,mBAAmB,CAAC,WAA0B,EAAE,MAAmB,EAAA;AACzE,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;;;;YAI/B,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AACjB,oBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CACnC,WAAW,EAAE,IAAI,CAAC,UAAU,KAAK,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,EAChF,MAAM,CAAC,CAAC,CAAC;AACf,iBAAC,CAAC,CAAC;aACJ,EAAE,CAAC,CAAC,CAAC;AACR,SAAC,CAAC,CAAC;KACJ;;IAGD,WAAW,GAAA;;AACT,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,wBAAwB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAC;AAC7C,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,wBAAwB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAC;KAC9C;;sHAvFU,cAAc,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;0HAAd,cAAc,EAAA,CAAA,CAAA;sGAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;ACNX,IAAK,gBAIJ,CAAA;AAJD,CAAA,UAAK,gBAAgB,EAAA;IACnB,gBAAA,CAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;IACR,gBAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;IACN,gBAAA,CAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACb,CAAC,EAJI,gBAAgB,KAAhB,gBAAgB,GAIpB,EAAA,CAAA,CAAA,CAAA;AAED;;;;;;;;AAQG;AACa,SAAA,mBAAmB,CAAC,MAAc,EAAE,MAAkB,EAAA;AACpE,IAAA,MAAM,CAAC,MAAM;AACR,SAAA,IAAI,CACD,MAAM,CACF,CAAC,CAAC,KACE,CAAC,YAAY,aAAa,IAAI,CAAC,YAAY,gBAAgB;AAC3D,QAAA,CAAC,YAAY,eAAe,IAAI,CAAC,YAAY,iBAAiB,CAAC,EACvE,GAAG,CAAC,CAAC,IAAG;AACN,QAAA,IAAI,CAAC,YAAY,aAAa,IAAI,CAAC,YAAY,iBAAiB,EAAE;YAChE,OAAO,gBAAgB,CAAC,QAAQ,CAAC;AAClC,SAAA;AACD,QAAA,MAAM,WAAW,GAAG,CAAC,YAAY,gBAAgB;AAC7C,aAAC,CAAC,CAAC,IAAI,KAAwC,CAAA;gBAC9C,CAAC,CAAC,IAAI,KAAyD,CAAA;AAChE,YAAA,KAAK,CAAC;AACV,QAAA,OAAO,WAAW,GAAG,gBAAgB,CAAC,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC;KAC7E,CAAC,EACF,MAAM,CACF,CAAC,MAAM,KACH,MAAM,KAAK,gBAAgB,CAAC,WAAW,CAAC,EAChD,IAAI,CAAC,CAAC,CAAC,CACN;SACJ,SAAS,CAAC,MAAK;AACd,QAAA,MAAM,EAAE,CAAC;AACX,KAAC,CAAC,CAAC;AACT;;AC5BA,MAAMlB,aAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCG;SACa,aAAa,CAAC,MAAc,EAAE,GAAG,QAA0B,EAAA;AACzE,IAAA,OAAO,wBAAwB,CAAC;QAC9B,EAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAC;AAChD,QAAAA,aAAW,GAAG,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAC,GAAG,EAAE;AAChE,QAAA,EAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAC;QAChE,EAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,oBAAoB,EAAC;QAChF,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;AAC5C,KAAA,CAAC,CAAC;AACL,CAAC;AAEK,SAAU,SAAS,CAAC,MAAc,EAAA;AACtC,IAAA,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;AACjC,CAAC;AAYD;;AAEG;AACH,SAAS,aAAa,CAClB,IAAiB,EAAE,SAAqB,EAAA;IAC1C,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC;AAC9C,CAAC;AAGD;;;AAGG;AACI,MAAM,kBAAkB,GAC3B,IAAI,cAAc,CAAU,EAAE,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,EAAC,CAAC,CAAC;AAEhF,MAAM,4BAA4B,GAAG;AACnC,IAAA,OAAO,EAAE,uBAAuB;AAChC,IAAA,KAAK,EAAE,IAAI;IACX,UAAU,GAAA;AACR,QAAA,OAAO,MAAK;AACV,YAAA,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE;gBAC/B,OAAO,CAAC,IAAI,CACR,gFAAgF;AAChF,oBAAA,2BAA2B,CAAC,CAAC;AAClC,aAAA;AACH,SAAC,CAAC;KACH;CACF,CAAC;AAEF;;;;;;;;;;;;;;;;AAgBG;AACG,SAAU,aAAa,CAAC,MAAc,EAAA;IAC1C,OAAO;QACL,EAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAC;AAChD,QAAAA,aAAW,GAAG,4BAA4B,GAAG,EAAE;KAChD,CAAC;AACJ,CAAC;AAYD;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;AACa,SAAA,qBAAqB,CAAC,OAAA,GAAoC,EAAE,EAAA;IAE1E,MAAM,SAAS,GAAG,CAAC;AACjB,YAAA,OAAO,EAAE,eAAe;YACxB,UAAU,EAAE,MAAK;AACf,gBAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClD,gBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,gBAAA,MAAM,WAAW,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAClD,gBAAA,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAC5C,gBAAA,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;aACxF;AACF,SAAA,CAAC,CAAC;IACH,OAAO,aAAa,CAAA,CAAA,mDAA6C,SAAS,CAAC,CAAC;AAC9E,CAAC;SAEe,oBAAoB,GAAA;AAClC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO,CAAC,wBAA+C,KAAI;;QACzD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEzC,IAAI,wBAAwB,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YAClD,OAAO;AACR,SAAA;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEnD,IAAI,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,mDAA2C;YAC7E,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC5B,SAAA;AAED,QAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,EAAE,CAAC;AAC9E,QAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,EAAE,CAAC;QAClE,MAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YACzB,aAAa,CAAC,IAAI,EAAE,CAAC;YACrB,aAAa,CAAC,WAAW,EAAE,CAAC;AAC7B,SAAA;AACH,KAAC,CAAC;AACJ,CAAC;AAED;;;;AAIG;AACH,MAAM,cAAc,GAChB,IAAI,cAAc,CAAgBA,aAAW,GAAG,0BAA0B,GAAG,EAAE,EAAE;IAC/E,OAAO,EAAE,MAAK;QACZ,OAAO,IAAI,OAAO,EAAQ,CAAC;KAC5B;AACF,CAAA,CAAC,CAAC;AAyBP,MAAM,kBAAkB,GAAG,IAAI,cAAc,CACzCA,aAAW,GAAG,oBAAoB,GAAG,EAAE,EACvC,EAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAK,CAAA,6CAAsC,CAAC,CAAC;AA2B/E;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;SACa,oCAAoC,GAAA;AAClD,IAAA,MAAM,SAAS,GAAG;QAChB,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,6CAAoC;AAC1E,QAAA;AACE,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,CAAC,QAAQ,CAAC;AAChB,YAAA,UAAU,EAAE,CAAC,QAAkB,KAAI;AACjC,gBAAA,MAAM,mBAAmB,GACrB,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAE1D,gBAAA,OAAO,MAAK;AACV,oBAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,MAAK;AACnC,wBAAA,OAAO,IAAI,OAAO,CAAC,OAAO,IAAG;4BAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;4BACpC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACnD,4BAAA,mBAAmB,CAAC,MAAM,EAAE,MAAK;;;gCAG/B,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,6BAAC,CAAC,CAAC;4BAEH,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,kBAAkB,GAAG,MAAK;;;;gCAI5D,OAAO,CAAC,IAAI,CAAC,CAAC;AACd,gCAAA,OAAO,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,aAAa,CAAC;AAC3D,6BAAC,CAAC;4BACF,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC7B,yBAAC,CAAC,CAAC;AACL,qBAAC,CAAC,CAAC;AACL,iBAAC,CAAC;aACH;AACF,SAAA;KACF,CAAC;IACF,OAAO,aAAa,CAAA,CAAA,kEAA4D,SAAS,CAAC,CAAC;AAC7F,CAAC;AAcD;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;SACa,6BAA6B,GAAA;AAC3C,IAAA,MAAM,SAAS,GAAG;AAChB,QAAA;AACE,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,MAAK;AACf,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,gBAAA,OAAO,MAAK;oBACV,MAAM,CAAC,2BAA2B,EAAE,CAAC;AACvC,iBAAC,CAAC;aACH;AACF,SAAA;QACD,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,sCAA6B;KACpE,CAAC;IACF,OAAO,aAAa,CAAA,CAAA,2DAAqD,SAAS,CAAC,CAAC;AACtF,CAAC;AAYD;;;;;;;;;;;;;;;;;;;;;;;AAuBG;SACa,gBAAgB,GAAA;IAC9B,IAAI,SAAS,GAAe,EAAE,CAAC;AAC/B,IAAA,IAAIA,aAAW,EAAE;AACf,QAAA,SAAS,GAAG,CAAC;AACX,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,KAAK,EAAE,IAAI;gBACX,UAAU,EAAE,MAAK;AACf,oBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,oBAAA,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAQ,KAAI;;;AAEhD,wBAAA,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAG,CAAuB,cAAA,EAAA,CAAC,CAAC,WAAY,CAAC,IAAI,CAAE,CAAA,CAAC,CAAC;wBAC9D,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,wBAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACf,wBAAA,CAAA,EAAA,GAAA,OAAO,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,CAAI,CAAC;;AAEvB,qBAAC,CAAC,CAAC;iBACJ;AACF,aAAA,CAAC,CAAC;AACJ,KAAA;AAAM,SAAA;QACL,SAAS,GAAG,EAAE,CAAC;AAChB,KAAA;IACD,OAAO,aAAa,CAAA,CAAA,8CAAwC,SAAS,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAkBA,aAAW,GAAG,kBAAkB,GAAG,EAAE,CAAC,CAAC;AAapG;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACG,SAAU,cAAc,CAAC,kBAA4C,EAAA;AACzE,IAAA,MAAM,SAAS,GAAG;AAChB,QAAA,EAAC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAC;AACzD,QAAA,EAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,EAAC;KAC/D,CAAC;IACF,OAAO,aAAa,CAAA,CAAA,4CAAsC,SAAS,CAAC,CAAC;AACvE,CAAC;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;AACG,SAAU,gBAAgB,CAAC,OAA4B,EAAA;AAC3D,IAAA,MAAM,SAAS,GAAG;AAChB,QAAA,EAAC,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,OAAO,EAAC;KACnD,CAAC;IACF,OAAO,aAAa,CAAA,CAAA,qDAA+C,SAAS,CAAC,CAAC;AAChF,CAAC;AAYD;;;;;;;;;;;;;;;;;;;;;;;AAuBG;SACa,gBAAgB,GAAA;AAC9B,IAAA,MAAM,SAAS,GAAG;AAChB,QAAA,EAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAC;KAC5D,CAAC;IACF,OAAO,aAAa,CAAA,CAAA,qDAA+C,SAAS,CAAC,CAAC;AAChF,CAAC;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACG,SAAU,0BAA0B,CAAC,EAAoC,EAAA;IAE7E,MAAM,SAAS,GAAG,CAAC;AACjB,YAAA,OAAO,EAAE,uBAAuB;AAChC,YAAA,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,MAAK;AACb,gBAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;oBACpC,IAAI,CAAC,YAAY,eAAe,EAAE;wBAChC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,qBAAA;AACH,iBAAC,CAAC,CAAC;aACJ;AACF,SAAA,CAAC,CAAC;IACH,OAAO,aAAa,CAAA,CAAA,wDAAkD,SAAS,CAAC,CAAC;AACnF;;AC3mBA,MAAM,WAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC;AAElE;;AAEG;AACH,MAAM,iBAAiB,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAEI,qBAAoB,CAAC,CAAC;AAE7F;;AAEG;AACI,MAAM,oBAAoB,GAAG,IAAI,cAAc,CAClD,WAAW,GAAG,gCAAgC,GAAG,sBAAsB,CAAC,CAAC;AAE7E;AACA;AACA;AACA;AACa,MAAA,gBAAgB,GAAe;IAC1C,QAAQ;AACR,IAAA,EAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,oBAAoB,EAAC;IACxD,MAAM;IACN,sBAAsB;AACtB,IAAA,EAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAC;IAChE,kBAAkB;;;AAGlB,IAAA,WAAW,GAAG,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAC,GAAG,EAAE;EAChE;SAEc,kBAAkB,GAAA;AAChC,IAAA,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;AAoBG;MAKU,YAAY,CAAA;IACvB,WAAsD,CAAA,KAAU,KAAI;AAEpE;;;;;;;;;;;;;;;;;AAiBG;AACH,IAAA,OAAO,OAAO,CAAC,MAAc,EAAE,MAAqB,EAAA;QAClD,OAAO;AACL,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE;gBACT,gBAAgB;gBAChB,WAAW,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,aAAa,IAAG,gBAAgB,EAAE,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE;gBAC/E,EAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAC;AAChD,gBAAA;AACE,oBAAA,OAAO,EAAE,oBAAoB;AAC7B,oBAAA,UAAU,EAAE,mBAAmB;AAC/B,oBAAA,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC;AACjD,iBAAA;AACD,gBAAA,EAAC,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,EAAE,EAAC;AAC/D,gBAAA,CAAA,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,OAAO,IAAG,2BAA2B,EAAE,GAAG,2BAA2B,EAAE;AAC/E,gBAAA,qBAAqB,EAAE;gBACvB,CAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,kBAAkB,IAAG,cAAc,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,UAAU,GAAG,EAAE;gBACtF,EAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,kBAAkB,EAAC;AACpE,gBAAA,CAAA,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,iBAAiB,IAAG,wBAAwB,CAAC,MAAM,CAAC,GAAG,EAAE;AACjE,gBAAA,wBAAwB,EAAE;AAC3B,aAAA;SACF,CAAC;KACH;AAED;;;;;;;;;;;;;;;AAeG;IACH,OAAO,QAAQ,CAAC,MAAc,EAAA;QAC5B,OAAO;AACL,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAC,CAAC;SAC9D,CAAC;KACH;;AAjEU,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,kBACS,oBAAoB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AADzC,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EArDE,OAAA,EAAA,CAAA,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAEA,qBAAoB,CAAA,EAAA,OAAA,EAAA,CAAhE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAEA,qBAAoB,CAAA,EAAA,CAAA,CAAA;AAqD9E,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YArD8CA,qBAAoB,CAAA,EAAA,CAAA,CAAA;sGAqD9E,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,iBAAiB;AAC1B,oBAAA,OAAO,EAAE,iBAAiB;iBAC3B,CAAA;;;8BAEc,QAAQ;;8BAAI,MAAM;+BAAC,oBAAoB,CAAA;;;AAmEtD;;;AAGG;SACa,qBAAqB,GAAA;IACnC,OAAO;AACL,QAAA,OAAO,EAAE,eAAe;QACxB,UAAU,EAAE,MAAK;AACf,YAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClD,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,YAAA,MAAM,MAAM,GAAiB,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC1D,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAClD,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;YAC5C,IAAI,MAAM,CAAC,YAAY,EAAE;AACvB,gBAAA,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACjD,aAAA;AACD,YAAA,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;SACvF;KACF,CAAC;AACJ,CAAC;AAED;AACA;AACA,SAAS,2BAA2B,GAAA;IAClC,OAAO,EAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAC,CAAC;AACrE,CAAC;AAED;AACA;AACA,SAAS,2BAA2B,GAAA;IAClC,OAAO,EAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAC,CAAC;AACrE,CAAC;AAEK,SAAU,mBAAmB,CAAC,MAAc,EAAA;IAChD,IAAI,WAAW,IAAI,MAAM,EAAE;AACzB,QAAA,MAAM,IAAIH,aAAY,CAAA,IAAA,+CAElB,CAA4G,0GAAA,CAAA;AACxG,YAAA,CAAA,gEAAA,CAAkE,CAAC,CAAC;AAC7E,KAAA;AACD,IAAA,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;AACA;AACA,SAAS,wBAAwB,CAAC,MAA+C,EAAA;IAC/E,OAAO;AACL,QAAA,MAAM,CAAC,iBAAiB,KAAK,UAAU,GAAG,6BAA6B,EAAE,CAAC,UAAU,GAAG,EAAE;AACzF,QAAA,MAAM,CAAC,iBAAiB,KAAK,iBAAiB;AAC1C,YAAA,oCAAoC,EAAE,CAAC,UAAU;YACjD,EAAE;KACP,CAAC;AACJ,CAAC;AAED;AACA;;;;;AAKG;AACU,MAAA,kBAAkB,GAAG,IAAI,cAAc,CAChD,WAAW,GAAG,oBAAoB,GAAG,EAAE,EAAE;AAE7C,SAAS,wBAAwB,GAAA;IAC/B,OAAO;;;AAGL,QAAA,EAAC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,oBAAoB,EAAC;QAC/D,EAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAC;KAChF,CAAC;AACJ;;ACxNA;;;;AAIG;AAIH;;AAEG;MACU,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB;;ACXtD;;;;AAIG;AAGH;;ACPA;;ACRA;;AAEG;;;;"}
-------------------- SECTION 236 --------------------
{"version":3,"file":"router.mjs","sources":["../../../../../../packages/router/src/shared.ts","../../../../../../packages/router/src/utils/collection.ts","../../../../../../packages/router/src/url_tree.ts","../../../../../../packages/router/src/create_url_tree.ts","../../../../../../packages/router/src/events.ts","../../../../../../packages/router/src/create_url_tree_strategy.ts","../../../../../../packages/router/src/utils/tree.ts","../../../../../../packages/router/src/router_state.ts","../../../../../../packages/router/src/create_router_state.ts","../../../../../../packages/router/src/navigation_canceling_error.ts","../../../../../../packages/router/src/router_outlet_context.ts","../../../../../../packages/router/src/directives/router_outlet.ts","../../../../../../packages/router/src/components/empty_outlet.ts","../../../../../../packages/router/src/utils/config.ts","../../../../../../packages/router/src/operators/activate_routes.ts","../../../../../../packages/router/src/utils/preactivation.ts","../../../../../../packages/router/src/utils/type_guards.ts","../../../../../../packages/router/src/operators/prioritized_guard_value.ts","../../../../../../packages/router/src/operators/check_guards.ts","../../../../../../packages/router/src/utils/config_matching.ts","../../../../../../packages/router/src/apply_redirects.ts","../../../../../../packages/router/src/operators/apply_redirects.ts","../../../../../../packages/router/src/recognize.ts","../../../../../../packages/router/src/operators/recognize.ts","../../../../../../packages/router/src/operators/resolve_data.ts","../../../../../../packages/router/src/operators/switch_tap.ts","../../../../../../packages/router/src/deprecated_load_children.ts","../../../../../../packages/router/src/router_config_loader.ts","../../../../../../packages/router/src/navigation_transition.ts","../../../../../../packages/router/src/page_title_strategy.ts","../../../../../../packages/router/src/route_reuse_strategy.ts","../../../../../../packages/router/src/router_config.ts","../../../../../../packages/router/src/url_handling_strategy.ts","../../../../../../packages/router/src/router.ts","../../../../../../packages/router/src/directives/router_link.ts","../../../../../../packages/router/src/directives/router_link_active.ts","../../../../../../packages/router/src/router_preloader.ts","../../../../../../packages/router/src/router_scroller.ts","../../../../../../packages/router/src/utils/navigations.ts","../../../../../../packages/router/src/provide_router.ts","../../../../../../packages/router/src/router_module.ts","../../../../../../packages/router/src/version.ts","../../../../../../packages/router/public_api.ts","../../../../../../packages/router/index.ts","../../../../../../packages/router/router.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Route, UrlMatchResult} from './models'; import {UrlSegment, UrlSegmentGroup} from './url_tree';   /**  * The primary routing outlet.  *  * @publicApi  */ export const PRIMARY_OUTLET = 'primary';  /**  * A private symbol used to store the value of `Route.title` inside the `Route.data` if it is a  * static string or `Route.resolve` if anything else. This allows us to reuse the existing route  * data/resolvers to support the title feature without new instrumentation in the `Router` pipeline.  */ export const RouteTitleKey = Symbol('RouteTitle');  /**  * A collection of matrix and query URL parameters.  * @see `convertToParamMap()`  * @see `ParamMap`  *  * @publicApi  */ export type Params = {   [key: string]: any; };  /**  * A map that provides access to the required and optional parameters  * specific to a route.  * The map supports retrieving a single value with `get()`  * or multiple values with `getAll()`.  *  * @see [URLSearchParams](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams)  *  * @publicApi  */ export interface ParamMap {   /**    * Reports whether the map contains a given parameter.    * @param name The parameter name.    * @returns True if the map contains the given parameter, false otherwise.    */   has(name: string): boolean;   /**    * Retrieves a single value for a parameter.    * @param name The parameter name.    * @return The parameter's single value,    * or the first value if the parameter has multiple values,    * or `null` when there is no such parameter.    */   get(name: string): string|null;   /**    * Retrieves multiple values for a parameter.    * @param name The parameter name.    * @return An array containing one or more values,    * or an empty array if there is no such parameter.    *    */   getAll(name: string): string[];    /** Names of the parameters in the map. */   readonly keys: string[]; }  class ParamsAsMap implements ParamMap {   private params: Params;    constructor(params: Params) {     this.params = params || {};   }    has(name: string): boolean {     return Object.prototype.hasOwnProperty.call(this.params, name);   }    get(name: string): string|null {     if (this.has(name)) {       const v = this.params[name];       return Array.isArray(v) ? v[0] : v;     }      return null;   }    getAll(name: string): string[] {     if (this.has(name)) {       const v = this.params[name];       return Array.isArray(v) ? v : [v];     }      return [];   }    get keys(): string[] {     return Object.keys(this.params);   } }  /**  * Converts a `Params` instance to a `ParamMap`.  * @param params The instance to convert.  * @returns The new map instance.  *  * @publicApi  */ export function convertToParamMap(params: Params): ParamMap {   return new ParamsAsMap(params); }  /**  * Matches the route configuration (`route`) against the actual URL (`segments`).  *  * When no matcher is defined on a `Route`, this is the matcher used by the Router by default.  *  * @param segments The remaining unmatched segments in the current navigation  * @param segmentGroup The current segment group being matched  * @param route The `Route` to match against.  *  * @see UrlMatchResult  * @see Route  *  * @returns The resulting match information or `null` if the `route` should not match.  * @publicApi  */ export function defaultUrlMatcher(     segments: UrlSegment[], segmentGroup: UrlSegmentGroup, route: Route): UrlMatchResult|null {   const parts = route.path!.split('/');    if (parts.length > segments.length) {     // The actual URL is shorter than the config, no match     return null;   }    if (route.pathMatch === 'full' &&       (segmentGroup.hasChildren() || parts.length < segments.length)) {     // The config is longer than the actual URL but we are looking for a full match, return null     return null;   }    const posParams: {[key: string]: UrlSegment} = {};    // Check each config part against the actual URL   for (let index = 0; index < parts.length; index++) {     const part = parts[index];     const segment = segments[index];     const isParameter = part.startsWith(':');     if (isParameter) {       posParams[part.substring(1)] = segment;     } else if (part !== segment.path) {       // The actual URL part does not match the config, no match       return null;     }   }    return {consumed: segments.slice(0, parts.length), posParams}; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵisObservable as isObservable, ɵisPromise as isPromise} from '@angular/core'; import {from, Observable, of} from 'rxjs';  import {Params} from '../shared';  export function shallowEqualArrays(a: any[], b: any[]): boolean {   if (a.length !== b.length) return false;   for (let i = 0; i < a.length; ++i) {     if (!shallowEqual(a[i], b[i])) return false;   }   return true; }  export function shallowEqual(a: Params, b: Params): boolean {   // While `undefined` should never be possible, it would sometimes be the case in IE 11   // and pre-chromium Edge. The check below accounts for this edge case.   const k1 = a ? Object.keys(a) : undefined;   const k2 = b ? Object.keys(b) : undefined;   if (!k1 || !k2 || k1.length != k2.length) {     return false;   }   let key: string;   for (let i = 0; i < k1.length; i++) {     key = k1[i];     if (!equalArraysOrString(a[key], b[key])) {       return false;     }   }   return true; }  /**  * Test equality for arrays of strings or a string.  */ export function equalArraysOrString(a: string|string[], b: string|string[]) {   if (Array.isArray(a) && Array.isArray(b)) {     if (a.length !== b.length) return false;     const aSorted = [...a].sort();     const bSorted = [...b].sort();     return aSorted.every((val, index) => bSorted[index] === val);   } else {     return a === b;   } }  /**  * Flattens single-level nested arrays.  */ export function flatten<T>(arr: T[][]): T[] {   return Array.prototype.concat.apply([], arr); }  /**  * Return the last element of an array.  */ export function last<T>(a: T[]): T|null {   return a.length > 0 ? a[a.length - 1] : null; }  /**  * Verifys all booleans in an array are `true`.  */ export function and(bools: boolean[]): boolean {   return !bools.some(v => !v); }  export function forEach<K, V>(map: {[key: string]: V}, callback: (v: V, k: string) => void): void {   for (const prop in map) {     if (map.hasOwnProperty(prop)) {       callback(map[prop], prop);     }   } }  export function wrapIntoObservable<T>(value: T|Promise<T>|Observable<T>): Observable<T> {   if (isObservable(value)) {     return value;   }    if (isPromise(value)) {     // Use `Promise.resolve()` to wrap promise-like instances.     // Required ie when a Resolver returns a AngularJS `$q` promise to correctly trigger the     // change detection.     return from(Promise.resolve(value));   }    return of(value); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from './errors'; import {convertToParamMap, ParamMap, Params, PRIMARY_OUTLET} from './shared'; import {equalArraysOrString, forEach, shallowEqual} from './utils/collection';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;  /**  * A set of options which specify how to determine if a `UrlTree` is active, given the `UrlTree`  * for the current router state.  *  * @publicApi  * @see Router.isActive  */ export interface IsActiveMatchOptions {   /**    * Defines the strategy for comparing the matrix parameters of two `UrlTree`s.    *    * The matrix parameter matching is dependent on the strategy for matching the    * segments. That is, if the `paths` option is set to `'subset'`, only    * the matrix parameters of the matching segments will be compared.    *    * - `'exact'`: Requires that matching segments also have exact matrix parameter    * matches.    * - `'subset'`: The matching segments in the router's active `UrlTree` may contain    * extra matrix parameters, but those that exist in the `UrlTree` in question must match.    * - `'ignored'`: When comparing `UrlTree`s, matrix params will be ignored.    */   matrixParams: 'exact'|'subset'|'ignored';   /**    * Defines the strategy for comparing the query parameters of two `UrlTree`s.    *    * - `'exact'`: the query parameters must match exactly.    * - `'subset'`: the active `UrlTree` may contain extra parameters,    * but must match the key and value of any that exist in the `UrlTree` in question.    * - `'ignored'`: When comparing `UrlTree`s, query params will be ignored.    */   queryParams: 'exact'|'subset'|'ignored';   /**    * Defines the strategy for comparing the `UrlSegment`s of the `UrlTree`s.    *    * - `'exact'`: all segments in each `UrlTree` must match.    * - `'subset'`: a `UrlTree` will be determined to be active if it    * is a subtree of the active route. That is, the active route may contain extra    * segments, but must at least have all the segments of the `UrlTree` in question.    */   paths: 'exact'|'subset';   /**    * - `'exact'`: indicates that the `UrlTree` fragments must be equal.    * - `'ignored'`: the fragments will not be compared when determining if a    * `UrlTree` is active.    */   fragment: 'exact'|'ignored'; }  type ParamMatchOptions = 'exact'|'subset'|'ignored';  type PathCompareFn =     (container: UrlSegmentGroup, containee: UrlSegmentGroup, matrixParams: ParamMatchOptions) =>         boolean; type ParamCompareFn = (container: Params, containee: Params) => boolean;  const pathCompareMap: Record<IsActiveMatchOptions['paths'], PathCompareFn> = {   'exact': equalSegmentGroups,   'subset': containsSegmentGroup, }; const paramCompareMap: Record<ParamMatchOptions, ParamCompareFn> = {   'exact': equalParams,   'subset': containsParams,   'ignored': () => true, };  export function containsTree(     container: UrlTree, containee: UrlTree, options: IsActiveMatchOptions): boolean {   return pathCompareMap[options.paths](container.root, containee.root, options.matrixParams) &&       paramCompareMap[options.queryParams](container.queryParams, containee.queryParams) &&       !(options.fragment === 'exact' && container.fragment !== containee.fragment); }  function equalParams(container: Params, containee: Params): boolean {   // TODO: This does not handle array params correctly.   return shallowEqual(container, containee); }  function equalSegmentGroups(     container: UrlSegmentGroup, containee: UrlSegmentGroup,     matrixParams: ParamMatchOptions): boolean {   if (!equalPath(container.segments, containee.segments)) return false;   if (!matrixParamsMatch(container.segments, containee.segments, matrixParams)) {     return false;   }   if (container.numberOfChildren !== containee.numberOfChildren) return false;   for (const c in containee.children) {     if (!container.children[c]) return false;     if (!equalSegmentGroups(container.children[c], containee.children[c], matrixParams))       return false;   }   return true; }  function containsParams(container: Params, containee: Params): boolean {   return Object.keys(containee).length <= Object.keys(container).length &&       Object.keys(containee).every(key => equalArraysOrString(container[key], containee[key])); }  function containsSegmentGroup(     container: UrlSegmentGroup, containee: UrlSegmentGroup,     matrixParams: ParamMatchOptions): boolean {   return containsSegmentGroupHelper(container, containee, containee.segments, matrixParams); }  function containsSegmentGroupHelper(     container: UrlSegmentGroup, containee: UrlSegmentGroup, containeePaths: UrlSegment[],     matrixParams: ParamMatchOptions): boolean {   if (container.segments.length > containeePaths.length) {     const current = container.segments.slice(0, containeePaths.length);     if (!equalPath(current, containeePaths)) return false;     if (containee.hasChildren()) return false;     if (!matrixParamsMatch(current, containeePaths, matrixParams)) return false;     return true;    } else if (container.segments.length === containeePaths.length) {     if (!equalPath(container.segments, containeePaths)) return false;     if (!matrixParamsMatch(container.segments, containeePaths, matrixParams)) return false;     for (const c in containee.children) {       if (!container.children[c]) return false;       if (!containsSegmentGroup(container.children[c], containee.children[c], matrixParams)) {         return false;       }     }     return true;    } else {     const current = containeePaths.slice(0, container.segments.length);     const next = containeePaths.slice(container.segments.length);     if (!equalPath(container.segments, current)) return false;     if (!matrixParamsMatch(container.segments, current, matrixParams)) return false;     if (!container.children[PRIMARY_OUTLET]) return false;     return containsSegmentGroupHelper(         container.children[PRIMARY_OUTLET], containee, next, matrixParams);   } }  function matrixParamsMatch(     containerPaths: UrlSegment[], containeePaths: UrlSegment[], options: ParamMatchOptions) {   return containeePaths.every((containeeSegment, i) => {     return paramCompareMap[options](containerPaths[i].parameters, containeeSegment.parameters);   }); }  /**  * @description  *  * Represents the parsed URL.  *  * Since a router state is a tree, and the URL is nothing but a serialized state, the URL is a  * serialized tree.  * UrlTree is a data structure that provides a lot of affordances in dealing with URLs  *  * @usageNotes  * ### Example  *  * ```  * @Component({templateUrl:'template.html'})  * class MyComponent {  *   constructor(router: Router) {  *     const tree: UrlTree =  *       router.parseUrl('/team/33/(user/victor//support:help)?debug=true#fragment');  *     const f = tree.fragment; // return 'fragment'  *     const q = tree.queryParams; // returns {debug: 'true'}  *     const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];  *     const s: UrlSegment[] = g.segments; // returns 2 segments 'team' and '33'  *     g.children[PRIMARY_OUTLET].segments; // returns 2 segments 'user' and 'victor'  *     g.children['support'].segments; // return 1 segment 'help'  *   }  * }  * ```  *  * @publicApi  */ export class UrlTree {   /** @internal */   _queryParamMap?: ParamMap;   /** @internal */   _warnIfUsedForNavigation?: string;    constructor(       /** The root segment group of the URL tree */       public root: UrlSegmentGroup = new UrlSegmentGroup([], {}),       /** The query params of the URL */       public queryParams: Params = {},       /** The fragment of the URL */       public fragment: string|null = null) {     if (NG_DEV_MODE) {       if (root.segments.length > 0) {         throw new RuntimeError(             RuntimeErrorCode.INVALID_ROOT_URL_SEGMENT,             'The root `UrlSegmentGroup` should not contain `segments`. ' +                 'Instead, these segments belong in the `children` so they can be associated with a named outlet.');       }     }   }    get queryParamMap(): ParamMap {     if (!this._queryParamMap) {       this._queryParamMap = convertToParamMap(this.queryParams);     }     return this._queryParamMap;   }    /** @docsNotRequired */   toString(): string {     return DEFAULT_SERIALIZER.serialize(this);   } }  /**  * @description  *  * Represents the parsed URL segment group.  *  * See `UrlTree` for more information.  *  * @publicApi  */ export class UrlSegmentGroup {   /** @internal */   _sourceSegment?: UrlSegmentGroup;   /** @internal */   _segmentIndexShift?: number;   /**    * @internal    *    * Used only in dev mode to detect if application relies on `relativeLinkResolution: 'legacy'`    * Should be removed in when `relativeLinkResolution` is removed.    */   _segmentIndexShiftCorrected?: number;   /** The parent node in the url tree */   parent: UrlSegmentGroup|null = null;    constructor(       /** The URL segments of this group. See `UrlSegment` for more information */       public segments: UrlSegment[],       /** The list of children of this group */       public children: {[key: string]: UrlSegmentGroup}) {     forEach(children, (v: any, k: any) => v.parent = this);   }    /** Whether the segment has child segments */   hasChildren(): boolean {     return this.numberOfChildren > 0;   }    /** Number of child segments */   get numberOfChildren(): number {     return Object.keys(this.children).length;   }    /** @docsNotRequired */   toString(): string {     return serializePaths(this);   } }   /**  * @description  *  * Represents a single URL segment.  *  * A UrlSegment is a part of a URL between the two slashes. It contains a path and the matrix  * parameters associated with the segment.  *  * @usageNotes  * ### Example  *  * ```  * @Component({templateUrl:'template.html'})  * class MyComponent {  *   constructor(router: Router) {  *     const tree: UrlTree = router.parseUrl('/team;id=33');  *     const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];  *     const s: UrlSegment[] = g.segments;  *     s[0].path; // returns 'team'  *     s[0].parameters; // returns {id: 33}  *   }  * }  * ```  *  * @publicApi  */ export class UrlSegment {   /** @internal */   _parameterMap?: ParamMap;    constructor(       /** The path part of a URL segment */       public path: string,        /** The matrix parameters associated with a segment */       public parameters: {[name: string]: string}) {}    get parameterMap(): ParamMap {     if (!this._parameterMap) {       this._parameterMap = convertToParamMap(this.parameters);     }     return this._parameterMap;   }    /** @docsNotRequired */   toString(): string {     return serializePath(this);   } }  export function equalSegments(as: UrlSegment[], bs: UrlSegment[]): boolean {   return equalPath(as, bs) && as.every((a, i) => shallowEqual(a.parameters, bs[i].parameters)); }  export function equalPath(as: UrlSegment[], bs: UrlSegment[]): boolean {   if (as.length !== bs.length) return false;   return as.every((a, i) => a.path === bs[i].path); }  export function mapChildrenIntoArray<T>(     segment: UrlSegmentGroup, fn: (v: UrlSegmentGroup, k: string) => T[]): T[] {   let res: T[] = [];   forEach(segment.children, (child: UrlSegmentGroup, childOutlet: string) => {     if (childOutlet === PRIMARY_OUTLET) {       res = res.concat(fn(child, childOutlet));     }   });   forEach(segment.children, (child: UrlSegmentGroup, childOutlet: string) => {     if (childOutlet !== PRIMARY_OUTLET) {       res = res.concat(fn(child, childOutlet));     }   });   return res; }   /**  * @description  *  * Serializes and deserializes a URL string into a URL tree.  *  * The url serialization strategy is customizable. You can  * make all URLs case insensitive by providing a custom UrlSerializer.  *  * See `DefaultUrlSerializer` for an example of a URL serializer.  *  * @publicApi  */ @Injectable({providedIn: 'root', useFactory: () => new DefaultUrlSerializer()}) export abstract class UrlSerializer {   /** Parse a url into a `UrlTree` */   abstract parse(url: string): UrlTree;    /** Converts a `UrlTree` into a url */   abstract serialize(tree: UrlTree): string; }  /**  * @description  *  * A default implementation of the `UrlSerializer`.  *  * Example URLs:  *  * ```  * /inbox/33(popup:compose)  * /inbox/33;open=true/messages/44  * ```  *  * DefaultUrlSerializer uses parentheses to serialize secondary segments (e.g., popup:compose), the  * colon syntax to specify the outlet, and the ';parameter=value' syntax (e.g., open=true) to  * specify route specific parameters.  *  * @publicApi  */ export class DefaultUrlSerializer implements UrlSerializer {   /** Parses a url into a `UrlTree` */   parse(url: string): UrlTree {     const p = new UrlParser(url);     return new UrlTree(p.parseRootSegment(), p.parseQueryParams(), p.parseFragment());   }    /** Converts a `UrlTree` into a url */   serialize(tree: UrlTree): string {     const segment = `/${serializeSegment(tree.root, true)}`;     const query = serializeQueryParams(tree.queryParams);     const fragment =         typeof tree.fragment === `string` ? `#${encodeUriFragment(tree.fragment)}` : '';      return `${segment}${query}${fragment}`;   } }  const DEFAULT_SERIALIZER = new DefaultUrlSerializer();  export function serializePaths(segment: UrlSegmentGroup): string {   return segment.segments.map(p => serializePath(p)).join('/'); }  function serializeSegment(segment: UrlSegmentGroup, root: boolean): string {   if (!segment.hasChildren()) {     return serializePaths(segment);   }    if (root) {     const primary = segment.children[PRIMARY_OUTLET] ?         serializeSegment(segment.children[PRIMARY_OUTLET], false) :         '';     const children: string[] = [];      forEach(segment.children, (v: UrlSegmentGroup, k: string) => {       if (k !== PRIMARY_OUTLET) {         children.push(`${k}:${serializeSegment(v, false)}`);       }     });      return children.length > 0 ? `${primary}(${children.join('//')})` : primary;    } else {     const children = mapChildrenIntoArray(segment, (v: UrlSegmentGroup, k: string) => {       if (k === PRIMARY_OUTLET) {         return [serializeSegment(segment.children[PRIMARY_OUTLET], false)];       }        return [`${k}:${serializeSegment(v, false)}`];     });      // use no parenthesis if the only child is a primary outlet route     if (Object.keys(segment.children).length === 1 && segment.children[PRIMARY_OUTLET] != null) {       return `${serializePaths(segment)}/${children[0]}`;     }      return `${serializePaths(segment)}/(${children.join('//')})`;   } }  /**  * Encodes a URI string with the default encoding. This function will only ever be called from  * `encodeUriQuery` or `encodeUriSegment` as it's the base set of encodings to be used. We need  * a custom encoding because encodeURIComponent is too aggressive and encodes stuff that doesn't  * have to be encoded per https://url.spec.whatwg.org.  */ function encodeUriString(s: string): string {   return encodeURIComponent(s)       .replace(/%40/g, '@')       .replace(/%3A/gi, ':')       .replace(/%24/g, '$')       .replace(/%2C/gi, ','); }  /**  * This function should be used to encode both keys and values in a query string key/value. In  * the following URL, you need to call encodeUriQuery on \"k\" and \"v\":  *  * http://www.site.org/html;mk=mv?k=v#f  */ export function encodeUriQuery(s: string): string {   return encodeUriString(s).replace(/%3B/gi, ';'); }  /**  * This function should be used to encode a URL fragment. In the following URL, you need to call  * encodeUriFragment on \"f\":  *  * http://www.site.org/html;mk=mv?k=v#f  */ export function encodeUriFragment(s: string): string {   return encodeURI(s); }  /**  * This function should be run on any URI segment as well as the key and value in a key/value  * pair for matrix params. In the following URL, you need to call encodeUriSegment on \"html\",  * \"mk\", and \"mv\":  *  * http://www.site.org/html;mk=mv?k=v#f  */ export function encodeUriSegment(s: string): string {   return encodeUriString(s).replace(/\\(/g, '%28').replace(/\\)/g, '%29').replace(/%26/gi, '&'); }  export function decode(s: string): string {   return decodeURIComponent(s); }  // Query keys/values should have the \"+\" replaced first, as \"+\" in a query string is \" \". // decodeURIComponent function will not decode \"+\" as a space. export function decodeQuery(s: string): string {   return decode(s.replace(/\\+/g, '%20')); }  export function serializePath(path: UrlSegment): string {   return `${encodeUriSegment(path.path)}${serializeMatrixParams(path.parameters)}`; }  function serializeMatrixParams(params: {[key: string]: string}): string {   return Object.keys(params)       .map(key => `;${encodeUriSegment(key)}=${encodeUriSegment(params[key])}`)       .join(''); }  function serializeQueryParams(params: {[key: string]: any}): string {   const strParams: string[] =       Object.keys(params)           .map((name) => {             const value = params[name];             return Array.isArray(value) ?                 value.map(v => `${encodeUriQuery(name)}=${encodeUriQuery(v)}`).join('&') :                 `${encodeUriQuery(name)}=${encodeUriQuery(value)}`;           })           .filter(s => !!s);    return strParams.length ? `?${strParams.join('&')}` : ''; }  const SEGMENT_RE = /^[^\\/()?;=#]+/; function matchSegments(str: string): string {   const match = str.match(SEGMENT_RE);   return match ? match[0] : ''; }  const QUERY_PARAM_RE = /^[^=?&#]+/; // Return the name of the query param at the start of the string or an empty string function matchQueryParams(str: string): string {   const match = str.match(QUERY_PARAM_RE);   return match ? match[0] : ''; }  const QUERY_PARAM_VALUE_RE = /^[^&#]+/; // Return the value of the query param at the start of the string or an empty string function matchUrlQueryParamValue(str: string): string {   const match = str.match(QUERY_PARAM_VALUE_RE);   return match ? match[0] : ''; }  class UrlParser {   private remaining: string;    constructor(private url: string) {     this.remaining = url;   }    parseRootSegment(): UrlSegmentGroup {     this.consumeOptional('/');      if (this.remaining === '' || this.peekStartsWith('?') || this.peekStartsWith('#')) {       return new UrlSegmentGroup([], {});     }      // The root segment group never has segments     return new UrlSegmentGroup([], this.parseChildren());   }    parseQueryParams(): Params {     const params: Params = {};     if (this.consumeOptional('?')) {       do {         this.parseQueryParam(params);       } while (this.consumeOptional('&'));     }     return params;   }    parseFragment(): string|null {     return this.consumeOptional('#') ? decodeURIComponent(this.remaining) : null;   }    private parseChildren(): {[outlet: string]: UrlSegmentGroup} {     if (this.remaining === '') {       return {};     }      this.consumeOptional('/');      const segments: UrlSegment[] = [];     if (!this.peekStartsWith('(')) {       segments.push(this.parseSegment());     }      while (this.peekStartsWith('/') && !this.peekStartsWith('//') && !this.peekStartsWith('/(')) {       this.capture('/');       segments.push(this.parseSegment());     }      let children: {[outlet: string]: UrlSegmentGroup} = {};     if (this.peekStartsWith('/(')) {       this.capture('/');       children = this.parseParens(true);     }      let res: {[outlet: string]: UrlSegmentGroup} = {};     if (this.peekStartsWith('(')) {       res = this.parseParens(false);     }      if (segments.length > 0 || Object.keys(children).length > 0) {       res[PRIMARY_OUTLET] = new UrlSegmentGroup(segments, children);     }      return res;   }    // parse a segment with its matrix parameters   // ie `name;k1=v1;k2`   private parseSegment(): UrlSegment {     const path = matchSegments(this.remaining);     if (path === '' && this.peekStartsWith(';')) {       throw new RuntimeError(           RuntimeErrorCode.EMPTY_PATH_WITH_PARAMS,           NG_DEV_MODE && `Empty path url segment cannot have parameters: '${this.remaining}'.`);     }      this.capture(path);     return new UrlSegment(decode(path), this.parseMatrixParams());   }    private parseMatrixParams(): {[key: string]: string} {     const params: {[key: string]: string} = {};     while (this.consumeOptional(';')) {       this.parseParam(params);     }     return params;   }    private parseParam(params: {[key: string]: string}): void {     const key = matchSegments(this.remaining);     if (!key) {       return;     }     this.capture(key);     let value: any = '';     if (this.consumeOptional('=')) {       const valueMatch = matchSegments(this.remaining);       if (valueMatch) {         value = valueMatch;         this.capture(value);       }     }      params[decode(key)] = decode(value);   }    // Parse a single query parameter `name[=value]`   private parseQueryParam(params: Params): void {     const key = matchQueryParams(this.remaining);     if (!key) {       return;     }     this.capture(key);     let value: any = '';     if (this.consumeOptional('=')) {       const valueMatch = matchUrlQueryParamValue(this.remaining);       if (valueMatch) {         value = valueMatch;         this.capture(value);       }     }      const decodedKey = decodeQuery(key);     const decodedVal = decodeQuery(value);      if (params.hasOwnProperty(decodedKey)) {       // Append to existing values       let currentVal = params[decodedKey];       if (!Array.isArray(currentVal)) {         currentVal = [currentVal];         params[decodedKey] = currentVal;       }       currentVal.push(decodedVal);     } else {       // Create a new value       params[decodedKey] = decodedVal;     }   }    // parse `(a/b//outlet_name:c/d)`   private parseParens(allowPrimary: boolean): {[outlet: string]: UrlSegmentGroup} {     const segments: {[key: string]: UrlSegmentGroup} = {};     this.capture('(');      while (!this.consumeOptional(')') && this.remaining.length > 0) {       const path = matchSegments(this.remaining);        const next = this.remaining[path.length];        // if is is not one of these characters, then the segment was unescaped       // or the group was not closed       if (next !== '/' && next !== ')' && next !== ';') {         throw new RuntimeError(             RuntimeErrorCode.UNPARSABLE_URL, NG_DEV_MODE && `Cannot parse url '${this.url}'`);       }        let outletName: string = undefined!;       if (path.indexOf(':') > -1) {         outletName = path.slice(0, path.indexOf(':'));         this.capture(outletName);         this.capture(':');       } else if (allowPrimary) {         outletName = PRIMARY_OUTLET;       }        const children = this.parseChildren();       segments[outletName] = Object.keys(children).length === 1 ? children[PRIMARY_OUTLET] :                                                                   new UrlSegmentGroup([], children);       this.consumeOptional('//');     }      return segments;   }    private peekStartsWith(str: string): boolean {     return this.remaining.startsWith(str);   }    // Consumes the prefix when it is present and returns whether it has been consumed   private consumeOptional(str: string): boolean {     if (this.peekStartsWith(str)) {       this.remaining = this.remaining.substring(str.length);       return true;     }     return false;   }    private capture(str: string): void {     if (!this.consumeOptional(str)) {       throw new RuntimeError(           RuntimeErrorCode.UNEXPECTED_VALUE_IN_URL, NG_DEV_MODE && `Expected \"${str}\".`);     }   } }  export function createRoot(rootCandidate: UrlSegmentGroup) {   return rootCandidate.segments.length > 0 ?       new UrlSegmentGroup([], {[PRIMARY_OUTLET]: rootCandidate}) :       rootCandidate; }  /**  * Recursively merges primary segment children into their parents and also drops empty children  * (those which have no segments and no children themselves). The latter prevents serializing a  * group into something like `/a(aux:)`, where `aux` is an empty child segment.  */ export function squashSegmentGroup(segmentGroup: UrlSegmentGroup): UrlSegmentGroup {   const newChildren: Record<string, UrlSegmentGroup> = {};   for (const childOutlet of Object.keys(segmentGroup.children)) {     const child = segmentGroup.children[childOutlet];     const childCandidate = squashSegmentGroup(child);     // don't add empty children     if (childCandidate.segments.length > 0 || childCandidate.hasChildren()) {       newChildren[childOutlet] = childCandidate;     }   }   const s = new UrlSegmentGroup(segmentGroup.segments, newChildren);   return mergeTrivialChildren(s); }  /**  * When possible, merges the primary outlet child into the parent `UrlSegmentGroup`.  *  * When a segment group has only one child which is a primary outlet, merges that child into the  * parent. That is, the child segment group's segments are merged into the `s` and the child's  * children become the children of `s`. Think of this like a 'squash', merging the child segment  * group into the parent.  */ function mergeTrivialChildren(s: UrlSegmentGroup): UrlSegmentGroup {   if (s.numberOfChildren === 1 && s.children[PRIMARY_OUTLET]) {     const c = s.children[PRIMARY_OUTLET];     return new UrlSegmentGroup(s.segments.concat(c.segments), c.children);   }    return s; }  export function isUrlTree(v: any): v is UrlTree {   return v instanceof UrlTree; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from './errors'; import {ActivatedRoute, ActivatedRouteSnapshot} from './router_state'; import {Params, PRIMARY_OUTLET} from './shared'; import {createRoot, squashSegmentGroup, UrlSegment, UrlSegmentGroup, UrlTree} from './url_tree'; import {forEach, last, shallowEqual} from './utils/collection';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;  /**  * Creates a `UrlTree` relative to an `ActivatedRouteSnapshot`.  *  * @publicApi  *  *  * @param relativeTo The `ActivatedRouteSnapshot` to apply the commands to  * @param commands An array of URL fragments with which to construct the new URL tree.  * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path  * segments, followed by the parameters for each segment.  * The fragments are applied to the one provided in the `relativeTo` parameter.  * @param queryParams The query parameters for the `UrlTree`. `null` if the `UrlTree` does not have  *     any query parameters.  * @param fragment The fragment for the `UrlTree`. `null` if the `UrlTree` does not have a fragment.  *  * @usageNotes  *  * ```  * // create /team/33/user/11  * createUrlTreeFromSnapshot(snapshot, ['/team', 33, 'user', 11]);  *  * // create /team/33;expand=true/user/11  * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {expand: true}, 'user', 11]);  *  * // you can collapse static segments like this (this works only with the first passed-in value):  * createUrlTreeFromSnapshot(snapshot, ['/team/33/user', userId]);  *  * // If the first segment can contain slashes, and you do not want the router to split it,  * // you can do the following:  * createUrlTreeFromSnapshot(snapshot, [{segmentPath: '/one/two'}]);  *  * // create /team/33/(user/11//right:chat)  * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {outlets: {primary: 'user/11', right:  * 'chat'}}], null, null);  *  * // remove the right secondary node  * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {outlets: {primary: 'user/11', right: null}}]);  *  * // For the examples below, assume the current URL is for the `/team/33/user/11` and the  * `ActivatedRouteSnapshot` points to `user/11`:  *  * // navigate to /team/33/user/11/details  * createUrlTreeFromSnapshot(snapshot, ['details']);  *  * // navigate to /team/33/user/22  * createUrlTreeFromSnapshot(snapshot, ['../22']);  *  * // navigate to /team/44/user/22  * createUrlTreeFromSnapshot(snapshot, ['../../team/44/user/22']);  * ```  */ export function createUrlTreeFromSnapshot(     relativeTo: ActivatedRouteSnapshot, commands: any[], queryParams: Params|null = null,     fragment: string|null = null): UrlTree {   const relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeTo);   return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, queryParams, fragment); }  export function createSegmentGroupFromRoute(route: ActivatedRouteSnapshot): UrlSegmentGroup {   let targetGroup: UrlSegmentGroup|undefined;    function createSegmentGroupFromRouteRecursive(currentRoute: ActivatedRouteSnapshot):       UrlSegmentGroup {     const childOutlets: {[outlet: string]: UrlSegmentGroup} = {};     for (const childSnapshot of currentRoute.children) {       const root = createSegmentGroupFromRouteRecursive(childSnapshot);       childOutlets[childSnapshot.outlet] = root;     }     const segmentGroup = new UrlSegmentGroup(currentRoute.url, childOutlets);     if (currentRoute === route) {       targetGroup = segmentGroup;     }     return segmentGroup;   }   const rootCandidate = createSegmentGroupFromRouteRecursive(route.root);   const rootSegmentGroup = createRoot(rootCandidate);    return targetGroup ?? rootSegmentGroup; }  export function createUrlTreeFromSegmentGroup(     relativeTo: UrlSegmentGroup, commands: any[], queryParams: Params|null,     fragment: string|null): UrlTree {   let root = relativeTo;   while (root.parent) {     root = root.parent;   }   // There are no commands so the `UrlTree` goes to the same path as the one created from the   // `UrlSegmentGroup`. All we need to do is update the `queryParams` and `fragment` without   // applying any other logic.   if (commands.length === 0) {     return tree(root, root, root, queryParams, fragment);   }    const nav = computeNavigation(commands);    if (nav.toRoot()) {     return tree(root, root, new UrlSegmentGroup([], {}), queryParams, fragment);   }    const position = findStartingPositionForTargetGroup(nav, root, relativeTo);   const newSegmentGroup = position.processChildren ?       updateSegmentGroupChildren(position.segmentGroup, position.index, nav.commands) :       updateSegmentGroup(position.segmentGroup, position.index, nav.commands);   return tree(root, position.segmentGroup, newSegmentGroup, queryParams, fragment); }  export function createUrlTree(     route: ActivatedRoute, urlTree: UrlTree, commands: any[], queryParams: Params|null,     fragment: string|null): UrlTree {   if (commands.length === 0) {     return tree(urlTree.root, urlTree.root, urlTree.root, queryParams, fragment);   }    const nav = computeNavigation(commands);    if (nav.toRoot()) {     return tree(urlTree.root, urlTree.root, new UrlSegmentGroup([], {}), queryParams, fragment);   }    function createTreeUsingPathIndex(lastPathIndex: number) {     const startingPosition =         findStartingPosition(nav, urlTree, route.snapshot?._urlSegment, lastPathIndex);      const segmentGroup = startingPosition.processChildren ?         updateSegmentGroupChildren(             startingPosition.segmentGroup, startingPosition.index, nav.commands) :         updateSegmentGroup(startingPosition.segmentGroup, startingPosition.index, nav.commands);     return tree(urlTree.root, startingPosition.segmentGroup, segmentGroup, queryParams, fragment);   }   // Note: The types should disallow `snapshot` from being `undefined` but due to test mocks, this   // may be the case. Since we try to access it at an earlier point before the refactor to add the   // warning for `relativeLinkResolution: 'legacy'`, this may cause failures in tests where it   // didn't before.   const result = createTreeUsingPathIndex(route.snapshot?._lastPathIndex);    return result; }  function isMatrixParams(command: any): boolean {   return typeof command === 'object' && command != null && !command.outlets && !command.segmentPath; }  /**  * Determines if a given command has an `outlets` map. When we encounter a command  * with an outlets k/v map, we need to apply each outlet individually to the existing segment.  */ function isCommandWithOutlets(command: any): command is {outlets: {[key: string]: any}} {   return typeof command === 'object' && command != null && command.outlets; }  function tree(     oldRoot: UrlSegmentGroup, oldSegmentGroup: UrlSegmentGroup, newSegmentGroup: UrlSegmentGroup,     queryParams: Params|null, fragment: string|null): UrlTree {   let qp: any = {};   if (queryParams) {     forEach(queryParams, (value: any, name: any) => {       qp[name] = Array.isArray(value) ? value.map((v: any) => `${v}`) : `${value}`;     });   }    let rootCandidate: UrlSegmentGroup;   if (oldRoot === oldSegmentGroup) {     rootCandidate = newSegmentGroup;   } else {     rootCandidate = replaceSegment(oldRoot, oldSegmentGroup, newSegmentGroup);   }    const newRoot = createRoot(squashSegmentGroup(rootCandidate));   return new UrlTree(newRoot, qp, fragment); }  /**  * Replaces the `oldSegment` which is located in some child of the `current` with the `newSegment`.  * This also has the effect of creating new `UrlSegmentGroup` copies to update references. This  * shouldn't be necessary but the fallback logic for an invalid ActivatedRoute in the creation uses  * the Router's current url tree. If we don't create new segment groups, we end up modifying that  * value.  */ function replaceSegment(     current: UrlSegmentGroup, oldSegment: UrlSegmentGroup,     newSegment: UrlSegmentGroup): UrlSegmentGroup {   const children: {[key: string]: UrlSegmentGroup} = {};   forEach(current.children, (c: UrlSegmentGroup, outletName: string) => {     if (c === oldSegment) {       children[outletName] = newSegment;     } else {       children[outletName] = replaceSegment(c, oldSegment, newSegment);     }   });   return new UrlSegmentGroup(current.segments, children); }  class Navigation {   constructor(       public isAbsolute: boolean, public numberOfDoubleDots: number, public commands: any[]) {     if (isAbsolute && commands.length > 0 && isMatrixParams(commands[0])) {       throw new RuntimeError(           RuntimeErrorCode.ROOT_SEGMENT_MATRIX_PARAMS,           NG_DEV_MODE && 'Root segment cannot have matrix parameters');     }      const cmdWithOutlet = commands.find(isCommandWithOutlets);     if (cmdWithOutlet && cmdWithOutlet !== last(commands)) {       throw new RuntimeError(           RuntimeErrorCode.MISPLACED_OUTLETS_COMMAND,           NG_DEV_MODE && '{outlets:{}} has to be the last command');     }   }    public toRoot(): boolean {     return this.isAbsolute && this.commands.length === 1 && this.commands[0] == '/';   } }  /** Transforms commands to a normalized `Navigation` */ function computeNavigation(commands: any[]): Navigation {   if ((typeof commands[0] === 'string') && commands.length === 1 && commands[0] === '/') {     return new Navigation(true, 0, commands);   }    let numberOfDoubleDots = 0;   let isAbsolute = false;    const res: any[] = commands.reduce((res, cmd, cmdIdx) => {     if (typeof cmd === 'object' && cmd != null) {       if (cmd.outlets) {         const outlets: {[k: string]: any} = {};         forEach(cmd.outlets, (commands: any, name: string) => {           outlets[name] = typeof commands === 'string' ? commands.split('/') : commands;         });         return [...res, {outlets}];       }        if (cmd.segmentPath) {         return [...res, cmd.segmentPath];       }     }      if (!(typeof cmd === 'string')) {       return [...res, cmd];     }      if (cmdIdx === 0) {       cmd.split('/').forEach((urlPart, partIndex) => {         if (partIndex == 0 && urlPart === '.') {           // skip './a'         } else if (partIndex == 0 && urlPart === '') {  //  '/a'           isAbsolute = true;         } else if (urlPart === '..') {  //  '../a'           numberOfDoubleDots++;         } else if (urlPart != '') {           res.push(urlPart);         }       });        return res;     }      return [...res, cmd];   }, []);    return new Navigation(isAbsolute, numberOfDoubleDots, res); }  class Position {   constructor(       public segmentGroup: UrlSegmentGroup, public processChildren: boolean, public index: number) {   } }  function findStartingPositionForTargetGroup(     nav: Navigation, root: UrlSegmentGroup, target: UrlSegmentGroup): Position {   if (nav.isAbsolute) {     return new Position(root, true, 0);   }    if (!target) {     // `NaN` is used only to maintain backwards compatibility with incorrectly mocked     // `ActivatedRouteSnapshot` in tests. In prior versions of this code, the position here was     // determined based on an internal property that was rarely mocked, resulting in `NaN`. In     // reality, this code path should _never_ be touched since `target` is not allowed to be falsey.     return new Position(root, false, NaN);   }   if (target.parent === null) {     return new Position(target, true, 0);   }    const modifier = isMatrixParams(nav.commands[0]) ? 0 : 1;   const index = target.segments.length - 1 + modifier;   return createPositionApplyingDoubleDots(target, index, nav.numberOfDoubleDots); }  function findStartingPosition(     nav: Navigation, tree: UrlTree, segmentGroup: UrlSegmentGroup,     lastPathIndex: number): Position {   if (nav.isAbsolute) {     return new Position(tree.root, true, 0);   }    if (lastPathIndex === -1) {     // Pathless ActivatedRoute has _lastPathIndex === -1 but should not process children     // see issue #26224, #13011, #35687     // However, if the ActivatedRoute is the root we should process children like above.     const processChildren = segmentGroup === tree.root;     return new Position(segmentGroup, processChildren, 0);   }    const modifier = isMatrixParams(nav.commands[0]) ? 0 : 1;   const index = lastPathIndex + modifier;   return createPositionApplyingDoubleDots(segmentGroup, index, nav.numberOfDoubleDots); }  function createPositionApplyingDoubleDots(     group: UrlSegmentGroup, index: number, numberOfDoubleDots: number): Position {   let g = group;   let ci = index;   let dd = numberOfDoubleDots;   while (dd > ci) {     dd -= ci;     g = g.parent!;     if (!g) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_DOUBLE_DOTS, NG_DEV_MODE && 'Invalid number of \\'../\\'');     }     ci = g.segments.length;   }   return new Position(g, false, ci - dd); }  function getOutlets(commands: unknown[]): {[k: string]: unknown[]|string} {   if (isCommandWithOutlets(commands[0])) {     return commands[0].outlets;   }    return {[PRIMARY_OUTLET]: commands}; }  function updateSegmentGroup(     segmentGroup: UrlSegmentGroup, startIndex: number, commands: any[]): UrlSegmentGroup {   if (!segmentGroup) {     segmentGroup = new UrlSegmentGroup([], {});   }   if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {     return updateSegmentGroupChildren(segmentGroup, startIndex, commands);   }    const m = prefixedWith(segmentGroup, startIndex, commands);   const slicedCommands = commands.slice(m.commandIndex);   if (m.match && m.pathIndex < segmentGroup.segments.length) {     const g = new UrlSegmentGroup(segmentGroup.segments.slice(0, m.pathIndex), {});     g.children[PRIMARY_OUTLET] =         new UrlSegmentGroup(segmentGroup.segments.slice(m.pathIndex), segmentGroup.children);     return updateSegmentGroupChildren(g, 0, slicedCommands);   } else if (m.match && slicedCommands.length === 0) {     return new UrlSegmentGroup(segmentGroup.segments, {});   } else if (m.match && !segmentGroup.hasChildren()) {     return createNewSegmentGroup(segmentGroup, startIndex, commands);   } else if (m.match) {     return updateSegmentGroupChildren(segmentGroup, 0, slicedCommands);   } else {     return createNewSegmentGroup(segmentGroup, startIndex, commands);   } }  function updateSegmentGroupChildren(     segmentGroup: UrlSegmentGroup, startIndex: number, commands: any[]): UrlSegmentGroup {   if (commands.length === 0) {     return new UrlSegmentGroup(segmentGroup.segments, {});   } else {     const outlets = getOutlets(commands);     const children: {[key: string]: UrlSegmentGroup} = {};     // If the set of commands does not apply anything to the primary outlet and the child segment is     // an empty path primary segment on its own, we want to skip applying the commands at this     // level. Imagine the following config:     //     // {path: '', children: [{path: '**', outlet: 'popup'}]}.     //     // Navigation to /(popup:a) will activate the child outlet correctly Given a follow-up     // navigation with commands     // ['/', {outlets: {'popup': 'b'}}], we _would not_ want to apply the outlet commands to the     // root segment because that would result in     // //(popup:a)(popup:b) since the outlet command got applied one level above where it appears in     // the `ActivatedRoute` rather than updating the existing one.     //     // Because empty paths do not appear in the URL segments and the fact that the segments used in     // the output `UrlTree` are squashed to eliminate these empty paths where possible     // https://github.com/angular/angular/blob/13f10de40e25c6900ca55bd83b36bd533dacfa9e/packages/router/src/url_tree.ts#L755     // it can be hard to determine what is the right thing to do when applying commands to a     // `UrlSegmentGroup` that is created from an \"unsquashed\"/expanded `ActivatedRoute` tree.     // This code effectively \"squashes\" empty path primary routes when they have no siblings on     // the same level of the tree.     if (!outlets[PRIMARY_OUTLET] && segmentGroup.children[PRIMARY_OUTLET] &&         segmentGroup.numberOfChildren === 1 &&         segmentGroup.children[PRIMARY_OUTLET].segments.length === 0) {       return updateSegmentGroupChildren(           segmentGroup.children[PRIMARY_OUTLET], startIndex, commands);     }      forEach(outlets, (commands, outlet) => {       if (typeof commands === 'string') {         commands = [commands];       }       if (commands !== null) {         children[outlet] = updateSegmentGroup(segmentGroup.children[outlet], startIndex, commands);       }     });      forEach(segmentGroup.children, (child: UrlSegmentGroup, childOutlet: string) => {       if (outlets[childOutlet] === undefined) {         children[childOutlet] = child;       }     });     return new UrlSegmentGroup(segmentGroup.segments, children);   } }  function prefixedWith(segmentGroup: UrlSegmentGroup, startIndex: number, commands: any[]) {   let currentCommandIndex = 0;   let currentPathIndex = startIndex;    const noMatch = {match: false, pathIndex: 0, commandIndex: 0};   while (currentPathIndex < segmentGroup.segments.length) {     if (currentCommandIndex >= commands.length) return noMatch;     const path = segmentGroup.segments[currentPathIndex];     const command = commands[currentCommandIndex];     // Do not try to consume command as part of the prefixing if it has outlets because it can     // contain outlets other than the one being processed. Consuming the outlets command would     // result in other outlets being ignored.     if (isCommandWithOutlets(command)) {       break;     }     const curr = `${command}`;     const next =         currentCommandIndex < commands.length - 1 ? commands[currentCommandIndex + 1] : null;      if (currentPathIndex > 0 && curr === undefined) break;      if (curr && next && (typeof next === 'object') && next.outlets === undefined) {       if (!compare(curr, next, path)) return noMatch;       currentCommandIndex += 2;     } else {       if (!compare(curr, {}, path)) return noMatch;       currentCommandIndex++;     }     currentPathIndex++;   }    return {match: true, pathIndex: currentPathIndex, commandIndex: currentCommandIndex}; }  function createNewSegmentGroup(     segmentGroup: UrlSegmentGroup, startIndex: number, commands: any[]): UrlSegmentGroup {   const paths = segmentGroup.segments.slice(0, startIndex);    let i = 0;   while (i < commands.length) {     const command = commands[i];     if (isCommandWithOutlets(command)) {       const children = createNewSegmentChildren(command.outlets);       return new UrlSegmentGroup(paths, children);     }      // if we start with an object literal, we need to reuse the path part from the segment     if (i === 0 && isMatrixParams(commands[0])) {       const p = segmentGroup.segments[startIndex];       paths.push(new UrlSegment(p.path, stringify(commands[0])));       i++;       continue;     }      const curr = isCommandWithOutlets(command) ? command.outlets[PRIMARY_OUTLET] : `${command}`;     const next = (i < commands.length - 1) ? commands[i + 1] : null;     if (curr && next && isMatrixParams(next)) {       paths.push(new UrlSegment(curr, stringify(next)));       i += 2;     } else {       paths.push(new UrlSegment(curr, {}));       i++;     }   }   return new UrlSegmentGroup(paths, {}); }  function createNewSegmentChildren(outlets: {[name: string]: unknown[]|string}):     {[outlet: string]: UrlSegmentGroup} {   const children: {[outlet: string]: UrlSegmentGroup} = {};   forEach(outlets, (commands, outlet) => {     if (typeof commands === 'string') {       commands = [commands];     }     if (commands !== null) {       children[outlet] = createNewSegmentGroup(new UrlSegmentGroup([], {}), 0, commands);     }   });   return children; }  function stringify(params: {[key: string]: any}): {[key: string]: string} {   const res: {[key: string]: string} = {};   forEach(params, (v: any, k: string) => res[k] = `${v}`);   return res; }  function compare(path: string, params: {[key: string]: any}, segment: UrlSegment): boolean {   return path == segment.path && shallowEqual(params, segment.parameters); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Route} from './models'; import {ActivatedRouteSnapshot, RouterStateSnapshot} from './router_state';  /**  * Identifies the call or event that triggered a navigation.  *  * * 'imperative': Triggered by `router.navigateByUrl()` or `router.navigate()`.  * * 'popstate' : Triggered by a `popstate` event.  * * 'hashchange'-: Triggered by a `hashchange` event.  *  * @publicApi  */ export type NavigationTrigger = 'imperative'|'popstate'|'hashchange'; export const IMPERATIVE_NAVIGATION = 'imperative';  /**  * Identifies the type of a router event.  *  * @publicApi  */ export const enum EventType {   NavigationStart,   NavigationEnd,   NavigationCancel,   NavigationError,   RoutesRecognized,   ResolveStart,   ResolveEnd,   GuardsCheckStart,   GuardsCheckEnd,   RouteConfigLoadStart,   RouteConfigLoadEnd,   ChildActivationStart,   ChildActivationEnd,   ActivationStart,   ActivationEnd,   Scroll,   NavigationSkipped, }  /**  * Base for events the router goes through, as opposed to events tied to a specific  * route. Fired one time for any given navigation.  *  * The following code shows how a class subscribes to router events.  *  * ```ts  * import {Event, RouterEvent, Router} from '@angular/router';  *  * class MyService {  *   constructor(public router: Router) {  *     router.events.pipe(  *        filter((e: Event): e is RouterEvent => e instanceof RouterEvent)  *     ).subscribe((e: RouterEvent) => {  *       // Do something  *     });  *   }  * }  * ```  *  * @see `Event`  * @see [Router events summary](guide/router-reference#router-events)  * @publicApi  */ export class RouterEvent {   constructor(       /** A unique ID that the router assigns to every router navigation. */       public id: number,       /** The URL that is the destination for this navigation. */       public url: string) {} }  /**  * An event triggered when a navigation starts.  *  * @publicApi  */ export class NavigationStart extends RouterEvent {   readonly type = EventType.NavigationStart;    /**    * Identifies the call or event that triggered the navigation.    * An `imperative` trigger is a call to `router.navigateByUrl()` or `router.navigate()`.    *    * @see `NavigationEnd`    * @see `NavigationCancel`    * @see `NavigationError`    */   navigationTrigger?: NavigationTrigger;    /**    * The navigation state that was previously supplied to the `pushState` call,    * when the navigation is triggered by a `popstate` event. Otherwise null.    *    * The state object is defined by `NavigationExtras`, and contains any    * developer-defined state value, as well as a unique ID that    * the router assigns to every router transition/navigation.    *    * From the perspective of the router, the router never \"goes back\".    * When the user clicks on the back button in the browser,    * a new navigation ID is created.    *    * Use the ID in this previous-state object to differentiate between a newly created    * state and one returned to by a `popstate` event, so that you can restore some    * remembered state, such as scroll position.    *    */   restoredState?: {[k: string]: any, navigationId: number}|null;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       navigationTrigger: NavigationTrigger = 'imperative',       /** @docsNotRequired */       restoredState: {[k: string]: any, navigationId: number}|null = null) {     super(id, url);     this.navigationTrigger = navigationTrigger;     this.restoredState = restoredState;   }    /** @docsNotRequired */   override toString(): string {     return `NavigationStart(id: ${this.id}, url: '${this.url}')`;   } }  /**  * An event triggered when a navigation ends successfully.  *  * @see `NavigationStart`  * @see `NavigationCancel`  * @see `NavigationError`  *  * @publicApi  */ export class NavigationEnd extends RouterEvent {   readonly type = EventType.NavigationEnd;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       public urlAfterRedirects: string) {     super(id, url);   }    /** @docsNotRequired */   override toString(): string {     return `NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${         this.urlAfterRedirects}')`;   } }  /**  * A code for the `NavigationCancel` event of the `Router` to indicate the  * reason a navigation failed.  *  * @publicApi  */ export const enum NavigationCancellationCode {   /**    * A navigation failed because a guard returned a `UrlTree` to redirect.    */   Redirect,   /**    * A navigation failed because a more recent navigation started.    */   SupersededByNewNavigation,   /**    * A navigation failed because one of the resolvers completed without emiting a value.    */   NoDataFromResolver,   /**    * A navigation failed because a guard returned `false`.    */   GuardRejected, }  /**  * A code for the `NavigationSkipped` event of the `Router` to indicate the  * reason a navigation was skipped.  *  * @publicApi  */ export const enum NavigationSkippedCode {   /**    * A navigation was skipped because the navigation URL was the same as the current Router URL.    */   IgnoredSameUrlNavigation,   /**    * A navigation was skipped because the configured `UrlHandlingStrategy` return `false` for both    * the current Router URL and the target of the navigation.    *    * @see UrlHandlingStrategy    */   IgnoredByUrlHandlingStrategy, }  /**  * An event triggered when a navigation is canceled, directly or indirectly.  * This can happen for several reasons including when a route guard  * returns `false` or initiates a redirect by returning a `UrlTree`.  *  * @see `NavigationStart`  * @see `NavigationEnd`  * @see `NavigationError`  *  * @publicApi  */ export class NavigationCancel extends RouterEvent {   readonly type = EventType.NavigationCancel;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /**        * A description of why the navigation was cancelled. For debug purposes only. Use `code`        * instead for a stable cancellation reason that can be used in production.        */       public reason: string,       /**        * A code to indicate why the navigation was canceled. This cancellation code is stable for        * the reason and can be relied on whereas the `reason` string could change and should not be        * used in production.        */       readonly code?: NavigationCancellationCode) {     super(id, url);   }    /** @docsNotRequired */   override toString(): string {     return `NavigationCancel(id: ${this.id}, url: '${this.url}')`;   } }  /**  * An event triggered when a navigation is skipped.  * This can happen for a couple reasons including onSameUrlHandling  * is set to `ignore` and the navigation URL is not different than the  * current state.  *  * @publicApi  */ export class NavigationSkipped extends RouterEvent {   readonly type = EventType.NavigationSkipped;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /**        * A description of why the navigation was skipped. For debug purposes only. Use `code`        * instead for a stable skipped reason that can be used in production.        */       public reason: string,       /**        * A code to indicate why the navigation was skipped. This code is stable for        * the reason and can be relied on whereas the `reason` string could change and should not be        * used in production.        */       readonly code?: NavigationSkippedCode) {     super(id, url);   } }  /**  * An event triggered when a navigation fails due to an unexpected error.  *  * @see `NavigationStart`  * @see `NavigationEnd`  * @see `NavigationCancel`  *  * @publicApi  */ export class NavigationError extends RouterEvent {   readonly type = EventType.NavigationError;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       public error: any,       /**        * The target of the navigation when the error occurred.        *        * Note that this can be `undefined` because an error could have occurred before the        * `RouterStateSnapshot` was created for the navigation.        */       readonly target?: RouterStateSnapshot) {     super(id, url);   }    /** @docsNotRequired */   override toString(): string {     return `NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`;   } }  /**  * An event triggered when routes are recognized.  *  * @publicApi  */ export class RoutesRecognized extends RouterEvent {   readonly type = EventType.RoutesRecognized;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       public urlAfterRedirects: string,       /** @docsNotRequired */       public state: RouterStateSnapshot) {     super(id, url);   }    /** @docsNotRequired */   override toString(): string {     return `RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${         this.urlAfterRedirects}', state: ${this.state})`;   } }  /**  * An event triggered at the start of the Guard phase of routing.  *  * @see `GuardsCheckEnd`  *  * @publicApi  */ export class GuardsCheckStart extends RouterEvent {   readonly type = EventType.GuardsCheckStart;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       public urlAfterRedirects: string,       /** @docsNotRequired */       public state: RouterStateSnapshot) {     super(id, url);   }    override toString(): string {     return `GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${         this.urlAfterRedirects}', state: ${this.state})`;   } }  /**  * An event triggered at the end of the Guard phase of routing.  *  * @see `GuardsCheckStart`  *  * @publicApi  */ export class GuardsCheckEnd extends RouterEvent {   readonly type = EventType.GuardsCheckEnd;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       public urlAfterRedirects: string,       /** @docsNotRequired */       public state: RouterStateSnapshot,       /** @docsNotRequired */       public shouldActivate: boolean) {     super(id, url);   }    override toString(): string {     return `GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${         this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`;   } }  /**  * An event triggered at the start of the Resolve phase of routing.  *  * Runs in the \"resolve\" phase whether or not there is anything to resolve.  * In future, may change to only run when there are things to be resolved.  *  * @see `ResolveEnd`  *  * @publicApi  */ export class ResolveStart extends RouterEvent {   readonly type = EventType.ResolveStart;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       public urlAfterRedirects: string,       /** @docsNotRequired */       public state: RouterStateSnapshot) {     super(id, url);   }    override toString(): string {     return `ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${         this.urlAfterRedirects}', state: ${this.state})`;   } }  /**  * An event triggered at the end of the Resolve phase of routing.  * @see `ResolveStart`.  *  * @publicApi  */ export class ResolveEnd extends RouterEvent {   readonly type = EventType.ResolveEnd;    constructor(       /** @docsNotRequired */       id: number,       /** @docsNotRequired */       url: string,       /** @docsNotRequired */       public urlAfterRedirects: string,       /** @docsNotRequired */       public state: RouterStateSnapshot) {     super(id, url);   }    override toString(): string {     return `ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${         this.urlAfterRedirects}', state: ${this.state})`;   } }  /**  * An event triggered before lazy loading a route configuration.  *  * @see `RouteConfigLoadEnd`  *  * @publicApi  */ export class RouteConfigLoadStart {   readonly type = EventType.RouteConfigLoadStart;    constructor(       /** @docsNotRequired */       public route: Route) {}   toString(): string {     return `RouteConfigLoadStart(path: ${this.route.path})`;   } }  /**  * An event triggered when a route has been lazy loaded.  *  * @see `RouteConfigLoadStart`  *  * @publicApi  */ export class RouteConfigLoadEnd {   readonly type = EventType.RouteConfigLoadEnd;    constructor(       /** @docsNotRequired */       public route: Route) {}   toString(): string {     return `RouteConfigLoadEnd(path: ${this.route.path})`;   } }  /**  * An event triggered at the start of the child-activation  * part of the Resolve phase of routing.  * @see  `ChildActivationEnd`  * @see `ResolveStart`  *  * @publicApi  */ export class ChildActivationStart {   readonly type = EventType.ChildActivationStart;    constructor(       /** @docsNotRequired */       public snapshot: ActivatedRouteSnapshot) {}   toString(): string {     const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';     return `ChildActivationStart(path: '${path}')`;   } }  /**  * An event triggered at the end of the child-activation part  * of the Resolve phase of routing.  * @see `ChildActivationStart`  * @see `ResolveStart`  * @publicApi  */ export class ChildActivationEnd {   readonly type = EventType.ChildActivationEnd;    constructor(       /** @docsNotRequired */       public snapshot: ActivatedRouteSnapshot) {}   toString(): string {     const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';     return `ChildActivationEnd(path: '${path}')`;   } }  /**  * An event triggered at the start of the activation part  * of the Resolve phase of routing.  * @see `ActivationEnd`  * @see `ResolveStart`  *  * @publicApi  */ export class ActivationStart {   readonly type = EventType.ActivationStart;    constructor(       /** @docsNotRequired */       public snapshot: ActivatedRouteSnapshot) {}   toString(): string {     const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';     return `ActivationStart(path: '${path}')`;   } }  /**  * An event triggered at the end of the activation part  * of the Resolve phase of routing.  * @see `ActivationStart`  * @see `ResolveStart`  *  * @publicApi  */ export class ActivationEnd {   readonly type = EventType.ActivationEnd;    constructor(       /** @docsNotRequired */       public snapshot: ActivatedRouteSnapshot) {}   toString(): string {     const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';     return `ActivationEnd(path: '${path}')`;   } }  /**  * An event triggered by scrolling.  *  * @publicApi  */ export class Scroll {   readonly type = EventType.Scroll;    constructor(       /** @docsNotRequired */       readonly routerEvent: NavigationEnd,        /** @docsNotRequired */       readonly position: [number, number]|null,        /** @docsNotRequired */       readonly anchor: string|null) {}    toString(): string {     const pos = this.position ? `${this.position[0]}, ${this.position[1]}` : null;     return `Scroll(anchor: '${this.anchor}', position: '${pos}')`;   } }  /**  * Router events that allow you to track the lifecycle of the router.  *  * The events occur in the following sequence:  *  * * [NavigationStart](api/router/NavigationStart): Navigation starts.  * * [RouteConfigLoadStart](api/router/RouteConfigLoadStart): Before  * the router [lazy loads](/guide/router#lazy-loading) a route configuration.  * * [RouteConfigLoadEnd](api/router/RouteConfigLoadEnd): After a route has been lazy loaded.  * * [RoutesRecognized](api/router/RoutesRecognized): When the router parses the URL  * and the routes are recognized.  * * [GuardsCheckStart](api/router/GuardsCheckStart): When the router begins the *guards*  * phase of routing.  * * [ChildActivationStart](api/router/ChildActivationStart): When the router  * begins activating a route's children.  * * [ActivationStart](api/router/ActivationStart): When the router begins activating a route.  * * [GuardsCheckEnd](api/router/GuardsCheckEnd): When the router finishes the *guards*  * phase of routing successfully.  * * [ResolveStart](api/router/ResolveStart): When the router begins the *resolve*  * phase of routing.  * * [ResolveEnd](api/router/ResolveEnd): When the router finishes the *resolve*  * phase of routing successfully.  * * [ChildActivationEnd](api/router/ChildActivationEnd): When the router finishes  * activating a route's children.  * * [ActivationEnd](api/router/ActivationEnd): When the router finishes activating a route.  * * [NavigationEnd](api/router/NavigationEnd): When navigation ends successfully.  * * [NavigationCancel](api/router/NavigationCancel): When navigation is canceled.  * * [NavigationError](api/router/NavigationError): When navigation fails  * due to an unexpected error.  * * [Scroll](api/router/Scroll): When the user scrolls.  *  * @publicApi  */ export type Event = RouterEvent|NavigationStart|NavigationEnd|NavigationCancel|NavigationError|     RoutesRecognized|GuardsCheckStart|GuardsCheckEnd|RouteConfigLoadStart|RouteConfigLoadEnd|     ChildActivationStart|ChildActivationEnd|ActivationStart|ActivationEnd|Scroll|ResolveStart|     ResolveEnd|NavigationSkipped;   export function stringifyEvent(routerEvent: Event): string {   if (!('type' in routerEvent)) {     return `Unknown Router Event: ${routerEvent.constructor.name}`;   }   switch (routerEvent.type) {     case EventType.ActivationEnd:       return `ActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;     case EventType.ActivationStart:       return `ActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;     case EventType.ChildActivationEnd:       return `ChildActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;     case EventType.ChildActivationStart:       return `ChildActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;     case EventType.GuardsCheckEnd:       return `GuardsCheckEnd(id: ${routerEvent.id}, url: '${           routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${           routerEvent.state}, shouldActivate: ${routerEvent.shouldActivate})`;     case EventType.GuardsCheckStart:       return `GuardsCheckStart(id: ${routerEvent.id}, url: '${           routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${           routerEvent.state})`;     case EventType.NavigationCancel:       return `NavigationCancel(id: ${routerEvent.id}, url: '${routerEvent.url}')`;     case EventType.NavigationSkipped:       return `NavigationSkipped(id: ${routerEvent.id}, url: '${routerEvent.url}')`;     case EventType.NavigationEnd:       return `NavigationEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${           routerEvent.urlAfterRedirects}')`;     case EventType.NavigationError:       return `NavigationError(id: ${routerEvent.id}, url: '${routerEvent.url}', error: ${           routerEvent.error})`;     case EventType.NavigationStart:       return `NavigationStart(id: ${routerEvent.id}, url: '${routerEvent.url}')`;     case EventType.ResolveEnd:       return `ResolveEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${           routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;     case EventType.ResolveStart:       return `ResolveStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${           routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;     case EventType.RouteConfigLoadEnd:       return `RouteConfigLoadEnd(path: ${routerEvent.route.path})`;     case EventType.RouteConfigLoadStart:       return `RouteConfigLoadStart(path: ${routerEvent.route.path})`;     case EventType.RoutesRecognized:       return `RoutesRecognized(id: ${routerEvent.id}, url: '${           routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${           routerEvent.state})`;     case EventType.Scroll:       const pos =           routerEvent.position ? `${routerEvent.position[0]}, ${routerEvent.position[1]}` : null;       return `Scroll(anchor: '${routerEvent.anchor}', position: '${pos}')`;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injectable} from '@angular/core';  import {createSegmentGroupFromRoute, createUrlTree, createUrlTreeFromSegmentGroup} from './create_url_tree'; import {ActivatedRoute, RouterState} from './router_state'; import {Params} from './shared'; import {UrlSegmentGroup, UrlTree} from './url_tree';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;  @Injectable() export class LegacyCreateUrlTree implements CreateUrlTreeStrategy {   createUrlTree(       relativeTo: ActivatedRoute|null|undefined, currentState: RouterState, currentUrlTree: UrlTree,       commands: any[], queryParams: Params|null, fragment: string|null): UrlTree {     const a = relativeTo || currentState.root;     const tree = createUrlTree(a, currentUrlTree, commands, queryParams, fragment);     if (NG_DEV_MODE) {       const treeFromSnapshotStrategy = new CreateUrlTreeUsingSnapshot().createUrlTree(           relativeTo, currentState, currentUrlTree, commands, queryParams, fragment);       if (treeFromSnapshotStrategy.toString() !== tree.toString()) {         let warningString = `The navigation to ${tree.toString()} will instead go to ${             treeFromSnapshotStrategy.toString()} in an upcoming version of Angular.`;         if (!!relativeTo) {           warningString += ' `relativeTo` might need to be removed from the `UrlCreationOptions`.';         }         tree._warnIfUsedForNavigation = warningString;       }     }     return tree;   } }  @Injectable() export class CreateUrlTreeUsingSnapshot implements CreateUrlTreeStrategy {   createUrlTree(       relativeTo: ActivatedRoute|null|undefined, currentState: RouterState, currentUrlTree: UrlTree,       commands: any[], queryParams: Params|null, fragment: string|null): UrlTree {     let relativeToUrlSegmentGroup: UrlSegmentGroup|undefined;     try {       const relativeToSnapshot = relativeTo ? relativeTo.snapshot : currentState.snapshot.root;       relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeToSnapshot);     } catch (e: unknown) {       // This is strictly for backwards compatibility with tests that create       // invalid `ActivatedRoute` mocks.       // Note: the difference between having this fallback for invalid `ActivatedRoute` setups and       // just throwing is ~500 test failures. Fixing all of those tests by hand is not feasible at       // the moment.       if (typeof commands[0] !== 'string' || !commands[0].startsWith('/')) {         // Navigations that were absolute in the old way of creating UrlTrees         // would still work because they wouldn't attempt to match the         // segments in the `ActivatedRoute` to the `currentUrlTree` but         // instead just replace the root segment with the navigation result.         // Non-absolute navigations would fail to apply the commands because         // the logic could not find the segment to replace (so they'd act like there were no         // commands).         commands = [];       }       relativeToUrlSegmentGroup = currentUrlTree.root;     }     return createUrlTreeFromSegmentGroup(         relativeToUrlSegmentGroup, commands, queryParams, fragment);   } }  @Injectable({providedIn: 'root', useClass: LegacyCreateUrlTree}) export abstract class CreateUrlTreeStrategy {   abstract createUrlTree(       relativeTo: ActivatedRoute|null|undefined, currentState: RouterState, currentUrlTree: UrlTree,       commands: any[], queryParams: Params|null, fragment: string|null): UrlTree; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export class Tree<T> {   /** @internal */   _root: TreeNode<T>;    constructor(root: TreeNode<T>) {     this._root = root;   }    get root(): T {     return this._root.value;   }    /**    * @internal    */   parent(t: T): T|null {     const p = this.pathFromRoot(t);     return p.length > 1 ? p[p.length - 2] : null;   }    /**    * @internal    */   children(t: T): T[] {     const n = findNode(t, this._root);     return n ? n.children.map(t => t.value) : [];   }    /**    * @internal    */   firstChild(t: T): T|null {     const n = findNode(t, this._root);     return n && n.children.length > 0 ? n.children[0].value : null;   }    /**    * @internal    */   siblings(t: T): T[] {     const p = findPath(t, this._root);     if (p.length < 2) return [];      const c = p[p.length - 2].children.map(c => c.value);     return c.filter(cc => cc !== t);   }    /**    * @internal    */   pathFromRoot(t: T): T[] {     return findPath(t, this._root).map(s => s.value);   } }   // DFS for the node matching the value function findNode<T>(value: T, node: TreeNode<T>): TreeNode<T>|null {   if (value === node.value) return node;    for (const child of node.children) {     const node = findNode(value, child);     if (node) return node;   }    return null; }  // Return the path to the node with the given value using DFS function findPath<T>(value: T, node: TreeNode<T>): TreeNode<T>[] {   if (value === node.value) return [node];    for (const child of node.children) {     const path = findPath(value, child);     if (path.length) {       path.unshift(node);       return path;     }   }    return []; }  export class TreeNode<T> {   constructor(public value: T, public children: TreeNode<T>[]) {}    toString(): string {     return `TreeNode(${this.value})`;   } }  // Return the list of T indexed by outlet name export function nodeChildrenAsMap<T extends {outlet: string}>(node: TreeNode<T>|null) {   const map: {[outlet: string]: TreeNode<T>} = {};    if (node) {     node.children.forEach(child => map[child.value.outlet] = child);   }    return map; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Type} from '@angular/core'; import {BehaviorSubject, Observable, of} from 'rxjs'; import {map} from 'rxjs/operators';  import {Data, ResolveData, Route} from './models'; import {convertToParamMap, ParamMap, Params, PRIMARY_OUTLET, RouteTitleKey} from './shared'; import {equalSegments, UrlSegment, UrlSegmentGroup, UrlTree} from './url_tree'; import {shallowEqual, shallowEqualArrays} from './utils/collection'; import {Tree, TreeNode} from './utils/tree';  /**  * Represents the state of the router as a tree of activated routes.  *  * @usageNotes  *  * Every node in the route tree is an `ActivatedRoute` instance  * that knows about the \"consumed\" URL segments, the extracted parameters,  * and the resolved data.  * Use the `ActivatedRoute` properties to traverse the tree from any node.  *  * The following fragment shows how a component gets the root node  * of the current state to establish its own route tree:  *  * ```  * @Component({templateUrl:'template.html'})  * class MyComponent {  *   constructor(router: Router) {  *     const state: RouterState = router.routerState;  *     const root: ActivatedRoute = state.root;  *     const child = root.firstChild;  *     const id: Observable<string> = child.params.map(p => p.id);  *     //...  *   }  * }  * ```  *  * @see `ActivatedRoute`  * @see [Getting route information](guide/router#getting-route-information)  *  * @publicApi  */ export class RouterState extends Tree<ActivatedRoute> {   /** @internal */   constructor(       root: TreeNode<ActivatedRoute>,       /** The current snapshot of the router state */       public snapshot: RouterStateSnapshot) {     super(root);     setRouterState(<RouterState>this, root);   }    override toString(): string {     return this.snapshot.toString();   } }  export function createEmptyState(urlTree: UrlTree, rootComponent: Type<any>|null): RouterState {   const snapshot = createEmptyStateSnapshot(urlTree, rootComponent);   const emptyUrl = new BehaviorSubject([new UrlSegment('', {})]);   const emptyParams = new BehaviorSubject({});   const emptyData = new BehaviorSubject({});   const emptyQueryParams = new BehaviorSubject({});   const fragment = new BehaviorSubject('');   const activated = new ActivatedRoute(       emptyUrl, emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent,       snapshot.root);   activated.snapshot = snapshot.root;   return new RouterState(new TreeNode<ActivatedRoute>(activated, []), snapshot); }  export function createEmptyStateSnapshot(     urlTree: UrlTree, rootComponent: Type<any>|null): RouterStateSnapshot {   const emptyParams = {};   const emptyData = {};   const emptyQueryParams = {};   const fragment = '';   const activated = new ActivatedRouteSnapshot(       [], emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, null,       urlTree.root, -1, {});   return new RouterStateSnapshot('', new TreeNode<ActivatedRouteSnapshot>(activated, [])); }  /**  * Provides access to information about a route associated with a component  * that is loaded in an outlet.  * Use to traverse the `RouterState` tree and extract information from nodes.  *  * The following example shows how to construct a component using information from a  * currently activated route.  *  * Note: the observables in this class only emit when the current and previous values differ based  * on shallow equality. For example, changing deeply nested properties in resolved `data` will not  * cause the `ActivatedRoute.data` `Observable` to emit a new value.  *  * {@example router/activated-route/module.ts region=\"activated-route\"  *     header=\"activated-route.component.ts\"}  *  * @see [Getting route information](guide/router#getting-route-information)  *  * @publicApi  */ export class ActivatedRoute {   /** The current snapshot of this route */   snapshot!: ActivatedRouteSnapshot;   /** @internal */   _futureSnapshot: ActivatedRouteSnapshot;   /** @internal */   _routerState!: RouterState;   /** @internal */   _paramMap?: Observable<ParamMap>;   /** @internal */   _queryParamMap?: Observable<ParamMap>;    /** An Observable of the resolved route title */   readonly title: Observable<string|undefined> =       this.data?.pipe(map((d: Data) => d[RouteTitleKey])) ?? of(undefined);    /** @internal */   constructor(       /** An observable of the URL segments matched by this route. */       public url: Observable<UrlSegment[]>,       /** An observable of the matrix parameters scoped to this route. */       public params: Observable<Params>,       /** An observable of the query parameters shared by all the routes. */       public queryParams: Observable<Params>,       /** An observable of the URL fragment shared by all the routes. */       public fragment: Observable<string|null>,       /** An observable of the static and resolved data of this route. */       public data: Observable<Data>,       /** The outlet name of the route, a constant. */       public outlet: string,       /** The component of the route, a constant. */       public component: Type<any>|null, futureSnapshot: ActivatedRouteSnapshot) {     this._futureSnapshot = futureSnapshot;   }    /** The configuration used to match this route. */   get routeConfig(): Route|null {     return this._futureSnapshot.routeConfig;   }    /** The root of the router state. */   get root(): ActivatedRoute {     return this._routerState.root;   }    /** The parent of this route in the router state tree. */   get parent(): ActivatedRoute|null {     return this._routerState.parent(this);   }    /** The first child of this route in the router state tree. */   get firstChild(): ActivatedRoute|null {     return this._routerState.firstChild(this);   }    /** The children of this route in the router state tree. */   get children(): ActivatedRoute[] {     return this._routerState.children(this);   }    /** The path from the root of the router state tree to this route. */   get pathFromRoot(): ActivatedRoute[] {     return this._routerState.pathFromRoot(this);   }    /**    * An Observable that contains a map of the required and optional parameters    * specific to the route.    * The map supports retrieving single and multiple values from the same parameter.    */   get paramMap(): Observable<ParamMap> {     if (!this._paramMap) {       this._paramMap = this.params.pipe(map((p: Params): ParamMap => convertToParamMap(p)));     }     return this._paramMap;   }    /**    * An Observable that contains a map of the query parameters available to all routes.    * The map supports retrieving single and multiple values from the query parameter.    */   get queryParamMap(): Observable<ParamMap> {     if (!this._queryParamMap) {       this._queryParamMap =           this.queryParams.pipe(map((p: Params): ParamMap => convertToParamMap(p)));     }     return this._queryParamMap;   }    toString(): string {     return this.snapshot ? this.snapshot.toString() : `Future(${this._futureSnapshot})`;   } }  export type ParamsInheritanceStrategy = 'emptyOnly'|'always';  /** @internal */ export type Inherited = {   params: Params,   data: Data,   resolve: Data, };  /**  * Returns the inherited params, data, and resolve for a given route.  * By default, this only inherits values up to the nearest path-less or component-less route.  * @internal  */ export function inheritedParamsDataResolve(     route: ActivatedRouteSnapshot,     paramsInheritanceStrategy: ParamsInheritanceStrategy = 'emptyOnly'): Inherited {   const pathFromRoot = route.pathFromRoot;    let inheritingStartingFrom = 0;   if (paramsInheritanceStrategy !== 'always') {     inheritingStartingFrom = pathFromRoot.length - 1;      while (inheritingStartingFrom >= 1) {       const current = pathFromRoot[inheritingStartingFrom];       const parent = pathFromRoot[inheritingStartingFrom - 1];       // current route is an empty path => inherits its parent's params and data       if (current.routeConfig && current.routeConfig.path === '') {         inheritingStartingFrom--;          // parent is componentless => current route should inherit its params and data       } else if (!parent.component) {         inheritingStartingFrom--;        } else {         break;       }     }   }    return flattenInherited(pathFromRoot.slice(inheritingStartingFrom)); }  /** @internal */ function flattenInherited(pathFromRoot: ActivatedRouteSnapshot[]): Inherited {   return pathFromRoot.reduce((res, curr) => {     const params = {...res.params, ...curr.params};     const data = {...res.data, ...curr.data};     const resolve =         {...curr.data, ...res.resolve, ...curr.routeConfig?.data, ...curr._resolvedData};     return {params, data, resolve};   }, {params: {}, data: {}, resolve: {}}); }  /**  * @description  *  * Contains the information about a route associated with a component loaded in an  * outlet at a particular moment in time. ActivatedRouteSnapshot can also be used to  * traverse the router state tree.  *  * The following example initializes a component with route information extracted  * from the snapshot of the root node at the time of creation.  *  * ```  * @Component({templateUrl:'./my-component.html'})  * class MyComponent {  *   constructor(route: ActivatedRoute) {  *     const id: string = route.snapshot.params.id;  *     const url: string = route.snapshot.url.join('');  *     const user = route.snapshot.data.user;  *   }  * }  * ```  *  * @publicApi  */ export class ActivatedRouteSnapshot {   /** The configuration used to match this route **/   public readonly routeConfig: Route|null;   /** @internal **/   _urlSegment: UrlSegmentGroup;   /** @internal */   _lastPathIndex: number;   /** @internal */   _resolve: ResolveData;   /** @internal */   _resolvedData?: Data;   /** @internal */   _routerState!: RouterStateSnapshot;   /** @internal */   _paramMap?: ParamMap;   /** @internal */   _queryParamMap?: ParamMap;    /** The resolved route title */   get title(): string|undefined {     // Note: This _must_ be a getter because the data is mutated in the resolvers. Title will not be     // available at the time of class instantiation.     return this.data?.[RouteTitleKey];   }    /** @internal */   constructor(       /** The URL segments matched by this route */       public url: UrlSegment[],       /**        *  The matrix parameters scoped to this route.        *        *  You can compute all params (or data) in the router state or to get params outside        *  of an activated component by traversing the `RouterState` tree as in the following        *  example:        *  ```        *  collectRouteParams(router: Router) {        *    let params = {};        *    let stack: ActivatedRouteSnapshot[] = [router.routerState.snapshot.root];        *    while (stack.length > 0) {        *      const route = stack.pop()!;        *      params = {...params, ...route.params};        *      stack.push(...route.children);        *    }        *    return params;        *  }        *  ```        */       public params: Params,       /** The query parameters shared by all the routes */       public queryParams: Params,       /** The URL fragment shared by all the routes */       public fragment: string|null,       /** The static and resolved data of this route */       public data: Data,       /** The outlet name of the route */       public outlet: string,       /** The component of the route */       public component: Type<any>|null, routeConfig: Route|null, urlSegment: UrlSegmentGroup,       lastPathIndex: number, resolve: ResolveData) {     this.routeConfig = routeConfig;     this._urlSegment = urlSegment;     this._lastPathIndex = lastPathIndex;     this._resolve = resolve;   }    /** The root of the router state */   get root(): ActivatedRouteSnapshot {     return this._routerState.root;   }    /** The parent of this route in the router state tree */   get parent(): ActivatedRouteSnapshot|null {     return this._routerState.parent(this);   }    /** The first child of this route in the router state tree */   get firstChild(): ActivatedRouteSnapshot|null {     return this._routerState.firstChild(this);   }    /** The children of this route in the router state tree */   get children(): ActivatedRouteSnapshot[] {     return this._routerState.children(this);   }    /** The path from the root of the router state tree to this route */   get pathFromRoot(): ActivatedRouteSnapshot[] {     return this._routerState.pathFromRoot(this);   }    get paramMap(): ParamMap {     if (!this._paramMap) {       this._paramMap = convertToParamMap(this.params);     }     return this._paramMap;   }    get queryParamMap(): ParamMap {     if (!this._queryParamMap) {       this._queryParamMap = convertToParamMap(this.queryParams);     }     return this._queryParamMap;   }    toString(): string {     const url = this.url.map(segment => segment.toString()).join('/');     const matched = this.routeConfig ? this.routeConfig.path : '';     return `Route(url:'${url}', path:'${matched}')`;   } }  /**  * @description  *  * Represents the state of the router at a moment in time.  *  * This is a tree of activated route snapshots. Every node in this tree knows about  * the \"consumed\" URL segments, the extracted parameters, and the resolved data.  *  * The following example shows how a component is initialized with information  * from the snapshot of the root node's state at the time of creation.  *  * ```  * @Component({templateUrl:'template.html'})  * class MyComponent {  *   constructor(router: Router) {  *     const state: RouterState = router.routerState;  *     const snapshot: RouterStateSnapshot = state.snapshot;  *     const root: ActivatedRouteSnapshot = snapshot.root;  *     const child = root.firstChild;  *     const id: Observable<string> = child.params.map(p => p.id);  *     //...  *   }  * }  * ```  *  * @publicApi  */ export class RouterStateSnapshot extends Tree<ActivatedRouteSnapshot> {   /** @internal */   constructor(       /** The url from which this snapshot was created */       public url: string, root: TreeNode<ActivatedRouteSnapshot>) {     super(root);     setRouterState(<RouterStateSnapshot>this, root);   }    override toString(): string {     return serializeNode(this._root);   } }  function setRouterState<U, T extends {_routerState: U}>(state: U, node: TreeNode<T>): void {   node.value._routerState = state;   node.children.forEach(c => setRouterState(state, c)); }  function serializeNode(node: TreeNode<ActivatedRouteSnapshot>): string {   const c = node.children.length > 0 ? ` { ${node.children.map(serializeNode).join(', ')} } ` : '';   return `${node.value}${c}`; }  /**  * The expectation is that the activate route is created with the right set of parameters.  * So we push new values into the observables only when they are not the initial values.  * And we detect that by checking if the snapshot field is set.  */ export function advanceActivatedRoute(route: ActivatedRoute): void {   if (route.snapshot) {     const currentSnapshot = route.snapshot;     const nextSnapshot = route._futureSnapshot;     route.snapshot = nextSnapshot;     if (!shallowEqual(currentSnapshot.queryParams, nextSnapshot.queryParams)) {       (<any>route.queryParams).next(nextSnapshot.queryParams);     }     if (currentSnapshot.fragment !== nextSnapshot.fragment) {       (<any>route.fragment).next(nextSnapshot.fragment);     }     if (!shallowEqual(currentSnapshot.params, nextSnapshot.params)) {       (<any>route.params).next(nextSnapshot.params);     }     if (!shallowEqualArrays(currentSnapshot.url, nextSnapshot.url)) {       (<any>route.url).next(nextSnapshot.url);     }     if (!shallowEqual(currentSnapshot.data, nextSnapshot.data)) {       (<any>route.data).next(nextSnapshot.data);     }   } else {     route.snapshot = route._futureSnapshot;      // this is for resolved data     (<any>route.data).next(route._futureSnapshot.data);   } }   export function equalParamsAndUrlSegments(     a: ActivatedRouteSnapshot, b: ActivatedRouteSnapshot): boolean {   const equalUrlParams = shallowEqual(a.params, b.params) && equalSegments(a.url, b.url);   const parentsMismatch = !a.parent !== !b.parent;    return equalUrlParams && !parentsMismatch &&       (!a.parent || equalParamsAndUrlSegments(a.parent, b.parent!)); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {BehaviorSubject} from 'rxjs';  import {DetachedRouteHandleInternal, RouteReuseStrategy} from './route_reuse_strategy'; import {ActivatedRoute, ActivatedRouteSnapshot, RouterState, RouterStateSnapshot} from './router_state'; import {TreeNode} from './utils/tree';  export function createRouterState(     routeReuseStrategy: RouteReuseStrategy, curr: RouterStateSnapshot,     prevState: RouterState): RouterState {   const root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : undefined);   return new RouterState(root, curr); }  function createNode(     routeReuseStrategy: RouteReuseStrategy, curr: TreeNode<ActivatedRouteSnapshot>,     prevState?: TreeNode<ActivatedRoute>): TreeNode<ActivatedRoute> {   // reuse an activated route that is currently displayed on the screen   if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) {     const value = prevState.value;     value._futureSnapshot = curr.value;     const children = createOrReuseChildren(routeReuseStrategy, curr, prevState);     return new TreeNode<ActivatedRoute>(value, children);   } else {     if (routeReuseStrategy.shouldAttach(curr.value)) {       // retrieve an activated route that is used to be displayed, but is not currently displayed       const detachedRouteHandle = routeReuseStrategy.retrieve(curr.value);       if (detachedRouteHandle !== null) {         const tree = (detachedRouteHandle as DetachedRouteHandleInternal).route;         tree.value._futureSnapshot = curr.value;         tree.children = curr.children.map(c => createNode(routeReuseStrategy, c));         return tree;       }     }      const value = createActivatedRoute(curr.value);     const children = curr.children.map(c => createNode(routeReuseStrategy, c));     return new TreeNode<ActivatedRoute>(value, children);   } }  function createOrReuseChildren(     routeReuseStrategy: RouteReuseStrategy, curr: TreeNode<ActivatedRouteSnapshot>,     prevState: TreeNode<ActivatedRoute>) {   return curr.children.map(child => {     for (const p of prevState.children) {       if (routeReuseStrategy.shouldReuseRoute(child.value, p.value.snapshot)) {         return createNode(routeReuseStrategy, child, p);       }     }     return createNode(routeReuseStrategy, child);   }); }  function createActivatedRoute(c: ActivatedRouteSnapshot) {   return new ActivatedRoute(       new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams),       new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NavigationCancellationCode} from './events'; import {NavigationBehaviorOptions} from './models'; import {isUrlTree, UrlSerializer, UrlTree} from './url_tree';  export const NAVIGATION_CANCELING_ERROR = 'ngNavigationCancelingError';  export type NavigationCancelingError =     Error&{[NAVIGATION_CANCELING_ERROR]: true, cancellationCode: NavigationCancellationCode}; export type RedirectingNavigationCancelingError = NavigationCancelingError&{   url: UrlTree;   navigationBehaviorOptions?: NavigationBehaviorOptions;   cancellationCode: NavigationCancellationCode.Redirect; };  export function redirectingNavigationError(     urlSerializer: UrlSerializer, redirect: UrlTree): RedirectingNavigationCancelingError {   const {redirectTo, navigationBehaviorOptions} =       isUrlTree(redirect) ? {redirectTo: redirect, navigationBehaviorOptions: undefined} : redirect;   const error =       navigationCancelingError(           ngDevMode && `Redirecting to \"${urlSerializer.serialize(redirectTo)}\"`,           NavigationCancellationCode.Redirect, redirect) as RedirectingNavigationCancelingError;   error.url = redirectTo;   error.navigationBehaviorOptions = navigationBehaviorOptions;   return error; }  export function navigationCancelingError(     message: string|null|false, code: NavigationCancellationCode, redirectUrl?: UrlTree) {   const error =       new Error('NavigationCancelingError: ' + (message || '')) as NavigationCancelingError;   error[NAVIGATION_CANCELING_ERROR] = true;   error.cancellationCode = code;   if (redirectUrl) {     (error as RedirectingNavigationCancelingError).url = redirectUrl;   }   return error; }  export function isRedirectingNavigationCancelingError(     error: unknown|     RedirectingNavigationCancelingError): error is RedirectingNavigationCancelingError {   return isNavigationCancelingError(error) && isUrlTree((error as any).url); } export function isNavigationCancelingError(error: unknown): error is NavigationCancelingError {   return error && (error as any)[NAVIGATION_CANCELING_ERROR]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ComponentFactoryResolver, ComponentRef, EnvironmentInjector, Injectable} from '@angular/core';  import {RouterOutletContract} from './directives/router_outlet'; import {ActivatedRoute} from './router_state';   /**  * Store contextual information about a `RouterOutlet`  *  * @publicApi  */ export class OutletContext {   outlet: RouterOutletContract|null = null;   route: ActivatedRoute|null = null;   /**    * @deprecated Passing a resolver to retrieve a component factory is not required and is    *     deprecated since v14.    */   resolver: ComponentFactoryResolver|null = null;   injector: EnvironmentInjector|null = null;   children = new ChildrenOutletContexts();   attachRef: ComponentRef<any>|null = null; }  /**  * Store contextual information about the children (= nested) `RouterOutlet`  *  * @publicApi  */ @Injectable({providedIn: 'root'}) export class ChildrenOutletContexts {   // contexts for child outlets, by name.   private contexts = new Map<string, OutletContext>();    /** Called when a `RouterOutlet` directive is instantiated */   onChildOutletCreated(childName: string, outlet: RouterOutletContract): void {     const context = this.getOrCreateContext(childName);     context.outlet = outlet;     this.contexts.set(childName, context);   }    /**    * Called when a `RouterOutlet` directive is destroyed.    * We need to keep the context as the outlet could be destroyed inside a NgIf and might be    * re-created later.    */   onChildOutletDestroyed(childName: string): void {     const context = this.getContext(childName);     if (context) {       context.outlet = null;       context.attachRef = null;     }   }    /**    * Called when the corresponding route is deactivated during navigation.    * Because the component get destroyed, all children outlet are destroyed.    */   onOutletDeactivated(): Map<string, OutletContext> {     const contexts = this.contexts;     this.contexts = new Map();     return contexts;   }    onOutletReAttached(contexts: Map<string, OutletContext>) {     this.contexts = contexts;   }    getOrCreateContext(childName: string): OutletContext {     let context = this.getContext(childName);      if (!context) {       context = new OutletContext();       this.contexts.set(childName, context);     }      return context;   }    getContext(childName: string): OutletContext|null {     return this.contexts.get(childName) || null;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ChangeDetectorRef, ComponentFactoryResolver, ComponentRef, Directive, EnvironmentInjector, EventEmitter, inject, Injector, Input, OnDestroy, OnInit, Output, SimpleChanges, ViewContainerRef, ɵRuntimeError as RuntimeError,} from '@angular/core';  import {RuntimeErrorCode} from '../errors'; import {Data} from '../models'; import {ChildrenOutletContexts} from '../router_outlet_context'; import {ActivatedRoute} from '../router_state'; import {PRIMARY_OUTLET} from '../shared';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;  /**  * An interface that defines the contract for developing a component outlet for the `Router`.  *  * An outlet acts as a placeholder that Angular dynamically fills based on the current router state.  *  * A router outlet should register itself with the `Router` via  * `ChildrenOutletContexts#onChildOutletCreated` and unregister with  * `ChildrenOutletContexts#onChildOutletDestroyed`. When the `Router` identifies a matched `Route`,  * it looks for a registered outlet in the `ChildrenOutletContexts` and activates it.  *  * @see `ChildrenOutletContexts`  * @publicApi  */ export interface RouterOutletContract {   /**    * Whether the given outlet is activated.    *    * An outlet is considered \"activated\" if it has an active component.    */   isActivated: boolean;    /** The instance of the activated component or `null` if the outlet is not activated. */   component: Object|null;    /**    * The `Data` of the `ActivatedRoute` snapshot.    */   activatedRouteData: Data;    /**    * The `ActivatedRoute` for the outlet or `null` if the outlet is not activated.    */   activatedRoute: ActivatedRoute|null;    /**    * Called by the `Router` when the outlet should activate (create a component).    */   activateWith(activatedRoute: ActivatedRoute, environmentInjector: EnvironmentInjector|null): void;   /**    * Called by the `Router` when the outlet should activate (create a component).    *    * @deprecated Passing a resolver to retrieve a component factory is not required and is    *     deprecated since v14.    */   activateWith(activatedRoute: ActivatedRoute, resolver: ComponentFactoryResolver|null): void;    /**    * A request to destroy the currently activated component.    *    * When a `RouteReuseStrategy` indicates that an `ActivatedRoute` should be removed but stored for    * later re-use rather than destroyed, the `Router` will call `detach` instead.    */   deactivate(): void;    /**    * Called when the `RouteReuseStrategy` instructs to detach the subtree.    *    * This is similar to `deactivate`, but the activated component should _not_ be destroyed.    * Instead, it is returned so that it can be reattached later via the `attach` method.    */   detach(): ComponentRef<unknown>;    /**    * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree.    */   attach(ref: ComponentRef<unknown>, activatedRoute: ActivatedRoute): void;    /**    * Emits an activate event when a new component is instantiated    **/   activateEvents?: EventEmitter<unknown>;    /**    * Emits a deactivate event when a component is destroyed.    */   deactivateEvents?: EventEmitter<unknown>;    /**    * Emits an attached component instance when the `RouteReuseStrategy` instructs to re-attach a    * previously detached subtree.    **/   attachEvents?: EventEmitter<unknown>;    /**    * Emits a detached component instance when the `RouteReuseStrategy` instructs to detach the    * subtree.    */   detachEvents?: EventEmitter<unknown>; }  /**  * @description  *  * Acts as a placeholder that Angular dynamically fills based on the current router state.  *  * Each outlet can have a unique name, determined by the optional `name` attribute.  * The name cannot be set or changed dynamically. If not set, default value is \"primary\".  *  * ```  * <router-outlet></router-outlet>  * <router-outlet name='left'></router-outlet>  * <router-outlet name='right'></router-outlet>  * ```  *  * Named outlets can be the targets of secondary routes.  * The `Route` object for a secondary route has an `outlet` property to identify the target outlet:  *  * `{path: <base-path>, component: <component>, outlet: <target_outlet_name>}`  *  * Using named outlets and secondary routes, you can target multiple outlets in  * the same `RouterLink` directive.  *  * The router keeps track of separate branches in a navigation tree for each named outlet and  * generates a representation of that tree in the URL.  * The URL for a secondary route uses the following syntax to specify both the primary and secondary  * routes at the same time:  *  * `http://base-path/primary-route-path(outlet-name:route-path)`  *  * A router outlet emits an activate event when a new component is instantiated,  * deactivate event when a component is destroyed.  * An attached event emits when the `RouteReuseStrategy` instructs the outlet to reattach the  * subtree, and the detached event emits when the `RouteReuseStrategy` instructs the outlet to  * detach the subtree.  *  * ```  * <router-outlet  *   (activate)='onActivate($event)'  *   (deactivate)='onDeactivate($event)'  *   (attach)='onAttach($event)'  *   (detach)='onDetach($event)'></router-outlet>  * ```  *  * @see [Routing tutorial](guide/router-tutorial-toh#named-outlets \"Example of a named  * outlet and secondary route configuration\").  * @see `RouterLink`  * @see `Route`  * @ngModule RouterModule  *  * @publicApi  */ @Directive({   selector: 'router-outlet',   exportAs: 'outlet',   standalone: true, }) export class RouterOutlet implements OnDestroy, OnInit, RouterOutletContract {   private activated: ComponentRef<any>|null = null;   private _activatedRoute: ActivatedRoute|null = null;   /**    * The name of the outlet    *    * @see [named outlets](guide/router-tutorial-toh#displaying-multiple-routes-in-named-outlets)    */   @Input() name = PRIMARY_OUTLET;    @Output('activate') activateEvents = new EventEmitter<any>();   @Output('deactivate') deactivateEvents = new EventEmitter<any>();   /**    * Emits an attached component instance when the `RouteReuseStrategy` instructs to re-attach a    * previously detached subtree.    **/   @Output('attach') attachEvents = new EventEmitter<unknown>();   /**    * Emits a detached component instance when the `RouteReuseStrategy` instructs to detach the    * subtree.    */   @Output('detach') detachEvents = new EventEmitter<unknown>();    private parentContexts = inject(ChildrenOutletContexts);   private location = inject(ViewContainerRef);   private changeDetector = inject(ChangeDetectorRef);   private environmentInjector = inject(EnvironmentInjector);    /** @nodoc */   ngOnChanges(changes: SimpleChanges) {     if (changes['name']) {       const {firstChange, previousValue} = changes['name'];       if (firstChange) {         // The first change is handled by ngOnInit. Because ngOnChanges doesn't get called when no         // input is set at all, we need to centrally handle the first change there.         return;       }        // unregister with the old name       if (this.isTrackedInParentContexts(previousValue)) {         this.deactivate();         this.parentContexts.onChildOutletDestroyed(previousValue);       }       // register the new name       this.initializeOutletWithName();     }   }    /** @nodoc */   ngOnDestroy(): void {     // Ensure that the registered outlet is this one before removing it on the context.     if (this.isTrackedInParentContexts(this.name)) {       this.parentContexts.onChildOutletDestroyed(this.name);     }   }    private isTrackedInParentContexts(outletName: string) {     return this.parentContexts.getContext(outletName)?.outlet === this;   }    /** @nodoc */   ngOnInit(): void {     this.initializeOutletWithName();   }    private initializeOutletWithName() {     this.parentContexts.onChildOutletCreated(this.name, this);     if (this.activated) {       return;     }      // If the outlet was not instantiated at the time the route got activated we need to populate     // the outlet when it is initialized (ie inside a NgIf)     const context = this.parentContexts.getContext(this.name);     if (context?.route) {       if (context.attachRef) {         // `attachRef` is populated when there is an existing component to mount         this.attach(context.attachRef, context.route);       } else {         // otherwise the component defined in the configuration is created         this.activateWith(context.route, context.injector);       }     }   }    get isActivated(): boolean {     return !!this.activated;   }    /**    * @returns The currently activated component instance.    * @throws An error if the outlet is not activated.    */   get component(): Object {     if (!this.activated)       throw new RuntimeError(           RuntimeErrorCode.OUTLET_NOT_ACTIVATED, NG_DEV_MODE && 'Outlet is not activated');     return this.activated.instance;   }    get activatedRoute(): ActivatedRoute {     if (!this.activated)       throw new RuntimeError(           RuntimeErrorCode.OUTLET_NOT_ACTIVATED, NG_DEV_MODE && 'Outlet is not activated');     return this._activatedRoute as ActivatedRoute;   }    get activatedRouteData(): Data {     if (this._activatedRoute) {       return this._activatedRoute.snapshot.data;     }     return {};   }    /**    * Called when the `RouteReuseStrategy` instructs to detach the subtree    */   detach(): ComponentRef<any> {     if (!this.activated)       throw new RuntimeError(           RuntimeErrorCode.OUTLET_NOT_ACTIVATED, NG_DEV_MODE && 'Outlet is not activated');     this.location.detach();     const cmp = this.activated;     this.activated = null;     this._activatedRoute = null;     this.detachEvents.emit(cmp.instance);     return cmp;   }    /**    * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree    */   attach(ref: ComponentRef<any>, activatedRoute: ActivatedRoute) {     this.activated = ref;     this._activatedRoute = activatedRoute;     this.location.insert(ref.hostView);     this.attachEvents.emit(ref.instance);   }    deactivate(): void {     if (this.activated) {       const c = this.component;       this.activated.destroy();       this.activated = null;       this._activatedRoute = null;       this.deactivateEvents.emit(c);     }   }    activateWith(       activatedRoute: ActivatedRoute,       resolverOrInjector?: ComponentFactoryResolver|EnvironmentInjector|null) {     if (this.isActivated) {       throw new RuntimeError(           RuntimeErrorCode.OUTLET_ALREADY_ACTIVATED,           NG_DEV_MODE && 'Cannot activate an already activated outlet');     }     this._activatedRoute = activatedRoute;     const location = this.location;     const snapshot = activatedRoute.snapshot;     const component = snapshot.component!;     const childContexts = this.parentContexts.getOrCreateContext(this.name).children;     const injector = new OutletInjector(activatedRoute, childContexts, location.injector);      if (resolverOrInjector && isComponentFactoryResolver(resolverOrInjector)) {       const factory = resolverOrInjector.resolveComponentFactory(component);       this.activated = location.createComponent(factory, location.length, injector);     } else {       const environmentInjector = resolverOrInjector ?? this.environmentInjector;       this.activated = location.createComponent(           component, {index: location.length, injector, environmentInjector});     }     // Calling `markForCheck` to make sure we will run the change detection when the     // `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.     this.changeDetector.markForCheck();     this.activateEvents.emit(this.activated.instance);   } }  class OutletInjector implements Injector {   constructor(       private route: ActivatedRoute, private childContexts: ChildrenOutletContexts,       private parent: Injector) {}    get(token: any, notFoundValue?: any): any {     if (token === ActivatedRoute) {       return this.route;     }      if (token === ChildrenOutletContexts) {       return this.childContexts;     }      return this.parent.get(token, notFoundValue);   } }  function isComponentFactoryResolver(item: any): item is ComponentFactoryResolver {   return !!item.resolveComponentFactory; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Component} from '@angular/core';  import {RouterOutlet} from '../directives/router_outlet';  /**  * This component is used internally within the router to be a placeholder when an empty  * router-outlet is needed. For example, with a config such as:  *  * `{path: 'parent', outlet: 'nav', children: [...]}`  *  * In order to render, there needs to be a component on this config, which will default  * to this `EmptyOutletComponent`.  */ @Component({   template: `<router-outlet></router-outlet>`,   imports: [RouterOutlet],   standalone: true, }) export class ɵEmptyOutletComponent { }  export {ɵEmptyOutletComponent as EmptyOutletComponent}; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {createEnvironmentInjector, EnvironmentInjector, isStandalone, Type, ɵRuntimeError as RuntimeError} from '@angular/core';  import {EmptyOutletComponent} from '../components/empty_outlet'; import {RuntimeErrorCode} from '../errors'; import {Route, Routes} from '../models'; import {ActivatedRouteSnapshot} from '../router_state'; import {PRIMARY_OUTLET} from '../shared';  /**  * Creates an `EnvironmentInjector` if the `Route` has providers and one does not already exist  * and returns the injector. Otherwise, if the `Route` does not have `providers`, returns the  * `currentInjector`.  *  * @param route The route that might have providers  * @param currentInjector The parent injector of the `Route`  */ export function getOrCreateRouteInjectorIfNeeded(     route: Route, currentInjector: EnvironmentInjector) {   if (route.providers && !route._injector) {     route._injector =         createEnvironmentInjector(route.providers, currentInjector, `Route: ${route.path}`);   }   return route._injector ?? currentInjector; }  export function getLoadedRoutes(route: Route): Route[]|undefined {   return route._loadedRoutes; }  export function getLoadedInjector(route: Route): EnvironmentInjector|undefined {   return route._loadedInjector; } export function getLoadedComponent(route: Route): Type<unknown>|undefined {   return route._loadedComponent; }  export function getProvidersInjector(route: Route): EnvironmentInjector|undefined {   return route._injector; }  export function validateConfig(     config: Routes, parentPath: string = '', requireStandaloneComponents = false): void {   // forEach doesn't iterate undefined values   for (let i = 0; i < config.length; i++) {     const route: Route = config[i];     const fullPath: string = getFullPath(parentPath, route);     validateNode(route, fullPath, requireStandaloneComponents);   } }  export function assertStandalone(fullPath: string, component: Type<unknown>|undefined) {   if (component && !isStandalone(component)) {     throw new RuntimeError(         RuntimeErrorCode.INVALID_ROUTE_CONFIG,         `Invalid configuration of route '${fullPath}'. The component must be standalone.`);   } }  function validateNode(route: Route, fullPath: string, requireStandaloneComponents: boolean): void {   if (typeof ngDevMode === 'undefined' || ngDevMode) {     if (!route) {       throw new RuntimeError(RuntimeErrorCode.INVALID_ROUTE_CONFIG, `       Invalid configuration of route '${fullPath}': Encountered undefined route.       The reason might be an extra comma.        Example:       const routes: Routes = [         { path: '', redirectTo: '/dashboard', pathMatch: 'full' },         { path: 'dashboard',  component: DashboardComponent },, << two commas         { path: 'detail/:id', component: HeroDetailComponent }       ];     `);     }     if (Array.isArray(route)) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${fullPath}': Array cannot be specified`);     }     if (!route.redirectTo && !route.component && !route.loadComponent && !route.children &&         !route.loadChildren && (route.outlet && route.outlet !== PRIMARY_OUTLET)) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': a componentless route without children or loadChildren cannot have a named outlet set`);     }     if (route.redirectTo && route.children) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': redirectTo and children cannot be used together`);     }     if (route.redirectTo && route.loadChildren) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': redirectTo and loadChildren cannot be used together`);     }     if (route.children && route.loadChildren) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': children and loadChildren cannot be used together`);     }     if (route.redirectTo && (route.component || route.loadComponent)) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': redirectTo and component/loadComponent cannot be used together`);     }     if (route.component && route.loadComponent) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': component and loadComponent cannot be used together`);     }     if (route.redirectTo && route.canActivate) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': redirectTo and canActivate cannot be used together. Redirects happen before activation ` +               `so canActivate will never be executed.`);     }     if (route.path && route.matcher) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${fullPath}': path and matcher cannot be used together`);     }     if (route.redirectTo === void 0 && !route.component && !route.loadComponent &&         !route.children && !route.loadChildren) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}'. One of the following must be provided: component, loadComponent, redirectTo, children or loadChildren`);     }     if (route.path === void 0 && route.matcher === void 0) {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${               fullPath}': routes must have either a path or a matcher specified`);     }     if (typeof route.path === 'string' && route.path.charAt(0) === '/') {       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '${fullPath}': path cannot start with a slash`);     }     if (route.path === '' && route.redirectTo !== void 0 && route.pathMatch === void 0) {       const exp =           `The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`;       throw new RuntimeError(           RuntimeErrorCode.INVALID_ROUTE_CONFIG,           `Invalid configuration of route '{path: \"${fullPath}\", redirectTo: \"${               route.redirectTo}\"}': please provide 'pathMatch'. ${exp}`);     }     if (requireStandaloneComponents) {       assertStandalone(fullPath, route.component);     }   }   if (route.children) {     validateConfig(route.children, fullPath, requireStandaloneComponents);   } }  function getFullPath(parentPath: string, currentRoute: Route): string {   if (!currentRoute) {     return parentPath;   }   if (!parentPath && !currentRoute.path) {     return '';   } else if (parentPath && !currentRoute.path) {     return `${parentPath}/`;   } else if (!parentPath && currentRoute.path) {     return currentRoute.path;   } else {     return `${parentPath}/${currentRoute.path}`;   } }  /**  * Makes a copy of the config and adds any default required properties.  */ export function standardizeConfig(r: Route): Route {   const children = r.children && r.children.map(standardizeConfig);   const c = children ? {...r, children} : {...r};   if ((!c.component && !c.loadComponent) && (children || c.loadChildren) &&       (c.outlet && c.outlet !== PRIMARY_OUTLET)) {     c.component = EmptyOutletComponent;   }   return c; }  /** Returns the `route.outlet` or PRIMARY_OUTLET if none exists. */ export function getOutlet(route: Route): string {   return route.outlet || PRIMARY_OUTLET; }  /**  * Sorts the `routes` such that the ones with an outlet matching `outletName` come first.  * The order of the configs is otherwise preserved.  */ export function sortByMatchingOutlets(routes: Routes, outletName: string): Routes {   const sortedConfig = routes.filter(r => getOutlet(r) === outletName);   sortedConfig.push(...routes.filter(r => getOutlet(r) !== outletName));   return sortedConfig; }  /**  * Gets the first injector in the snapshot's parent tree.  *  * If the `Route` has a static list of providers, the returned injector will be the one created from  * those. If it does not exist, the returned injector may come from the parents, which may be from a  * loaded config or their static providers.  *  * Returns `null` if there is neither this nor any parents have a stored injector.  *  * Generally used for retrieving the injector to use for getting tokens for guards/resolvers and  * also used for getting the correct injector to use for creating components.  */ export function getClosestRouteInjector(snapshot: ActivatedRouteSnapshot): EnvironmentInjector|     null {   if (!snapshot) return null;    // If the current route has its own injector, which is created from the static providers on the   // route itself, we should use that. Otherwise, we start at the parent since we do not want to   // include the lazy loaded injector from this route.   if (snapshot.routeConfig?._injector) {     return snapshot.routeConfig._injector;   }    for (let s = snapshot.parent; s; s = s.parent) {     const route = s.routeConfig;     // Note that the order here is important. `_loadedInjector` stored on the route with     // `loadChildren: () => NgModule` so it applies to child routes with priority. The `_injector`     // is created from the static providers on that parent route, so it applies to the children as     // well, but only if there is no lazy loaded NgModuleRef injector.     if (route?._loadedInjector) return route._loadedInjector;     if (route?._injector) return route._injector;   }    return null; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ComponentFactoryResolver, EnvironmentInjector, NgModuleRef} from '@angular/core'; import {MonoTypeOperatorFunction} from 'rxjs'; import {map} from 'rxjs/operators';  import {ActivationEnd, ChildActivationEnd, Event} from '../events'; import {NavigationTransition} from '../navigation_transition'; import {DetachedRouteHandleInternal, RouteReuseStrategy} from '../route_reuse_strategy'; import {ChildrenOutletContexts} from '../router_outlet_context'; import {ActivatedRoute, advanceActivatedRoute, RouterState} from '../router_state'; import {forEach} from '../utils/collection'; import {getClosestRouteInjector} from '../utils/config'; import {nodeChildrenAsMap, TreeNode} from '../utils/tree';  export const activateRoutes =     (rootContexts: ChildrenOutletContexts, routeReuseStrategy: RouteReuseStrategy,      forwardEvent: (evt: Event) => void): MonoTypeOperatorFunction<NavigationTransition> =>         map(t => {           new ActivateRoutes(               routeReuseStrategy, t.targetRouterState!, t.currentRouterState, forwardEvent)               .activate(rootContexts);           return t;         });  export class ActivateRoutes {   constructor(       private routeReuseStrategy: RouteReuseStrategy, private futureState: RouterState,       private currState: RouterState, private forwardEvent: (evt: Event) => void) {}    activate(parentContexts: ChildrenOutletContexts): void {     const futureRoot = this.futureState._root;     const currRoot = this.currState ? this.currState._root : null;      this.deactivateChildRoutes(futureRoot, currRoot, parentContexts);     advanceActivatedRoute(this.futureState.root);     this.activateChildRoutes(futureRoot, currRoot, parentContexts);   }    // De-activate the child route that are not re-used for the future state   private deactivateChildRoutes(       futureNode: TreeNode<ActivatedRoute>, currNode: TreeNode<ActivatedRoute>|null,       contexts: ChildrenOutletContexts): void {     const children: {[outletName: string]: TreeNode<ActivatedRoute>} = nodeChildrenAsMap(currNode);      // Recurse on the routes active in the future state to de-activate deeper children     futureNode.children.forEach(futureChild => {       const childOutletName = futureChild.value.outlet;       this.deactivateRoutes(futureChild, children[childOutletName], contexts);       delete children[childOutletName];     });      // De-activate the routes that will not be re-used     forEach(children, (v: TreeNode<ActivatedRoute>, childName: string) => {       this.deactivateRouteAndItsChildren(v, contexts);     });   }    private deactivateRoutes(       futureNode: TreeNode<ActivatedRoute>, currNode: TreeNode<ActivatedRoute>,       parentContext: ChildrenOutletContexts): void {     const future = futureNode.value;     const curr = currNode ? currNode.value : null;      if (future === curr) {       // Reusing the node, check to see if the children need to be de-activated       if (future.component) {         // If we have a normal route, we need to go through an outlet.         const context = parentContext.getContext(future.outlet);         if (context) {           this.deactivateChildRoutes(futureNode, currNode, context.children);         }       } else {         // if we have a componentless route, we recurse but keep the same outlet map.         this.deactivateChildRoutes(futureNode, currNode, parentContext);       }     } else {       if (curr) {         // Deactivate the current route which will not be re-used         this.deactivateRouteAndItsChildren(currNode, parentContext);       }     }   }    private deactivateRouteAndItsChildren(       route: TreeNode<ActivatedRoute>, parentContexts: ChildrenOutletContexts): void {     // If there is no component, the Route is never attached to an outlet (because there is no     // component to attach).     if (route.value.component && this.routeReuseStrategy.shouldDetach(route.value.snapshot)) {       this.detachAndStoreRouteSubtree(route, parentContexts);     } else {       this.deactivateRouteAndOutlet(route, parentContexts);     }   }    private detachAndStoreRouteSubtree(       route: TreeNode<ActivatedRoute>, parentContexts: ChildrenOutletContexts): void {     const context = parentContexts.getContext(route.value.outlet);     const contexts = context && route.value.component ? context.children : parentContexts;     const children: {[outletName: string]: TreeNode<ActivatedRoute>} = nodeChildrenAsMap(route);      for (const childOutlet of Object.keys(children)) {       this.deactivateRouteAndItsChildren(children[childOutlet], contexts);     }      if (context && context.outlet) {       const componentRef = context.outlet.detach();       const contexts = context.children.onOutletDeactivated();       this.routeReuseStrategy.store(route.value.snapshot, {componentRef, route, contexts});     }   }    private deactivateRouteAndOutlet(       route: TreeNode<ActivatedRoute>, parentContexts: ChildrenOutletContexts): void {     const context = parentContexts.getContext(route.value.outlet);     // The context could be `null` if we are on a componentless route but there may still be     // children that need deactivating.     const contexts = context && route.value.component ? context.children : parentContexts;     const children: {[outletName: string]: TreeNode<ActivatedRoute>} = nodeChildrenAsMap(route);      for (const childOutlet of Object.keys(children)) {       this.deactivateRouteAndItsChildren(children[childOutlet], contexts);     }      if (context && context.outlet) {       // Destroy the component       context.outlet.deactivate();       // Destroy the contexts for all the outlets that were in the component       context.children.onOutletDeactivated();       // Clear the information about the attached component on the context but keep the reference to       // the outlet.       context.attachRef = null;       context.resolver = null;       context.route = null;     }   }    private activateChildRoutes(       futureNode: TreeNode<ActivatedRoute>, currNode: TreeNode<ActivatedRoute>|null,       contexts: ChildrenOutletContexts): void {     const children: {[outlet: string]: TreeNode<ActivatedRoute>} = nodeChildrenAsMap(currNode);     futureNode.children.forEach(c => {       this.activateRoutes(c, children[c.value.outlet], contexts);       this.forwardEvent(new ActivationEnd(c.value.snapshot));     });     if (futureNode.children.length) {       this.forwardEvent(new ChildActivationEnd(futureNode.value.snapshot));     }   }    private activateRoutes(       futureNode: TreeNode<ActivatedRoute>, currNode: TreeNode<ActivatedRoute>,       parentContexts: ChildrenOutletContexts): void {     const future = futureNode.value;     const curr = currNode ? currNode.value : null;      advanceActivatedRoute(future);      // reusing the node     if (future === curr) {       if (future.component) {         // If we have a normal route, we need to go through an outlet.         const context = parentContexts.getOrCreateContext(future.outlet);         this.activateChildRoutes(futureNode, currNode, context.children);       } else {         // if we have a componentless route, we recurse but keep the same outlet map.         this.activateChildRoutes(futureNode, currNode, parentContexts);       }     } else {       if (future.component) {         // if we have a normal route, we need to place the component into the outlet and recurse.         const context = parentContexts.getOrCreateContext(future.outlet);          if (this.routeReuseStrategy.shouldAttach(future.snapshot)) {           const stored =               (<DetachedRouteHandleInternal>this.routeReuseStrategy.retrieve(future.snapshot));           this.routeReuseStrategy.store(future.snapshot, null);           context.children.onOutletReAttached(stored.contexts);           context.attachRef = stored.componentRef;           context.route = stored.route.value;           if (context.outlet) {             // Attach right away when the outlet has already been instantiated             // Otherwise attach from `RouterOutlet.ngOnInit` when it is instantiated             context.outlet.attach(stored.componentRef, stored.route.value);           }            advanceActivatedRoute(stored.route.value);           this.activateChildRoutes(futureNode, null, context.children);         } else {           const injector = getClosestRouteInjector(future.snapshot);           const cmpFactoryResolver = injector?.get(ComponentFactoryResolver) ?? null;           context.attachRef = null;           context.route = future;           context.resolver = cmpFactoryResolver;           context.injector = injector;           if (context.outlet) {             // Activate the outlet when it has already been instantiated             // Otherwise it will get activated from its `ngOnInit` when instantiated             context.outlet.activateWith(future, context.injector);           }            this.activateChildRoutes(futureNode, null, context.children);         }       } else {         // if we have a componentless route, we recurse but keep the same outlet map.         this.activateChildRoutes(futureNode, null, parentContexts);       }     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injector, ProviderToken, ɵisInjectable as isInjectable} from '@angular/core';  import {RunGuardsAndResolvers} from '../models'; import {ChildrenOutletContexts, OutletContext} from '../router_outlet_context'; import {ActivatedRouteSnapshot, equalParamsAndUrlSegments, RouterStateSnapshot} from '../router_state'; import {equalPath} from '../url_tree'; import {forEach, shallowEqual} from '../utils/collection'; import {nodeChildrenAsMap, TreeNode} from '../utils/tree';  export class CanActivate {   readonly route: ActivatedRouteSnapshot;   constructor(public path: ActivatedRouteSnapshot[]) {     this.route = this.path[this.path.length - 1];   } }  export class CanDeactivate {   constructor(public component: Object|null, public route: ActivatedRouteSnapshot) {} }  export declare type Checks = {   canDeactivateChecks: CanDeactivate[],   canActivateChecks: CanActivate[], };  export function getAllRouteGuards(     future: RouterStateSnapshot, curr: RouterStateSnapshot,     parentContexts: ChildrenOutletContexts) {   const futureRoot = future._root;   const currRoot = curr ? curr._root : null;    return getChildRouteGuards(futureRoot, currRoot, parentContexts, [futureRoot.value]); }  export function getCanActivateChild(p: ActivatedRouteSnapshot):     {node: ActivatedRouteSnapshot, guards: any[]}|null {   const canActivateChild = p.routeConfig ? p.routeConfig.canActivateChild : null;   if (!canActivateChild || canActivateChild.length === 0) return null;   return {node: p, guards: canActivateChild}; }  export function getTokenOrFunctionIdentity<T>(     tokenOrFunction: Function|ProviderToken<T>, injector: Injector): Function|T {   const NOT_FOUND = Symbol();   const result = injector.get<T|Symbol>(tokenOrFunction, NOT_FOUND);   if (result === NOT_FOUND) {     if (typeof tokenOrFunction === 'function' && !isInjectable(tokenOrFunction)) {       // We think the token is just a function so return it as-is       return tokenOrFunction;     } else {       // This will throw the not found error       return injector.get<T>(tokenOrFunction);     }   }   return result as T; }  function getChildRouteGuards(     futureNode: TreeNode<ActivatedRouteSnapshot>, currNode: TreeNode<ActivatedRouteSnapshot>|null,     contexts: ChildrenOutletContexts|null, futurePath: ActivatedRouteSnapshot[], checks: Checks = {       canDeactivateChecks: [],       canActivateChecks: []     }): Checks {   const prevChildren = nodeChildrenAsMap(currNode);    // Process the children of the future route   futureNode.children.forEach(c => {     getRouteGuards(c, prevChildren[c.value.outlet], contexts, futurePath.concat([c.value]), checks);     delete prevChildren[c.value.outlet];   });    // Process any children left from the current route (not active for the future route)   forEach(       prevChildren,       (v: TreeNode<ActivatedRouteSnapshot>, k: string) =>           deactivateRouteAndItsChildren(v, contexts!.getContext(k), checks));    return checks; }  function getRouteGuards(     futureNode: TreeNode<ActivatedRouteSnapshot>, currNode: TreeNode<ActivatedRouteSnapshot>,     parentContexts: ChildrenOutletContexts|null, futurePath: ActivatedRouteSnapshot[],     checks: Checks = {       canDeactivateChecks: [],       canActivateChecks: []     }): Checks {   const future = futureNode.value;   const curr = currNode ? currNode.value : null;   const context = parentContexts ? parentContexts.getContext(futureNode.value.outlet) : null;    // reusing the node   if (curr && future.routeConfig === curr.routeConfig) {     const shouldRun =         shouldRunGuardsAndResolvers(curr, future, future.routeConfig!.runGuardsAndResolvers);     if (shouldRun) {       checks.canActivateChecks.push(new CanActivate(futurePath));     } else {       // we need to set the data       future.data = curr.data;       future._resolvedData = curr._resolvedData;     }      // If we have a component, we need to go through an outlet.     if (future.component) {       getChildRouteGuards(           futureNode, currNode, context ? context.children : null, futurePath, checks);        // if we have a componentless route, we recurse but keep the same outlet map.     } else {       getChildRouteGuards(futureNode, currNode, parentContexts, futurePath, checks);     }      if (shouldRun && context && context.outlet && context.outlet.isActivated) {       checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, curr));     }   } else {     if (curr) {       deactivateRouteAndItsChildren(currNode, context, checks);     }      checks.canActivateChecks.push(new CanActivate(futurePath));     // If we have a component, we need to go through an outlet.     if (future.component) {       getChildRouteGuards(futureNode, null, context ? context.children : null, futurePath, checks);        // if we have a componentless route, we recurse but keep the same outlet map.     } else {       getChildRouteGuards(futureNode, null, parentContexts, futurePath, checks);     }   }    return checks; }  function shouldRunGuardsAndResolvers(     curr: ActivatedRouteSnapshot, future: ActivatedRouteSnapshot,     mode: RunGuardsAndResolvers|undefined): boolean {   if (typeof mode === 'function') {     return mode(curr, future);   }   switch (mode) {     case 'pathParamsChange':       return !equalPath(curr.url, future.url);      case 'pathParamsOrQueryParamsChange':       return !equalPath(curr.url, future.url) ||           !shallowEqual(curr.queryParams, future.queryParams);      case 'always':       return true;      case 'paramsOrQueryParamsChange':       return !equalParamsAndUrlSegments(curr, future) ||           !shallowEqual(curr.queryParams, future.queryParams);      case 'paramsChange':     default:       return !equalParamsAndUrlSegments(curr, future);   } }  function deactivateRouteAndItsChildren(     route: TreeNode<ActivatedRouteSnapshot>, context: OutletContext|null, checks: Checks): void {   const children = nodeChildrenAsMap(route);   const r = route.value;    forEach(children, (node: TreeNode<ActivatedRouteSnapshot>, childName: string) => {     if (!r.component) {       deactivateRouteAndItsChildren(node, context, checks);     } else if (context) {       deactivateRouteAndItsChildren(node, context.children.getContext(childName), checks);     } else {       deactivateRouteAndItsChildren(node, null, checks);     }   });    if (!r.component) {     checks.canDeactivateChecks.push(new CanDeactivate(null, r));   } else if (context && context.outlet && context.outlet.isActivated) {     checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, r));   } else {     checks.canDeactivateChecks.push(new CanDeactivate(null, r));   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EmptyError} from 'rxjs';  import {CanActivate, CanActivateChild, CanDeactivate, CanLoad, CanMatch} from '../models'; import {NAVIGATION_CANCELING_ERROR, NavigationCancelingError, RedirectingNavigationCancelingError} from '../navigation_canceling_error'; import {isUrlTree} from '../url_tree';  /**  * Simple function check, but generic so type inference will flow. Example:  *  * function product(a: number, b: number) {  *   return a * b;  * }  *  * if (isFunction<product>(fn)) {  *   return fn(1, 2);  * } else {  *   throw \"Must provide the `product` function\";  * }  */ export function isFunction<T>(v: any): v is T {   return typeof v === 'function'; }  export function isBoolean(v: any): v is boolean {   return typeof v === 'boolean'; }  export function isCanLoad(guard: any): guard is CanLoad {   return guard && isFunction<CanLoad>(guard.canLoad); }  export function isCanActivate(guard: any): guard is CanActivate {   return guard && isFunction<CanActivate>(guard.canActivate); }  export function isCanActivateChild(guard: any): guard is CanActivateChild {   return guard && isFunction<CanActivateChild>(guard.canActivateChild); }  export function isCanDeactivate<T>(guard: any): guard is CanDeactivate<T> {   return guard && isFunction<CanDeactivate<T>>(guard.canDeactivate); } export function isCanMatch(guard: any): guard is CanMatch {   return guard && isFunction<CanMatch>(guard.canMatch); }  export function isRedirectingNavigationCancelingError(     error: unknown|     RedirectingNavigationCancelingError): error is RedirectingNavigationCancelingError {   return isNavigationCancelingError(error) && isUrlTree((error as any).url); }  export function isNavigationCancelingError(error: unknown): error is NavigationCancelingError {   return error && (error as any)[NAVIGATION_CANCELING_ERROR]; }  export function isEmptyError(e: Error): e is EmptyError {   return e instanceof EmptyError || e?.name === 'EmptyError'; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {combineLatest, Observable, OperatorFunction} from 'rxjs'; import {filter, map, scan, startWith, switchMap, take} from 'rxjs/operators';  import {isUrlTree, UrlTree} from '../url_tree';  const INITIAL_VALUE = Symbol('INITIAL_VALUE'); declare type INTERIM_VALUES = typeof INITIAL_VALUE | boolean | UrlTree;  export function prioritizedGuardValue():     OperatorFunction<Observable<boolean|UrlTree>[], boolean|UrlTree> {   return switchMap(obs => {     return combineLatest(obs.map(o => o.pipe(take(1), startWith(INITIAL_VALUE as INTERIM_VALUES))))         .pipe(             map((results: INTERIM_VALUES[]) => {               for (const result of results) {                 if (result === true) {                   // If result is true, check the next one                   continue;                 } else if (result === INITIAL_VALUE) {                   // If guard has not finished, we need to stop processing.                   return INITIAL_VALUE;                 } else if (result === false || result instanceof UrlTree) {                   // Result finished and was not true. Return the result.                   // Note that we only allow false/UrlTree. Other values are considered invalid and                   // ignored.                   return result;                 }               }               // Everything resolved to true. Return true.               return true;             }),             filter((item): item is boolean|UrlTree => item !== INITIAL_VALUE),             take(1),         );   }); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, ProviderToken} from '@angular/core'; import {concat, defer, from, MonoTypeOperatorFunction, Observable, of, OperatorFunction, pipe} from 'rxjs'; import {concatMap, first, map, mergeMap, tap} from 'rxjs/operators';  import {ActivationStart, ChildActivationStart, Event} from '../events'; import {CanActivateChild, CanActivateChildFn, CanActivateFn, CanDeactivateFn, CanLoadFn, CanMatchFn, Route} from '../models'; import {redirectingNavigationError} from '../navigation_canceling_error'; import {NavigationTransition} from '../navigation_transition'; import {ActivatedRouteSnapshot, RouterStateSnapshot} from '../router_state'; import {isUrlTree, UrlSegment, UrlSerializer, UrlTree} from '../url_tree'; import {wrapIntoObservable} from '../utils/collection'; import {getClosestRouteInjector} from '../utils/config'; import {CanActivate, CanDeactivate, getCanActivateChild, getTokenOrFunctionIdentity} from '../utils/preactivation'; import {isBoolean, isCanActivate, isCanActivateChild, isCanDeactivate, isCanLoad, isCanMatch} from '../utils/type_guards';  import {prioritizedGuardValue} from './prioritized_guard_value';  export function checkGuards(injector: EnvironmentInjector, forwardEvent?: (evt: Event) => void):     MonoTypeOperatorFunction<NavigationTransition> {   return mergeMap(t => {     const {targetSnapshot, currentSnapshot, guards: {canActivateChecks, canDeactivateChecks}} = t;     if (canDeactivateChecks.length === 0 && canActivateChecks.length === 0) {       return of({...t, guardsResult: true});     }      return runCanDeactivateChecks(canDeactivateChecks, targetSnapshot!, currentSnapshot, injector)         .pipe(             mergeMap(canDeactivate => {               return canDeactivate && isBoolean(canDeactivate) ?                   runCanActivateChecks(targetSnapshot!, canActivateChecks, injector, forwardEvent) :                   of(canDeactivate);             }),             map(guardsResult => ({...t, guardsResult})));   }); }  function runCanDeactivateChecks(     checks: CanDeactivate[], futureRSS: RouterStateSnapshot, currRSS: RouterStateSnapshot,     injector: EnvironmentInjector) {   return from(checks).pipe(       mergeMap(           check => runCanDeactivate(check.component, check.route, currRSS, futureRSS, injector)),       first(result => {         return result !== true;       }, true as boolean | UrlTree)); }  function runCanActivateChecks(     futureSnapshot: RouterStateSnapshot, checks: CanActivate[], injector: EnvironmentInjector,     forwardEvent?: (evt: Event) => void) {   return from(checks).pipe(       concatMap((check: CanActivate) => {         return concat(             fireChildActivationStart(check.route.parent, forwardEvent),             fireActivationStart(check.route, forwardEvent),             runCanActivateChild(futureSnapshot, check.path, injector),             runCanActivate(futureSnapshot, check.route, injector));       }),       first(result => {         return result !== true;       }, true as boolean | UrlTree)); }  /**  * This should fire off `ActivationStart` events for each route being activated at this  * level.  * In other words, if you're activating `a` and `b` below, `path` will contain the  * `ActivatedRouteSnapshot`s for both and we will fire `ActivationStart` for both. Always  * return  * `true` so checks continue to run.  */ function fireActivationStart(     snapshot: ActivatedRouteSnapshot|null,     forwardEvent?: (evt: Event) => void): Observable<boolean> {   if (snapshot !== null && forwardEvent) {     forwardEvent(new ActivationStart(snapshot));   }   return of(true); }  /**  * This should fire off `ChildActivationStart` events for each route being activated at this  * level.  * In other words, if you're activating `a` and `b` below, `path` will contain the  * `ActivatedRouteSnapshot`s for both and we will fire `ChildActivationStart` for both. Always  * return  * `true` so checks continue to run.  */ function fireChildActivationStart(     snapshot: ActivatedRouteSnapshot|null,     forwardEvent?: (evt: Event) => void): Observable<boolean> {   if (snapshot !== null && forwardEvent) {     forwardEvent(new ChildActivationStart(snapshot));   }   return of(true); }  function runCanActivate(     futureRSS: RouterStateSnapshot, futureARS: ActivatedRouteSnapshot,     injector: EnvironmentInjector): Observable<boolean|UrlTree> {   const canActivate = futureARS.routeConfig ? futureARS.routeConfig.canActivate : null;   if (!canActivate || canActivate.length === 0) return of(true);    const canActivateObservables =       canActivate.map((canActivate: CanActivateFn|ProviderToken<unknown>) => {         return defer(() => {           const closestInjector = getClosestRouteInjector(futureARS) ?? injector;           const guard = getTokenOrFunctionIdentity<CanActivate>(canActivate, closestInjector);           const guardVal = isCanActivate(guard) ?               guard.canActivate(futureARS, futureRSS) :               closestInjector.runInContext(() => (guard as CanActivateFn)(futureARS, futureRSS));           return wrapIntoObservable(guardVal).pipe(first());         });       });   return of(canActivateObservables).pipe(prioritizedGuardValue()); }  function runCanActivateChild(     futureRSS: RouterStateSnapshot, path: ActivatedRouteSnapshot[],     injector: EnvironmentInjector): Observable<boolean|UrlTree> {   const futureARS = path[path.length - 1];    const canActivateChildGuards = path.slice(0, path.length - 1)                                      .reverse()                                      .map(p => getCanActivateChild(p))                                      .filter(_ => _ !== null);    const canActivateChildGuardsMapped = canActivateChildGuards.map((d: any) => {     return defer(() => {       const guardsMapped =           d.guards.map((canActivateChild: CanActivateChildFn|ProviderToken<unknown>) => {             const closestInjector = getClosestRouteInjector(d.node) ?? injector;             const guard =                 getTokenOrFunctionIdentity<CanActivateChild>(canActivateChild, closestInjector);             const guardVal = isCanActivateChild(guard) ?                 guard.canActivateChild(futureARS, futureRSS) :                 closestInjector.runInContext(                     () => (guard as CanActivateChildFn)(futureARS, futureRSS));             return wrapIntoObservable(guardVal).pipe(first());           });       return of(guardsMapped).pipe(prioritizedGuardValue());     });   });   return of(canActivateChildGuardsMapped).pipe(prioritizedGuardValue()); }  function runCanDeactivate(     component: Object|null, currARS: ActivatedRouteSnapshot, currRSS: RouterStateSnapshot,     futureRSS: RouterStateSnapshot, injector: EnvironmentInjector): Observable<boolean|UrlTree> {   const canDeactivate = currARS && currARS.routeConfig ? currARS.routeConfig.canDeactivate : null;   if (!canDeactivate || canDeactivate.length === 0) return of(true);   const canDeactivateObservables = canDeactivate.map((c: any) => {     const closestInjector = getClosestRouteInjector(currARS) ?? injector;     const guard = getTokenOrFunctionIdentity<any>(c, closestInjector);     const guardVal = isCanDeactivate(guard) ?         guard.canDeactivate(component, currARS, currRSS, futureRSS) :         closestInjector.runInContext(             () => (guard as CanDeactivateFn<any>)(component, currARS, currRSS, futureRSS));     return wrapIntoObservable(guardVal).pipe(first());   });   return of(canDeactivateObservables).pipe(prioritizedGuardValue()); }  export function runCanLoadGuards(     injector: EnvironmentInjector, route: Route, segments: UrlSegment[],     urlSerializer: UrlSerializer): Observable<boolean> {   const canLoad = route.canLoad;   if (canLoad === undefined || canLoad.length === 0) {     return of(true);   }    const canLoadObservables = canLoad.map((injectionToken: any) => {     const guard = getTokenOrFunctionIdentity<any>(injectionToken, injector);     const guardVal = isCanLoad(guard) ?         guard.canLoad(route, segments) :         injector.runInContext(() => (guard as CanLoadFn)(route, segments));     return wrapIntoObservable(guardVal);   });    return of(canLoadObservables)       .pipe(           prioritizedGuardValue(),           redirectIfUrlTree(urlSerializer),       ); }  function redirectIfUrlTree(urlSerializer: UrlSerializer):     OperatorFunction<UrlTree|boolean, boolean> {   return pipe(       tap((result: UrlTree|boolean) => {         if (!isUrlTree(result)) return;          throw redirectingNavigationError(urlSerializer, result);       }),       map(result => result === true),   ); }  export function runCanMatchGuards(     injector: EnvironmentInjector, route: Route, segments: UrlSegment[],     urlSerializer: UrlSerializer): Observable<boolean> {   const canMatch = route.canMatch;   if (!canMatch || canMatch.length === 0) return of(true);    const canMatchObservables = canMatch.map(injectionToken => {     const guard = getTokenOrFunctionIdentity(injectionToken, injector);     const guardVal = isCanMatch(guard) ?         guard.canMatch(route, segments) :         injector.runInContext(() => (guard as CanMatchFn)(route, segments));     return wrapIntoObservable(guardVal);   });    return of(canMatchObservables)       .pipe(           prioritizedGuardValue(),           redirectIfUrlTree(urlSerializer),       ); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, Injector} from '@angular/core'; import {Observable, of} from 'rxjs'; import {map} from 'rxjs/operators';  import {Route} from '../models'; import {runCanMatchGuards} from '../operators/check_guards'; import {defaultUrlMatcher, PRIMARY_OUTLET} from '../shared'; import {UrlSegment, UrlSegmentGroup, UrlSerializer} from '../url_tree';  import {forEach} from './collection'; import {getOrCreateRouteInjectorIfNeeded, getOutlet} from './config';  export interface MatchResult {   matched: boolean;   consumedSegments: UrlSegment[];   remainingSegments: UrlSegment[];   parameters: {[k: string]: string};   positionalParamSegments: {[k: string]: UrlSegment}; }  const noMatch: MatchResult = {   matched: false,   consumedSegments: [],   remainingSegments: [],   parameters: {},   positionalParamSegments: {} };  export function matchWithChecks(     segmentGroup: UrlSegmentGroup, route: Route, segments: UrlSegment[],     injector: EnvironmentInjector, urlSerializer: UrlSerializer): Observable<MatchResult> {   const result = match(segmentGroup, route, segments);   if (!result.matched) {     return of(result);   }    // Only create the Route's `EnvironmentInjector` if it matches the attempted   // navigation   injector = getOrCreateRouteInjectorIfNeeded(route, injector);   return runCanMatchGuards(injector, route, segments, urlSerializer)       .pipe(           map((v) => v === true ? result : {...noMatch}),       ); }  export function match(     segmentGroup: UrlSegmentGroup, route: Route, segments: UrlSegment[]): MatchResult {   if (route.path === '') {     if (route.pathMatch === 'full' && (segmentGroup.hasChildren() || segments.length > 0)) {       return {...noMatch};     }      return {       matched: true,       consumedSegments: [],       remainingSegments: segments,       parameters: {},       positionalParamSegments: {}     };   }    const matcher = route.matcher || defaultUrlMatcher;   const res = matcher(segments, segmentGroup, route);   if (!res) return {...noMatch};    const posParams: {[n: string]: string} = {};   forEach(res.posParams!, (v: UrlSegment, k: string) => {     posParams[k] = v.path;   });   const parameters = res.consumed.length > 0 ?       {...posParams, ...res.consumed[res.consumed.length - 1].parameters} :       posParams;    return {     matched: true,     consumedSegments: res.consumed,     remainingSegments: segments.slice(res.consumed.length),     // TODO(atscott): investigate combining parameters and positionalParamSegments     parameters,     positionalParamSegments: res.posParams ?? {}   }; }  export function split(     segmentGroup: UrlSegmentGroup, consumedSegments: UrlSegment[], slicedSegments: UrlSegment[],     config: Route[]) {   if (slicedSegments.length > 0 &&       containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, config)) {     const s = new UrlSegmentGroup(         consumedSegments,         createChildrenForEmptyPaths(             segmentGroup, consumedSegments, config,             new UrlSegmentGroup(slicedSegments, segmentGroup.children)));     s._sourceSegment = segmentGroup;     s._segmentIndexShift = consumedSegments.length;     return {segmentGroup: s, slicedSegments: []};   }    if (slicedSegments.length === 0 &&       containsEmptyPathMatches(segmentGroup, slicedSegments, config)) {     const s = new UrlSegmentGroup(         segmentGroup.segments,         addEmptyPathsToChildrenIfNeeded(             segmentGroup, consumedSegments, slicedSegments, config, segmentGroup.children));     s._sourceSegment = segmentGroup;     s._segmentIndexShift = consumedSegments.length;     return {segmentGroup: s, slicedSegments};   }    const s = new UrlSegmentGroup(segmentGroup.segments, segmentGroup.children);   s._sourceSegment = segmentGroup;   s._segmentIndexShift = consumedSegments.length;   return {segmentGroup: s, slicedSegments}; }  function addEmptyPathsToChildrenIfNeeded(     segmentGroup: UrlSegmentGroup, consumedSegments: UrlSegment[], slicedSegments: UrlSegment[],     routes: Route[],     children: {[name: string]: UrlSegmentGroup}): {[name: string]: UrlSegmentGroup} {   const res: {[name: string]: UrlSegmentGroup} = {};   for (const r of routes) {     if (emptyPathMatch(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) {       const s = new UrlSegmentGroup([], {});       s._sourceSegment = segmentGroup;       s._segmentIndexShift = consumedSegments.length;       res[getOutlet(r)] = s;     }   }   return {...children, ...res}; }  function createChildrenForEmptyPaths(     segmentGroup: UrlSegmentGroup, consumedSegments: UrlSegment[], routes: Route[],     primarySegment: UrlSegmentGroup): {[name: string]: UrlSegmentGroup} {   const res: {[name: string]: UrlSegmentGroup} = {};   res[PRIMARY_OUTLET] = primarySegment;   primarySegment._sourceSegment = segmentGroup;   primarySegment._segmentIndexShift = consumedSegments.length;    for (const r of routes) {     if (r.path === '' && getOutlet(r) !== PRIMARY_OUTLET) {       const s = new UrlSegmentGroup([], {});       s._sourceSegment = segmentGroup;       s._segmentIndexShift = consumedSegments.length;       res[getOutlet(r)] = s;     }   }   return res; }  function containsEmptyPathMatchesWithNamedOutlets(     segmentGroup: UrlSegmentGroup, slicedSegments: UrlSegment[], routes: Route[]): boolean {   return routes.some(       r => emptyPathMatch(segmentGroup, slicedSegments, r) && getOutlet(r) !== PRIMARY_OUTLET); }  function containsEmptyPathMatches(     segmentGroup: UrlSegmentGroup, slicedSegments: UrlSegment[], routes: Route[]): boolean {   return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r)); }  function emptyPathMatch(     segmentGroup: UrlSegmentGroup, slicedSegments: UrlSegment[], r: Route): boolean {   if ((segmentGroup.hasChildren() || slicedSegments.length > 0) && r.pathMatch === 'full') {     return false;   }    return r.path === ''; }  /**  * Determines if `route` is a path match for the `rawSegment`, `segments`, and `outlet` without  * verifying that its children are a full match for the remainder of the `rawSegment` children as  * well.  */ export function isImmediateMatch(     route: Route, rawSegment: UrlSegmentGroup, segments: UrlSegment[], outlet: string): boolean {   // We allow matches to empty paths when the outlets differ so we can match a url like `/(b:b)` to   // a config like   // * `{path: '', children: [{path: 'b', outlet: 'b'}]}`   // or even   // * `{path: '', outlet: 'a', children: [{path: 'b', outlet: 'b'}]`   //   // The exception here is when the segment outlet is for the primary outlet. This would   // result in a match inside the named outlet because all children there are written as primary   // outlets. So we need to prevent child named outlet matches in a url like `/b` in a config like   // * `{path: '', outlet: 'x' children: [{path: 'b'}]}`   // This should only match if the url is `/(x:b)`.   if (getOutlet(route) !== outlet &&       (outlet === PRIMARY_OUTLET || !emptyPathMatch(rawSegment, segments, route))) {     return false;   }   if (route.path === '**') {     return true;   }   return match(rawSegment, route, segments).matched; }  export function noLeftoversInUrl(     segmentGroup: UrlSegmentGroup, segments: UrlSegment[], outlet: string): boolean {   return segments.length === 0 && !segmentGroup.children[outlet]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, ɵRuntimeError as RuntimeError} from '@angular/core'; import {from, Observable, of, throwError} from 'rxjs'; import {catchError, concatMap, first, last, map, mergeMap, scan, switchMap, tap} from 'rxjs/operators';  import {RuntimeErrorCode} from './errors'; import {NavigationCancellationCode} from './events'; import {LoadedRouterConfig, Route, Routes} from './models'; import {navigationCancelingError} from './navigation_canceling_error'; import {runCanLoadGuards} from './operators/check_guards'; import {RouterConfigLoader} from './router_config_loader'; import {Params, PRIMARY_OUTLET} from './shared'; import {createRoot, squashSegmentGroup, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree} from './url_tree'; import {forEach} from './utils/collection'; import {getOrCreateRouteInjectorIfNeeded, getOutlet, sortByMatchingOutlets} from './utils/config'; import {isImmediateMatch, match, matchWithChecks, noLeftoversInUrl, split} from './utils/config_matching'; import {isEmptyError} from './utils/type_guards';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;  class NoMatch {   public segmentGroup: UrlSegmentGroup|null;    constructor(segmentGroup?: UrlSegmentGroup) {     this.segmentGroup = segmentGroup || null;   } }  class AbsoluteRedirect {   constructor(public urlTree: UrlTree) {} }  function noMatch(segmentGroup: UrlSegmentGroup): Observable<UrlSegmentGroup> {   return throwError(new NoMatch(segmentGroup)); }  function absoluteRedirect(newTree: UrlTree): Observable<any> {   return throwError(new AbsoluteRedirect(newTree)); }  function namedOutletsRedirect(redirectTo: string): Observable<any> {   return throwError(new RuntimeError(       RuntimeErrorCode.NAMED_OUTLET_REDIRECT,       NG_DEV_MODE &&           `Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`)); }  function canLoadFails(route: Route): Observable<LoadedRouterConfig> {   return throwError(navigationCancelingError(       NG_DEV_MODE &&           `Cannot load children because the guard of the route \"path: '${               route.path}'\" returned false`,       NavigationCancellationCode.GuardRejected)); }  /**  * Returns the `UrlTree` with the redirection applied.  *  * Lazy modules are loaded along the way.  */ export function applyRedirects(     injector: EnvironmentInjector, configLoader: RouterConfigLoader, urlSerializer: UrlSerializer,     urlTree: UrlTree, config: Routes): Observable<UrlTree> {   return new ApplyRedirects(injector, configLoader, urlSerializer, urlTree, config).apply(); }  class ApplyRedirects {   private allowRedirects: boolean = true;    constructor(       private injector: EnvironmentInjector, private configLoader: RouterConfigLoader,       private urlSerializer: UrlSerializer, private urlTree: UrlTree, private config: Routes) {}    apply(): Observable<UrlTree> {     const splitGroup = split(this.urlTree.root, [], [], this.config).segmentGroup;     // TODO(atscott): creating a new segment removes the _sourceSegment _segmentIndexShift, which is     // only necessary to prevent failures in tests which assert exact object matches. The `split` is     // now shared between `applyRedirects` and `recognize` but only the `recognize` step needs these     // properties. Before the implementations were merged, the `applyRedirects` would not assign     // them. We should be able to remove this logic as a \"breaking change\" but should do some more     // investigation into the failures first.     const rootSegmentGroup = new UrlSegmentGroup(splitGroup.segments, splitGroup.children);      const expanded$ =         this.expandSegmentGroup(this.injector, this.config, rootSegmentGroup, PRIMARY_OUTLET);     const urlTrees$ = expanded$.pipe(map((rootSegmentGroup: UrlSegmentGroup) => {       return this.createUrlTree(           squashSegmentGroup(rootSegmentGroup), this.urlTree.queryParams, this.urlTree.fragment);     }));     return urlTrees$.pipe(catchError((e: any) => {       if (e instanceof AbsoluteRedirect) {         // After an absolute redirect we do not apply any more redirects!         // If this implementation changes, update the documentation note in `redirectTo`.         this.allowRedirects = false;         // we need to run matching, so we can fetch all lazy-loaded modules         return this.match(e.urlTree);       }        if (e instanceof NoMatch) {         throw this.noMatchError(e);       }        throw e;     }));   }    private match(tree: UrlTree): Observable<UrlTree> {     const expanded$ =         this.expandSegmentGroup(this.injector, this.config, tree.root, PRIMARY_OUTLET);     const mapped$ = expanded$.pipe(map((rootSegmentGroup: UrlSegmentGroup) => {       return this.createUrlTree(           squashSegmentGroup(rootSegmentGroup), tree.queryParams, tree.fragment);     }));     return mapped$.pipe(catchError((e: any): Observable<UrlTree> => {       if (e instanceof NoMatch) {         throw this.noMatchError(e);       }        throw e;     }));   }    private noMatchError(e: NoMatch): any {     return new RuntimeError(         RuntimeErrorCode.NO_MATCH,         NG_DEV_MODE && `Cannot match any routes. URL Segment: '${e.segmentGroup}'`);   }    private createUrlTree(rootCandidate: UrlSegmentGroup, queryParams: Params, fragment: string|null):       UrlTree {     const root = createRoot(rootCandidate);     return new UrlTree(root, queryParams, fragment);   }    private expandSegmentGroup(       injector: EnvironmentInjector, routes: Route[], segmentGroup: UrlSegmentGroup,       outlet: string): Observable<UrlSegmentGroup> {     if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {       return this.expandChildren(injector, routes, segmentGroup)           .pipe(map((children: any) => new UrlSegmentGroup([], children)));     }      return this.expandSegment(injector, segmentGroup, routes, segmentGroup.segments, outlet, true);   }    // Recursively expand segment groups for all the child outlets   private expandChildren(       injector: EnvironmentInjector, routes: Route[],       segmentGroup: UrlSegmentGroup): Observable<{[name: string]: UrlSegmentGroup}> {     // Expand outlets one at a time, starting with the primary outlet. We need to do it this way     // because an absolute redirect from the primary outlet takes precedence.     const childOutlets: string[] = [];     for (const child of Object.keys(segmentGroup.children)) {       if (child === 'primary') {         childOutlets.unshift(child);       } else {         childOutlets.push(child);       }     }      return from(childOutlets)         .pipe(             concatMap(childOutlet => {               const child = segmentGroup.children[childOutlet];               // Sort the routes so routes with outlets that match the segment appear               // first, followed by routes for other outlets, which might match if they have an               // empty path.               const sortedRoutes = sortByMatchingOutlets(routes, childOutlet);               return this.expandSegmentGroup(injector, sortedRoutes, child, childOutlet)                   .pipe(map(s => ({segment: s, outlet: childOutlet})));             }),             scan(                 (children, expandedChild) => {                   children[expandedChild.outlet] = expandedChild.segment;                   return children;                 },                 {} as {[outlet: string]: UrlSegmentGroup}),             last(),         );   }    private expandSegment(       injector: EnvironmentInjector, segmentGroup: UrlSegmentGroup, routes: Route[],       segments: UrlSegment[], outlet: string,       allowRedirects: boolean): Observable<UrlSegmentGroup> {     return from(routes).pipe(         concatMap(r => {           const expanded$ = this.expandSegmentAgainstRoute(               injector, segmentGroup, routes, r, segments, outlet, allowRedirects);           return expanded$.pipe(catchError((e: any) => {             if (e instanceof NoMatch) {               return of(null);             }             throw e;           }));         }),         first((s): s is UrlSegmentGroup => !!s), catchError((e: any, _: any) => {           if (isEmptyError(e)) {             if (noLeftoversInUrl(segmentGroup, segments, outlet)) {               return of(new UrlSegmentGroup([], {}));             }             return noMatch(segmentGroup);           }           throw e;         }));   }    private expandSegmentAgainstRoute(       injector: EnvironmentInjector, segmentGroup: UrlSegmentGroup, routes: Route[], route: Route,       paths: UrlSegment[], outlet: string, allowRedirects: boolean): Observable<UrlSegmentGroup> {     if (!isImmediateMatch(route, segmentGroup, paths, outlet)) {       return noMatch(segmentGroup);     }      if (route.redirectTo === undefined) {       return this.matchSegmentAgainstRoute(injector, segmentGroup, route, paths, outlet);     }      if (allowRedirects && this.allowRedirects) {       return this.expandSegmentAgainstRouteUsingRedirect(           injector, segmentGroup, routes, route, paths, outlet);     }      return noMatch(segmentGroup);   }    private expandSegmentAgainstRouteUsingRedirect(       injector: EnvironmentInjector, segmentGroup: UrlSegmentGroup, routes: Route[], route: Route,       segments: UrlSegment[], outlet: string): Observable<UrlSegmentGroup> {     if (route.path === '**') {       return this.expandWildCardWithParamsAgainstRouteUsingRedirect(           injector, routes, route, outlet);     }      return this.expandRegularSegmentAgainstRouteUsingRedirect(         injector, segmentGroup, routes, route, segments, outlet);   }    private expandWildCardWithParamsAgainstRouteUsingRedirect(       injector: EnvironmentInjector, routes: Route[], route: Route,       outlet: string): Observable<UrlSegmentGroup> {     const newTree = this.applyRedirectCommands([], route.redirectTo!, {});     if (route.redirectTo!.startsWith('/')) {       return absoluteRedirect(newTree);     }      return this.lineralizeSegments(route, newTree).pipe(mergeMap((newSegments: UrlSegment[]) => {       const group = new UrlSegmentGroup(newSegments, {});       return this.expandSegment(injector, group, routes, newSegments, outlet, false);     }));   }    private expandRegularSegmentAgainstRouteUsingRedirect(       injector: EnvironmentInjector, segmentGroup: UrlSegmentGroup, routes: Route[], route: Route,       segments: UrlSegment[], outlet: string): Observable<UrlSegmentGroup> {     const {matched, consumedSegments, remainingSegments, positionalParamSegments} =         match(segmentGroup, route, segments);     if (!matched) return noMatch(segmentGroup);      const newTree =         this.applyRedirectCommands(consumedSegments, route.redirectTo!, positionalParamSegments);     if (route.redirectTo!.startsWith('/')) {       return absoluteRedirect(newTree);     }      return this.lineralizeSegments(route, newTree).pipe(mergeMap((newSegments: UrlSegment[]) => {       return this.expandSegment(           injector, segmentGroup, routes, newSegments.concat(remainingSegments), outlet, false);     }));   }    private matchSegmentAgainstRoute(       injector: EnvironmentInjector, rawSegmentGroup: UrlSegmentGroup, route: Route,       segments: UrlSegment[], outlet: string): Observable<UrlSegmentGroup> {     if (route.path === '**') {       // Only create the Route's `EnvironmentInjector` if it matches the attempted navigation       injector = getOrCreateRouteInjectorIfNeeded(route, injector);       if (route.loadChildren) {         const loaded$ = route._loadedRoutes ?             of({routes: route._loadedRoutes, injector: route._loadedInjector}) :             this.configLoader.loadChildren(injector, route);         return loaded$.pipe(map((cfg: LoadedRouterConfig) => {           route._loadedRoutes = cfg.routes;           route._loadedInjector = cfg.injector;           return new UrlSegmentGroup(segments, {});         }));       }        return of(new UrlSegmentGroup(segments, {}));     }      return matchWithChecks(rawSegmentGroup, route, segments, injector, this.urlSerializer)         .pipe(             switchMap(({matched, consumedSegments, remainingSegments}) => {               if (!matched) return noMatch(rawSegmentGroup);                // If the route has an injector created from providers, we should start using that.               injector = route._injector ?? injector;               const childConfig$ = this.getChildConfig(injector, route, segments);                return childConfig$.pipe(mergeMap((routerConfig: LoadedRouterConfig) => {                 const childInjector = routerConfig.injector ?? injector;                 const childConfig = routerConfig.routes;                  const {segmentGroup: splitSegmentGroup, slicedSegments} =                     split(rawSegmentGroup, consumedSegments, remainingSegments, childConfig);                 // See comment on the other call to `split` about why this is necessary.                 const segmentGroup =                     new UrlSegmentGroup(splitSegmentGroup.segments, splitSegmentGroup.children);                  if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {                   const expanded$ = this.expandChildren(childInjector, childConfig, segmentGroup);                   return expanded$.pipe(                       map((children: any) => new UrlSegmentGroup(consumedSegments, children)));                 }                  if (childConfig.length === 0 && slicedSegments.length === 0) {                   return of(new UrlSegmentGroup(consumedSegments, {}));                 }                  const matchedOnOutlet = getOutlet(route) === outlet;                 const expanded$ = this.expandSegment(                     childInjector, segmentGroup, childConfig, slicedSegments,                     matchedOnOutlet ? PRIMARY_OUTLET : outlet, true);                 return expanded$.pipe(                     map((cs: UrlSegmentGroup) => new UrlSegmentGroup(                             consumedSegments.concat(cs.segments), cs.children)));               }));             }),         );   }    private getChildConfig(injector: EnvironmentInjector, route: Route, segments: UrlSegment[]):       Observable<LoadedRouterConfig> {     if (route.children) {       // The children belong to the same module       return of({routes: route.children, injector});     }      if (route.loadChildren) {       // lazy children belong to the loaded module       if (route._loadedRoutes !== undefined) {         return of({routes: route._loadedRoutes, injector: route._loadedInjector});       }        return runCanLoadGuards(injector, route, segments, this.urlSerializer)           .pipe(mergeMap((shouldLoadResult: boolean) => {             if (shouldLoadResult) {               return this.configLoader.loadChildren(injector, route)                   .pipe(tap((cfg: LoadedRouterConfig) => {                     route._loadedRoutes = cfg.routes;                     route._loadedInjector = cfg.injector;                   }));             }             return canLoadFails(route);           }));     }      return of({routes: [], injector});   }    private lineralizeSegments(route: Route, urlTree: UrlTree): Observable<UrlSegment[]> {     let res: UrlSegment[] = [];     let c = urlTree.root;     while (true) {       res = res.concat(c.segments);       if (c.numberOfChildren === 0) {         return of(res);       }        if (c.numberOfChildren > 1 || !c.children[PRIMARY_OUTLET]) {         return namedOutletsRedirect(route.redirectTo!);       }        c = c.children[PRIMARY_OUTLET];     }   }    private applyRedirectCommands(       segments: UrlSegment[], redirectTo: string, posParams: {[k: string]: UrlSegment}): UrlTree {     return this.applyRedirectCreateUrlTree(         redirectTo, this.urlSerializer.parse(redirectTo), segments, posParams);   }    private applyRedirectCreateUrlTree(       redirectTo: string, urlTree: UrlTree, segments: UrlSegment[],       posParams: {[k: string]: UrlSegment}): UrlTree {     const newRoot = this.createSegmentGroup(redirectTo, urlTree.root, segments, posParams);     return new UrlTree(         newRoot, this.createQueryParams(urlTree.queryParams, this.urlTree.queryParams),         urlTree.fragment);   }    private createQueryParams(redirectToParams: Params, actualParams: Params): Params {     const res: Params = {};     forEach(redirectToParams, (v: any, k: string) => {       const copySourceValue = typeof v === 'string' && v.startsWith(':');       if (copySourceValue) {         const sourceName = v.substring(1);         res[k] = actualParams[sourceName];       } else {         res[k] = v;       }     });     return res;   }    private createSegmentGroup(       redirectTo: string, group: UrlSegmentGroup, segments: UrlSegment[],       posParams: {[k: string]: UrlSegment}): UrlSegmentGroup {     const updatedSegments = this.createSegments(redirectTo, group.segments, segments, posParams);      let children: {[n: string]: UrlSegmentGroup} = {};     forEach(group.children, (child: UrlSegmentGroup, name: string) => {       children[name] = this.createSegmentGroup(redirectTo, child, segments, posParams);     });      return new UrlSegmentGroup(updatedSegments, children);   }    private createSegments(       redirectTo: string, redirectToSegments: UrlSegment[], actualSegments: UrlSegment[],       posParams: {[k: string]: UrlSegment}): UrlSegment[] {     return redirectToSegments.map(         s => s.path.startsWith(':') ? this.findPosParam(redirectTo, s, posParams) :                                       this.findOrReturn(s, actualSegments));   }    private findPosParam(       redirectTo: string, redirectToUrlSegment: UrlSegment,       posParams: {[k: string]: UrlSegment}): UrlSegment {     const pos = posParams[redirectToUrlSegment.path.substring(1)];     if (!pos)       throw new RuntimeError(           RuntimeErrorCode.MISSING_REDIRECT,           NG_DEV_MODE &&               `Cannot redirect to '${redirectTo}'. Cannot find '${redirectToUrlSegment.path}'.`);     return pos;   }    private findOrReturn(redirectToUrlSegment: UrlSegment, actualSegments: UrlSegment[]): UrlSegment {     let idx = 0;     for (const s of actualSegments) {       if (s.path === redirectToUrlSegment.path) {         actualSegments.splice(idx);         return s;       }       idx++;     }     return redirectToUrlSegment;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector} from '@angular/core'; import {MonoTypeOperatorFunction} from 'rxjs'; import {map, switchMap} from 'rxjs/operators';  import {applyRedirects as applyRedirectsFn} from '../apply_redirects'; import {Routes} from '../models'; import {NavigationTransition} from '../navigation_transition'; import {RouterConfigLoader} from '../router_config_loader'; import {UrlSerializer} from '../url_tree';  export function applyRedirects(     environmentInjector: EnvironmentInjector, configLoader: RouterConfigLoader,     urlSerializer: UrlSerializer, config: Routes): MonoTypeOperatorFunction<NavigationTransition> {   return switchMap(       t =>           applyRedirectsFn(environmentInjector, configLoader, urlSerializer, t.extractedUrl, config)               .pipe(map(urlAfterRedirects => ({...t, urlAfterRedirects})))); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, Type, ɵRuntimeError as RuntimeError} from '@angular/core'; import {EmptyError, from, Observable, Observer, of} from 'rxjs'; import {catchError, concatMap, defaultIfEmpty, first, last as rxjsLast, map, scan, switchMap, takeWhile} from 'rxjs/operators';  import {RuntimeErrorCode} from './errors'; import {Data, ResolveData, Route, Routes} from './models'; import {ActivatedRouteSnapshot, inheritedParamsDataResolve, ParamsInheritanceStrategy, RouterStateSnapshot} from './router_state'; import {PRIMARY_OUTLET} from './shared'; import {UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree} from './url_tree'; import {last} from './utils/collection'; import {getOutlet, sortByMatchingOutlets} from './utils/config'; import {isImmediateMatch, matchWithChecks, noLeftoversInUrl, split} from './utils/config_matching'; import {TreeNode} from './utils/tree'; import {isEmptyError} from './utils/type_guards';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  class NoMatch {}  function newObservableError(e: unknown): Observable<RouterStateSnapshot> {   // TODO(atscott): This pattern is used throughout the router code and can be `throwError` instead.   return new Observable<RouterStateSnapshot>((obs: Observer<RouterStateSnapshot>) => obs.error(e)); }  export function recognize(     injector: EnvironmentInjector, rootComponentType: Type<any>|null, config: Routes,     urlTree: UrlTree, url: string, urlSerializer: UrlSerializer,     paramsInheritanceStrategy: ParamsInheritanceStrategy =         'emptyOnly'): Observable<RouterStateSnapshot> {   return new Recognizer(              injector, rootComponentType, config, urlTree, url, paramsInheritanceStrategy,              urlSerializer)       .recognize()       .pipe(switchMap(result => {         if (result === null) {           return newObservableError(new NoMatch());         } else {           return of(result);         }       })); }  export class Recognizer {   constructor(       private injector: EnvironmentInjector, private rootComponentType: Type<any>|null,       private config: Routes, private urlTree: UrlTree, private url: string,       private paramsInheritanceStrategy: ParamsInheritanceStrategy,       private readonly urlSerializer: UrlSerializer) {}    recognize(): Observable<RouterStateSnapshot|null> {     const rootSegmentGroup =         split(this.urlTree.root, [], [], this.config.filter(c => c.redirectTo === undefined))             .segmentGroup;      return this.processSegmentGroup(this.injector, this.config, rootSegmentGroup, PRIMARY_OUTLET)         .pipe(map(children => {           if (children === null) {             return null;           }            // Use Object.freeze to prevent readers of the Router state from modifying it outside of a           // navigation, resulting in the router being out of sync with the browser.           const root = new ActivatedRouteSnapshot(               [], Object.freeze({}), Object.freeze({...this.urlTree.queryParams}),               this.urlTree.fragment, {}, PRIMARY_OUTLET, this.rootComponentType, null,               this.urlTree.root, -1, {});            const rootNode = new TreeNode<ActivatedRouteSnapshot>(root, children);           const routeState = new RouterStateSnapshot(this.url, rootNode);           this.inheritParamsAndData(routeState._root);           return routeState;         }));   }    inheritParamsAndData(routeNode: TreeNode<ActivatedRouteSnapshot>): void {     const route = routeNode.value;      const i = inheritedParamsDataResolve(route, this.paramsInheritanceStrategy);     route.params = Object.freeze(i.params);     route.data = Object.freeze(i.data);      routeNode.children.forEach(n => this.inheritParamsAndData(n));   }    processSegmentGroup(       injector: EnvironmentInjector, config: Route[], segmentGroup: UrlSegmentGroup,       outlet: string): Observable<TreeNode<ActivatedRouteSnapshot>[]|null> {     if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {       return this.processChildren(injector, config, segmentGroup);     }      return this.processSegment(injector, config, segmentGroup, segmentGroup.segments, outlet);   }    /**    * Matches every child outlet in the `segmentGroup` to a `Route` in the config. Returns `null` if    * we cannot find a match for _any_ of the children.    *    * @param config - The `Routes` to match against    * @param segmentGroup - The `UrlSegmentGroup` whose children need to be matched against the    *     config.    */   processChildren(injector: EnvironmentInjector, config: Route[], segmentGroup: UrlSegmentGroup):       Observable<TreeNode<ActivatedRouteSnapshot>[]|null> {     return from(Object.keys(segmentGroup.children))         .pipe(             concatMap(childOutlet => {               const child = segmentGroup.children[childOutlet];               // Sort the config so that routes with outlets that match the one being activated               // appear first, followed by routes for other outlets, which might match if they have               // an empty path.               const sortedConfig = sortByMatchingOutlets(config, childOutlet);               return this.processSegmentGroup(injector, sortedConfig, child, childOutlet);             }),             scan((children, outletChildren) => {               if (!children || !outletChildren) return null;               children.push(...outletChildren);               return children;             }),             takeWhile(children => children !== null),             defaultIfEmpty(null as TreeNode<ActivatedRouteSnapshot>[] | null),             rxjsLast(),             map(children => {               if (children === null) return null;               // Because we may have matched two outlets to the same empty path segment, we can have               // multiple activated results for the same outlet. We should merge the children of               // these results so the final return value is only one `TreeNode` per outlet.               const mergedChildren = mergeEmptyPathMatches(children);               if (NG_DEV_MODE) {                 // This should really never happen - we are only taking the first match for each                 // outlet and merge the empty path matches.                 checkOutletNameUniqueness(mergedChildren);               }               sortActivatedRouteSnapshots(mergedChildren);               return mergedChildren;             }),         );   }    processSegment(       injector: EnvironmentInjector, routes: Route[], segmentGroup: UrlSegmentGroup,       segments: UrlSegment[], outlet: string): Observable<TreeNode<ActivatedRouteSnapshot>[]|null> {     return from(routes).pipe(         concatMap(r => {           return this.processSegmentAgainstRoute(               r._injector ?? injector, r, segmentGroup, segments, outlet);         }),         first((x): x is TreeNode<ActivatedRouteSnapshot>[] => !!x), catchError(e => {           if (isEmptyError(e)) {             if (noLeftoversInUrl(segmentGroup, segments, outlet)) {               return of([]);             }             return of(null);           }           throw e;         }));   }    processSegmentAgainstRoute(       injector: EnvironmentInjector, route: Route, rawSegment: UrlSegmentGroup,       segments: UrlSegment[], outlet: string): Observable<TreeNode<ActivatedRouteSnapshot>[]|null> {     if (route.redirectTo || !isImmediateMatch(route, rawSegment, segments, outlet)) return of(null);      let matchResult: Observable<{       snapshot: ActivatedRouteSnapshot,       consumedSegments: UrlSegment[],       remainingSegments: UrlSegment[],     }|null>;      if (route.path === '**') {       const params = segments.length > 0 ? last(segments)!.parameters : {};       const pathIndexShift = getPathIndexShift(rawSegment) + segments.length;       const snapshot = new ActivatedRouteSnapshot(           segments, params, Object.freeze({...this.urlTree.queryParams}), this.urlTree.fragment,           getData(route), getOutlet(route), route.component ?? route._loadedComponent ?? null,           route, getSourceSegmentGroup(rawSegment), pathIndexShift, getResolve(route));       matchResult = of({         snapshot,         consumedSegments: [],         remainingSegments: [],       });     } else {       matchResult =           matchWithChecks(rawSegment, route, segments, injector, this.urlSerializer)               .pipe(map(({matched, consumedSegments, remainingSegments, parameters}) => {                 if (!matched) {                   return null;                 }                 const pathIndexShift = getPathIndexShift(rawSegment) + consumedSegments.length;                  const snapshot = new ActivatedRouteSnapshot(                     consumedSegments, parameters, Object.freeze({...this.urlTree.queryParams}),                     this.urlTree.fragment, getData(route), getOutlet(route),                     route.component ?? route._loadedComponent ?? null, route,                     getSourceSegmentGroup(rawSegment), pathIndexShift, getResolve(route));                 return {snapshot, consumedSegments, remainingSegments};               }));     }      return matchResult.pipe(switchMap((result) => {       if (result === null) {         return of(null);       }       const {snapshot, consumedSegments, remainingSegments} = result;       // If the route has an injector created from providers, we should start using that.       injector = route._injector ?? injector;       const childInjector = route._loadedInjector ?? injector;       const childConfig: Route[] = getChildConfig(route);        const {segmentGroup, slicedSegments} = split(           rawSegment, consumedSegments, remainingSegments,           // Filter out routes with redirectTo because we are trying to create activated route           // snapshots and don't handle redirects here. That should have been done in           // `applyRedirects`.           childConfig.filter(c => c.redirectTo === undefined));        if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {         return this.processChildren(childInjector, childConfig, segmentGroup).pipe(map(children => {           if (children === null) {             return null;           }           return [new TreeNode<ActivatedRouteSnapshot>(snapshot, children)];         }));       }        if (childConfig.length === 0 && slicedSegments.length === 0) {         return of([new TreeNode<ActivatedRouteSnapshot>(snapshot, [])]);       }        const matchedOnOutlet = getOutlet(route) === outlet;       // If we matched a config due to empty path match on a different outlet, we need to       // continue passing the current outlet for the segment rather than switch to PRIMARY.       // Note that we switch to primary when we have a match because outlet configs look like       // this: {path: 'a', outlet: 'a', children: [       //  {path: 'b', component: B},       //  {path: 'c', component: C},       // ]}       // Notice that the children of the named outlet are configured with the primary outlet       return this           .processSegment(               childInjector, childConfig, segmentGroup, slicedSegments,               matchedOnOutlet ? PRIMARY_OUTLET : outlet)           .pipe(map(children => {             if (children === null) {               return null;             }             return [new TreeNode<ActivatedRouteSnapshot>(snapshot, children)];           }));     }));   } }  function sortActivatedRouteSnapshots(nodes: TreeNode<ActivatedRouteSnapshot>[]): void {   nodes.sort((a, b) => {     if (a.value.outlet === PRIMARY_OUTLET) return -1;     if (b.value.outlet === PRIMARY_OUTLET) return 1;     return a.value.outlet.localeCompare(b.value.outlet);   }); }  function getChildConfig(route: Route): Route[] {   if (route.children) {     return route.children;   }    if (route.loadChildren) {     return route._loadedRoutes!;   }    return []; }  function hasEmptyPathConfig(node: TreeNode<ActivatedRouteSnapshot>) {   const config = node.value.routeConfig;   return config && config.path === '' && config.redirectTo === undefined; }  /**  * Finds `TreeNode`s with matching empty path route configs and merges them into `TreeNode` with  * the children from each duplicate. This is necessary because different outlets can match a  * single empty path route config and the results need to then be merged.  */ function mergeEmptyPathMatches(nodes: Array<TreeNode<ActivatedRouteSnapshot>>):     Array<TreeNode<ActivatedRouteSnapshot>> {   const result: Array<TreeNode<ActivatedRouteSnapshot>> = [];   // The set of nodes which contain children that were merged from two duplicate empty path nodes.   const mergedNodes: Set<TreeNode<ActivatedRouteSnapshot>> = new Set();    for (const node of nodes) {     if (!hasEmptyPathConfig(node)) {       result.push(node);       continue;     }      const duplicateEmptyPathNode =         result.find(resultNode => node.value.routeConfig === resultNode.value.routeConfig);     if (duplicateEmptyPathNode !== undefined) {       duplicateEmptyPathNode.children.push(...node.children);       mergedNodes.add(duplicateEmptyPathNode);     } else {       result.push(node);     }   }   // For each node which has children from multiple sources, we need to recompute a new `TreeNode`   // by also merging those children. This is necessary when there are multiple empty path configs   // in a row. Put another way: whenever we combine children of two nodes, we need to also check   // if any of those children can be combined into a single node as well.   for (const mergedNode of mergedNodes) {     const mergedChildren = mergeEmptyPathMatches(mergedNode.children);     result.push(new TreeNode(mergedNode.value, mergedChildren));   }   return result.filter(n => !mergedNodes.has(n)); }  function checkOutletNameUniqueness(nodes: TreeNode<ActivatedRouteSnapshot>[]): void {   const names: {[k: string]: ActivatedRouteSnapshot} = {};   nodes.forEach(n => {     const routeWithSameOutletName = names[n.value.outlet];     if (routeWithSameOutletName) {       const p = routeWithSameOutletName.url.map(s => s.toString()).join('/');       const c = n.value.url.map(s => s.toString()).join('/');       throw new RuntimeError(           RuntimeErrorCode.TWO_SEGMENTS_WITH_SAME_OUTLET,           NG_DEV_MODE && `Two segments cannot have the same outlet name: '${p}' and '${c}'.`);     }     names[n.value.outlet] = n.value;   }); }  function getSourceSegmentGroup(segmentGroup: UrlSegmentGroup): UrlSegmentGroup {   let s = segmentGroup;   while (s._sourceSegment) {     s = s._sourceSegment;   }   return s; }  function getPathIndexShift(segmentGroup: UrlSegmentGroup): number {   let s = segmentGroup;   let res = s._segmentIndexShift ?? 0;   while (s._sourceSegment) {     s = s._sourceSegment;     res += s._segmentIndexShift ?? 0;   }   return res - 1; }  function getCorrectedPathIndexShift(segmentGroup: UrlSegmentGroup): number {   let s = segmentGroup;   let res = s._segmentIndexShiftCorrected ?? s._segmentIndexShift ?? 0;   while (s._sourceSegment) {     s = s._sourceSegment;     res += s._segmentIndexShiftCorrected ?? s._segmentIndexShift ?? 0;   }   return res - 1; }  function getData(route: Route): Data {   return route.data || {}; }  function getResolve(route: Route): ResolveData {   return route.resolve || {}; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, Type} from '@angular/core'; import {MonoTypeOperatorFunction} from 'rxjs'; import {map, mergeMap} from 'rxjs/operators';  import {Route} from '../models'; import {NavigationTransition} from '../navigation_transition'; import {recognize as recognizeFn} from '../recognize'; import {UrlSerializer} from '../url_tree';  export function recognize(     injector: EnvironmentInjector, rootComponentType: Type<any>|null, config: Route[],     serializer: UrlSerializer, paramsInheritanceStrategy: 'emptyOnly'|'always'):     MonoTypeOperatorFunction<NavigationTransition> {   return mergeMap(       t => recognizeFn(                injector, rootComponentType, config, t.urlAfterRedirects!,                serializer.serialize(t.urlAfterRedirects!), serializer, paramsInheritanceStrategy)                .pipe(map(targetSnapshot => ({...t, targetSnapshot})))); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, ProviderToken} from '@angular/core'; import {EMPTY, from, MonoTypeOperatorFunction, Observable, of, throwError} from 'rxjs'; import {catchError, concatMap, first, map, mapTo, mergeMap, takeLast, tap} from 'rxjs/operators';  import {ResolveData, Route} from '../models'; import {NavigationTransition} from '../navigation_transition'; import {ActivatedRouteSnapshot, inheritedParamsDataResolve, RouterStateSnapshot} from '../router_state'; import {RouteTitleKey} from '../shared'; import {wrapIntoObservable} from '../utils/collection'; import {getClosestRouteInjector} from '../utils/config'; import {getTokenOrFunctionIdentity} from '../utils/preactivation'; import {isEmptyError} from '../utils/type_guards';  export function resolveData(     paramsInheritanceStrategy: 'emptyOnly'|'always',     injector: EnvironmentInjector): MonoTypeOperatorFunction<NavigationTransition> {   return mergeMap(t => {     const {targetSnapshot, guards: {canActivateChecks}} = t;      if (!canActivateChecks.length) {       return of(t);     }     let canActivateChecksResolved = 0;     return from(canActivateChecks)         .pipe(             concatMap(                 check =>                     runResolve(check.route, targetSnapshot!, paramsInheritanceStrategy, injector)),             tap(() => canActivateChecksResolved++),             takeLast(1),             mergeMap(_ => canActivateChecksResolved === canActivateChecks.length ? of(t) : EMPTY),         );   }); }  function runResolve(     futureARS: ActivatedRouteSnapshot, futureRSS: RouterStateSnapshot,     paramsInheritanceStrategy: 'emptyOnly'|'always', injector: EnvironmentInjector) {   const config = futureARS.routeConfig;   const resolve = futureARS._resolve;   if (config?.title !== undefined && !hasStaticTitle(config)) {     resolve[RouteTitleKey] = config.title;   }   return resolveNode(resolve, futureARS, futureRSS, injector).pipe(map((resolvedData: any) => {     futureARS._resolvedData = resolvedData;     futureARS.data = inheritedParamsDataResolve(futureARS, paramsInheritanceStrategy).resolve;     if (config && hasStaticTitle(config)) {       futureARS.data[RouteTitleKey] = config.title;     }     return null;   })); }  function resolveNode(     resolve: ResolveData, futureARS: ActivatedRouteSnapshot, futureRSS: RouterStateSnapshot,     injector: EnvironmentInjector): Observable<any> {   const keys = getDataKeys(resolve);   if (keys.length === 0) {     return of({});   }   const data: {[k: string|symbol]: any} = {};   return from(keys).pipe(       mergeMap(           key => getResolver(resolve[key], futureARS, futureRSS, injector)                      .pipe(first(), tap((value: any) => {                              data[key] = value;                            }))),       takeLast(1),       mapTo(data),       catchError((e: unknown) => isEmptyError(e as Error) ? EMPTY : throwError(e)),   ); }  function getDataKeys(obj: Object): Array<string|symbol> {   return [...Object.keys(obj), ...Object.getOwnPropertySymbols(obj)]; }  function getResolver(     injectionToken: ProviderToken<any>|Function, futureARS: ActivatedRouteSnapshot,     futureRSS: RouterStateSnapshot, injector: EnvironmentInjector): Observable<any> {   const closestInjector = getClosestRouteInjector(futureARS) ?? injector;   const resolver = getTokenOrFunctionIdentity(injectionToken, closestInjector);   const resolverValue = resolver.resolve ?       resolver.resolve(futureARS, futureRSS) :       closestInjector.runInContext(() => resolver(futureARS, futureRSS));   return wrapIntoObservable(resolverValue); }  function hasStaticTitle(config: Route) {   return typeof config.title === 'string' || config.title === null; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {from, MonoTypeOperatorFunction, ObservableInput, of} from 'rxjs'; import {map, switchMap} from 'rxjs/operators';  /**  * Perform a side effect through a switchMap for every emission on the source Observable,  * but return an Observable that is identical to the source. It's essentially the same as  * the `tap` operator, but if the side effectful `next` function returns an ObservableInput,  * it will wait before continuing with the original value.  */ export function switchTap<T>(next: (x: T) => void|ObservableInput<any>):     MonoTypeOperatorFunction<T> {   return switchMap(v => {     const nextResult = next(v);     if (nextResult) {       return from(nextResult).pipe(map(() => v));     }     return of(v);   }); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Injector, NgModuleFactory} from '@angular/core'; import {Observable} from 'rxjs';  // This file exists to support the legacy `loadChildren: string` behavior being patched back into // Angular.  export function deprecatedLoadChildrenString(     injector: Injector, loadChildren: unknown): Observable<NgModuleFactory<any>>|null {   return null; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Compiler, EnvironmentInjector, Injectable, InjectFlags, InjectionToken, Injector, NgModuleFactory, Type} from '@angular/core'; import {ConnectableObservable, from, Observable, of, Subject} from 'rxjs'; import {catchError, finalize, map, mergeMap, refCount, tap} from 'rxjs/operators';  import {deprecatedLoadChildrenString} from './deprecated_load_children'; import {DefaultExport, LoadChildren, LoadChildrenCallback, LoadedRouterConfig, Route, Routes} from './models'; import {flatten, wrapIntoObservable} from './utils/collection'; import {assertStandalone, standardizeConfig, validateConfig} from './utils/config';   const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  /**  * The [DI token](guide/glossary/#di-token) for a router configuration.  *  * `ROUTES` is a low level API for router configuration via dependency injection.  *  * We recommend that in almost all cases to use higher level APIs such as `RouterModule.forRoot()`,  * `provideRouter`, or `Router.resetConfig()`.  *  * @publicApi  */ export const ROUTES = new InjectionToken<Route[][]>('ROUTES');  type ComponentLoader = Observable<Type<unknown>>;  @Injectable({providedIn: 'root'}) export class RouterConfigLoader {   private componentLoaders = new WeakMap<Route, ComponentLoader>();   private childrenLoaders = new WeakMap<Route, Observable<LoadedRouterConfig>>();   onLoadStartListener?: (r: Route) => void;   onLoadEndListener?: (r: Route) => void;    constructor(       private injector: Injector,       private compiler: Compiler,   ) {}    loadComponent(route: Route): Observable<Type<unknown>> {     if (this.componentLoaders.get(route)) {       return this.componentLoaders.get(route)!;     } else if (route._loadedComponent) {       return of(route._loadedComponent);     }      if (this.onLoadStartListener) {       this.onLoadStartListener(route);     }     const loadRunner = wrapIntoObservable(route.loadComponent!())                            .pipe(                                map(maybeUnwrapDefaultExport),                                tap(component => {                                  if (this.onLoadEndListener) {                                    this.onLoadEndListener(route);                                  }                                  NG_DEV_MODE && assertStandalone(route.path ?? '', component);                                  route._loadedComponent = component;                                }),                                finalize(() => {                                  this.componentLoaders.delete(route);                                }),                            );     // Use custom ConnectableObservable as share in runners pipe increasing the bundle size too much     const loader =         new ConnectableObservable(loadRunner, () => new Subject<Type<unknown>>()).pipe(refCount());     this.componentLoaders.set(route, loader);     return loader;   }    loadChildren(parentInjector: Injector, route: Route): Observable<LoadedRouterConfig> {     if (this.childrenLoaders.get(route)) {       return this.childrenLoaders.get(route)!;     } else if (route._loadedRoutes) {       return of({routes: route._loadedRoutes, injector: route._loadedInjector});     }      if (this.onLoadStartListener) {       this.onLoadStartListener(route);     }     const moduleFactoryOrRoutes$ = this.loadModuleFactoryOrRoutes(route.loadChildren!);     const loadRunner = moduleFactoryOrRoutes$.pipe(         map((factoryOrRoutes: NgModuleFactory<any>|Routes) => {           if (this.onLoadEndListener) {             this.onLoadEndListener(route);           }           // This injector comes from the `NgModuleRef` when lazy loading an `NgModule`. There is no           // injector associated with lazy loading a `Route` array.           let injector: EnvironmentInjector|undefined;           let rawRoutes: Route[];           let requireStandaloneComponents = false;           if (Array.isArray(factoryOrRoutes)) {             rawRoutes = factoryOrRoutes;             requireStandaloneComponents = true;           } else {             injector = factoryOrRoutes.create(parentInjector).injector;             // When loading a module that doesn't provide `RouterModule.forChild()` preloader             // will get stuck in an infinite loop. The child module's Injector will look to             // its parent `Injector` when it doesn't find any ROUTES so it will return routes             // for it's parent module instead.             rawRoutes = flatten(injector.get(ROUTES, [], InjectFlags.Self | InjectFlags.Optional));           }           const routes = rawRoutes.map(standardizeConfig);           NG_DEV_MODE && validateConfig(routes, route.path, requireStandaloneComponents);           return {routes, injector};         }),         finalize(() => {           this.childrenLoaders.delete(route);         }),     );     // Use custom ConnectableObservable as share in runners pipe increasing the bundle size too much     const loader = new ConnectableObservable(loadRunner, () => new Subject<LoadedRouterConfig>())                        .pipe(refCount());     this.childrenLoaders.set(route, loader);     return loader;   }    private loadModuleFactoryOrRoutes(loadChildren: LoadChildren):       Observable<NgModuleFactory<any>|Routes> {     const deprecatedResult = deprecatedLoadChildrenString(this.injector, loadChildren);     if (deprecatedResult) {       return deprecatedResult;     }     return wrapIntoObservable((loadChildren as LoadChildrenCallback)())         .pipe(             map(maybeUnwrapDefaultExport),             mergeMap((t) => {               if (t instanceof NgModuleFactory || Array.isArray(t)) {                 return of(t);               } else {                 return from(this.compiler.compileModuleAsync(t));               }             }),         );   } }  function isWrappedDefaultExport<T>(value: T|DefaultExport<T>): value is DefaultExport<T> {   // We use `in` here with a string key `'default'`, because we expect `DefaultExport` objects to be   // dynamically imported ES modules with a spec-mandated `default` key. Thus we don't expect that   // `default` will be a renamed property.   return value && typeof value === 'object' && 'default' in value; }  function maybeUnwrapDefaultExport<T>(input: T|DefaultExport<T>): T {   // As per `isWrappedDefaultExport`, the `default` key here is generated by the browser and not   // subject to property renaming, so we reference it with bracket access.   return isWrappedDefaultExport(input) ? input['default'] : input; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EnvironmentInjector, inject, Injectable, Type} from '@angular/core'; import {BehaviorSubject, combineLatest, EMPTY, Observable, of, Subject} from 'rxjs'; import {catchError, defaultIfEmpty, filter, finalize, map, switchMap, take, tap} from 'rxjs/operators';  import {createRouterState} from './create_router_state'; import {Event, GuardsCheckEnd, GuardsCheckStart, IMPERATIVE_NAVIGATION, NavigationCancel, NavigationCancellationCode, NavigationEnd, NavigationError, NavigationSkipped, NavigationSkippedCode, NavigationStart, NavigationTrigger, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RoutesRecognized} from './events'; import {NavigationBehaviorOptions, QueryParamsHandling, Route, Routes} from './models'; import {isNavigationCancelingError, isRedirectingNavigationCancelingError, redirectingNavigationError} from './navigation_canceling_error'; import {activateRoutes} from './operators/activate_routes'; import {applyRedirects} from './operators/apply_redirects'; import {checkGuards} from './operators/check_guards'; import {recognize} from './operators/recognize'; import {resolveData} from './operators/resolve_data'; import {switchTap} from './operators/switch_tap'; import {TitleStrategy} from './page_title_strategy'; import {RouteReuseStrategy} from './route_reuse_strategy'; import {ErrorHandler} from './router_config'; import {RouterConfigLoader} from './router_config_loader'; import {ChildrenOutletContexts} from './router_outlet_context'; import {ActivatedRoute, ActivatedRouteSnapshot, createEmptyState, RouterState, RouterStateSnapshot} from './router_state'; import {Params} from './shared'; import {UrlHandlingStrategy} from './url_handling_strategy'; import {isUrlTree, UrlSerializer, UrlTree} from './url_tree'; import {Checks, getAllRouteGuards} from './utils/preactivation';   const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  /**  * @description  *  * Options that modify the `Router` URL.  * Supply an object containing any of these properties to a `Router` navigation function to  * control how the target URL should be constructed.  *  * @see [Router.navigate() method](api/router/Router#navigate)  * @see [Router.createUrlTree() method](api/router/Router#createurltree)  * @see [Routing and Navigation guide](guide/router)  *  * @publicApi  */ export interface UrlCreationOptions {   /**    * Specifies a root URI to use for relative navigation.    *    * For example, consider the following route configuration where the parent route    * has two children.    *    * ```    * [{    *   path: 'parent',    *   component: ParentComponent,    *   children: [{    *     path: 'list',    *     component: ListComponent    *   },{    *     path: 'child',    *     component: ChildComponent    *   }]    * }]    * ```    *    * The following `go()` function navigates to the `list` route by    * interpreting the destination URI as relative to the activated `child`  route    *    * ```    *  @Component({...})    *  class ChildComponent {    *    constructor(private router: Router, private route: ActivatedRoute) {}    *    *    go() {    *      router.navigate(['../list'], { relativeTo: this.route });    *    }    *  }    * ```    *    * A value of `null` or `undefined` indicates that the navigation commands should be applied    * relative to the root.    */   relativeTo?: ActivatedRoute|null;    /**    * Sets query parameters to the URL.    *    * ```    * // Navigate to /results?page=1    * router.navigate(['/results'], { queryParams: { page: 1 } });    * ```    */   queryParams?: Params|null;    /**    * Sets the hash fragment for the URL.    *    * ```    * // Navigate to /results#top    * router.navigate(['/results'], { fragment: 'top' });    * ```    */   fragment?: string;    /**    * How to handle query parameters in the router link for the next navigation.    * One of:    * * `preserve` : Preserve current parameters.    * * `merge` : Merge new with current parameters.    *    * The \"preserve\" option discards any new query params:    * ```    * // from /view1?page=1 to/view2?page=1    * router.navigate(['/view2'], { queryParams: { page: 2 },  queryParamsHandling: \"preserve\"    * });    * ```    * The \"merge\" option appends new query params to the params from the current URL:    * ```    * // from /view1?page=1 to/view2?page=1&otherKey=2    * router.navigate(['/view2'], { queryParams: { otherKey: 2 },  queryParamsHandling: \"merge\"    * });    * ```    * In case of a key collision between current parameters and those in the `queryParams` object,    * the new value is used.    *    */   queryParamsHandling?: QueryParamsHandling|null;    /**    * When true, preserves the URL fragment for the next navigation    *    * ```    * // Preserve fragment from /results#top to /view#top    * router.navigate(['/view'], { preserveFragment: true });    * ```    */   preserveFragment?: boolean; }  /**  * @description  *  * Options that modify the `Router` navigation strategy.  * Supply an object containing any of these properties to a `Router` navigation function to  * control how the target URL should be constructed or interpreted.  *  * @see [Router.navigate() method](api/router/Router#navigate)  * @see [Router.navigateByUrl() method](api/router/Router#navigatebyurl)  * @see [Router.createUrlTree() method](api/router/Router#createurltree)  * @see [Routing and Navigation guide](guide/router)  * @see UrlCreationOptions  * @see NavigationBehaviorOptions  *  * @publicApi  */ export interface NavigationExtras extends UrlCreationOptions, NavigationBehaviorOptions {}  export type RestoredState = {   [k: string]: any,   // TODO(#27607): Remove `navigationId` and `ɵrouterPageId` and move to `ng` or `ɵ` namespace.   navigationId: number,   // The `ɵ` prefix is there to reduce the chance of colliding with any existing user properties on   // the history state.   ɵrouterPageId?: number, };  /**  * Information about a navigation operation.  * Retrieve the most recent navigation object with the  * [Router.getCurrentNavigation() method](api/router/Router#getcurrentnavigation) .  *  * * *id* : The unique identifier of the current navigation.  * * *initialUrl* : The target URL passed into the `Router#navigateByUrl()` call before navigation.  * This is the value before the router has parsed or applied redirects to it.  * * *extractedUrl* : The initial target URL after being parsed with `UrlSerializer.extract()`.  * * *finalUrl* : The extracted URL after redirects have been applied.  * This URL may not be available immediately, therefore this property can be `undefined`.  * It is guaranteed to be set after the `RoutesRecognized` event fires.  * * *trigger* : Identifies how this navigation was triggered.  * -- 'imperative'--Triggered by `router.navigateByUrl` or `router.navigate`.  * -- 'popstate'--Triggered by a popstate event.  * -- 'hashchange'--Triggered by a hashchange event.  * * *extras* : A `NavigationExtras` options object that controlled the strategy used for this  * navigation.  * * *previousNavigation* : The previously successful `Navigation` object. Only one previous  * navigation is available, therefore this previous `Navigation` object has a `null` value for its  * own `previousNavigation`.  *  * @publicApi  */ export interface Navigation {   /**    * The unique identifier of the current navigation.    */   id: number;   /**    * The target URL passed into the `Router#navigateByUrl()` call before navigation. This is    * the value before the router has parsed or applied redirects to it.    */   initialUrl: UrlTree;   /**    * The initial target URL after being parsed with `UrlHandlingStrategy.extract()`.    */   extractedUrl: UrlTree;   /**    * The extracted URL after redirects have been applied.    * This URL may not be available immediately, therefore this property can be `undefined`.    * It is guaranteed to be set after the `RoutesRecognized` event fires.    */   finalUrl?: UrlTree;   /**    * Identifies how this navigation was triggered.    *    * * 'imperative'--Triggered by `router.navigateByUrl` or `router.navigate`.    * * 'popstate'--Triggered by a popstate event.    * * 'hashchange'--Triggered by a hashchange event.    */   trigger: 'imperative'|'popstate'|'hashchange';   /**    * Options that controlled the strategy used for this navigation.    * See `NavigationExtras`.    */   extras: NavigationExtras;   /**    * The previously successful `Navigation` object. Only one previous navigation    * is available, therefore this previous `Navigation` object has a `null` value    * for its own `previousNavigation`.    */   previousNavigation: Navigation|null; }  export interface NavigationTransition {   id: number;   targetPageId: number;   currentUrlTree: UrlTree;   extractedUrl: UrlTree;   currentRawUrl: UrlTree;   urlAfterRedirects?: UrlTree;   rawUrl: UrlTree;   extras: NavigationExtras;   resolve: any;   reject: any;   promise: Promise<boolean>;   source: NavigationTrigger;   restoredState: RestoredState|null;   currentSnapshot: RouterStateSnapshot;   targetSnapshot: RouterStateSnapshot|null;   currentRouterState: RouterState;   targetRouterState: RouterState|null;   guards: Checks;   guardsResult: boolean|UrlTree|null; }  /**  * The interface from the Router needed by the transitions. Used to avoid a circular dependency on  * Router. This interface should be whittled down with future refactors. For example, we do not need  * to get `UrlSerializer` from the Router. We can instead inject it in `NavigationTransitions`  * directly.  */ interface InternalRouterInterface {   browserUrlTree: UrlTree;   currentUrlTree: UrlTree;   rawUrlTree: UrlTree;   readonly routerState: RouterState;   errorHandler: ErrorHandler;   titleStrategy?: TitleStrategy;   navigated: boolean;   urlHandlingStrategy: UrlHandlingStrategy;   routeReuseStrategy: RouteReuseStrategy;   onSameUrlNavigation: 'reload'|'ignore';   paramsInheritanceStrategy: 'emptyOnly'|'always';   urlUpdateStrategy: 'deferred'|'eager';   serializeUrl(url: UrlTree): string;   config: Routes;   setBrowserUrl(url: UrlTree, t: NavigationTransition): void;   restoreHistory(t: NavigationTransition, restoringFromCaughtError?: boolean): void;   scheduleNavigation(       rawUrl: UrlTree, source: NavigationTrigger, restoredState: RestoredState|null,       extras: NavigationExtras,       priorPromise?: {resolve: any, reject: any, promise: Promise<boolean>}): Promise<boolean>; }  @Injectable({providedIn: 'root'}) export class NavigationTransitions {   currentNavigation: Navigation|null = null;   lastSuccessfulNavigation: Navigation|null = null;   readonly events = new Subject<Event>();   private readonly configLoader = inject(RouterConfigLoader);   private readonly environmentInjector = inject(EnvironmentInjector);   private readonly urlSerializer = inject(UrlSerializer);   private readonly rootContexts = inject(ChildrenOutletContexts);   navigationId = 0;   get hasRequestedNavigation() {     return this.navigationId !== 0;   }   private transitions?: BehaviorSubject<NavigationTransition>;   /**    * Hook that enables you to pause navigation after the preactivation phase.    * Used by `RouterModule`.    *    * @internal    */   afterPreactivation: () => Observable<void> = () => of(void 0);   /** @internal */   rootComponentType: Type<any>|null = null;    constructor() {     const onLoadStart = (r: Route) => this.events.next(new RouteConfigLoadStart(r));     const onLoadEnd = (r: Route) => this.events.next(new RouteConfigLoadEnd(r));     this.configLoader.onLoadEndListener = onLoadEnd;     this.configLoader.onLoadStartListener = onLoadStart;   }    complete() {     this.transitions?.complete();   }    handleNavigationRequest(       request: Pick<           NavigationTransition,           'targetPageId'|'source'|'restoredState'|'currentUrlTree'|'currentRawUrl'|'rawUrl'|           'extras'|'resolve'|'reject'|'promise'|'currentSnapshot'|'currentRouterState'>) {     const id = ++this.navigationId;     this.transitions?.next({...this.transitions.value, ...request, id});   }    setupNavigations(router: InternalRouterInterface): Observable<NavigationTransition> {     this.transitions = new BehaviorSubject<NavigationTransition>({       id: 0,       targetPageId: 0,       currentUrlTree: router.currentUrlTree,       currentRawUrl: router.currentUrlTree,       extractedUrl: router.urlHandlingStrategy.extract(router.currentUrlTree),       urlAfterRedirects: router.urlHandlingStrategy.extract(router.currentUrlTree),       rawUrl: router.currentUrlTree,       extras: {},       resolve: null,       reject: null,       promise: Promise.resolve(true),       source: IMPERATIVE_NAVIGATION,       restoredState: null,       currentSnapshot: router.routerState.snapshot,       targetSnapshot: null,       currentRouterState: router.routerState,       targetRouterState: null,       guards: {canActivateChecks: [], canDeactivateChecks: []},       guardsResult: null,     });     return this.transitions.pipe(                filter(t => t.id !== 0),                 // Extract URL                map(t =>                        ({...t, extractedUrl: router.urlHandlingStrategy.extract(t.rawUrl)} as                         NavigationTransition)),                 // Using switchMap so we cancel executing navigations when a new one comes in                switchMap(overallTransitionState => {                  let completed = false;                  let errored = false;                  return of(overallTransitionState)                      .pipe(                          // Store the Navigation object                          tap(t => {                            this.currentNavigation = {                              id: t.id,                              initialUrl: t.rawUrl,                              extractedUrl: t.extractedUrl,                              trigger: t.source,                              extras: t.extras,                              previousNavigation: !this.lastSuccessfulNavigation ? null : {                                ...this.lastSuccessfulNavigation,                                previousNavigation: null,                              },                            };                          }),                          switchMap(t => {                            const browserUrlTree = router.browserUrlTree.toString();                            const urlTransition = !router.navigated ||                                t.extractedUrl.toString() !== browserUrlTree ||                                // Navigations which succeed or ones which fail and are cleaned up                                // correctly should result in `browserUrlTree` and `currentUrlTree`                                // matching. If this is not the case, assume something went wrong and                                // try processing the URL again.                                browserUrlTree !== router.currentUrlTree.toString();                              const onSameUrlNavigation =                                t.extras.onSameUrlNavigation ?? router.onSameUrlNavigation;                            if (!urlTransition && onSameUrlNavigation !== 'reload') {                              const reason = NG_DEV_MODE ?                                  `Navigation to ${                                      t.rawUrl} was ignored because it is the same as the current Router URL.` :                                  '';                              this.events.next(new NavigationSkipped(                                  t.id, router.serializeUrl(overallTransitionState.rawUrl), reason,                                  NavigationSkippedCode.IgnoredSameUrlNavigation));                              router.rawUrlTree = t.rawUrl;                              t.resolve(null);                              return EMPTY;                            }                             if (router.urlHandlingStrategy.shouldProcessUrl(t.rawUrl)) {                              // If the source of the navigation is from a browser event, the URL is                              // already updated. We already need to sync the internal state.                              if (isBrowserTriggeredNavigation(t.source)) {                                router.browserUrlTree = t.extractedUrl;                              }                              return of(t).pipe(                                  // Fire NavigationStart event                                  switchMap(t => {                                    const transition = this.transitions?.getValue();                                    this.events.next(new NavigationStart(                                        t.id, this.urlSerializer.serialize(t.extractedUrl), t.source,                                        t.restoredState));                                    if (transition !== this.transitions?.getValue()) {                                      return EMPTY;                                    }                                     // This delay is required to match old behavior that forced                                    // navigation to always be async                                    return Promise.resolve(t);                                  }),                                   // ApplyRedirects                                  applyRedirects(                                      this.environmentInjector, this.configLoader,                                      this.urlSerializer, router.config),                                   // Update the currentNavigation                                  // `urlAfterRedirects` is guaranteed to be set after this point                                  tap(t => {                                    this.currentNavigation = {                                      ...this.currentNavigation!,                                      finalUrl: t.urlAfterRedirects                                    };                                    overallTransitionState.urlAfterRedirects = t.urlAfterRedirects;                                  }),                                   // Recognize                                  recognize(                                      this.environmentInjector, this.rootComponentType,                                      router.config, this.urlSerializer,                                      router.paramsInheritanceStrategy),                                   // Update URL if in `eager` update mode                                  tap(t => {                                    overallTransitionState.targetSnapshot = t.targetSnapshot;                                    if (router.urlUpdateStrategy === 'eager') {                                      if (!t.extras.skipLocationChange) {                                        const rawUrl = router.urlHandlingStrategy.merge(                                            t.urlAfterRedirects!, t.rawUrl);                                        router.setBrowserUrl(rawUrl, t);                                      }                                      router.browserUrlTree = t.urlAfterRedirects!;                                    }                                     // Fire RoutesRecognized                                    const routesRecognized = new RoutesRecognized(                                        t.id, this.urlSerializer.serialize(t.extractedUrl),                                        this.urlSerializer.serialize(t.urlAfterRedirects!),                                        t.targetSnapshot!);                                    this.events.next(routesRecognized);                                  }));                            } else if (                                urlTransition &&                                router.urlHandlingStrategy.shouldProcessUrl(router.rawUrlTree)) {                              /* When the current URL shouldn't be processed, but the previous one                               * was, we handle this \"error condition\" by navigating to the                               * previously successful URL, but leaving the URL intact.*/                              const {id, extractedUrl, source, restoredState, extras} = t;                              const navStart = new NavigationStart(                                  id, this.urlSerializer.serialize(extractedUrl), source,                                  restoredState);                              this.events.next(navStart);                              const targetSnapshot =                                  createEmptyState(extractedUrl, this.rootComponentType).snapshot;                               overallTransitionState = {                                ...t,                                targetSnapshot,                                urlAfterRedirects: extractedUrl,                                extras: {...extras, skipLocationChange: false, replaceUrl: false},                              };                              return of(overallTransitionState);                            } else {                              /* When neither the current or previous URL can be processed, do                               * nothing other than update router's internal reference to the                               * current \"settled\" URL. This way the next navigation will be coming                               * from the current URL in the browser.                               */                              const reason = NG_DEV_MODE ?                                  `Navigation was ignored because the UrlHandlingStrategy` +                                      ` indicated neither the current URL ${                                          router.rawUrlTree} nor target URL ${                                          t.rawUrl} should be processed.` :                                  '';                              this.events.next(new NavigationSkipped(                                  t.id, router.serializeUrl(overallTransitionState.extractedUrl),                                  reason, NavigationSkippedCode.IgnoredByUrlHandlingStrategy));                              router.rawUrlTree = t.rawUrl;                              t.resolve(null);                              return EMPTY;                            }                          }),                           // --- GUARDS ---                          tap(t => {                            const guardsStart = new GuardsCheckStart(                                t.id, this.urlSerializer.serialize(t.extractedUrl),                                this.urlSerializer.serialize(t.urlAfterRedirects!),                                t.targetSnapshot!);                            this.events.next(guardsStart);                          }),                           map(t => {                            overallTransitionState = {                              ...t,                              guards: getAllRouteGuards(                                  t.targetSnapshot!, t.currentSnapshot, this.rootContexts)                            };                            return overallTransitionState;                          }),                           checkGuards(                              this.environmentInjector, (evt: Event) => this.events.next(evt)),                          tap(t => {                            overallTransitionState.guardsResult = t.guardsResult;                            if (isUrlTree(t.guardsResult)) {                              throw redirectingNavigationError(this.urlSerializer, t.guardsResult);                            }                             const guardsEnd = new GuardsCheckEnd(                                t.id, this.urlSerializer.serialize(t.extractedUrl),                                this.urlSerializer.serialize(t.urlAfterRedirects!),                                t.targetSnapshot!, !!t.guardsResult);                            this.events.next(guardsEnd);                          }),                           filter(t => {                            if (!t.guardsResult) {                              router.restoreHistory(t);                              this.cancelNavigationTransition(                                  t, '', NavigationCancellationCode.GuardRejected);                              return false;                            }                            return true;                          }),                           // --- RESOLVE ---                          switchTap(t => {                            if (t.guards.canActivateChecks.length) {                              return of(t).pipe(                                  tap(t => {                                    const resolveStart = new ResolveStart(                                        t.id, this.urlSerializer.serialize(t.extractedUrl),                                        this.urlSerializer.serialize(t.urlAfterRedirects!),                                        t.targetSnapshot!);                                    this.events.next(resolveStart);                                  }),                                  switchMap(t => {                                    let dataResolved = false;                                    return of(t).pipe(                                        resolveData(                                            router.paramsInheritanceStrategy,                                            this.environmentInjector),                                        tap({                                          next: () => dataResolved = true,                                          complete: () => {                                            if (!dataResolved) {                                              router.restoreHistory(t);                                              this.cancelNavigationTransition(                                                  t,                                                  NG_DEV_MODE ?                                                      `At least one route resolver didn't emit any value.` :                                                      '',                                                  NavigationCancellationCode.NoDataFromResolver);                                            }                                          }                                        }),                                    );                                  }),                                  tap(t => {                                    const resolveEnd = new ResolveEnd(                                        t.id, this.urlSerializer.serialize(t.extractedUrl),                                        this.urlSerializer.serialize(t.urlAfterRedirects!),                                        t.targetSnapshot!);                                    this.events.next(resolveEnd);                                  }));                            }                            return undefined;                          }),                           // --- LOAD COMPONENTS ---                          switchTap((t: NavigationTransition) => {                            const loadComponents =                                (route: ActivatedRouteSnapshot): Array<Observable<void>> => {                                  const loaders: Array<Observable<void>> = [];                                  if (route.routeConfig?.loadComponent &&                                      !route.routeConfig._loadedComponent) {                                    loaders.push(this.configLoader.loadComponent(route.routeConfig)                                                     .pipe(                                                         tap(loadedComponent => {                                                           route.component = loadedComponent;                                                         }),                                                         map(() => void 0),                                                         ));                                  }                                  for (const child of route.children) {                                    loaders.push(...loadComponents(child));                                  }                                  return loaders;                                };                            return combineLatest(loadComponents(t.targetSnapshot!.root))                                .pipe(defaultIfEmpty(), take(1));                          }),                           switchTap(() => this.afterPreactivation()),                           map((t: NavigationTransition) => {                            const targetRouterState = createRouterState(                                router.routeReuseStrategy, t.targetSnapshot!, t.currentRouterState);                            overallTransitionState = {...t, targetRouterState};                            return (overallTransitionState);                          }),                           /* Once here, we are about to activate synchronously. The assumption is                             this will succeed, and user code may read from the Router service.                             Therefore before activation, we need to update router properties storing                             the current URL and the RouterState, as well as updated the browser URL.                             All this should happen *before* activating. */                          tap((t: NavigationTransition) => {                            router.currentUrlTree = t.urlAfterRedirects!;                            router.rawUrlTree =                                router.urlHandlingStrategy.merge(t.urlAfterRedirects!, t.rawUrl);                             (router as {routerState: RouterState}).routerState =                                t.targetRouterState!;                             if (router.urlUpdateStrategy === 'deferred') {                              if (!t.extras.skipLocationChange) {                                router.setBrowserUrl(router.rawUrlTree, t);                              }                              router.browserUrlTree = t.urlAfterRedirects!;                            }                          }),                           activateRoutes(                              this.rootContexts, router.routeReuseStrategy,                              (evt: Event) => this.events.next(evt)),                           tap({                            next: (t: NavigationTransition) => {                              completed = true;                              this.lastSuccessfulNavigation = this.currentNavigation;                              router.navigated = true;                              this.events.next(new NavigationEnd(                                  t.id, this.urlSerializer.serialize(t.extractedUrl),                                  this.urlSerializer.serialize(router.currentUrlTree)));                              router.titleStrategy?.updateTitle(t.targetRouterState!.snapshot);                              t.resolve(true);                            },                            complete: () => {                              completed = true;                            }                          }),                          finalize(() => {                            /* When the navigation stream finishes either through error or success,                             * we set the `completed` or `errored` flag. However, there are some                             * situations where we could get here without either of those being set.                             * For instance, a redirect during NavigationStart. Therefore, this is a                             * catch-all to make sure the NavigationCancel event is fired when a                             * navigation gets cancelled but not caught by other means. */                            if (!completed && !errored) {                              const cancelationReason = NG_DEV_MODE ?                                  `Navigation ID ${                                      overallTransitionState                                          .id} is not equal to the current navigation id ${                                      this.navigationId}` :                                  '';                              this.cancelNavigationTransition(                                  overallTransitionState, cancelationReason,                                  NavigationCancellationCode.SupersededByNewNavigation);                            }                            // Only clear current navigation if it is still set to the one that                            // finalized.                            if (this.currentNavigation?.id === overallTransitionState.id) {                              this.currentNavigation = null;                            }                          }),                          catchError((e) => {                            errored = true;                            /* This error type is issued during Redirect, and is handled as a                             * cancellation rather than an error. */                            if (isNavigationCancelingError(e)) {                              if (!isRedirectingNavigationCancelingError(e)) {                                // Set property only if we're not redirecting. If we landed on a page                                // and redirect to `/` route, the new navigation is going to see the                                // `/` isn't a change from the default currentUrlTree and won't                                // navigate. This is only applicable with initial navigation, so                                // setting `navigated` only when not redirecting resolves this                                // scenario.                                router.navigated = true;                                router.restoreHistory(overallTransitionState, true);                              }                              const navCancel = new NavigationCancel(                                  overallTransitionState.id,                                  this.urlSerializer.serialize(overallTransitionState.extractedUrl),                                  e.message, e.cancellationCode);                              this.events.next(navCancel);                               // When redirecting, we need to delay resolving the navigation                              // promise and push it to the redirect navigation                              if (!isRedirectingNavigationCancelingError(e)) {                                overallTransitionState.resolve(false);                              } else {                                const mergedTree =                                    router.urlHandlingStrategy.merge(e.url, router.rawUrlTree);                                const extras = {                                  skipLocationChange:                                      overallTransitionState.extras.skipLocationChange,                                  // The URL is already updated at this point if we have 'eager' URL                                  // updates or if the navigation was triggered by the browser (back                                  // button, URL bar, etc). We want to replace that item in history                                  // if the navigation is rejected.                                  replaceUrl: router.urlUpdateStrategy === 'eager' ||                                      isBrowserTriggeredNavigation(overallTransitionState.source)                                };                                 router.scheduleNavigation(                                    mergedTree, IMPERATIVE_NAVIGATION, null, extras, {                                      resolve: overallTransitionState.resolve,                                      reject: overallTransitionState.reject,                                      promise: overallTransitionState.promise                                    });                              }                               /* All other errors should reset to the router's internal URL reference                               * to the pre-error state. */                            } else {                              router.restoreHistory(overallTransitionState, true);                              const navError = new NavigationError(                                  overallTransitionState.id,                                  this.urlSerializer.serialize(overallTransitionState.extractedUrl),                                  e, overallTransitionState.targetSnapshot ?? undefined);                              this.events.next(navError);                              try {                                overallTransitionState.resolve(router.errorHandler(e));                              } catch (ee) {                                overallTransitionState.reject(ee);                              }                            }                            return EMPTY;                          }));                  // casting because `pipe` returns observable({}) when called with 8+ arguments                })) as Observable<NavigationTransition>;   }    private cancelNavigationTransition(       t: NavigationTransition, reason: string, code: NavigationCancellationCode) {     const navCancel =         new NavigationCancel(t.id, this.urlSerializer.serialize(t.extractedUrl), reason, code);     this.events.next(navCancel);     t.resolve(false);   } }  export function isBrowserTriggeredNavigation(source: NavigationTrigger) {   return source !== IMPERATIVE_NAVIGATION; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {inject, Injectable} from '@angular/core'; import {Title} from '@angular/platform-browser';  import {ActivatedRouteSnapshot, RouterStateSnapshot} from './router_state'; import {PRIMARY_OUTLET, RouteTitleKey} from './shared';  /**  * Provides a strategy for setting the page title after a router navigation.  *  * The built-in implementation traverses the router state snapshot and finds the deepest primary  * outlet with `title` property. Given the `Routes` below, navigating to  * `/base/child(popup:aux)` would result in the document title being set to \"child\".  * ```  * [  *   {path: 'base', title: 'base', children: [  *     {path: 'child', title: 'child'},  *   ],  *   {path: 'aux', outlet: 'popup', title: 'popupTitle'}  * ]  * ```  *  * This class can be used as a base class for custom title strategies. That is, you can create your  * own class that extends the `TitleStrategy`. Note that in the above example, the `title`  * from the named outlet is never used. However, a custom strategy might be implemented to  * incorporate titles in named outlets.  *  * @publicApi  * @see [Page title guide](guide/router#setting-the-page-title)  */ @Injectable({providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy)}) export abstract class TitleStrategy {   /** Performs the application title update. */   abstract updateTitle(snapshot: RouterStateSnapshot): void;    /**    * @returns The `title` of the deepest primary route.    */   buildTitle(snapshot: RouterStateSnapshot): string|undefined {     let pageTitle: string|undefined;     let route: ActivatedRouteSnapshot|undefined = snapshot.root;     while (route !== undefined) {       pageTitle = this.getResolvedTitleForRoute(route) ?? pageTitle;       route = route.children.find(child => child.outlet === PRIMARY_OUTLET);     }     return pageTitle;   }    /**    * Given an `ActivatedRouteSnapshot`, returns the final value of the    * `Route.title` property, which can either be a static string or a resolved value.    */   getResolvedTitleForRoute(snapshot: ActivatedRouteSnapshot) {     return snapshot.data[RouteTitleKey];   } }  /**  * The default `TitleStrategy` used by the router that updates the title using the `Title` service.  */ @Injectable({providedIn: 'root'}) export class DefaultTitleStrategy extends TitleStrategy {   constructor(readonly title: Title) {     super();   }    /**    * Sets the title of the browser to the given value.    *    * @param title The `pageTitle` from the deepest primary route.    */   override updateTitle(snapshot: RouterStateSnapshot): void {     const title = this.buildTitle(snapshot);     if (title !== undefined) {       this.title.setTitle(title);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ComponentRef, inject, Injectable} from '@angular/core';  import {OutletContext} from './router_outlet_context'; import {ActivatedRoute, ActivatedRouteSnapshot} from './router_state'; import {TreeNode} from './utils/tree';  /**  * @description  *  * Represents the detached route tree.  *  * This is an opaque value the router will give to a custom route reuse strategy  * to store and retrieve later on.  *  * @publicApi  */ export type DetachedRouteHandle = {};  /** @internal */ export type DetachedRouteHandleInternal = {   contexts: Map<string, OutletContext>,   componentRef: ComponentRef<any>,   route: TreeNode<ActivatedRoute>, };  /**  * @description  *  * Provides a way to customize when activated routes get reused.  *  * @publicApi  */ @Injectable({providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy)}) export abstract class RouteReuseStrategy {   /** Determines if this route (and its subtree) should be detached to be reused later */   abstract shouldDetach(route: ActivatedRouteSnapshot): boolean;    /**    * Stores the detached route.    *    * Storing a `null` value should erase the previously stored value.    */   abstract store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle|null): void;    /** Determines if this route (and its subtree) should be reattached */   abstract shouldAttach(route: ActivatedRouteSnapshot): boolean;    /** Retrieves the previously stored route */   abstract retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle|null;    /** Determines if a route should be reused */   abstract shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean; }  /**  * @description  *  * This base route reuse strategy only reuses routes when the matched router configs are  * identical. This prevents components from being destroyed and recreated  * when just the route parameters, query parameters or fragment change  * (that is, the existing component is _reused_).  *  * This strategy does not store any routes for later reuse.  *  * Angular uses this strategy by default.  *  *  * It can be used as a base class for custom route reuse strategies, i.e. you can create your own  * class that extends the `BaseRouteReuseStrategy` one.  * @publicApi  */ export abstract class BaseRouteReuseStrategy implements RouteReuseStrategy {   /**    * Whether the given route should detach for later reuse.    * Always returns false for `BaseRouteReuseStrategy`.    * */   shouldDetach(route: ActivatedRouteSnapshot): boolean {     return false;   }    /**    * A no-op; the route is never stored since this strategy never detaches routes for later re-use.    */   store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle): void {}    /** Returns `false`, meaning the route (and its subtree) is never reattached */   shouldAttach(route: ActivatedRouteSnapshot): boolean {     return false;   }    /** Returns `null` because this strategy does not store routes for later re-use. */   retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle|null {     return null;   }    /**    * Determines if a route should be reused.    * This strategy returns `true` when the future route config and current route config are    * identical.    */   shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {     return future.routeConfig === curr.routeConfig;   } }  @Injectable({providedIn: 'root'}) export class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy { } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken} from '@angular/core';  import {OnSameUrlNavigation} from './models'; import {UrlSerializer, UrlTree} from './url_tree';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  /**  * Error handler that is invoked when a navigation error occurs.  *  * If the handler returns a value, the navigation Promise is resolved with this value.  * If the handler throws an exception, the navigation Promise is rejected with  * the exception.  *  * @publicApi  * @deprecated Subscribe to the `Router` events and watch for `NavigationError` instead.  */ export type ErrorHandler = (error: any) => any;  /**  * Allowed values in an `ExtraOptions` object that configure  * when the router performs the initial navigation operation.  *  * * 'enabledNonBlocking' - (default) The initial navigation starts after the  * root component has been created. The bootstrap is not blocked on the completion of the initial  * navigation.  * * 'enabledBlocking' - The initial navigation starts before the root component is created.  * The bootstrap is blocked until the initial navigation is complete. This value is required  * for [server-side rendering](guide/universal) to work.  * * 'disabled' - The initial navigation is not performed. The location listener is set up before  * the root component gets created. Use if there is a reason to have  * more control over when the router starts its initial navigation due to some complex  * initialization logic.  *  * @see `forRoot()`  *  * @publicApi  */ export type InitialNavigation = 'disabled'|'enabledBlocking'|'enabledNonBlocking';  /**  * Extra configuration options that can be used with the `withRouterConfig` function.  *  * @publicApi  */ export interface RouterConfigOptions {   /**    * Configures how the Router attempts to restore state when a navigation is cancelled.    *    * 'replace' - Always uses `location.replaceState` to set the browser state to the state of the    * router before the navigation started. This means that if the URL of the browser is updated    * _before_ the navigation is canceled, the Router will simply replace the item in history rather    * than trying to restore to the previous location in the session history. This happens most    * frequently with `urlUpdateStrategy: 'eager'` and navigations with the browser back/forward    * buttons.    *    * 'computed' - Will attempt to return to the same index in the session history that corresponds    * to the Angular route when the navigation gets cancelled. For example, if the browser back    * button is clicked and the navigation is cancelled, the Router will trigger a forward navigation    * and vice versa.    *    * Note: the 'computed' option is incompatible with any `UrlHandlingStrategy` which only    * handles a portion of the URL because the history restoration navigates to the previous place in    * the browser history rather than simply resetting a portion of the URL.    *    * The default value is `replace` when not set.    */   canceledNavigationResolution?: 'replace'|'computed';    /**    * Configures the default for handling a navigation request to the current URL.    *    * If unset, the `Router` will use `'ignore'`.    *    * @see `OnSameUrlNavigation`    */   onSameUrlNavigation?: OnSameUrlNavigation;    /**    * Defines how the router merges parameters, data, and resolved data from parent to child    * routes. By default ('emptyOnly'), inherits parent parameters only for    * path-less or component-less routes.    *    * Set to 'always' to enable unconditional inheritance of parent parameters.    *    * Note that when dealing with matrix parameters, \"parent\" refers to the parent `Route`    * config which does not necessarily mean the \"URL segment to the left\". When the `Route` `path`    * contains multiple segments, the matrix parameters must appear on the last segment. For example,    * matrix parameters for `{path: 'a/b', component: MyComp}` should appear as `a/b;foo=bar` and not    * `a;foo=bar/b`.    *    */   paramsInheritanceStrategy?: 'emptyOnly'|'always';    /**    * Defines when the router updates the browser URL. By default ('deferred'),    * update after successful navigation.    * Set to 'eager' if prefer to update the URL at the beginning of navigation.    * Updating the URL early allows you to handle a failure of navigation by    * showing an error message with the URL that failed.    */   urlUpdateStrategy?: 'deferred'|'eager'; }  /**  * Configuration options for the scrolling feature which can be used with `withInMemoryScrolling`  * function.  *  * @publicApi  */ export interface InMemoryScrollingOptions {   /**    * When set to 'enabled', scrolls to the anchor element when the URL has a fragment.    * Anchor scrolling is disabled by default.    *    * Anchor scrolling does not happen on 'popstate'. Instead, we restore the position    * that we stored or scroll to the top.    */   anchorScrolling?: 'disabled'|'enabled';    /**    * Configures if the scroll position needs to be restored when navigating back.    *    * * 'disabled'- (Default) Does nothing. Scroll position is maintained on navigation.    * * 'top'- Sets the scroll position to x = 0, y = 0 on all navigation.    * * 'enabled'- Restores the previous scroll position on backward navigation, else sets the    * position to the anchor if one is provided, or sets the scroll position to [0, 0] (forward    * navigation). This option will be the default in the future.    *    * You can implement custom scroll restoration behavior by adapting the enabled behavior as    * in the following example.    *    * ```typescript    * class AppComponent {    *   movieData: any;    *    *   constructor(private router: Router, private viewportScroller: ViewportScroller,    * changeDetectorRef: ChangeDetectorRef) {    *   router.events.pipe(filter((event: Event): event is Scroll => event instanceof Scroll)    *     ).subscribe(e => {    *       fetch('http://example.com/movies.json').then(response => {    *         this.movieData = response.json();    *         // update the template with the data before restoring scroll    *         changeDetectorRef.detectChanges();    *    *         if (e.position) {    *           viewportScroller.scrollToPosition(e.position);    *         }    *       });    *     });    *   }    * }    * ```    */   scrollPositionRestoration?: 'disabled'|'enabled'|'top'; }  /**  * A set of configuration options for a router module, provided in the  * `forRoot()` method.  *  * @see `forRoot()`  *  *  * @publicApi  */ export interface ExtraOptions extends InMemoryScrollingOptions, RouterConfigOptions {   /**    * When true, log all internal navigation events to the console.    * Use for debugging.    */   enableTracing?: boolean;    /**    * When true, enable the location strategy that uses the URL fragment    * instead of the history API.    */   useHash?: boolean;    /**    * One of `enabled`, `enabledBlocking`, `enabledNonBlocking` or `disabled`.    * When set to `enabled` or `enabledBlocking`, the initial navigation starts before the root    * component is created. The bootstrap is blocked until the initial navigation is complete. This    * value is required for [server-side rendering](guide/universal) to work. When set to    * `enabledNonBlocking`, the initial navigation starts after the root component has been created.    * The bootstrap is not blocked on the completion of the initial navigation. When set to    * `disabled`, the initial navigation is not performed. The location listener is set up before the    * root component gets created. Use if there is a reason to have more control over when the router    * starts its initial navigation due to some complex initialization logic.    */   initialNavigation?: InitialNavigation;    /**    * A custom error handler for failed navigations.    * If the handler returns a value, the navigation Promise is resolved with this value.    * If the handler throws an exception, the navigation Promise is rejected with the exception.    *    * @deprecated Subscribe to the `Router` events and watch for `NavigationError` instead.    */   errorHandler?: (error: any) => any;    /**    * Configures a preloading strategy.    * One of `PreloadAllModules` or `NoPreloading` (the default).    */   preloadingStrategy?: any;    /**    * Configures the scroll offset the router will use when scrolling to an element.    *    * When given a tuple with x and y position value,    * the router uses that offset each time it scrolls.    * When given a function, the router invokes the function every time    * it restores scroll position.    */   scrollOffset?: [number, number]|(() => [number, number]);    /**    * A custom handler for malformed URI errors. The handler is invoked when `encodedURI` contains    * invalid character sequences.    * The default implementation is to redirect to the root URL, dropping    * any path or parameter information. The function takes three parameters:    *    * - `'URIError'` - Error thrown when parsing a bad URL.    * - `'UrlSerializer'` - UrlSerializer that’s configured with the router.    * - `'url'` -  The malformed URL that caused the URIError    *    * @deprecated URI parsing errors should be handled in the `UrlSerializer` instead.    * */   malformedUriErrorHandler?:       (error: URIError, urlSerializer: UrlSerializer, url: string) => UrlTree; }  /**  * A [DI token](guide/glossary/#di-token) for the router service.  *  * @publicApi  */ export const ROUTER_CONFIGURATION =     new InjectionToken<ExtraOptions>(NG_DEV_MODE ? 'router config' : '', {       providedIn: 'root',       factory: () => ({}),     }); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {inject, Injectable} from '@angular/core';  import {UrlTree} from './url_tree';  /**  * @description  *  * Provides a way to migrate AngularJS applications to Angular.  *  * @publicApi  */ @Injectable({providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy)}) export abstract class UrlHandlingStrategy {   /**    * Tells the router if this URL should be processed.    *    * When it returns true, the router will execute the regular navigation.    * When it returns false, the router will set the router state to an empty state.    * As a result, all the active components will be destroyed.    *    */   abstract shouldProcessUrl(url: UrlTree): boolean;    /**    * Extracts the part of the URL that should be handled by the router.    * The rest of the URL will remain untouched.    */   abstract extract(url: UrlTree): UrlTree;    /**    * Merges the URL fragment with the rest of the URL.    */   abstract merge(newUrlPart: UrlTree, rawUrl: UrlTree): UrlTree; }  /**  * @publicApi  */ @Injectable({providedIn: 'root'}) export class DefaultUrlHandlingStrategy implements UrlHandlingStrategy {   shouldProcessUrl(url: UrlTree): boolean {     return true;   }   extract(url: UrlTree): UrlTree {     return url;   }   merge(newUrlPart: UrlTree, wholeUrl: UrlTree): UrlTree {     return newUrlPart;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Location} from '@angular/common'; import {inject, Injectable, NgZone, Type, ɵConsole as Console, ɵRuntimeError as RuntimeError} from '@angular/core'; import {Observable, of, SubscriptionLike} from 'rxjs';  import {CreateUrlTreeStrategy} from './create_url_tree_strategy'; import {RuntimeErrorCode} from './errors'; import {Event, IMPERATIVE_NAVIGATION, NavigationTrigger} from './events'; import {NavigationBehaviorOptions, OnSameUrlNavigation, Routes} from './models'; import {Navigation, NavigationExtras, NavigationTransition, NavigationTransitions, RestoredState, UrlCreationOptions} from './navigation_transition'; import {TitleStrategy} from './page_title_strategy'; import {RouteReuseStrategy} from './route_reuse_strategy'; import {ROUTER_CONFIGURATION} from './router_config'; import {ROUTES} from './router_config_loader'; import {createEmptyState, RouterState} from './router_state'; import {Params} from './shared'; import {UrlHandlingStrategy} from './url_handling_strategy'; import {containsTree, IsActiveMatchOptions, isUrlTree, UrlSerializer, UrlTree} from './url_tree'; import {flatten} from './utils/collection'; import {standardizeConfig, validateConfig} from './utils/config';   const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  function defaultErrorHandler(error: any): any {   throw error; }  function defaultMalformedUriErrorHandler(     error: URIError, urlSerializer: UrlSerializer, url: string): UrlTree {   return urlSerializer.parse('/'); }  /**  * The equivalent `IsActiveMatchOptions` options for `Router.isActive` is called with `true`  * (exact = true).  */ export const exactMatchOptions: IsActiveMatchOptions = {   paths: 'exact',   fragment: 'ignored',   matrixParams: 'ignored',   queryParams: 'exact' };  /**  * The equivalent `IsActiveMatchOptions` options for `Router.isActive` is called with `false`  * (exact = false).  */ export const subsetMatchOptions: IsActiveMatchOptions = {   paths: 'subset',   fragment: 'ignored',   matrixParams: 'ignored',   queryParams: 'subset' };  /**  * @description  *  * A service that provides navigation among views and URL manipulation capabilities.  *  * @see `Route`.  * @see [Routing and Navigation Guide](guide/router).  *  * @ngModule RouterModule  *  * @publicApi  */ @Injectable({providedIn: 'root'}) export class Router {   /**    * Represents the activated `UrlTree` that the `Router` is configured to handle (through    * `UrlHandlingStrategy`). That is, after we find the route config tree that we're going to    * activate, run guards, and are just about to activate the route, we set the currentUrlTree.    *    * This should match the `browserUrlTree` when a navigation succeeds. If the    * `UrlHandlingStrategy.shouldProcessUrl` is `false`, only the `browserUrlTree` is updated.    * @internal    */   currentUrlTree: UrlTree;   /**    * Meant to represent the entire browser url after a successful navigation. In the life of a    * navigation transition:    * 1. The rawUrl represents the full URL that's being navigated to    * 2. We apply redirects, which might only apply to _part_ of the URL (due to    * `UrlHandlingStrategy`).    * 3. Right before activation (because we assume activation will succeed), we update the    * rawUrlTree to be a combination of the urlAfterRedirects (again, this might only apply to part    * of the initial url) and the rawUrl of the transition (which was the original navigation url in    * its full form).    * @internal    *    * Note that this is _only_ here to support `UrlHandlingStrategy.extract` and    * `UrlHandlingStrategy.shouldProcessUrl`. If those didn't exist, we could get by with    * `currentUrlTree` alone. If a new Router were to be provided (i.e. one that works with the    * browser navigation API), we should think about whether this complexity should be carried over.    *    * - extract: `rawUrlTree` is needed because `extract` may only return part    * of the navigation URL. Thus, `currentUrlTree` may only represent _part_ of the browser URL.    * When a navigation gets cancelled and we need to reset the URL or a new navigation occurs, we    * need to know the _whole_ browser URL, not just the part handled by UrlHandlingStrategy.    * - shouldProcessUrl: When this returns `false`, the router just ignores the navigation but still    * updates the `rawUrlTree` with the assumption that the navigation was caused by the location    * change listener due to a URL update by the AngularJS router. In this case, we still need to    * know what the browser's URL is for future navigations.    *    */   rawUrlTree: UrlTree;   /**    * Meant to represent the part of the browser url that the `Router` is set up to handle (via the    * `UrlHandlingStrategy`). This value is updated immediately after the browser url is updated (or    * the browser url update is skipped via `skipLocationChange`). With that, note that    * `browserUrlTree` _may not_ reflect the actual browser URL for two reasons:    *    * 1. `UrlHandlingStrategy` only handles part of the URL    * 2. `skipLocationChange` does not update the browser url.    *    * So to reiterate, `browserUrlTree` only represents the Router's internal understanding of the    * current route, either before guards with `urlUpdateStrategy === 'eager'` or right before    * activation with `'deferred'`.    *    * This should match the `currentUrlTree` when the navigation succeeds.    * @internal    */   browserUrlTree: UrlTree;   private disposed = false;    private locationSubscription?: SubscriptionLike;   // TODO(b/260747083): This should not exist and navigationId should be private in   // `NavigationTransitions`   private get navigationId() {     return this.navigationTransitions.navigationId;   }    /**    * The id of the currently active page in the router.    * Updated to the transition's target id on a successful navigation.    *    * This is used to track what page the router last activated. When an attempted navigation fails,    * the router can then use this to compute how to restore the state back to the previously active    * page.    */   private currentPageId: number = 0;   /**    * The ɵrouterPageId of whatever page is currently active in the browser history. This is    * important for computing the target page id for new navigations because we need to ensure each    * page id in the browser history is 1 more than the previous entry.    */   private get browserPageId(): number|undefined {     return (this.location.getState() as RestoredState | null)?.ɵrouterPageId;   }   private console = inject(Console);   private isNgZoneEnabled: boolean = false;    /**    * An event stream for routing events.    */   public get events(): Observable<Event> {     // TODO(atscott): This _should_ be events.asObservable(). However, this change requires internal     // cleanup: tests are doing `(route.events as Subject<Event>).next(...)`. This isn't     // allowed/supported but we still have to fix these or file bugs against the teams before making     // the change.     return this.navigationTransitions.events;   }   /**    * The current state of routing in this NgModule.    */   public readonly routerState: RouterState;    private options = inject(ROUTER_CONFIGURATION, {optional: true}) || {};    /**    * A handler for navigation errors in this NgModule.    *    * @deprecated Subscribe to the `Router` events and watch for `NavigationError` instead.    *   `provideRouter` has the `withNavigationErrorHandler` feature to make this easier.    * @see `withNavigationErrorHandler`    */   errorHandler = this.options.errorHandler || defaultErrorHandler;    /**    * A handler for errors thrown by `Router.parseUrl(url)`    * when `url` contains an invalid character.    * The most common case is a `%` sign    * that's not encoded and is not part of a percent encoded sequence.    *    * @deprecated URI parsing errors should be handled in the `UrlSerializer`.    *    * @see `RouterModule`    */   malformedUriErrorHandler =       this.options.malformedUriErrorHandler || defaultMalformedUriErrorHandler;    /**    * True if at least one navigation event has occurred,    * false otherwise.    */   navigated: boolean = false;   private lastSuccessfulId: number = -1;    /**    * A strategy for extracting and merging URLs.    * Used for AngularJS to Angular migrations.    *    * @deprecated Configure using `providers` instead:    *   `{provide: UrlHandlingStrategy, useClass: MyStrategy}`.    */   urlHandlingStrategy = inject(UrlHandlingStrategy);    /**    * A strategy for re-using routes.    *    * @deprecated Configure using `providers` instead:    *   `{provide: RouteReuseStrategy, useClass: MyStrategy}`.    */   routeReuseStrategy = inject(RouteReuseStrategy);    /** Strategy used to create a UrlTree. */   private readonly urlCreationStrategy = inject(CreateUrlTreeStrategy);    /**    * A strategy for setting the title based on the `routerState`.    *    * @deprecated Configure using `providers` instead:    *   `{provide: TitleStrategy, useClass: MyStrategy}`.    */   titleStrategy?: TitleStrategy = inject(TitleStrategy);    /**    * How to handle a navigation request to the current URL.    *    *    * @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.    * @see `withRouterConfig`    * @see `provideRouter`    * @see `RouterModule`    */   onSameUrlNavigation: OnSameUrlNavigation = this.options.onSameUrlNavigation || 'ignore';    /**    * How to merge parameters, data, resolved data, and title from parent to child    * routes. One of:    *    * - `'emptyOnly'` : Inherit parent parameters, data, and resolved data    * for path-less or component-less routes.    * - `'always'` : Inherit parent parameters, data, and resolved data    * for all child routes.    *    * @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.    * @see `withRouterConfig`    * @see `provideRouter`    * @see `RouterModule`    */   paramsInheritanceStrategy: 'emptyOnly'|'always' =       this.options.paramsInheritanceStrategy || 'emptyOnly';    /**    * Determines when the router updates the browser URL.    * By default (`\"deferred\"`), updates the browser URL after navigation has finished.    * Set to `'eager'` to update the browser URL at the beginning of navigation.    * You can choose to update early so that, if navigation fails,    * you can show an error message with the URL that failed.    *    * @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.    * @see `withRouterConfig`    * @see `provideRouter`    * @see `RouterModule`    */   urlUpdateStrategy: 'deferred'|'eager' = this.options.urlUpdateStrategy || 'deferred';    /**    * Configures how the Router attempts to restore state when a navigation is cancelled.    *    * 'replace' - Always uses `location.replaceState` to set the browser state to the state of the    * router before the navigation started. This means that if the URL of the browser is updated    * _before_ the navigation is canceled, the Router will simply replace the item in history rather    * than trying to restore to the previous location in the session history. This happens most    * frequently with `urlUpdateStrategy: 'eager'` and navigations with the browser back/forward    * buttons.    *    * 'computed' - Will attempt to return to the same index in the session history that corresponds    * to the Angular route when the navigation gets cancelled. For example, if the browser back    * button is clicked and the navigation is cancelled, the Router will trigger a forward navigation    * and vice versa.    *    * Note: the 'computed' option is incompatible with any `UrlHandlingStrategy` which only    * handles a portion of the URL because the history restoration navigates to the previous place in    * the browser history rather than simply resetting a portion of the URL.    *    * The default value is `replace`.    *    * @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.    * @see `withRouterConfig`    * @see `provideRouter`    * @see `RouterModule`    */   canceledNavigationResolution: 'replace'|'computed' =       this.options.canceledNavigationResolution || 'replace';    config: Routes = flatten(inject(ROUTES, {optional: true}) ?? []);    private readonly navigationTransitions = inject(NavigationTransitions);   private readonly urlSerializer = inject(UrlSerializer);   private readonly location = inject(Location);    constructor() {     this.isNgZoneEnabled = inject(NgZone) instanceof NgZone && NgZone.isInAngularZone();      this.resetConfig(this.config);     this.currentUrlTree = new UrlTree();     this.rawUrlTree = this.currentUrlTree;     this.browserUrlTree = this.currentUrlTree;      this.routerState = createEmptyState(this.currentUrlTree, null);      this.navigationTransitions.setupNavigations(this).subscribe(         t => {           this.lastSuccessfulId = t.id;           this.currentPageId = t.targetPageId;         },         e => {           this.console.warn(`Unhandled Navigation Error: ${e}`);         });   }    /** @internal */   resetRootComponentType(rootComponentType: Type<any>): void {     // TODO: vsavkin router 4.0 should make the root component set to null     // this will simplify the lifecycle of the router.     this.routerState.root.component = rootComponentType;     this.navigationTransitions.rootComponentType = rootComponentType;   }    /**    * Sets up the location change listener and performs the initial navigation.    */   initialNavigation(): void {     this.setUpLocationChangeListener();     if (!this.navigationTransitions.hasRequestedNavigation) {       const state = this.location.getState() as RestoredState;       this.navigateToSyncWithBrowser(this.location.path(true), IMPERATIVE_NAVIGATION, state);     }   }    /**    * Sets up the location change listener. This listener detects navigations triggered from outside    * the Router (the browser back/forward buttons, for example) and schedules a corresponding Router    * navigation so that the correct events, guards, etc. are triggered.    */   setUpLocationChangeListener(): void {     // Don't need to use Zone.wrap any more, because zone.js     // already patch onPopState, so location change callback will     // run into ngZone     if (!this.locationSubscription) {       this.locationSubscription = this.location.subscribe(event => {         const source = event['type'] === 'popstate' ? 'popstate' : 'hashchange';         if (source === 'popstate') {           // The `setTimeout` was added in #12160 and is likely to support Angular/AngularJS           // hybrid apps.           setTimeout(() => {             this.navigateToSyncWithBrowser(event['url']!, source, event.state);           }, 0);         }       });     }   }    /**    * Schedules a router navigation to synchronize Router state with the browser state.    *    * This is done as a response to a popstate event and the initial navigation. These    * two scenarios represent times when the browser URL/state has been updated and    * the Router needs to respond to ensure its internal state matches.    */   private navigateToSyncWithBrowser(       url: string, source: NavigationTrigger, state: RestoredState|undefined) {     const extras: NavigationExtras = {replaceUrl: true};      // TODO: restoredState should always include the entire state, regardless     // of navigationId. This requires a breaking change to update the type on     // NavigationStart’s restoredState, which currently requires navigationId     // to always be present. The Router used to only restore history state if     // a navigationId was present.      // The stored navigationId is used by the RouterScroller to retrieve the scroll     // position for the page.     const restoredState = state?.navigationId ? state : null;      // Separate to NavigationStart.restoredState, we must also restore the state to     // history.state and generate a new navigationId, since it will be overwritten     if (state) {       const stateCopy = {...state} as Partial<RestoredState>;       delete stateCopy.navigationId;       delete stateCopy.ɵrouterPageId;       if (Object.keys(stateCopy).length !== 0) {         extras.state = stateCopy;       }     }      const urlTree = this.parseUrl(url);     this.scheduleNavigation(urlTree, source, restoredState, extras);   }    /** The current URL. */   get url(): string {     return this.serializeUrl(this.currentUrlTree);   }    /**    * Returns the current `Navigation` object when the router is navigating,    * and `null` when idle.    */   getCurrentNavigation(): Navigation|null {     return this.navigationTransitions.currentNavigation;   }    /**    * Resets the route configuration used for navigation and generating links.    *    * @param config The route array for the new configuration.    *    * @usageNotes    *    * ```    * router.resetConfig([    *  { path: 'team/:id', component: TeamCmp, children: [    *    { path: 'simple', component: SimpleCmp },    *    { path: 'user/:name', component: UserCmp }    *  ]}    * ]);    * ```    */   resetConfig(config: Routes): void {     NG_DEV_MODE && validateConfig(config);     this.config = config.map(standardizeConfig);     this.navigated = false;     this.lastSuccessfulId = -1;   }    /** @nodoc */   ngOnDestroy(): void {     this.dispose();   }    /** Disposes of the router. */   dispose(): void {     this.navigationTransitions.complete();     if (this.locationSubscription) {       this.locationSubscription.unsubscribe();       this.locationSubscription = undefined;     }     this.disposed = true;   }    /**    * Appends URL segments to the current URL tree to create a new URL tree.    *    * @param commands An array of URL fragments with which to construct the new URL tree.    * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path    * segments, followed by the parameters for each segment.    * The fragments are applied to the current URL tree or the one provided  in the `relativeTo`    * property of the options object, if supplied.    * @param navigationExtras Options that control the navigation strategy.    * @returns The new URL tree.    *    * @usageNotes    *    * ```    * // create /team/33/user/11    * router.createUrlTree(['/team', 33, 'user', 11]);    *    * // create /team/33;expand=true/user/11    * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);    *    * // you can collapse static segments like this (this works only with the first passed-in value):    * router.createUrlTree(['/team/33/user', userId]);    *    * // If the first segment can contain slashes, and you do not want the router to split it,    * // you can do the following:    * router.createUrlTree([{segmentPath: '/one/two'}]);    *    * // create /team/33/(user/11//right:chat)    * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: 'chat'}}]);    *    * // remove the right secondary node    * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: null}}]);    *    * // assuming the current url is `/team/33/user/11` and the route points to `user/11`    *    * // navigate to /team/33/user/11/details    * router.createUrlTree(['details'], {relativeTo: route});    *    * // navigate to /team/33/user/22    * router.createUrlTree(['../22'], {relativeTo: route});    *    * // navigate to /team/44/user/22    * router.createUrlTree(['../../team/44/user/22'], {relativeTo: route});    *    * Note that a value of `null` or `undefined` for `relativeTo` indicates that the    * tree should be created relative to the root.    * ```    */   createUrlTree(commands: any[], navigationExtras: UrlCreationOptions = {}): UrlTree {     const {relativeTo, queryParams, fragment, queryParamsHandling, preserveFragment} =         navigationExtras;     const f = preserveFragment ? this.currentUrlTree.fragment : fragment;     let q: Params|null = null;     switch (queryParamsHandling) {       case 'merge':         q = {...this.currentUrlTree.queryParams, ...queryParams};         break;       case 'preserve':         q = this.currentUrlTree.queryParams;         break;       default:         q = queryParams || null;     }     if (q !== null) {       q = this.removeEmptyProps(q);     }     return this.urlCreationStrategy.createUrlTree(         relativeTo, this.routerState, this.currentUrlTree, commands, q, f ?? null);   }    /**    * Navigates to a view using an absolute route path.    *    * @param url An absolute path for a defined route. The function does not apply any delta to the    *     current URL.    * @param extras An object containing properties that modify the navigation strategy.    *    * @returns A Promise that resolves to 'true' when navigation succeeds,    * to 'false' when navigation fails, or is rejected on error.    *    * @usageNotes    *    * The following calls request navigation to an absolute path.    *    * ```    * router.navigateByUrl(\"/team/33/user/11\");    *    * // Navigate without updating the URL    * router.navigateByUrl(\"/team/33/user/11\", { skipLocationChange: true });    * ```    *    * @see [Routing and Navigation guide](guide/router)    *    */   navigateByUrl(url: string|UrlTree, extras: NavigationBehaviorOptions = {     skipLocationChange: false   }): Promise<boolean> {     if (NG_DEV_MODE) {       if (this.isNgZoneEnabled && !NgZone.isInAngularZone()) {         this.console.warn(             `Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?`);       }       if (url instanceof UrlTree && url._warnIfUsedForNavigation) {         this.console.warn(url._warnIfUsedForNavigation);       }     }      const urlTree = isUrlTree(url) ? url : this.parseUrl(url);     const mergedTree = this.urlHandlingStrategy.merge(urlTree, this.rawUrlTree);      return this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras);   }    /**    * Navigate based on the provided array of commands and a starting point.    * If no starting route is provided, the navigation is absolute.    *    * @param commands An array of URL fragments with which to construct the target URL.    * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path    * segments, followed by the parameters for each segment.    * The fragments are applied to the current URL or the one provided  in the `relativeTo` property    * of the options object, if supplied.    * @param extras An options object that determines how the URL should be constructed or    *     interpreted.    *    * @returns A Promise that resolves to `true` when navigation succeeds, to `false` when navigation    *     fails,    * or is rejected on error.    *    * @usageNotes    *    * The following calls request navigation to a dynamic route path relative to the current URL.    *    * ```    * router.navigate(['team', 33, 'user', 11], {relativeTo: route});    *    * // Navigate without updating the URL, overriding the default behavior    * router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true});    * ```    *    * @see [Routing and Navigation guide](guide/router)    *    */   navigate(commands: any[], extras: NavigationExtras = {skipLocationChange: false}):       Promise<boolean> {     validateCommands(commands);     return this.navigateByUrl(this.createUrlTree(commands, extras), extras);   }    /** Serializes a `UrlTree` into a string */   serializeUrl(url: UrlTree): string {     return this.urlSerializer.serialize(url);   }    /** Parses a string into a `UrlTree` */   parseUrl(url: string): UrlTree {     let urlTree: UrlTree;     try {       urlTree = this.urlSerializer.parse(url);     } catch (e) {       urlTree = this.malformedUriErrorHandler(e as URIError, this.urlSerializer, url);     }     return urlTree;   }    /**    * Returns whether the url is activated.    *    * @deprecated    * Use `IsActiveMatchOptions` instead.    *    * - The equivalent `IsActiveMatchOptions` for `true` is    * `{paths: 'exact', queryParams: 'exact', fragment: 'ignored', matrixParams: 'ignored'}`.    * - The equivalent for `false` is    * `{paths: 'subset', queryParams: 'subset', fragment: 'ignored', matrixParams: 'ignored'}`.    */   isActive(url: string|UrlTree, exact: boolean): boolean;   /**    * Returns whether the url is activated.    */   isActive(url: string|UrlTree, matchOptions: IsActiveMatchOptions): boolean;   /** @internal */   isActive(url: string|UrlTree, matchOptions: boolean|IsActiveMatchOptions): boolean;   isActive(url: string|UrlTree, matchOptions: boolean|IsActiveMatchOptions): boolean {     let options: IsActiveMatchOptions;     if (matchOptions === true) {       options = {...exactMatchOptions};     } else if (matchOptions === false) {       options = {...subsetMatchOptions};     } else {       options = matchOptions;     }     if (isUrlTree(url)) {       return containsTree(this.currentUrlTree, url, options);     }      const urlTree = this.parseUrl(url);     return containsTree(this.currentUrlTree, urlTree, options);   }    private removeEmptyProps(params: Params): Params {     return Object.keys(params).reduce((result: Params, key: string) => {       const value: any = params[key];       if (value !== null && value !== undefined) {         result[key] = value;       }       return result;     }, {});   }    /** @internal */   scheduleNavigation(       rawUrl: UrlTree, source: NavigationTrigger, restoredState: RestoredState|null,       extras: NavigationExtras,       priorPromise?: {resolve: any, reject: any, promise: Promise<boolean>}): Promise<boolean> {     if (this.disposed) {       return Promise.resolve(false);     }      let resolve: any;     let reject: any;     let promise: Promise<boolean>;     if (priorPromise) {       resolve = priorPromise.resolve;       reject = priorPromise.reject;       promise = priorPromise.promise;     } else {       promise = new Promise<boolean>((res, rej) => {         resolve = res;         reject = rej;       });     }      let targetPageId: number;     if (this.canceledNavigationResolution === 'computed') {       // If the `ɵrouterPageId` exist in the state then `targetpageId` should have the value of       // `ɵrouterPageId`. This is the case for something like a page refresh where we assign the       // target id to the previously set value for that page.       if (restoredState && restoredState.ɵrouterPageId) {         targetPageId = restoredState.ɵrouterPageId;       } else {         // If we're replacing the URL or doing a silent navigation, we do not want to increment the         // page id because we aren't pushing a new entry to history.         if (extras.replaceUrl || extras.skipLocationChange) {           targetPageId = this.browserPageId ?? 0;         } else {           targetPageId = (this.browserPageId ?? 0) + 1;         }       }     } else {       // This is unused when `canceledNavigationResolution` is not computed.       targetPageId = 0;     }      this.navigationTransitions.handleNavigationRequest({       targetPageId,       source,       restoredState,       currentUrlTree: this.currentUrlTree,       currentRawUrl: this.currentUrlTree,       rawUrl,       extras,       resolve,       reject,       promise,       currentSnapshot: this.routerState.snapshot,       currentRouterState: this.routerState     });      // Make sure that the error is propagated even though `processNavigations` catch     // handler does not rethrow     return promise.catch((e: any) => {       return Promise.reject(e);     });   }    /** @internal */   setBrowserUrl(url: UrlTree, transition: NavigationTransition) {     const path = this.urlSerializer.serialize(url);     const state = {       ...transition.extras.state,       ...this.generateNgRouterState(transition.id, transition.targetPageId)     };     if (this.location.isCurrentPathEqualTo(path) || !!transition.extras.replaceUrl) {       this.location.replaceState(path, '', state);     } else {       this.location.go(path, '', state);     }   }    /**    * Performs the necessary rollback action to restore the browser URL to the    * state before the transition.    * @internal    */   restoreHistory(transition: NavigationTransition, restoringFromCaughtError = false) {     if (this.canceledNavigationResolution === 'computed') {       const targetPagePosition = this.currentPageId - transition.targetPageId;       // The navigator change the location before triggered the browser event,       // so we need to go back to the current url if the navigation is canceled.       // Also, when navigation gets cancelled while using url update strategy eager, then we need to       // go back. Because, when `urlUpdateStrategy` is `eager`; `setBrowserUrl` method is called       // before any verification.       const browserUrlUpdateOccurred =           (transition.source === 'popstate' || this.urlUpdateStrategy === 'eager' ||            this.currentUrlTree === this.getCurrentNavigation()?.finalUrl);       if (browserUrlUpdateOccurred && targetPagePosition !== 0) {         this.location.historyGo(targetPagePosition);       } else if (           this.currentUrlTree === this.getCurrentNavigation()?.finalUrl &&           targetPagePosition === 0) {         // We got to the activation stage (where currentUrlTree is set to the navigation's         // finalUrl), but we weren't moving anywhere in history (skipLocationChange or replaceUrl).         // We still need to reset the router state back to what it was when the navigation started.         this.resetState(transition);         // TODO(atscott): resetting the `browserUrlTree` should really be done in `resetState`.         // Investigate if this can be done by running TGP.         this.browserUrlTree = transition.currentUrlTree;         this.resetUrlToCurrentUrlTree();       } else {         // The browser URL and router state was not updated before the navigation cancelled so         // there's no restoration needed.       }     } else if (this.canceledNavigationResolution === 'replace') {       // TODO(atscott): It seems like we should _always_ reset the state here. It would be a no-op       // for `deferred` navigations that haven't change the internal state yet because guards       // reject. For 'eager' navigations, it seems like we also really should reset the state       // because the navigation was cancelled. Investigate if this can be done by running TGP.       if (restoringFromCaughtError) {         this.resetState(transition);       }       this.resetUrlToCurrentUrlTree();     }   }    private resetState(t: NavigationTransition): void {     (this as {routerState: RouterState}).routerState = t.currentRouterState;     this.currentUrlTree = t.currentUrlTree;     // Note here that we use the urlHandlingStrategy to get the reset `rawUrlTree` because it may be     // configured to handle only part of the navigation URL. This means we would only want to reset     // the part of the navigation handled by the Angular router rather than the whole URL. In     // addition, the URLHandlingStrategy may be configured to specifically preserve parts of the URL     // when merging, such as the query params so they are not lost on a refresh.     this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, t.rawUrl);   }    private resetUrlToCurrentUrlTree(): void {     this.location.replaceState(         this.urlSerializer.serialize(this.rawUrlTree), '',         this.generateNgRouterState(this.lastSuccessfulId, this.currentPageId));   }    private generateNgRouterState(navigationId: number, routerPageId?: number) {     if (this.canceledNavigationResolution === 'computed') {       return {navigationId, ɵrouterPageId: routerPageId};     }     return {navigationId};   } }  function validateCommands(commands: string[]): void {   for (let i = 0; i < commands.length; i++) {     const cmd = commands[i];     if (cmd == null) {       throw new RuntimeError(           RuntimeErrorCode.NULLISH_COMMAND,           NG_DEV_MODE && `The requested path contains ${cmd} segment at index ${i}`);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {LocationStrategy} from '@angular/common'; import {Attribute, Directive, ElementRef, HostBinding, HostListener, Input, OnChanges, OnDestroy, Renderer2, SimpleChanges, ɵcoerceToBoolean as coerceToBoolean, ɵɵsanitizeUrlOrResourceUrl} from '@angular/core'; import {Subject, Subscription} from 'rxjs';  import {Event, NavigationEnd} from '../events'; import {QueryParamsHandling} from '../models'; import {Router} from '../router'; import {ActivatedRoute} from '../router_state'; import {Params} from '../shared'; import {UrlTree} from '../url_tree';   /**  * @description  *  * When applied to an element in a template, makes that element a link  * that initiates navigation to a route. Navigation opens one or more routed components  * in one or more `<router-outlet>` locations on the page.  *  * Given a route configuration `[{ path: 'user/:name', component: UserCmp }]`,  * the following creates a static link to the route:  * `<a routerLink=\"/user/bob\">link to user component</a>`  *  * You can use dynamic values to generate the link.  * For a dynamic link, pass an array of path segments,  * followed by the params for each segment.  * For example, `['/team', teamId, 'user', userName, {details: true}]`  * generates a link to `/team/11/user/bob;details=true`.  *  * Multiple static segments can be merged into one term and combined with dynamic segments.  * For example, `['/team/11/user', userName, {details: true}]`  *  * The input that you provide to the link is treated as a delta to the current URL.  * For instance, suppose the current URL is `/user/(box//aux:team)`.  * The link `<a [routerLink]=\"['/user/jim']\">Jim</a>` creates the URL  * `/user/(jim//aux:team)`.  * See {@link Router#createUrlTree createUrlTree} for more information.  *  * @usageNotes  *  * You can use absolute or relative paths in a link, set query parameters,  * control how parameters are handled, and keep a history of navigation states.  *  * ### Relative link paths  *  * The first segment name can be prepended with `/`, `./`, or `../`.  * * If the first segment begins with `/`, the router looks up the route from the root of the  *   app.  * * If the first segment begins with `./`, or doesn't begin with a slash, the router  *   looks in the children of the current activated route.  * * If the first segment begins with `../`, the router goes up one level in the route tree.  *  * ### Setting and handling query params and fragments  *  * The following link adds a query parameter and a fragment to the generated URL:  *  * ```  * <a [routerLink]=\"['/user/bob']\" [queryParams]=\"{debug: true}\" fragment=\"education\">  *   link to user component  * </a>  * ```  * By default, the directive constructs the new URL using the given query parameters.  * The example generates the link: `/user/bob?debug=true#education`.  *  * You can instruct the directive to handle query parameters differently  * by specifying the `queryParamsHandling` option in the link.  * Allowed values are:  *  *  - `'merge'`: Merge the given `queryParams` into the current query params.  *  - `'preserve'`: Preserve the current query params.  *  * For example:  *  * ```  * <a [routerLink]=\"['/user/bob']\" [queryParams]=\"{debug: true}\" queryParamsHandling=\"merge\">  *   link to user component  * </a>  * ```  *  * See {@link UrlCreationOptions.queryParamsHandling UrlCreationOptions#queryParamsHandling}.  *  * ### Preserving navigation history  *  * You can provide a `state` value to be persisted to the browser's  * [`History.state` property](https://developer.mozilla.org/en-US/docs/Web/API/History#Properties).  * For example:  *  * ```  * <a [routerLink]=\"['/user/bob']\" [state]=\"{tracingId: 123}\">  *   link to user component  * </a>  * ```  *  * Use {@link Router.getCurrentNavigation() Router#getCurrentNavigation} to retrieve a saved  * navigation-state value. For example, to capture the `tracingId` during the `NavigationStart`  * event:  *  * ```  * // Get NavigationStart events  * router.events.pipe(filter(e => e instanceof NavigationStart)).subscribe(e => {  *   const navigation = router.getCurrentNavigation();  *   tracingService.trace({id: navigation.extras.state.tracingId});  * });  * ```  *  * @ngModule RouterModule  *  * @publicApi  */ @Directive({   selector: '[routerLink]',   standalone: true, }) export class RouterLink implements OnChanges, OnDestroy {   private _preserveFragment = false;   private _skipLocationChange = false;   private _replaceUrl = false;    /**    * Represents an `href` attribute value applied to a host element,    * when a host element is `<a>`. For other tags, the value is `null`.    */   href: string|null = null;    /**    * Represents the `target` attribute on a host element.    * This is only used when the host element is an `<a>` tag.    */   @HostBinding('attr.target') @Input() target?: string;    /**    * Passed to {@link Router#createUrlTree Router#createUrlTree} as part of the    * `UrlCreationOptions`.    * @see {@link UrlCreationOptions#queryParams UrlCreationOptions#queryParams}    * @see {@link Router#createUrlTree Router#createUrlTree}    */   @Input() queryParams?: Params|null;   /**    * Passed to {@link Router#createUrlTree Router#createUrlTree} as part of the    * `UrlCreationOptions`.    * @see {@link UrlCreationOptions#fragment UrlCreationOptions#fragment}    * @see {@link Router#createUrlTree Router#createUrlTree}    */   @Input() fragment?: string;   /**    * Passed to {@link Router#createUrlTree Router#createUrlTree} as part of the    * `UrlCreationOptions`.    * @see {@link UrlCreationOptions#queryParamsHandling UrlCreationOptions#queryParamsHandling}    * @see {@link Router#createUrlTree Router#createUrlTree}    */   @Input() queryParamsHandling?: QueryParamsHandling|null;   /**    * Passed to {@link Router#navigateByUrl Router#navigateByUrl} as part of the    * `NavigationBehaviorOptions`.    * @see {@link NavigationBehaviorOptions#state NavigationBehaviorOptions#state}    * @see {@link Router#navigateByUrl Router#navigateByUrl}    */   @Input() state?: {[k: string]: any};   /**    * Passed to {@link Router#createUrlTree Router#createUrlTree} as part of the    * `UrlCreationOptions`.    * Specify a value here when you do not want to use the default value    * for `routerLink`, which is the current activated route.    * Note that a value of `undefined` here will use the `routerLink` default.    * @see {@link UrlCreationOptions#relativeTo UrlCreationOptions#relativeTo}    * @see {@link Router#createUrlTree Router#createUrlTree}    */   @Input() relativeTo?: ActivatedRoute|null;    private commands: any[]|null = null;    /** Whether a host element is an `<a>` tag. */   private isAnchorElement: boolean;    private subscription?: Subscription;    /** @internal */   onChanges = new Subject<RouterLink>();    constructor(       private router: Router, private route: ActivatedRoute,       @Attribute('tabindex') private readonly tabIndexAttribute: string|null|undefined,       private readonly renderer: Renderer2, private readonly el: ElementRef,       private locationStrategy?: LocationStrategy) {     const tagName = el.nativeElement.tagName?.toLowerCase();     this.isAnchorElement = tagName === 'a' || tagName === 'area';      if (this.isAnchorElement) {       this.subscription = router.events.subscribe((s: Event) => {         if (s instanceof NavigationEnd) {           this.updateHref();         }       });     } else {       this.setTabIndexIfNotOnNativeEl('0');     }   }    /**    * Passed to {@link Router#createUrlTree Router#createUrlTree} as part of the    * `UrlCreationOptions`.    * @see {@link UrlCreationOptions#preserveFragment UrlCreationOptions#preserveFragment}    * @see {@link Router#createUrlTree Router#createUrlTree}    */   @Input()   set preserveFragment(preserveFragment: boolean|string|null|undefined) {     this._preserveFragment = coerceToBoolean(preserveFragment);   }    get preserveFragment(): boolean {     return this._preserveFragment;   }    /**    * Passed to {@link Router#navigateByUrl Router#navigateByUrl} as part of the    * `NavigationBehaviorOptions`.    * @see {@link NavigationBehaviorOptions#skipLocationChange NavigationBehaviorOptions#skipLocationChange}    * @see {@link Router#navigateByUrl Router#navigateByUrl}    */   @Input()   set skipLocationChange(skipLocationChange: boolean|string|null|undefined) {     this._skipLocationChange = coerceToBoolean(skipLocationChange);   }    get skipLocationChange(): boolean {     return this._skipLocationChange;   }    /**    * Passed to {@link Router#navigateByUrl Router#navigateByUrl} as part of the    * `NavigationBehaviorOptions`.    * @see {@link NavigationBehaviorOptions#replaceUrl NavigationBehaviorOptions#replaceUrl}    * @see {@link Router#navigateByUrl Router#navigateByUrl}    */   @Input()   set replaceUrl(replaceUrl: boolean|string|null|undefined) {     this._replaceUrl = coerceToBoolean(replaceUrl);   }    get replaceUrl(): boolean {     return this._replaceUrl;   }    /**    * Modifies the tab index if there was not a tabindex attribute on the element during    * instantiation.    */   private setTabIndexIfNotOnNativeEl(newTabIndex: string|null) {     if (this.tabIndexAttribute != null /* both `null` and `undefined` */ || this.isAnchorElement) {       return;     }     this.applyAttributeValue('tabindex', newTabIndex);   }    /** @nodoc */   ngOnChanges(changes: SimpleChanges) {     if (this.isAnchorElement) {       this.updateHref();     }     // This is subscribed to by `RouterLinkActive` so that it knows to update when there are changes     // to the RouterLinks it's tracking.     this.onChanges.next(this);   }    /**    * Commands to pass to {@link Router#createUrlTree Router#createUrlTree}.    *   - **array**: commands to pass to {@link Router#createUrlTree Router#createUrlTree}.    *   - **string**: shorthand for array of commands with just the string, i.e. `['/route']`    *   - **null|undefined**: effectively disables the `routerLink`    * @see {@link Router#createUrlTree Router#createUrlTree}    */   @Input()   set routerLink(commands: any[]|string|null|undefined) {     if (commands != null) {       this.commands = Array.isArray(commands) ? commands : [commands];       this.setTabIndexIfNotOnNativeEl('0');     } else {       this.commands = null;       this.setTabIndexIfNotOnNativeEl(null);     }   }    /** @nodoc */   @HostListener(       'click',       ['$event.button', '$event.ctrlKey', '$event.shiftKey', '$event.altKey', '$event.metaKey'])   onClick(button: number, ctrlKey: boolean, shiftKey: boolean, altKey: boolean, metaKey: boolean):       boolean {     if (this.urlTree === null) {       return true;     }      if (this.isAnchorElement) {       if (button !== 0 || ctrlKey || shiftKey || altKey || metaKey) {         return true;       }        if (typeof this.target === 'string' && this.target != '_self') {         return true;       }     }      const extras = {       skipLocationChange: this.skipLocationChange,       replaceUrl: this.replaceUrl,       state: this.state,     };     this.router.navigateByUrl(this.urlTree, extras);      // Return `false` for `<a>` elements to prevent default action     // and cancel the native behavior, since the navigation is handled     // by the Router.     return !this.isAnchorElement;   }    /** @nodoc */   ngOnDestroy(): any {     this.subscription?.unsubscribe();   }    private updateHref(): void {     this.href = this.urlTree !== null && this.locationStrategy ?         this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(this.urlTree)) :         null;      const sanitizedValue = this.href === null ?         null :         // This class represents a directive that can be added to both `<a>` elements,         // as well as other elements. As a result, we can't define security context at         // compile time. So the security context is deferred to runtime.         // The `ɵɵsanitizeUrlOrResourceUrl` selects the necessary sanitizer function         // based on the tag and property names. The logic mimics the one from         // `packages/compiler/src/schema/dom_security_schema.ts`, which is used at compile time.         //         // Note: we should investigate whether we can switch to using `@HostBinding('attr.href')`         // instead of applying a value via a renderer, after a final merge of the         // `RouterLinkWithHref` directive.         ɵɵsanitizeUrlOrResourceUrl(this.href, this.el.nativeElement.tagName.toLowerCase(), 'href');     this.applyAttributeValue('href', sanitizedValue);   }    private applyAttributeValue(attrName: string, attrValue: string|null) {     const renderer = this.renderer;     const nativeElement = this.el.nativeElement;     if (attrValue !== null) {       renderer.setAttribute(nativeElement, attrName, attrValue);     } else {       renderer.removeAttribute(nativeElement, attrName);     }   }    get urlTree(): UrlTree|null {     if (this.commands === null) {       return null;     }     return this.router.createUrlTree(this.commands, {       // If the `relativeTo` input is not defined, we want to use `this.route` by default.       // Otherwise, we should use the value provided by the user in the input.       relativeTo: this.relativeTo !== undefined ? this.relativeTo : this.route,       queryParams: this.queryParams,       fragment: this.fragment,       queryParamsHandling: this.queryParamsHandling,       preserveFragment: this.preserveFragment,     });   } }  /**  * @description  * An alias for the `RouterLink` directive.  * Deprecated since v15, use `RouterLink` directive instead.  *  * @deprecated use `RouterLink` directive instead.  * @publicApi  */ export {RouterLink as RouterLinkWithHref}; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AfterContentInit, ChangeDetectorRef, ContentChildren, Directive, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, Optional, Output, QueryList, Renderer2, SimpleChanges} from '@angular/core'; import {from, of, Subscription} from 'rxjs'; import {mergeAll} from 'rxjs/operators';  import {Event, NavigationEnd} from '../events'; import {Router} from '../router'; import {IsActiveMatchOptions} from '../url_tree';  import {RouterLink} from './router_link';   /**  *  * @description  *  * Tracks whether the linked route of an element is currently active, and allows you  * to specify one or more CSS classes to add to the element when the linked route  * is active.  *  * Use this directive to create a visual distinction for elements associated with an active route.  * For example, the following code highlights the word \"Bob\" when the router  * activates the associated route:  *  * ```  * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\">Bob</a>  * ```  *  * Whenever the URL is either '/user' or '/user/bob', the \"active-link\" class is  * added to the anchor tag. If the URL changes, the class is removed.  *  * You can set more than one class using a space-separated string or an array.  * For example:  *  * ```  * <a routerLink=\"/user/bob\" routerLinkActive=\"class1 class2\">Bob</a>  * <a routerLink=\"/user/bob\" [routerLinkActive]=\"['class1', 'class2']\">Bob</a>  * ```  *  * To add the classes only when the URL matches the link exactly, add the option `exact: true`:  *  * ```  * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\" [routerLinkActiveOptions]=\"{exact:  * true}\">Bob</a>  * ```  *  * To directly check the `isActive` status of the link, assign the `RouterLinkActive`  * instance to a template variable.  * For example, the following checks the status without assigning any CSS classes:  *  * ```  * <a routerLink=\"/user/bob\" routerLinkActive #rla=\"routerLinkActive\">  *   Bob {{ rla.isActive ? '(already open)' : ''}}  * </a>  * ```  *  * You can apply the `RouterLinkActive` directive to an ancestor of linked elements.  * For example, the following sets the active-link class on the `<div>`  parent tag  * when the URL is either '/user/jim' or '/user/bob'.  *  * ```  * <div routerLinkActive=\"active-link\" [routerLinkActiveOptions]=\"{exact: true}\">  *   <a routerLink=\"/user/jim\">Jim</a>  *   <a routerLink=\"/user/bob\">Bob</a>  * </div>  * ```  *  * The `RouterLinkActive` directive can also be used to set the aria-current attribute  * to provide an alternative distinction for active elements to visually impaired users.  *  * For example, the following code adds the 'active' class to the Home Page link when it is  * indeed active and in such case also sets its aria-current attribute to 'page':  *  * ```  * <a routerLink=\"/\" routerLinkActive=\"active\" ariaCurrentWhenActive=\"page\">Home Page</a>  * ```  *  * @ngModule RouterModule  *  * @publicApi  */ @Directive({   selector: '[routerLinkActive]',   exportAs: 'routerLinkActive',   standalone: true, }) export class RouterLinkActive implements OnChanges, OnDestroy, AfterContentInit {   @ContentChildren(RouterLink, {descendants: true}) links!: QueryList<RouterLink>;    private classes: string[] = [];   private routerEventsSubscription: Subscription;   private linkInputChangesSubscription?: Subscription;   private _isActive = false;    get isActive() {     return this._isActive;   }    /**    * Options to configure how to determine if the router link is active.    *    * These options are passed to the `Router.isActive()` function.    *    * @see Router.isActive    */   @Input() routerLinkActiveOptions: {exact: boolean}|IsActiveMatchOptions = {exact: false};     /**    * Aria-current attribute to apply when the router link is active.    *    * Possible values: `'page'` | `'step'` | `'location'` | `'date'` | `'time'` | `true` | `false`.    *    * @see {@link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current}    */   @Input() ariaCurrentWhenActive?: 'page'|'step'|'location'|'date'|'time'|true|false;    /**    *    * You can use the output `isActiveChange` to get notified each time the link becomes    * active or inactive.    *    * Emits:    * true  -> Route is active    * false -> Route is inactive    *    * ```    * <a    *  routerLink=\"/user/bob\"    *  routerLinkActive=\"active-link\"    *  (isActiveChange)=\"this.onRouterLinkActive($event)\">Bob</a>    * ```    */   @Output() readonly isActiveChange: EventEmitter<boolean> = new EventEmitter();    constructor(       private router: Router, private element: ElementRef, private renderer: Renderer2,       private readonly cdr: ChangeDetectorRef, @Optional() private link?: RouterLink) {     this.routerEventsSubscription = router.events.subscribe((s: Event) => {       if (s instanceof NavigationEnd) {         this.update();       }     });   }    /** @nodoc */   ngAfterContentInit(): void {     // `of(null)` is used to force subscribe body to execute once immediately (like `startWith`).     of(this.links.changes, of(null)).pipe(mergeAll()).subscribe(_ => {       this.update();       this.subscribeToEachLinkOnChanges();     });   }    private subscribeToEachLinkOnChanges() {     this.linkInputChangesSubscription?.unsubscribe();     const allLinkChanges = [...this.links.toArray(), this.link]                                .filter((link): link is RouterLink => !!link)                                .map(link => link.onChanges);     this.linkInputChangesSubscription = from(allLinkChanges).pipe(mergeAll()).subscribe(link => {       if (this._isActive !== this.isLinkActive(this.router)(link)) {         this.update();       }     });   }    @Input()   set routerLinkActive(data: string[]|string) {     const classes = Array.isArray(data) ? data : data.split(' ');     this.classes = classes.filter(c => !!c);   }    /** @nodoc */   ngOnChanges(changes: SimpleChanges): void {     this.update();   }   /** @nodoc */   ngOnDestroy(): void {     this.routerEventsSubscription.unsubscribe();     this.linkInputChangesSubscription?.unsubscribe();   }    private update(): void {     if (!this.links || !this.router.navigated) return;     Promise.resolve().then(() => {       const hasActiveLinks = this.hasActiveLinks();       if (this._isActive !== hasActiveLinks) {         this._isActive = hasActiveLinks;         this.cdr.markForCheck();         this.classes.forEach((c) => {           if (hasActiveLinks) {             this.renderer.addClass(this.element.nativeElement, c);           } else {             this.renderer.removeClass(this.element.nativeElement, c);           }         });         if (hasActiveLinks && this.ariaCurrentWhenActive !== undefined) {           this.renderer.setAttribute(               this.element.nativeElement, 'aria-current', this.ariaCurrentWhenActive.toString());         } else {           this.renderer.removeAttribute(this.element.nativeElement, 'aria-current');         }          // Emit on isActiveChange after classes are updated         this.isActiveChange.emit(hasActiveLinks);       }     });   }    private isLinkActive(router: Router): (link: RouterLink) => boolean {     const options: boolean|IsActiveMatchOptions =         isActiveMatchOptions(this.routerLinkActiveOptions) ?         this.routerLinkActiveOptions :         // While the types should disallow `undefined` here, it's possible without strict inputs         (this.routerLinkActiveOptions.exact || false);     return (link: RouterLink) => link.urlTree ? router.isActive(link.urlTree, options) : false;   }    private hasActiveLinks(): boolean {     const isActiveCheckFn = this.isLinkActive(this.router);     return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn);   } }  /**  * Use instead of `'paths' in options` to be compatible with property renaming  */ function isActiveMatchOptions(options: {exact: boolean}|                               IsActiveMatchOptions): options is IsActiveMatchOptions {   return !!(options as IsActiveMatchOptions).paths; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Compiler, createEnvironmentInjector, EnvironmentInjector, Injectable, OnDestroy} from '@angular/core'; import {from, Observable, of, Subscription} from 'rxjs'; import {catchError, concatMap, filter, mergeAll, mergeMap} from 'rxjs/operators';  import {Event, NavigationEnd} from './events'; import {LoadedRouterConfig, Route, Routes} from './models'; import {Router} from './router'; import {RouterConfigLoader} from './router_config_loader';   /**  * @description  *  * Provides a preloading strategy.  *  * @publicApi  */ export abstract class PreloadingStrategy {   abstract preload(route: Route, fn: () => Observable<any>): Observable<any>; }  /**  * @description  *  * Provides a preloading strategy that preloads all modules as quickly as possible.  *  * ```  * RouterModule.forRoot(ROUTES, {preloadingStrategy: PreloadAllModules})  * ```  *  * @publicApi  */ @Injectable({providedIn: 'root'}) export class PreloadAllModules implements PreloadingStrategy {   preload(route: Route, fn: () => Observable<any>): Observable<any> {     return fn().pipe(catchError(() => of(null)));   } }  /**  * @description  *  * Provides a preloading strategy that does not preload any modules.  *  * This strategy is enabled by default.  *  * @publicApi  */ @Injectable({providedIn: 'root'}) export class NoPreloading implements PreloadingStrategy {   preload(route: Route, fn: () => Observable<any>): Observable<any> {     return of(null);   } }  /**  * The preloader optimistically loads all router configurations to  * make navigations into lazily-loaded sections of the application faster.  *  * The preloader runs in the background. When the router bootstraps, the preloader  * starts listening to all navigation events. After every such event, the preloader  * will check if any configurations can be loaded lazily.  *  * If a route is protected by `canLoad` guards, the preloaded will not load it.  *  * @publicApi  */ @Injectable({providedIn: 'root'}) export class RouterPreloader implements OnDestroy {   private subscription?: Subscription;    constructor(       private router: Router, compiler: Compiler, private injector: EnvironmentInjector,       private preloadingStrategy: PreloadingStrategy, private loader: RouterConfigLoader) {}    setUpPreloading(): void {     this.subscription =         this.router.events             .pipe(filter((e: Event) => e instanceof NavigationEnd), concatMap(() => this.preload()))             .subscribe(() => {});   }    preload(): Observable<any> {     return this.processRoutes(this.injector, this.router.config);   }    /** @nodoc */   ngOnDestroy(): void {     if (this.subscription) {       this.subscription.unsubscribe();     }   }    private processRoutes(injector: EnvironmentInjector, routes: Routes): Observable<void> {     const res: Observable<any>[] = [];     for (const route of routes) {       if (route.providers && !route._injector) {         route._injector =             createEnvironmentInjector(route.providers, injector, `Route: ${route.path}`);       }        const injectorForCurrentRoute = route._injector ?? injector;       const injectorForChildren = route._loadedInjector ?? injectorForCurrentRoute;        // Note that `canLoad` is only checked as a condition that prevents `loadChildren` and not       // `loadComponent`. `canLoad` guards only block loading of child routes by design. This       // happens as a consequence of needing to descend into children for route matching immediately       // while component loading is deferred until route activation. Because `canLoad` guards can       // have side effects, we cannot execute them here so we instead skip preloading altogether       // when present. Lastly, it remains to be decided whether `canLoad` should behave this way       // at all. Code splitting and lazy loading is separate from client-side authorization checks       // and should not be used as a security measure to prevent loading of code.       if ((route.loadChildren && !route._loadedRoutes && route.canLoad === undefined) ||           (route.loadComponent && !route._loadedComponent)) {         res.push(this.preloadConfig(injectorForCurrentRoute, route));       } else if (route.children || route._loadedRoutes) {         res.push(this.processRoutes(injectorForChildren, (route.children ?? route._loadedRoutes)!));       }     }     return from(res).pipe(mergeAll());   }    private preloadConfig(injector: EnvironmentInjector, route: Route): Observable<void> {     return this.preloadingStrategy.preload(route, () => {       let loadedChildren$: Observable<LoadedRouterConfig|null>;       if (route.loadChildren && route.canLoad === undefined) {         loadedChildren$ = this.loader.loadChildren(injector, route);       } else {         loadedChildren$ = of(null);       }        const recursiveLoadChildren$ =           loadedChildren$.pipe(mergeMap((config: LoadedRouterConfig|null) => {             if (config === null) {               return of(void 0);             }             route._loadedRoutes = config.routes;             route._loadedInjector = config.injector;             // If the loaded config was a module, use that as the module/module injector going             // forward. Otherwise, continue using the current module/module injector.             return this.processRoutes(config.injector ?? injector, config.routes);           }));       if (route.loadComponent && !route._loadedComponent) {         const loadComponent$ = this.loader.loadComponent(route);         return from([recursiveLoadChildren$, loadComponent$]).pipe(mergeAll());       } else {         return recursiveLoadChildren$;       }     });   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ViewportScroller} from '@angular/common'; import {Injectable, InjectionToken, NgZone, OnDestroy} from '@angular/core'; import {Unsubscribable} from 'rxjs';  import {NavigationEnd, NavigationStart, Scroll} from './events'; import {NavigationTransitions} from './navigation_transition'; import {Router} from './router'; import {UrlSerializer} from './url_tree';  export const ROUTER_SCROLLER = new InjectionToken<RouterScroller>('');  @Injectable() export class RouterScroller implements OnDestroy {   private routerEventsSubscription?: Unsubscribable;   private scrollEventsSubscription?: Unsubscribable;    private lastId = 0;   private lastSource: 'imperative'|'popstate'|'hashchange'|undefined = 'imperative';   private restoredId = 0;   private store: {[key: string]: [number, number]} = {};    /** @nodoc */   constructor(       readonly urlSerializer: UrlSerializer, private transitions: NavigationTransitions,       public readonly viewportScroller: ViewportScroller, private readonly zone: NgZone,       private options: {         scrollPositionRestoration?: 'disabled'|'enabled'|'top',         anchorScrolling?: 'disabled'|'enabled'       } = {}) {     // Default both options to 'disabled'     options.scrollPositionRestoration = options.scrollPositionRestoration || 'disabled';     options.anchorScrolling = options.anchorScrolling || 'disabled';   }    init(): void {     // we want to disable the automatic scrolling because having two places     // responsible for scrolling results race conditions, especially given     // that browser don't implement this behavior consistently     if (this.options.scrollPositionRestoration !== 'disabled') {       this.viewportScroller.setHistoryScrollRestoration('manual');     }     this.routerEventsSubscription = this.createScrollEvents();     this.scrollEventsSubscription = this.consumeScrollEvents();   }    private createScrollEvents() {     return this.transitions.events.subscribe(e => {       if (e instanceof NavigationStart) {         // store the scroll position of the current stable navigations.         this.store[this.lastId] = this.viewportScroller.getScrollPosition();         this.lastSource = e.navigationTrigger;         this.restoredId = e.restoredState ? e.restoredState.navigationId : 0;       } else if (e instanceof NavigationEnd) {         this.lastId = e.id;         this.scheduleScrollEvent(e, this.urlSerializer.parse(e.urlAfterRedirects).fragment);       }     });   }    private consumeScrollEvents() {     return this.transitions.events.subscribe(e => {       if (!(e instanceof Scroll)) return;       // a popstate event. The pop state event will always ignore anchor scrolling.       if (e.position) {         if (this.options.scrollPositionRestoration === 'top') {           this.viewportScroller.scrollToPosition([0, 0]);         } else if (this.options.scrollPositionRestoration === 'enabled') {           this.viewportScroller.scrollToPosition(e.position);         }         // imperative navigation \"forward\"       } else {         if (e.anchor && this.options.anchorScrolling === 'enabled') {           this.viewportScroller.scrollToAnchor(e.anchor);         } else if (this.options.scrollPositionRestoration !== 'disabled') {           this.viewportScroller.scrollToPosition([0, 0]);         }       }     });   }    private scheduleScrollEvent(routerEvent: NavigationEnd, anchor: string|null): void {     this.zone.runOutsideAngular(() => {       // The scroll event needs to be delayed until after change detection. Otherwise, we may       // attempt to restore the scroll position before the router outlet has fully rendered the       // component by executing its update block of the template function.       setTimeout(() => {         this.zone.run(() => {           this.transitions.events.next(new Scroll(               routerEvent, this.lastSource === 'popstate' ? this.store[this.restoredId] : null,               anchor));         });       }, 0);     });   }    /** @nodoc */   ngOnDestroy() {     this.routerEventsSubscription?.unsubscribe();     this.scrollEventsSubscription?.unsubscribe();   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {filter, map, take} from 'rxjs/operators';  import {NavigationCancel, NavigationCancellationCode, NavigationEnd, NavigationError, NavigationSkipped} from '../events'; import {Router} from '../router';  enum NavigationResult {   COMPLETE,   FAILED,   REDIRECTING, }  /**  * Performs the given action once the router finishes its next/current navigation.  *  * The navigation is considered complete under the following conditions:  * - `NavigationCancel` event emits and the code is not `NavigationCancellationCode.Redirect` or  * `NavigationCancellationCode.SupersededByNewNavigation`. In these cases, the  * redirecting/superseding navigation must finish.  * - `NavigationError`, `NavigationEnd`, or `NavigationSkipped` event emits  */ export function afterNextNavigation(router: Router, action: () => void) {   router.events       .pipe(           filter(               (e): e is NavigationEnd|NavigationCancel|NavigationError|NavigationSkipped =>                   e instanceof NavigationEnd || e instanceof NavigationCancel ||                   e instanceof NavigationError || e instanceof NavigationSkipped),           map(e => {             if (e instanceof NavigationEnd || e instanceof NavigationSkipped) {               return NavigationResult.COMPLETE;             }             const redirecting = e instanceof NavigationCancel ?                 (e.code === NavigationCancellationCode.Redirect ||                  e.code === NavigationCancellationCode.SupersededByNewNavigation) :                 false;             return redirecting ? NavigationResult.REDIRECTING : NavigationResult.FAILED;           }),           filter(               (result): result is NavigationResult.COMPLETE|NavigationResult.FAILED =>                   result !== NavigationResult.REDIRECTING),           take(1),           )       .subscribe(() => {         action();       }); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HashLocationStrategy, LOCATION_INITIALIZED, LocationStrategy, ViewportScroller} from '@angular/common'; import {APP_BOOTSTRAP_LISTENER, APP_INITIALIZER, ApplicationRef, ComponentRef, ENVIRONMENT_INITIALIZER, EnvironmentInjector, EnvironmentProviders, inject, InjectFlags, InjectionToken, Injector, makeEnvironmentProviders, NgZone, Provider, Type} from '@angular/core'; import {of, Subject} from 'rxjs'; import {filter, map, take} from 'rxjs/operators';  import {Event, NavigationCancel, NavigationCancellationCode, NavigationEnd, NavigationError, stringifyEvent} from './events'; import {Routes} from './models'; import {NavigationTransitions} from './navigation_transition'; import {Router} from './router'; import {InMemoryScrollingOptions, ROUTER_CONFIGURATION, RouterConfigOptions} from './router_config'; import {ROUTES} from './router_config_loader'; import {PreloadingStrategy, RouterPreloader} from './router_preloader'; import {ROUTER_SCROLLER, RouterScroller} from './router_scroller'; import {ActivatedRoute} from './router_state'; import {UrlSerializer} from './url_tree'; import {afterNextNavigation} from './utils/navigations';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;  /**  * Sets up providers necessary to enable `Router` functionality for the application.  * Allows to configure a set of routes as well as extra features that should be enabled.  *  * @usageNotes  *  * Basic example of how you can add a Router to your application:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent, {  *   providers: [provideRouter(appRoutes)]  * });  * ```  *  * You can also enable optional features in the Router by adding functions from the `RouterFeatures`  * type:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes,  *         withDebugTracing(),  *         withRouterConfig({paramsInheritanceStrategy: 'always'}))  *     ]  *   }  * );  * ```  *  * @see `RouterFeatures`  *  * @publicApi  * @param routes A set of `Route`s to use for the application routing table.  * @param features Optional features to configure additional router behaviors.  * @returns A set of providers to setup a Router.  */ export function provideRouter(routes: Routes, ...features: RouterFeatures[]): EnvironmentProviders {   return makeEnvironmentProviders([     {provide: ROUTES, multi: true, useValue: routes},     NG_DEV_MODE ? {provide: ROUTER_IS_PROVIDED, useValue: true} : [],     {provide: ActivatedRoute, useFactory: rootRoute, deps: [Router]},     {provide: APP_BOOTSTRAP_LISTENER, multi: true, useFactory: getBootstrapListener},     features.map(feature => feature.ɵproviders),   ]); }  export function rootRoute(router: Router): ActivatedRoute {   return router.routerState.root; }  /**  * Helper type to represent a Router feature.  *  * @publicApi  */ export interface RouterFeature<FeatureKind extends RouterFeatureKind> {   ɵkind: FeatureKind;   ɵproviders: Provider[]; }  /**  * Helper function to create an object that represents a Router feature.  */ function routerFeature<FeatureKind extends RouterFeatureKind>(     kind: FeatureKind, providers: Provider[]): RouterFeature<FeatureKind> {   return {ɵkind: kind, ɵproviders: providers}; }   /**  * An Injection token used to indicate whether `provideRouter` or `RouterModule.forRoot` was ever  * called.  */ export const ROUTER_IS_PROVIDED =     new InjectionToken<boolean>('', {providedIn: 'root', factory: () => false});  const routerIsProvidedDevModeCheck = {   provide: ENVIRONMENT_INITIALIZER,   multi: true,   useFactory() {     return () => {       if (!inject(ROUTER_IS_PROVIDED)) {         console.warn(             '`provideRoutes` was called without `provideRouter` or `RouterModule.forRoot`. ' +             'This is likely a mistake.');       }     };   } };  /**  * Registers a [DI provider](guide/glossary#provider) for a set of routes.  * @param routes The route configuration to provide.  *  * @usageNotes  *  * ```  * @NgModule({  *   providers: [provideRoutes(ROUTES)]  * })  * class LazyLoadedChildModule {}  * ```  *  * @deprecated If necessary, provide routes using the `ROUTES` `InjectionToken`.  * @see `ROUTES`  * @publicApi  */ export function provideRoutes(routes: Routes): Provider[] {   return [     {provide: ROUTES, multi: true, useValue: routes},     NG_DEV_MODE ? routerIsProvidedDevModeCheck : [],   ]; }  /**  * A type alias for providers returned by `withInMemoryScrolling` for use with `provideRouter`.  *  * @see `withInMemoryScrolling`  * @see `provideRouter`  *  * @publicApi  */ export type InMemoryScrollingFeature = RouterFeature<RouterFeatureKind.InMemoryScrollingFeature>;  /**  * Enables customizable scrolling behavior for router navigations.  *  * @usageNotes  *  * Basic example of how you can enable scrolling feature:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withInMemoryScrolling())  *     ]  *   }  * );  * ```  *  * @see `provideRouter`  * @see `ViewportScroller`  *  * @publicApi  * @param options Set of configuration parameters to customize scrolling behavior, see  *     `InMemoryScrollingOptions` for additional information.  * @returns A set of providers for use with `provideRouter`.  */ export function withInMemoryScrolling(options: InMemoryScrollingOptions = {}):     InMemoryScrollingFeature {   const providers = [{     provide: ROUTER_SCROLLER,     useFactory: () => {       const viewportScroller = inject(ViewportScroller);       const zone = inject(NgZone);       const transitions = inject(NavigationTransitions);       const urlSerializer = inject(UrlSerializer);       return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, options);     },   }];   return routerFeature(RouterFeatureKind.InMemoryScrollingFeature, providers); }  export function getBootstrapListener() {   const injector = inject(Injector);   return (bootstrappedComponentRef: ComponentRef<unknown>) => {     const ref = injector.get(ApplicationRef);      if (bootstrappedComponentRef !== ref.components[0]) {       return;     }      const router = injector.get(Router);     const bootstrapDone = injector.get(BOOTSTRAP_DONE);      if (injector.get(INITIAL_NAVIGATION) === InitialNavigation.EnabledNonBlocking) {       router.initialNavigation();     }      injector.get(ROUTER_PRELOADER, null, InjectFlags.Optional)?.setUpPreloading();     injector.get(ROUTER_SCROLLER, null, InjectFlags.Optional)?.init();     router.resetRootComponentType(ref.componentTypes[0]);     if (!bootstrapDone.closed) {       bootstrapDone.next();       bootstrapDone.unsubscribe();     }   }; }  /**  * A subject used to indicate that the bootstrapping phase is done. When initial navigation is  * `enabledBlocking`, the first navigation waits until bootstrapping is finished before continuing  * to the activation phase.  */ const BOOTSTRAP_DONE =     new InjectionToken<Subject<void>>(NG_DEV_MODE ? 'bootstrap done indicator' : '', {       factory: () => {         return new Subject<void>();       }     });  /**  * This and the INITIAL_NAVIGATION token are used internally only. The public API side of this is  * configured through the `ExtraOptions`.  *  * When set to `EnabledBlocking`, the initial navigation starts before the root  * component is created. The bootstrap is blocked until the initial navigation is complete. This  * value is required for [server-side rendering](guide/universal) to work.  *  * When set to `EnabledNonBlocking`, the initial navigation starts after the root component has been  * created. The bootstrap is not blocked on the completion of the initial navigation.  *  * When set to `Disabled`, the initial navigation is not performed. The location listener is set up  * before the root component gets created. Use if there is a reason to have more control over when  * the router starts its initial navigation due to some complex initialization logic.  *  * @see `ExtraOptions`  */ const enum InitialNavigation {   EnabledBlocking,   EnabledNonBlocking,   Disabled, }  const INITIAL_NAVIGATION = new InjectionToken<InitialNavigation>(     NG_DEV_MODE ? 'initial navigation' : '',     {providedIn: 'root', factory: () => InitialNavigation.EnabledNonBlocking});  /**  * A type alias for providers returned by `withEnabledBlockingInitialNavigation` for use with  * `provideRouter`.  *  * @see `withEnabledBlockingInitialNavigation`  * @see `provideRouter`  *  * @publicApi  */ export type EnabledBlockingInitialNavigationFeature =     RouterFeature<RouterFeatureKind.EnabledBlockingInitialNavigationFeature>;  /**  * A type alias for providers returned by `withEnabledBlockingInitialNavigation` or  * `withDisabledInitialNavigation` functions for use with `provideRouter`.  *  * @see `withEnabledBlockingInitialNavigation`  * @see `withDisabledInitialNavigation`  * @see `provideRouter`  *  * @publicApi  */ export type InitialNavigationFeature =     EnabledBlockingInitialNavigationFeature|DisabledInitialNavigationFeature;  /**  * Configures initial navigation to start before the root component is created.  *  * The bootstrap is blocked until the initial navigation is complete. This value is required for  * [server-side rendering](guide/universal) to work.  *  * @usageNotes  *  * Basic example of how you can enable this navigation behavior:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withEnabledBlockingInitialNavigation())  *     ]  *   }  * );  * ```  *  * @see `provideRouter`  *  * @publicApi  * @returns A set of providers for use with `provideRouter`.  */ export function withEnabledBlockingInitialNavigation(): EnabledBlockingInitialNavigationFeature {   const providers = [     {provide: INITIAL_NAVIGATION, useValue: InitialNavigation.EnabledBlocking},     {       provide: APP_INITIALIZER,       multi: true,       deps: [Injector],       useFactory: (injector: Injector) => {         const locationInitialized: Promise<any> =             injector.get(LOCATION_INITIALIZED, Promise.resolve());          return () => {           return locationInitialized.then(() => {             return new Promise(resolve => {               const router = injector.get(Router);               const bootstrapDone = injector.get(BOOTSTRAP_DONE);               afterNextNavigation(router, () => {                 // Unblock APP_INITIALIZER in case the initial navigation was canceled or errored                 // without a redirect.                 resolve(true);               });                injector.get(NavigationTransitions).afterPreactivation = () => {                 // Unblock APP_INITIALIZER once we get to `afterPreactivation`. At this point, we                 // assume activation will complete successfully (even though this is not                 // guaranteed).                 resolve(true);                 return bootstrapDone.closed ? of(void 0) : bootstrapDone;               };               router.initialNavigation();             });           });         };       }     },   ];   return routerFeature(RouterFeatureKind.EnabledBlockingInitialNavigationFeature, providers); }  /**  * A type alias for providers returned by `withDisabledInitialNavigation` for use with  * `provideRouter`.  *  * @see `withDisabledInitialNavigation`  * @see `provideRouter`  *  * @publicApi  */ export type DisabledInitialNavigationFeature =     RouterFeature<RouterFeatureKind.DisabledInitialNavigationFeature>;  /**  * Disables initial navigation.  *  * Use if there is a reason to have more control over when the router starts its initial navigation  * due to some complex initialization logic.  *  * @usageNotes  *  * Basic example of how you can disable initial navigation:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withDisabledInitialNavigation())  *     ]  *   }  * );  * ```  *  * @see `provideRouter`  *  * @returns A set of providers for use with `provideRouter`.  *  * @publicApi  */ export function withDisabledInitialNavigation(): DisabledInitialNavigationFeature {   const providers = [     {       provide: APP_INITIALIZER,       multi: true,       useFactory: () => {         const router = inject(Router);         return () => {           router.setUpLocationChangeListener();         };       }     },     {provide: INITIAL_NAVIGATION, useValue: InitialNavigation.Disabled}   ];   return routerFeature(RouterFeatureKind.DisabledInitialNavigationFeature, providers); }  /**  * A type alias for providers returned by `withDebugTracing` for use with `provideRouter`.  *  * @see `withDebugTracing`  * @see `provideRouter`  *  * @publicApi  */ export type DebugTracingFeature = RouterFeature<RouterFeatureKind.DebugTracingFeature>;  /**  * Enables logging of all internal navigation events to the console.  * Extra logging might be useful for debugging purposes to inspect Router event sequence.  *  * @usageNotes  *  * Basic example of how you can enable debug tracing:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withDebugTracing())  *     ]  *   }  * );  * ```  *  * @see `provideRouter`  *  * @returns A set of providers for use with `provideRouter`.  *  * @publicApi  */ export function withDebugTracing(): DebugTracingFeature {   let providers: Provider[] = [];   if (NG_DEV_MODE) {     providers = [{       provide: ENVIRONMENT_INITIALIZER,       multi: true,       useFactory: () => {         const router = inject(Router);         return () => router.events.subscribe((e: Event) => {           // tslint:disable:no-console           console.group?.(`Router Event: ${(<any>e.constructor).name}`);           console.log(stringifyEvent(e));           console.log(e);           console.groupEnd?.();           // tslint:enable:no-console         });       }     }];   } else {     providers = [];   }   return routerFeature(RouterFeatureKind.DebugTracingFeature, providers); }  const ROUTER_PRELOADER = new InjectionToken<RouterPreloader>(NG_DEV_MODE ? 'router preloader' : '');  /**  * A type alias that represents a feature which enables preloading in Router.  * The type is used to describe the return value of the `withPreloading` function.  *  * @see `withPreloading`  * @see `provideRouter`  *  * @publicApi  */ export type PreloadingFeature = RouterFeature<RouterFeatureKind.PreloadingFeature>;  /**  * Allows to configure a preloading strategy to use. The strategy is configured by providing a  * reference to a class that implements a `PreloadingStrategy`.  *  * @usageNotes  *  * Basic example of how you can configure preloading:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withPreloading(PreloadAllModules))  *     ]  *   }  * );  * ```  *  * @see `provideRouter`  *  * @param preloadingStrategy A reference to a class that implements a `PreloadingStrategy` that  *     should be used.  * @returns A set of providers for use with `provideRouter`.  *  * @publicApi  */ export function withPreloading(preloadingStrategy: Type<PreloadingStrategy>): PreloadingFeature {   const providers = [     {provide: ROUTER_PRELOADER, useExisting: RouterPreloader},     {provide: PreloadingStrategy, useExisting: preloadingStrategy},   ];   return routerFeature(RouterFeatureKind.PreloadingFeature, providers); }  /**  * A type alias for providers returned by `withRouterConfig` for use with `provideRouter`.  *  * @see `withRouterConfig`  * @see `provideRouter`  *  * @publicApi  */ export type RouterConfigurationFeature =     RouterFeature<RouterFeatureKind.RouterConfigurationFeature>;  /**  * Allows to provide extra parameters to configure Router.  *  * @usageNotes  *  * Basic example of how you can provide extra configuration options:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withRouterConfig({  *          onSameUrlNavigation: 'reload'  *       }))  *     ]  *   }  * );  * ```  *  * @see `provideRouter`  *  * @param options A set of parameters to configure Router, see `RouterConfigOptions` for  *     additional information.  * @returns A set of providers for use with `provideRouter`.  *  * @publicApi  */ export function withRouterConfig(options: RouterConfigOptions): RouterConfigurationFeature {   const providers = [     {provide: ROUTER_CONFIGURATION, useValue: options},   ];   return routerFeature(RouterFeatureKind.RouterConfigurationFeature, providers); }  /**  * A type alias for providers returned by `withHashLocation` for use with `provideRouter`.  *  * @see `withHashLocation`  * @see `provideRouter`  *  * @publicApi  */ export type RouterHashLocationFeature = RouterFeature<RouterFeatureKind.RouterHashLocationFeature>;  /**  * Provides the location strategy that uses the URL fragment instead of the history API.  *  * @usageNotes  *  * Basic example of how you can use the hash location option:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withHashLocation())  *     ]  *   }  * );  * ```  *  * @see `provideRouter`  * @see `HashLocationStrategy`  *  * @returns A set of providers for use with `provideRouter`.  *  * @publicApi  */ export function withHashLocation(): RouterConfigurationFeature {   const providers = [     {provide: LocationStrategy, useClass: HashLocationStrategy},   ];   return routerFeature(RouterFeatureKind.RouterConfigurationFeature, providers); }  /**  * A type alias for providers returned by `withNavigationErrorHandler` for use with `provideRouter`.  *  * @see `withNavigationErrorHandler`  * @see `provideRouter`  *  * @publicApi  */ export type NavigationErrorHandlerFeature =     RouterFeature<RouterFeatureKind.NavigationErrorHandlerFeature>;  /**  * Subscribes to the Router's navigation events and calls the given function when a  * `NavigationError` happens.  *  * This function is run inside application's injection context so you can use the `inject` function.  *  * @usageNotes  *  * Basic example of how you can use the error handler option:  * ```  * const appRoutes: Routes = [];  * bootstrapApplication(AppComponent,  *   {  *     providers: [  *       provideRouter(appRoutes, withNavigationErrorHandler((e: NavigationError) =>  * inject(MyErrorTracker).trackError(e)))  *     ]  *   }  * );  * ```  *  * @see `NavigationError`  * @see `inject`  * @see `EnvironmentInjector#runInContext`  *  * @returns A set of providers for use with `provideRouter`.  *  * @publicApi  */ export function withNavigationErrorHandler(fn: (error: NavigationError) => void):     NavigationErrorHandlerFeature {   const providers = [{     provide: ENVIRONMENT_INITIALIZER,     multi: true,     useValue: () => {       const injector = inject(EnvironmentInjector);       inject(Router).events.subscribe((e) => {         if (e instanceof NavigationError) {           injector.runInContext(() => fn(e));         }       });     }   }];   return routerFeature(RouterFeatureKind.NavigationErrorHandlerFeature, providers); }  /**  * A type alias that represents all Router features available for use with `provideRouter`.  * Features can be enabled by adding special functions to the `provideRouter` call.  * See documentation for each symbol to find corresponding function name. See also `provideRouter`  * documentation on how to use those functions.  *  * @see `provideRouter`  *  * @publicApi  */ export type RouterFeatures = PreloadingFeature|DebugTracingFeature|InitialNavigationFeature|     InMemoryScrollingFeature|RouterConfigurationFeature|NavigationErrorHandlerFeature;  /**  * The list of features as an enum to uniquely type each feature.  */ export const enum RouterFeatureKind {   PreloadingFeature,   DebugTracingFeature,   EnabledBlockingInitialNavigationFeature,   DisabledInitialNavigationFeature,   InMemoryScrollingFeature,   RouterConfigurationFeature,   RouterHashLocationFeature,   NavigationErrorHandlerFeature, } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {HashLocationStrategy, Location, LocationStrategy, PathLocationStrategy, ViewportScroller} from '@angular/common'; import {APP_BOOTSTRAP_LISTENER, ComponentRef, inject, Inject, InjectionToken, ModuleWithProviders, NgModule, NgProbeToken, NgZone, Optional, Provider, SkipSelf, ɵRuntimeError as RuntimeError} from '@angular/core';  import {EmptyOutletComponent} from './components/empty_outlet'; import {RouterLink} from './directives/router_link'; import {RouterLinkActive} from './directives/router_link_active'; import {RouterOutlet} from './directives/router_outlet'; import {RuntimeErrorCode} from './errors'; import {Routes} from './models'; import {NavigationTransitions} from './navigation_transition'; import {getBootstrapListener, rootRoute, ROUTER_IS_PROVIDED, withDebugTracing, withDisabledInitialNavigation, withEnabledBlockingInitialNavigation, withPreloading} from './provide_router'; import {Router} from './router'; import {ExtraOptions, ROUTER_CONFIGURATION} from './router_config'; import {RouterConfigLoader, ROUTES} from './router_config_loader'; import {ChildrenOutletContexts} from './router_outlet_context'; import {ROUTER_SCROLLER, RouterScroller} from './router_scroller'; import {ActivatedRoute} from './router_state'; import {DefaultUrlSerializer, UrlSerializer} from './url_tree';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;  /**  * The directives defined in the `RouterModule`.  */ const ROUTER_DIRECTIVES = [RouterOutlet, RouterLink, RouterLinkActive, EmptyOutletComponent];  /**  * @docsNotRequired  */ export const ROUTER_FORROOT_GUARD = new InjectionToken<void>(     NG_DEV_MODE ? 'router duplicate forRoot guard' : 'ROUTER_FORROOT_GUARD');  // TODO(atscott): All of these except `ActivatedRoute` are `providedIn: 'root'`. They are only kept // here to avoid a breaking change whereby the provider order matters based on where the // `RouterModule`/`RouterTestingModule` is imported. These can/should be removed as a \"breaking\" // change in a major version. export const ROUTER_PROVIDERS: Provider[] = [   Location,   {provide: UrlSerializer, useClass: DefaultUrlSerializer},   Router,   ChildrenOutletContexts,   {provide: ActivatedRoute, useFactory: rootRoute, deps: [Router]},   RouterConfigLoader,   // Only used to warn when `provideRoutes` is used without `RouterModule` or `provideRouter`. Can   // be removed when `provideRoutes` is removed.   NG_DEV_MODE ? {provide: ROUTER_IS_PROVIDED, useValue: true} : [], ];  export function routerNgProbeToken() {   return new NgProbeToken('Router', Router); }  /**  * @description  *  * Adds directives and providers for in-app navigation among views defined in an application.  * Use the Angular `Router` service to declaratively specify application states and manage state  * transitions.  *  * You can import this NgModule multiple times, once for each lazy-loaded bundle.  * However, only one `Router` service can be active.  * To ensure this, there are two ways to register routes when importing this module:  *  * * The `forRoot()` method creates an `NgModule` that contains all the directives, the given  * routes, and the `Router` service itself.  * * The `forChild()` method creates an `NgModule` that contains all the directives and the given  * routes, but does not include the `Router` service.  *  * @see [Routing and Navigation guide](guide/router) for an  * overview of how the `Router` service should be used.  *  * @publicApi  */ @NgModule({   imports: ROUTER_DIRECTIVES,   exports: ROUTER_DIRECTIVES, }) export class RouterModule {   constructor(@Optional() @Inject(ROUTER_FORROOT_GUARD) guard: any) {}    /**    * Creates and configures a module with all the router providers and directives.    * Optionally sets up an application listener to perform an initial navigation.    *    * When registering the NgModule at the root, import as follows:    *    * ```    * @NgModule({    *   imports: [RouterModule.forRoot(ROUTES)]    * })    * class MyNgModule {}    * ```    *    * @param routes An array of `Route` objects that define the navigation paths for the application.    * @param config An `ExtraOptions` configuration object that controls how navigation is performed.    * @return The new `NgModule`.    *    */   static forRoot(routes: Routes, config?: ExtraOptions): ModuleWithProviders<RouterModule> {     return {       ngModule: RouterModule,       providers: [         ROUTER_PROVIDERS,         NG_DEV_MODE ? (config?.enableTracing ? withDebugTracing().ɵproviders : []) : [],         {provide: ROUTES, multi: true, useValue: routes},         {           provide: ROUTER_FORROOT_GUARD,           useFactory: provideForRootGuard,           deps: [[Router, new Optional(), new SkipSelf()]]         },         {provide: ROUTER_CONFIGURATION, useValue: config ? config : {}},         config?.useHash ? provideHashLocationStrategy() : providePathLocationStrategy(),         provideRouterScroller(),         config?.preloadingStrategy ? withPreloading(config.preloadingStrategy).ɵproviders : [],         {provide: NgProbeToken, multi: true, useFactory: routerNgProbeToken},         config?.initialNavigation ? provideInitialNavigation(config) : [],         provideRouterInitializer(),       ],     };   }    /**    * Creates a module with all the router directives and a provider registering routes,    * without creating a new Router service.    * When registering for submodules and lazy-loaded submodules, create the NgModule as follows:    *    * ```    * @NgModule({    *   imports: [RouterModule.forChild(ROUTES)]    * })    * class MyNgModule {}    * ```    *    * @param routes An array of `Route` objects that define the navigation paths for the submodule.    * @return The new NgModule.    *    */   static forChild(routes: Routes): ModuleWithProviders<RouterModule> {     return {       ngModule: RouterModule,       providers: [{provide: ROUTES, multi: true, useValue: routes}],     };   } }  /**  * For internal use by `RouterModule` only. Note that this differs from `withInMemoryRouterScroller`  * because it reads from the `ExtraOptions` which should not be used in the standalone world.  */ export function provideRouterScroller(): Provider {   return {     provide: ROUTER_SCROLLER,     useFactory: () => {       const viewportScroller = inject(ViewportScroller);       const zone = inject(NgZone);       const config: ExtraOptions = inject(ROUTER_CONFIGURATION);       const transitions = inject(NavigationTransitions);       const urlSerializer = inject(UrlSerializer);       if (config.scrollOffset) {         viewportScroller.setOffset(config.scrollOffset);       }       return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, config);     },   }; }  // Note: For internal use only with `RouterModule`. Standalone setup via `provideRouter` should // provide hash location directly via `{provide: LocationStrategy, useClass: HashLocationStrategy}`. function provideHashLocationStrategy(): Provider {   return {provide: LocationStrategy, useClass: HashLocationStrategy}; }  // Note: For internal use only with `RouterModule`. Standalone setup via `provideRouter` does not // need this at all because `PathLocationStrategy` is the default factory for `LocationStrategy`. function providePathLocationStrategy(): Provider {   return {provide: LocationStrategy, useClass: PathLocationStrategy}; }  export function provideForRootGuard(router: Router): any {   if (NG_DEV_MODE && router) {     throw new RuntimeError(         RuntimeErrorCode.FOR_ROOT_CALLED_TWICE,         `The Router was provided more than once. This can happen if 'forRoot' is used outside of the root injector.` +             ` Lazy loaded modules should use RouterModule.forChild() instead.`);   }   return 'guarded'; }  // Note: For internal use only with `RouterModule`. Standalone router setup with `provideRouter` // users call `withXInitialNavigation` directly. function provideInitialNavigation(config: Pick<ExtraOptions, 'initialNavigation'>): Provider[] {   return [     config.initialNavigation === 'disabled' ? withDisabledInitialNavigation().ɵproviders : [],     config.initialNavigation === 'enabledBlocking' ?         withEnabledBlockingInitialNavigation().ɵproviders :         [],   ]; }  // TODO(atscott): This should not be in the public API /**  * A [DI token](guide/glossary/#di-token) for the router initializer that  * is called after the app is bootstrapped.  *  * @publicApi  */ export const ROUTER_INITIALIZER = new InjectionToken<(compRef: ComponentRef<any>) => void>(     NG_DEV_MODE ? 'Router Initializer' : '');  function provideRouterInitializer(): Provider[] {   return [     // ROUTER_INITIALIZER token should be removed. It's public API but shouldn't be. We can just     // have `getBootstrapListener` directly attached to APP_BOOTSTRAP_LISTENER.     {provide: ROUTER_INITIALIZER, useFactory: getBootstrapListener},     {provide: APP_BOOTSTRAP_LISTENER, multi: true, useExisting: ROUTER_INITIALIZER},   ]; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the router package.  */  import {Version} from '@angular/core';  /**  * @publicApi  */ export const VERSION = new Version('15.2.0'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/index';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["isObservable","isPromise","NG_DEV_MODE","RuntimeError","isRedirectingNavigationCancelingError","isNavigationCancelingError","EmptyOutletComponent","isInjectable","noMatch","NoMatch","applyRedirects","last","applyRedirectsFn","recognize","rxjsLast","recognizeFn","Console","coerceToBoolean","i1.Router","i2.RouterLink","i2.RouterConfigLoader"],"mappings":"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"}
-------------------- SECTION 237 --------------------
{"version":3,"file":"forms.mjs","sources":["../../../../../../packages/forms/src/directives/control_value_accessor.ts","../../../../../../packages/forms/src/directives/checkbox_value_accessor.ts","../../../../../../packages/forms/src/directives/default_value_accessor.ts","../../../../../../packages/forms/src/validators.ts","../../../../../../packages/forms/src/directives/abstract_control_directive.ts","../../../../../../packages/forms/src/directives/ng_control.ts","../../../../../../packages/forms/src/directives/control_container.ts","../../../../../../packages/forms/src/directives/ng_control_status.ts","../../../../../../packages/forms/src/directives/error_examples.ts","../../../../../../packages/forms/src/directives/reactive_errors.ts","../../../../../../packages/forms/src/model/abstract_model.ts","../../../../../../packages/forms/src/model/form_group.ts","../../../../../../packages/forms/src/directives/shared.ts","../../../../../../packages/forms/src/directives/ng_form.ts","../../../../../../packages/forms/src/util.ts","../../../../../../packages/forms/src/model/form_control.ts","../../../../../../packages/forms/src/directives/abstract_form_group_directive.ts","../../../../../../packages/forms/src/directives/template_driven_errors.ts","../../../../../../packages/forms/src/directives/ng_model_group.ts","../../../../../../packages/forms/src/directives/ng_model.ts","../../../../../../packages/forms/src/directives/ng_no_validate_directive.ts","../../../../../../packages/forms/src/directives/number_value_accessor.ts","../../../../../../packages/forms/src/directives/radio_control_value_accessor.ts","../../../../../../packages/forms/src/directives/range_value_accessor.ts","../../../../../../packages/forms/src/directives/reactive_directives/form_control_directive.ts","../../../../../../packages/forms/src/directives/reactive_directives/form_group_directive.ts","../../../../../../packages/forms/src/directives/reactive_directives/form_group_name.ts","../../../../../../packages/forms/src/directives/reactive_directives/form_control_name.ts","../../../../../../packages/forms/src/directives/select_control_value_accessor.ts","../../../../../../packages/forms/src/directives/select_multiple_control_value_accessor.ts","../../../../../../packages/forms/src/directives/validators.ts","../../../../../../packages/forms/src/directives.ts","../../../../../../packages/forms/src/model/form_array.ts","../../../../../../packages/forms/src/form_builder.ts","../../../../../../packages/forms/src/version.ts","../../../../../../packages/forms/src/form_providers.ts","../../../../../../packages/forms/src/forms.ts","../../../../../../packages/forms/public_api.ts","../../../../../../packages/forms/index.ts","../../../../../../packages/forms/forms.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef, InjectionToken, Renderer2} from '@angular/core';  /**  * @description  * Defines an interface that acts as a bridge between the Angular forms API and a  * native element in the DOM.  *  * Implement this interface to create a custom form control directive  * that integrates with Angular forms.  *  * @see DefaultValueAccessor  *  * @publicApi  */ export interface ControlValueAccessor {   /**    * @description    * Writes a new value to the element.    *    * This method is called by the forms API to write to the view when programmatic    * changes from model to view are requested.    *    * @usageNotes    * ### Write a value to the element    *    * The following example writes a value to the native DOM element.    *    * ```ts    * writeValue(value: any): void {    *   this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);    * }    * ```    *    * @param obj The new value for the element    */   writeValue(obj: any): void;    /**    * @description    * Registers a callback function that is called when the control's value    * changes in the UI.    *    * This method is called by the forms API on initialization to update the form    * model when values propagate from the view to the model.    *    * When implementing the `registerOnChange` method in your own value accessor,    * save the given function so your class calls it at the appropriate time.    *    * @usageNotes    * ### Store the change function    *    * The following example stores the provided function as an internal method.    *    * ```ts    * registerOnChange(fn: (_: any) => void): void {    *   this._onChange = fn;    * }    * ```    *    * When the value changes in the UI, call the registered    * function to allow the forms API to update itself:    *    * ```ts    * host: {    *    '(change)': '_onChange($event.target.value)'    * }    * ```    *    * @param fn The callback function to register    */   registerOnChange(fn: any): void;    /**    * @description    * Registers a callback function that is called by the forms API on initialization    * to update the form model on blur.    *    * When implementing `registerOnTouched` in your own value accessor, save the given    * function so your class calls it when the control should be considered    * blurred or \"touched\".    *    * @usageNotes    * ### Store the callback function    *    * The following example stores the provided function as an internal method.    *    * ```ts    * registerOnTouched(fn: any): void {    *   this._onTouched = fn;    * }    * ```    *    * On blur (or equivalent), your class should call the registered function to allow    * the forms API to update itself:    *    * ```ts    * host: {    *    '(blur)': '_onTouched()'    * }    * ```    *    * @param fn The callback function to register    */   registerOnTouched(fn: any): void;    /**    * @description    * Function that is called by the forms API when the control status changes to    * or from 'DISABLED'. Depending on the status, it enables or disables the    * appropriate DOM element.    *    * @usageNotes    * The following is an example of writing the disabled property to a native DOM element:    *    * ```ts    * setDisabledState(isDisabled: boolean): void {    *   this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);    * }    * ```    *    * @param isDisabled The disabled status to set on the element    */   setDisabledState?(isDisabled: boolean): void; }  /**  * Base class for all ControlValueAccessor classes defined in Forms package.  * Contains common logic and utility functions.  *  * Note: this is an *internal-only* class and should not be extended or used directly in  * applications code.  */ @Directive() export class BaseControlValueAccessor {   /**    * The registered callback function called when a change or input event occurs on the input    * element.    * @nodoc    */   onChange = (_: any) => {};    /**    * The registered callback function called when a blur event occurs on the input element.    * @nodoc    */   onTouched = () => {};    constructor(private _renderer: Renderer2, private _elementRef: ElementRef) {}    /**    * Helper method that sets a property on a target element using the current Renderer    * implementation.    * @nodoc    */   protected setProperty(key: string, value: any): void {     this._renderer.setProperty(this._elementRef.nativeElement, key, value);   }    /**    * Registers a function called when the control is touched.    * @nodoc    */   registerOnTouched(fn: () => void): void {     this.onTouched = fn;   }    /**    * Registers a function called when the control value changes.    * @nodoc    */   registerOnChange(fn: (_: any) => {}): void {     this.onChange = fn;   }    /**    * Sets the \"disabled\" property on the range input element.    * @nodoc    */   setDisabledState(isDisabled: boolean): void {     this.setProperty('disabled', isDisabled);   } }  /**  * Base class for all built-in ControlValueAccessor classes (except DefaultValueAccessor, which is  * used in case no other CVAs can be found). We use this class to distinguish between default CVA,  * built-in CVAs and custom CVAs, so that Forms logic can recognize built-in CVAs and treat custom  * ones with higher priority (when both built-in and custom CVAs are present).  *  * Note: this is an *internal-only* class and should not be extended or used directly in  * applications code.  */ @Directive() export class BuiltInControlValueAccessor extends BaseControlValueAccessor { }  /**  * Used to provide a `ControlValueAccessor` for form controls.  *  * See `DefaultValueAccessor` for how to implement one.  *  * @publicApi  */ export const NG_VALUE_ACCESSOR =     new InjectionToken<ReadonlyArray<ControlValueAccessor>>('NgValueAccessor'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, forwardRef, Provider} from '@angular/core';  import {BuiltInControlValueAccessor, ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor';  const CHECKBOX_VALUE_ACCESSOR: Provider = {   provide: NG_VALUE_ACCESSOR,   useExisting: forwardRef(() => CheckboxControlValueAccessor),   multi: true, };  /**  * @description  * A `ControlValueAccessor` for writing a value and listening to changes on a checkbox input  * element.  *  * @usageNotes  *  * ### Using a checkbox with a reactive form.  *  * The following example shows how to use a checkbox with a reactive form.  *  * ```ts  * const rememberLoginControl = new FormControl();  * ```  *  * ```  * <input type=\"checkbox\" [formControl]=\"rememberLoginControl\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]',   host: {'(change)': 'onChange($event.target.checked)', '(blur)': 'onTouched()'},   providers: [CHECKBOX_VALUE_ACCESSOR] }) export class CheckboxControlValueAccessor extends BuiltInControlValueAccessor implements     ControlValueAccessor {   /**    * Sets the \"checked\" property on the input element.    * @nodoc    */   writeValue(value: any): void {     this.setProperty('checked', value);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵgetDOM as getDOM} from '@angular/common'; import {Directive, ElementRef, forwardRef, Inject, InjectionToken, Optional, Renderer2} from '@angular/core';  import {BaseControlValueAccessor, ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor';  export const DEFAULT_VALUE_ACCESSOR: any = {   provide: NG_VALUE_ACCESSOR,   useExisting: forwardRef(() => DefaultValueAccessor),   multi: true };  /**  * We must check whether the agent is Android because composition events  * behave differently between iOS and Android.  */ function _isAndroid(): boolean {   const userAgent = getDOM() ? getDOM().getUserAgent() : '';   return /android (\\d+)/.test(userAgent.toLowerCase()); }  /**  * @description  * Provide this token to control if form directives buffer IME input until  * the \"compositionend\" event occurs.  * @publicApi  */ export const COMPOSITION_BUFFER_MODE = new InjectionToken<boolean>('CompositionEventMode');  /**  * The default `ControlValueAccessor` for writing a value and listening to changes on input  * elements. The accessor is used by the `FormControlDirective`, `FormControlName`, and  * `NgModel` directives.  *  * {@searchKeywords ngDefaultControl}  *  * @usageNotes  *  * ### Using the default value accessor  *  * The following example shows how to use an input element that activates the default value accessor  * (in this case, a text field).  *  * ```ts  * const firstNameControl = new FormControl();  * ```  *  * ```  * <input type=\"text\" [formControl]=\"firstNameControl\">  * ```  *  * This value accessor is used by default for `<input type=\"text\">` and `<textarea>` elements, but  * you could also use it for custom components that have similar behavior and do not require special  * processing. In order to attach the default value accessor to a custom element, add the  * `ngDefaultControl` attribute as shown below.  *  * ```  * <custom-input-component ngDefaultControl [(ngModel)]=\"value\"></custom-input-component>  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]',   // TODO: vsavkin replace the above selector with the one below it once   // https://github.com/angular/angular/issues/3011 is implemented   // selector: '[ngModel],[formControl],[formControlName]',   host: {     '(input)': '$any(this)._handleInput($event.target.value)',     '(blur)': 'onTouched()',     '(compositionstart)': '$any(this)._compositionStart()',     '(compositionend)': '$any(this)._compositionEnd($event.target.value)'   },   providers: [DEFAULT_VALUE_ACCESSOR] }) export class DefaultValueAccessor extends BaseControlValueAccessor implements ControlValueAccessor {   /** Whether the user is creating a composition string (IME events). */   private _composing = false;    constructor(       renderer: Renderer2, elementRef: ElementRef,       @Optional() @Inject(COMPOSITION_BUFFER_MODE) private _compositionMode: boolean) {     super(renderer, elementRef);     if (this._compositionMode == null) {       this._compositionMode = !_isAndroid();     }   }    /**    * Sets the \"value\" property on the input element.    * @nodoc    */   writeValue(value: any): void {     const normalizedValue = value == null ? '' : value;     this.setProperty('value', normalizedValue);   }    /** @internal */   _handleInput(value: any): void {     if (!this._compositionMode || (this._compositionMode && !this._composing)) {       this.onChange(value);     }   }    /** @internal */   _compositionStart(): void {     this._composing = true;   }    /** @internal */   _compositionEnd(value: any): void {     this._composing = false;     this._compositionMode && this.onChange(value);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken, ɵisObservable as isObservable, ɵisPromise as isPromise, ɵRuntimeError as RuntimeError} from '@angular/core'; import {forkJoin, from, Observable} from 'rxjs'; import {map} from 'rxjs/operators';  import {AsyncValidator, AsyncValidatorFn, ValidationErrors, Validator, ValidatorFn} from './directives/validators'; import {RuntimeErrorCode} from './errors'; import {AbstractControl} from './model/abstract_model';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  function isEmptyInputValue(value: any): boolean {   /**    * Check if the object is a string or array before evaluating the length attribute.    * This avoids falsely rejecting objects that contain a custom length attribute.    * For example, the object {id: 1, length: 0, width: 0} should not be returned as empty.    */   return value == null ||       ((typeof value === 'string' || Array.isArray(value)) && value.length === 0); }  function hasValidLength(value: any): boolean {   // non-strict comparison is intentional, to check for both `null` and `undefined` values   return value != null && typeof value.length === 'number'; }  /**  * @description  * An `InjectionToken` for registering additional synchronous validators used with  * `AbstractControl`s.  *  * @see `NG_ASYNC_VALIDATORS`  *  * @usageNotes  *  * ### Providing a custom validator  *  * The following example registers a custom validator directive. Adding the validator to the  * existing collection of validators requires the `multi: true` option.  *  * ```typescript  * @Directive({  *   selector: '[customValidator]',  *   providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]  * })  * class CustomValidatorDirective implements Validator {  *   validate(control: AbstractControl): ValidationErrors | null {  *     return { 'custom': true };  *   }  * }  * ```  *  * @publicApi  */ export const NG_VALIDATORS = new InjectionToken<Array<Validator|Function>>('NgValidators');  /**  * @description  * An `InjectionToken` for registering additional asynchronous validators used with  * `AbstractControl`s.  *  * @see `NG_VALIDATORS`  *  * @usageNotes  *  * ### Provide a custom async validator directive  *  * The following example implements the `AsyncValidator` interface to create an  * async validator directive with a custom error key.  *  * ```typescript  * @Directive({  *   selector: '[customAsyncValidator]',  *   providers: [{provide: NG_ASYNC_VALIDATORS, useExisting: CustomAsyncValidatorDirective, multi:  * true}]  * })  * class CustomAsyncValidatorDirective implements AsyncValidator {  *   validate(control: AbstractControl): Promise<ValidationErrors|null> {  *     return Promise.resolve({'custom': true});  *   }  * }  * ```  *  * @publicApi  */ export const NG_ASYNC_VALIDATORS =     new InjectionToken<Array<Validator|Function>>('NgAsyncValidators');  /**  * A regular expression that matches valid e-mail addresses.  *  * At a high level, this regexp matches e-mail addresses of the format `local-part@tld`, where:  * - `local-part` consists of one or more of the allowed characters (alphanumeric and some  *   punctuation symbols).  * - `local-part` cannot begin or end with a period (`.`).  * - `local-part` cannot be longer than 64 characters.  * - `tld` consists of one or more `labels` separated by periods (`.`). For example `localhost` or  *   `foo.com`.  * - A `label` consists of one or more of the allowed characters (alphanumeric, dashes (`-`) and  *   periods (`.`)).  * - A `label` cannot begin or end with a dash (`-`) or a period (`.`).  * - A `label` cannot be longer than 63 characters.  * - The whole address cannot be longer than 254 characters.  *  * ## Implementation background  *  * This regexp was ported over from AngularJS (see there for git history):  * https://github.com/angular/angular.js/blob/c133ef836/src/ng/directive/input.js#L27  * It is based on the  * [WHATWG version](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) with  * some enhancements to incorporate more RFC rules (such as rules related to domain names and the  * lengths of different parts of the address). The main differences from the WHATWG version are:  *   - Disallow `local-part` to begin or end with a period (`.`).  *   - Disallow `local-part` length to exceed 64 characters.  *   - Disallow total address length to exceed 254 characters.  *  * See [this commit](https://github.com/angular/angular.js/commit/f3f5cf72e) for more details.  */ const EMAIL_REGEXP =     /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[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])?)*$/;  /**  * @description  * Provides a set of built-in validators that can be used by form controls.  *  * A validator is a function that processes a `FormControl` or collection of  * controls and returns an error map or null. A null map means that validation has passed.  *  * @see [Form Validation](/guide/form-validation)  *  * @publicApi  */ export class Validators {   /**    * @description    * Validator that requires the control's value to be greater than or equal to the provided number.    *    * @usageNotes    *    * ### Validate against a minimum of 3    *    * ```typescript    * const control = new FormControl(2, Validators.min(3));    *    * console.log(control.errors); // {min: {min: 3, actual: 2}}    * ```    *    * @returns A validator function that returns an error map with the    * `min` property if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static min(min: number): ValidatorFn {     return minValidator(min);   }    /**    * @description    * Validator that requires the control's value to be less than or equal to the provided number.    *    * @usageNotes    *    * ### Validate against a maximum of 15    *    * ```typescript    * const control = new FormControl(16, Validators.max(15));    *    * console.log(control.errors); // {max: {max: 15, actual: 16}}    * ```    *    * @returns A validator function that returns an error map with the    * `max` property if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static max(max: number): ValidatorFn {     return maxValidator(max);   }    /**    * @description    * Validator that requires the control have a non-empty value.    *    * @usageNotes    *    * ### Validate that the field is non-empty    *    * ```typescript    * const control = new FormControl('', Validators.required);    *    * console.log(control.errors); // {required: true}    * ```    *    * @returns An error map with the `required` property    * if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static required(control: AbstractControl): ValidationErrors|null {     return requiredValidator(control);   }    /**    * @description    * Validator that requires the control's value be true. This validator is commonly    * used for required checkboxes.    *    * @usageNotes    *    * ### Validate that the field value is true    *    * ```typescript    * const control = new FormControl('some value', Validators.requiredTrue);    *    * console.log(control.errors); // {required: true}    * ```    *    * @returns An error map that contains the `required` property    * set to `true` if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static requiredTrue(control: AbstractControl): ValidationErrors|null {     return requiredTrueValidator(control);   }    /**    * @description    * Validator that requires the control's value pass an email validation test.    *    * Tests the value using a [regular    * expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)    * pattern suitable for common use cases. The pattern is based on the definition of a valid email    * address in the [WHATWG HTML    * specification](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) with    * some enhancements to incorporate more RFC rules (such as rules related to domain names and the    * lengths of different parts of the address).    *    * The differences from the WHATWG version include:    * - Disallow `local-part` (the part before the `@` symbol) to begin or end with a period (`.`).    * - Disallow `local-part` to be longer than 64 characters.    * - Disallow the whole address to be longer than 254 characters.    *    * If this pattern does not satisfy your business needs, you can use `Validators.pattern()` to    * validate the value against a different pattern.    *    * @usageNotes    *    * ### Validate that the field matches a valid email pattern    *    * ```typescript    * const control = new FormControl('bad@', Validators.email);    *    * console.log(control.errors); // {email: true}    * ```    *    * @returns An error map with the `email` property    * if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static email(control: AbstractControl): ValidationErrors|null {     return emailValidator(control);   }    /**    * @description    * Validator that requires the length of the control's value to be greater than or equal    * to the provided minimum length. This validator is also provided by default if you use the    * the HTML5 `minlength` attribute. Note that the `minLength` validator is intended to be used    * only for types that have a numeric `length` property, such as strings or arrays. The    * `minLength` validator logic is also not invoked for values when their `length` property is 0    * (for example in case of an empty string or an empty array), to support optional controls. You    * can use the standard `required` validator if empty values should not be considered valid.    *    * @usageNotes    *    * ### Validate that the field has a minimum of 3 characters    *    * ```typescript    * const control = new FormControl('ng', Validators.minLength(3));    *    * console.log(control.errors); // {minlength: {requiredLength: 3, actualLength: 2}}    * ```    *    * ```html    * <input minlength=\"5\">    * ```    *    * @returns A validator function that returns an error map with the    * `minlength` property if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static minLength(minLength: number): ValidatorFn {     return minLengthValidator(minLength);   }    /**    * @description    * Validator that requires the length of the control's value to be less than or equal    * to the provided maximum length. This validator is also provided by default if you use the    * the HTML5 `maxlength` attribute. Note that the `maxLength` validator is intended to be used    * only for types that have a numeric `length` property, such as strings or arrays.    *    * @usageNotes    *    * ### Validate that the field has maximum of 5 characters    *    * ```typescript    * const control = new FormControl('Angular', Validators.maxLength(5));    *    * console.log(control.errors); // {maxlength: {requiredLength: 5, actualLength: 7}}    * ```    *    * ```html    * <input maxlength=\"5\">    * ```    *    * @returns A validator function that returns an error map with the    * `maxlength` property if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static maxLength(maxLength: number): ValidatorFn {     return maxLengthValidator(maxLength);   }    /**    * @description    * Validator that requires the control's value to match a regex pattern. This validator is also    * provided by default if you use the HTML5 `pattern` attribute.    *    * @usageNotes    *    * ### Validate that the field only contains letters or spaces    *    * ```typescript    * const control = new FormControl('1', Validators.pattern('[a-zA-Z ]*'));    *    * console.log(control.errors); // {pattern: {requiredPattern: '^[a-zA-Z ]*$', actualValue: '1'}}    * ```    *    * ```html    * <input pattern=\"[a-zA-Z ]*\">    * ```    *    * ### Pattern matching with the global or sticky flag    *    * `RegExp` objects created with the `g` or `y` flags that are passed into `Validators.pattern`    * can produce different results on the same input when validations are run consecutively. This is    * due to how the behavior of `RegExp.prototype.test` is    * specified in [ECMA-262](https://tc39.es/ecma262/#sec-regexpbuiltinexec)    * (`RegExp` preserves the index of the last match when the global or sticky flag is used).    * Due to this behavior, it is recommended that when using    * `Validators.pattern` you **do not** pass in a `RegExp` object with either the global or sticky    * flag enabled.    *    * ```typescript    * // Not recommended (since the `g` flag is used)    * const controlOne = new FormControl('1', Validators.pattern(/foo/g));    *    * // Good    * const controlTwo = new FormControl('1', Validators.pattern(/foo/));    * ```    *    * @param pattern A regular expression to be used as is to test the values, or a string.    * If a string is passed, the `^` character is prepended and the `$` character is    * appended to the provided string (if not already present), and the resulting regular    * expression is used to test the values.    *    * @returns A validator function that returns an error map with the    * `pattern` property if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static pattern(pattern: string|RegExp): ValidatorFn {     return patternValidator(pattern);   }    /**    * @description    * Validator that performs no operation.    *    * @see `updateValueAndValidity()`    *    */   static nullValidator(control: AbstractControl): ValidationErrors|null {     return nullValidator(control);   }    /**    * @description    * Compose multiple validators into a single function that returns the union    * of the individual error maps for the provided control.    *    * @returns A validator function that returns an error map with the    * merged error maps of the validators if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static compose(validators: null): null;   static compose(validators: (ValidatorFn|null|undefined)[]): ValidatorFn|null;   static compose(validators: (ValidatorFn|null|undefined)[]|null): ValidatorFn|null {     return compose(validators);   }    /**    * @description    * Compose multiple async validators into a single function that returns the union    * of the individual error objects for the provided control.    *    * @returns A validator function that returns an error map with the    * merged error objects of the async validators if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static composeAsync(validators: (AsyncValidatorFn|null)[]): AsyncValidatorFn|null {     return composeAsync(validators);   } }  /**  * Validator that requires the control's value to be greater than or equal to the provided number.  * See `Validators.min` for additional information.  */ export function minValidator(min: number): ValidatorFn {   return (control: AbstractControl): ValidationErrors|null => {     if (isEmptyInputValue(control.value) || isEmptyInputValue(min)) {       return null;  // don't validate empty values to allow optional controls     }     const value = parseFloat(control.value);     // Controls with NaN values after parsing should be treated as not having a     // minimum, per the HTML forms spec: https://www.w3.org/TR/html5/forms.html#attr-input-min     return !isNaN(value) && value < min ? {'min': {'min': min, 'actual': control.value}} : null;   }; }  /**  * Validator that requires the control's value to be less than or equal to the provided number.  * See `Validators.max` for additional information.  */ export function maxValidator(max: number): ValidatorFn {   return (control: AbstractControl): ValidationErrors|null => {     if (isEmptyInputValue(control.value) || isEmptyInputValue(max)) {       return null;  // don't validate empty values to allow optional controls     }     const value = parseFloat(control.value);     // Controls with NaN values after parsing should be treated as not having a     // maximum, per the HTML forms spec: https://www.w3.org/TR/html5/forms.html#attr-input-max     return !isNaN(value) && value > max ? {'max': {'max': max, 'actual': control.value}} : null;   }; }  /**  * Validator that requires the control have a non-empty value.  * See `Validators.required` for additional information.  */ export function requiredValidator(control: AbstractControl): ValidationErrors|null {   return isEmptyInputValue(control.value) ? {'required': true} : null; }  /**  * Validator that requires the control's value be true. This validator is commonly  * used for required checkboxes.  * See `Validators.requiredTrue` for additional information.  */ export function requiredTrueValidator(control: AbstractControl): ValidationErrors|null {   return control.value === true ? null : {'required': true}; }  /**  * Validator that requires the control's value pass an email validation test.  * See `Validators.email` for additional information.  */ export function emailValidator(control: AbstractControl): ValidationErrors|null {   if (isEmptyInputValue(control.value)) {     return null;  // don't validate empty values to allow optional controls   }   return EMAIL_REGEXP.test(control.value) ? null : {'email': true}; }  /**  * Validator that requires the length of the control's value to be greater than or equal  * to the provided minimum length. See `Validators.minLength` for additional information.  */ export function minLengthValidator(minLength: number): ValidatorFn {   return (control: AbstractControl): ValidationErrors|null => {     if (isEmptyInputValue(control.value) || !hasValidLength(control.value)) {       // don't validate empty values to allow optional controls       // don't validate values without `length` property       return null;     }      return control.value.length < minLength ?         {'minlength': {'requiredLength': minLength, 'actualLength': control.value.length}} :         null;   }; }  /**  * Validator that requires the length of the control's value to be less than or equal  * to the provided maximum length. See `Validators.maxLength` for additional information.  */ export function maxLengthValidator(maxLength: number): ValidatorFn {   return (control: AbstractControl): ValidationErrors|null => {     return hasValidLength(control.value) && control.value.length > maxLength ?         {'maxlength': {'requiredLength': maxLength, 'actualLength': control.value.length}} :         null;   }; }  /**  * Validator that requires the control's value to match a regex pattern.  * See `Validators.pattern` for additional information.  */ export function patternValidator(pattern: string|RegExp): ValidatorFn {   if (!pattern) return nullValidator;   let regex: RegExp;   let regexStr: string;   if (typeof pattern === 'string') {     regexStr = '';      if (pattern.charAt(0) !== '^') regexStr += '^';      regexStr += pattern;      if (pattern.charAt(pattern.length - 1) !== '$') regexStr += '$';      regex = new RegExp(regexStr);   } else {     regexStr = pattern.toString();     regex = pattern;   }   return (control: AbstractControl): ValidationErrors|null => {     if (isEmptyInputValue(control.value)) {       return null;  // don't validate empty values to allow optional controls     }     const value: string = control.value;     return regex.test(value) ? null :                                {'pattern': {'requiredPattern': regexStr, 'actualValue': value}};   }; }  /**  * Function that has `ValidatorFn` shape, but performs no operation.  */ export function nullValidator(control: AbstractControl): ValidationErrors|null {   return null; }  function isPresent(o: any): boolean {   return o != null; }  export function toObservable(value: any): Observable<any> {   const obs = isPromise(value) ? from(value) : value;   if (NG_DEV_MODE && !(isObservable(obs))) {     let errorMessage = `Expected async validator to return Promise or Observable.`;     // A synchronous validator will return object or null.     if (typeof value === 'object') {       errorMessage +=           ' Are you using a synchronous validator where an async validator is expected?';     }     throw new RuntimeError(RuntimeErrorCode.WRONG_VALIDATOR_RETURN_TYPE, errorMessage);   }   return obs; }  function mergeErrors(arrayOfErrors: (ValidationErrors|null)[]): ValidationErrors|null {   let res: {[key: string]: any} = {};   arrayOfErrors.forEach((errors: ValidationErrors|null) => {     res = errors != null ? {...res!, ...errors} : res!;   });    return Object.keys(res).length === 0 ? null : res; }  type GenericValidatorFn = (control: AbstractControl) => any;  function executeValidators<V extends GenericValidatorFn>(     control: AbstractControl, validators: V[]): ReturnType<V>[] {   return validators.map(validator => validator(control)); }  function isValidatorFn<V>(validator: V|Validator|AsyncValidator): validator is V {   return !(validator as Validator).validate; }  /**  * Given the list of validators that may contain both functions as well as classes, return the list  * of validator functions (convert validator classes into validator functions). This is needed to  * have consistent structure in validators list before composing them.  *  * @param validators The set of validators that may contain validators both in plain function form  *     as well as represented as a validator class.  */ export function normalizeValidators<V>(validators: (V|Validator|AsyncValidator)[]): V[] {   return validators.map(validator => {     return isValidatorFn<V>(validator) ?         validator :         ((c: AbstractControl) => validator.validate(c)) as unknown as V;   }); }  /**  * Merges synchronous validators into a single validator function.  * See `Validators.compose` for additional information.  */ function compose(validators: (ValidatorFn|null|undefined)[]|null): ValidatorFn|null {   if (!validators) return null;   const presentValidators: ValidatorFn[] = validators.filter(isPresent) as any;   if (presentValidators.length == 0) return null;    return function(control: AbstractControl) {     return mergeErrors(executeValidators<ValidatorFn>(control, presentValidators));   }; }  /**  * Accepts a list of validators of different possible shapes (`Validator` and `ValidatorFn`),  * normalizes the list (converts everything to `ValidatorFn`) and merges them into a single  * validator function.  */ export function composeValidators(validators: Array<Validator|ValidatorFn>): ValidatorFn|null {   return validators != null ? compose(normalizeValidators<ValidatorFn>(validators)) : null; }  /**  * Merges asynchronous validators into a single validator function.  * See `Validators.composeAsync` for additional information.  */ function composeAsync(validators: (AsyncValidatorFn|null)[]): AsyncValidatorFn|null {   if (!validators) return null;   const presentValidators: AsyncValidatorFn[] = validators.filter(isPresent) as any;   if (presentValidators.length == 0) return null;    return function(control: AbstractControl) {     const observables =         executeValidators<AsyncValidatorFn>(control, presentValidators).map(toObservable);     return forkJoin(observables).pipe(map(mergeErrors));   }; }  /**  * Accepts a list of async validators of different possible shapes (`AsyncValidator` and  * `AsyncValidatorFn`), normalizes the list (converts everything to `AsyncValidatorFn`) and merges  * them into a single validator function.  */ export function composeAsyncValidators(validators: Array<AsyncValidator|AsyncValidatorFn>):     AsyncValidatorFn|null {   return validators != null ? composeAsync(normalizeValidators<AsyncValidatorFn>(validators)) :                               null; }  /**  * Merges raw control validators with a given directive validator and returns the combined list of  * validators as an array.  */ export function mergeValidators<V>(controlValidators: V|V[]|null, dirValidator: V): V[] {   if (controlValidators === null) return [dirValidator];   return Array.isArray(controlValidators) ? [...controlValidators, dirValidator] :                                             [controlValidators, dirValidator]; }  /**  * Retrieves the list of raw synchronous validators attached to a given control.  */ export function getControlValidators(control: AbstractControl): ValidatorFn|ValidatorFn[]|null {   return (control as any)._rawValidators as ValidatorFn | ValidatorFn[] | null; }  /**  * Retrieves the list of raw asynchronous validators attached to a given control.  */ export function getControlAsyncValidators(control: AbstractControl): AsyncValidatorFn|     AsyncValidatorFn[]|null {   return (control as any)._rawAsyncValidators as AsyncValidatorFn | AsyncValidatorFn[] | null; }  /**  * Accepts a singleton validator, an array, or null, and returns an array type with the provided  * validators.  *  * @param validators A validator, validators, or null.  * @returns A validators array.  */ export function makeValidatorsArray<T extends ValidatorFn|AsyncValidatorFn>(validators: T|T[]|                                                                             null): T[] {   if (!validators) return [];   return Array.isArray(validators) ? validators : [validators]; }  /**  * Determines whether a validator or validators array has a given validator.  *  * @param validators The validator or validators to compare against.  * @param validator The validator to check.  * @returns Whether the validator is present.  */ export function hasValidator<T extends ValidatorFn|AsyncValidatorFn>(     validators: T|T[]|null, validator: T): boolean {   return Array.isArray(validators) ? validators.includes(validator) : validators === validator; }  /**  * Combines two arrays of validators into one. If duplicates are provided, only one will be added.  *  * @param validators The new validators.  * @param currentValidators The base array of current validators.  * @returns An array of validators.  */ export function addValidators<T extends ValidatorFn|AsyncValidatorFn>(     validators: T|T[], currentValidators: T|T[]|null): T[] {   const current = makeValidatorsArray(currentValidators);   const validatorsToAdd = makeValidatorsArray(validators);   validatorsToAdd.forEach((v: T) => {     // Note: if there are duplicate entries in the new validators array,     // only the first one would be added to the current list of validators.     // Duplicate ones would be ignored since `hasValidator` would detect     // the presence of a validator function and we update the current list in place.     if (!hasValidator(current, v)) {       current.push(v);     }   });   return current; }  export function removeValidators<T extends ValidatorFn|AsyncValidatorFn>(     validators: T|T[], currentValidators: T|T[]|null): T[] {   return makeValidatorsArray(currentValidators).filter(v => !hasValidator(validators, v)); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Observable} from 'rxjs';  import {AbstractControl} from '../model/abstract_model'; import {composeAsyncValidators, composeValidators} from '../validators';  import {AsyncValidator, AsyncValidatorFn, ValidationErrors, Validator, ValidatorFn} from './validators';   /**  * @description  * Base class for control directives.  *  * This class is only used internally in the `ReactiveFormsModule` and the `FormsModule`.  *  * @publicApi  */ export abstract class AbstractControlDirective {   /**    * @description    * A reference to the underlying control.    *    * @returns the control that backs this directive. Most properties fall through to that instance.    */   abstract get control(): AbstractControl|null;    /**    * @description    * Reports the value of the control if it is present, otherwise null.    */   get value(): any {     return this.control ? this.control.value : null;   }    /**    * @description    * Reports whether the control is valid. A control is considered valid if no    * validation errors exist with the current value.    * If the control is not present, null is returned.    */   get valid(): boolean|null {     return this.control ? this.control.valid : null;   }    /**    * @description    * Reports whether the control is invalid, meaning that an error exists in the input value.    * If the control is not present, null is returned.    */   get invalid(): boolean|null {     return this.control ? this.control.invalid : null;   }    /**    * @description    * Reports whether a control is pending, meaning that that async validation is occurring and    * errors are not yet available for the input value. If the control is not present, null is    * returned.    */   get pending(): boolean|null {     return this.control ? this.control.pending : null;   }    /**    * @description    * Reports whether the control is disabled, meaning that the control is disabled    * in the UI and is exempt from validation checks and excluded from aggregate    * values of ancestor controls. If the control is not present, null is returned.    */   get disabled(): boolean|null {     return this.control ? this.control.disabled : null;   }    /**    * @description    * Reports whether the control is enabled, meaning that the control is included in ancestor    * calculations of validity or value. If the control is not present, null is returned.    */   get enabled(): boolean|null {     return this.control ? this.control.enabled : null;   }    /**    * @description    * Reports the control's validation errors. If the control is not present, null is returned.    */   get errors(): ValidationErrors|null {     return this.control ? this.control.errors : null;   }    /**    * @description    * Reports whether the control is pristine, meaning that the user has not yet changed    * the value in the UI. If the control is not present, null is returned.    */   get pristine(): boolean|null {     return this.control ? this.control.pristine : null;   }    /**    * @description    * Reports whether the control is dirty, meaning that the user has changed    * the value in the UI. If the control is not present, null is returned.    */   get dirty(): boolean|null {     return this.control ? this.control.dirty : null;   }    /**    * @description    * Reports whether the control is touched, meaning that the user has triggered    * a `blur` event on it. If the control is not present, null is returned.    */   get touched(): boolean|null {     return this.control ? this.control.touched : null;   }    /**    * @description    * Reports the validation status of the control. Possible values include:    * 'VALID', 'INVALID', 'DISABLED', and 'PENDING'.    * If the control is not present, null is returned.    */   get status(): string|null {     return this.control ? this.control.status : null;   }    /**    * @description    * Reports whether the control is untouched, meaning that the user has not yet triggered    * a `blur` event on it. If the control is not present, null is returned.    */   get untouched(): boolean|null {     return this.control ? this.control.untouched : null;   }    /**    * @description    * Returns a multicasting observable that emits a validation status whenever it is    * calculated for the control. If the control is not present, null is returned.    */   get statusChanges(): Observable<any>|null {     return this.control ? this.control.statusChanges : null;   }    /**    * @description    * Returns a multicasting observable of value changes for the control that emits every time the    * value of the control changes in the UI or programmatically.    * If the control is not present, null is returned.    */   get valueChanges(): Observable<any>|null {     return this.control ? this.control.valueChanges : null;   }    /**    * @description    * Returns an array that represents the path from the top-level form to this control.    * Each index is the string name of the control on that level.    */   get path(): string[]|null {     return null;   }    /**    * Contains the result of merging synchronous validators into a single validator function    * (combined using `Validators.compose`).    */   private _composedValidatorFn: ValidatorFn|null|undefined;    /**    * Contains the result of merging asynchronous validators into a single validator function    * (combined using `Validators.composeAsync`).    */   private _composedAsyncValidatorFn: AsyncValidatorFn|null|undefined;    /**    * Set of synchronous validators as they were provided while calling `setValidators` function.    * @internal    */   _rawValidators: Array<Validator|ValidatorFn> = [];    /**    * Set of asynchronous validators as they were provided while calling `setAsyncValidators`    * function.    * @internal    */   _rawAsyncValidators: Array<AsyncValidator|AsyncValidatorFn> = [];    /**    * Sets synchronous validators for this directive.    * @internal    */   _setValidators(validators: Array<Validator|ValidatorFn>|undefined): void {     this._rawValidators = validators || [];     this._composedValidatorFn = composeValidators(this._rawValidators);   }    /**    * Sets asynchronous validators for this directive.    * @internal    */   _setAsyncValidators(validators: Array<AsyncValidator|AsyncValidatorFn>|undefined): void {     this._rawAsyncValidators = validators || [];     this._composedAsyncValidatorFn = composeAsyncValidators(this._rawAsyncValidators);   }    /**    * @description    * Synchronous validator function composed of all the synchronous validators registered with this    * directive.    */   get validator(): ValidatorFn|null {     return this._composedValidatorFn || null;   }    /**    * @description    * Asynchronous validator function composed of all the asynchronous validators registered with    * this directive.    */   get asyncValidator(): AsyncValidatorFn|null {     return this._composedAsyncValidatorFn || null;   }    /*    * The set of callbacks to be invoked when directive instance is being destroyed.    */   private _onDestroyCallbacks: (() => void)[] = [];    /**    * Internal function to register callbacks that should be invoked    * when directive instance is being destroyed.    * @internal    */   _registerOnDestroy(fn: () => void): void {     this._onDestroyCallbacks.push(fn);   }    /**    * Internal function to invoke all registered \"on destroy\" callbacks.    * Note: calling this function also clears the list of callbacks.    * @internal    */   _invokeOnDestroyCallbacks(): void {     this._onDestroyCallbacks.forEach(fn => fn());     this._onDestroyCallbacks = [];   }    /**    * @description    * Resets the control with the provided value if the control is present.    */   reset(value: any = undefined): void {     if (this.control) this.control.reset(value);   }    /**    * @description    * Reports whether the control with the given path has the error specified.    *    * @param errorCode The code of the error to check    * @param path A list of control names that designates how to move from the current control    * to the control that should be queried for errors.    *    * @usageNotes    * For example, for the following `FormGroup`:    *    * ```    * form = new FormGroup({    *   address: new FormGroup({ street: new FormControl() })    * });    * ```    *    * The path to the 'street' control from the root form would be 'address' -> 'street'.    *    * It can be provided to this method in one of two formats:    *    * 1. An array of string control names, e.g. `['address', 'street']`    * 1. A period-delimited list of control names in one string, e.g. `'address.street'`    *    * If no path is given, this method checks for the error on the current control.    *    * @returns whether the given error is present in the control at the given path.    *    * If the control is not present, false is returned.    */   hasError(errorCode: string, path?: Array<string|number>|string): boolean {     return this.control ? this.control.hasError(errorCode, path) : false;   }    /**    * @description    * Reports error data for the control with the given path.    *    * @param errorCode The code of the error to check    * @param path A list of control names that designates how to move from the current control    * to the control that should be queried for errors.    *    * @usageNotes    * For example, for the following `FormGroup`:    *    * ```    * form = new FormGroup({    *   address: new FormGroup({ street: new FormControl() })    * });    * ```    *    * The path to the 'street' control from the root form would be 'address' -> 'street'.    *    * It can be provided to this method in one of two formats:    *    * 1. An array of string control names, e.g. `['address', 'street']`    * 1. A period-delimited list of control names in one string, e.g. `'address.street'`    *    * @returns error data for that particular error. If the control or error is not present,    * null is returned.    */   getError(errorCode: string, path?: Array<string|number>|string): any {     return this.control ? this.control.getError(errorCode, path) : null;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AbstractControlDirective} from './abstract_control_directive'; import {ControlContainer} from './control_container'; import {ControlValueAccessor} from './control_value_accessor';   /**  * @description  * A base class that all `FormControl`-based directives extend. It binds a `FormControl`  * object to a DOM element.  *  * @publicApi  */ export abstract class NgControl extends AbstractControlDirective {   /**    * @description    * The parent form for the control.    *    * @internal    */   _parent: ControlContainer|null = null;    /**    * @description    * The name for the control    */   name: string|number|null = null;    /**    * @description    * The value accessor for the control    */   valueAccessor: ControlValueAccessor|null = null;    /**    * @description    * The callback method to update the model from the view when requested    *    * @param newValue The new value for the view    */   abstract viewToModelUpdate(newValue: any): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AbstractControlDirective} from './abstract_control_directive'; import {Form} from './form_interface';   /**  * @description  * A base class for directives that contain multiple registered instances of `NgControl`.  * Only used by the forms module.  *  * @publicApi  */ export abstract class ControlContainer extends AbstractControlDirective {   /**    * @description    * The name for the control    */   // TODO(issue/24571): remove '!'.   name!: string|number|null;    /**    * @description    * The top-level form directive for the control.    */   get formDirective(): Form|null {     return null;   }    /**    * @description    * The path to this group.    */   override get path(): string[]|null {     return null;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, Optional, Self} from '@angular/core';  import {AbstractControlDirective} from './abstract_control_directive'; import {ControlContainer} from './control_container'; import {NgControl} from './ng_control';  // DO NOT REFACTOR! // Each status is represented by a separate function to make sure that // advanced Closure Compiler optimizations related to property renaming // can work correctly. export class AbstractControlStatus {   private _cd: AbstractControlDirective|null;    constructor(cd: AbstractControlDirective|null) {     this._cd = cd;   }    protected get isTouched() {     return !!this._cd?.control?.touched;   }    protected get isUntouched() {     return !!this._cd?.control?.untouched;   }    protected get isPristine() {     return !!this._cd?.control?.pristine;   }    protected get isDirty() {     return !!this._cd?.control?.dirty;   }    protected get isValid() {     return !!this._cd?.control?.valid;   }    protected get isInvalid() {     return !!this._cd?.control?.invalid;   }    protected get isPending() {     return !!this._cd?.control?.pending;   }    protected get isSubmitted() {     // We check for the `submitted` field from `NgForm` and `FormGroupDirective` classes, but     // we avoid instanceof checks to prevent non-tree-shakable references to those types.     return !!(this._cd as unknown as {submitted: boolean} | null)?.submitted;   } }  export const ngControlStatusHost = {   '[class.ng-untouched]': 'isUntouched',   '[class.ng-touched]': 'isTouched',   '[class.ng-pristine]': 'isPristine',   '[class.ng-dirty]': 'isDirty',   '[class.ng-valid]': 'isValid',   '[class.ng-invalid]': 'isInvalid',   '[class.ng-pending]': 'isPending', };  export const ngGroupStatusHost = {   ...ngControlStatusHost,   '[class.ng-submitted]': 'isSubmitted', };  /**  * @description  * Directive automatically applied to Angular form controls that sets CSS classes  * based on control status.  *  * @usageNotes  *  * ### CSS classes applied  *  * The following classes are applied as the properties become true:  *  * * ng-valid  * * ng-invalid  * * ng-pending  * * ng-pristine  * * ng-dirty  * * ng-untouched  * * ng-touched  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({selector: '[formControlName],[ngModel],[formControl]', host: ngControlStatusHost}) export class NgControlStatus extends AbstractControlStatus {   constructor(@Self() cd: NgControl) {     super(cd);   } }  /**  * @description  * Directive automatically applied to Angular form groups that sets CSS classes  * based on control status (valid/invalid/dirty/etc). On groups, this includes the additional  * class ng-submitted.  *  * @see `NgControlStatus`  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       '[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]',   host: ngGroupStatusHost }) export class NgControlStatusGroup extends AbstractControlStatus {   constructor(@Optional() @Self() cd: ControlContainer) {     super(cd);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export const formControlNameExample = `   <div [formGroup]=\"myGroup\">     <input formControlName=\"firstName\">   </div>    In your class:    this.myGroup = new FormGroup({       firstName: new FormControl()   });`;  export const formGroupNameExample = `   <div [formGroup]=\"myGroup\">       <div formGroupName=\"person\">         <input formControlName=\"firstName\">       </div>   </div>    In your class:    this.myGroup = new FormGroup({       person: new FormGroup({ firstName: new FormControl() })   });`;  export const formArrayNameExample = `   <div [formGroup]=\"myGroup\">     <div formArrayName=\"cities\">       <div *ngFor=\"let city of cityArray.controls; index as i\">         <input [formControlName]=\"i\">       </div>     </div>   </div>    In your class:    this.cityArray = new FormArray([new FormControl('SF')]);   this.myGroup = new FormGroup({     cities: this.cityArray   });`;  export const ngModelGroupExample = `   <form>       <div ngModelGroup=\"person\">         <input [(ngModel)]=\"person.name\" name=\"firstName\">       </div>   </form>`;  export const ngModelWithFormGroupExample = `   <div [formGroup]=\"myGroup\">       <input formControlName=\"firstName\">       <input [(ngModel)]=\"showMoreControls\" [ngModelOptions]=\"{standalone: true}\">   </div> `; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  import {formArrayNameExample, formControlNameExample, formGroupNameExample, ngModelGroupExample} from './error_examples';   export function controlParentException(): Error {   return new RuntimeError(       RuntimeErrorCode.FORM_CONTROL_NAME_MISSING_PARENT,       `formControlName must be used with a parent formGroup directive.  You'll want to add a formGroup       directive and pass it an existing FormGroup instance (you can create one in your class).      Example:      ${formControlNameExample}`); }  export function ngModelGroupException(): Error {   return new RuntimeError(       RuntimeErrorCode.FORM_CONTROL_NAME_INSIDE_MODEL_GROUP,       `formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents       that also have a \"form\" prefix: formGroupName, formArrayName, or formGroup.        Option 1:  Update the parent to be formGroupName (reactive form strategy)        ${formGroupNameExample}        Option 2: Use ngModel instead of formControlName (template-driven strategy)        ${ngModelGroupExample}`); }  export function missingFormException(): Error {   return new RuntimeError(       RuntimeErrorCode.FORM_GROUP_MISSING_INSTANCE,       `formGroup expects a FormGroup instance. Please pass one in.        Example:        ${formControlNameExample}`); }  export function groupParentException(): Error {   return new RuntimeError(       RuntimeErrorCode.FORM_GROUP_NAME_MISSING_PARENT,       `formGroupName must be used with a parent formGroup directive.  You'll want to add a formGroup     directive and pass it an existing FormGroup instance (you can create one in your class).      Example:      ${formGroupNameExample}`); }  export function arrayParentException(): Error {   return new RuntimeError(       RuntimeErrorCode.FORM_ARRAY_NAME_MISSING_PARENT,       `formArrayName must be used with a parent formGroup directive.  You'll want to add a formGroup       directive and pass it an existing FormGroup instance (you can create one in your class).        Example:        ${formArrayNameExample}`); }  export const disabledAttrWarning = `   It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true   when you set up this control in your component class, the disabled attribute will actually be set in the DOM for   you. We recommend using this approach to avoid 'changed after checked' errors.    Example:   // Specify the \\`disabled\\` property at control creation time:   form = new FormGroup({     first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),     last: new FormControl('Drew', Validators.required)   });    // Controls can also be enabled/disabled after creation:   form.get('first')?.enable();   form.get('last')?.disable(); `;  export const asyncValidatorsDroppedWithOptsWarning = `   It looks like you're constructing using a FormControl with both an options argument and an   async validators argument. Mixing these arguments will cause your async validators to be dropped.   You should either put all your validators in the options object, or in separate validators   arguments. For example:    // Using validators arguments   fc = new FormControl(42, Validators.required, myAsyncValidator);    // Using AbstractControlOptions   fc = new FormControl(42, {validators: Validators.required, asyncValidators: myAV});    // Do NOT mix them: async validators will be dropped!   fc = new FormControl(42, {validators: Validators.required}, /* Oops! */ myAsyncValidator); `;  export function ngModelWarning(directiveName: string): string {   return `   It looks like you're using ngModel on the same form field as ${directiveName}.   Support for using the ngModel input property and ngModelChange event with   reactive form directives has been deprecated in Angular v6 and will be removed   in a future version of Angular.    For more information on this, see our API docs here:   https://angular.io/api/forms/${       directiveName === 'formControl' ? 'FormControlDirective' : 'FormControlName'}#use-with-ngmodel   `; }  function describeKey(isFormGroup: boolean, key: string|number): string {   return isFormGroup ? `with name: '${key}'` : `at index: ${key}`; }  export function noControlsError(isFormGroup: boolean): string {   return `     There are no form controls registered with this ${       isFormGroup ? 'group' : 'array'} yet. If you're using ngModel,     you may want to check next tick (e.g. use setTimeout).   `; }  export function missingControlError(isFormGroup: boolean, key: string|number): string {   return `Cannot find form control ${describeKey(isFormGroup, key)}`; }  export function missingControlValueError(isFormGroup: boolean, key: string|number): string {   return `Must supply a value for form control ${describeKey(isFormGroup, key)}`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EventEmitter, ɵRuntimeError as RuntimeError} from '@angular/core'; import {Observable} from 'rxjs';  import {asyncValidatorsDroppedWithOptsWarning, missingControlError, missingControlValueError, noControlsError} from '../directives/reactive_errors'; import {AsyncValidatorFn, ValidationErrors, ValidatorFn} from '../directives/validators'; import {RuntimeErrorCode} from '../errors'; import {FormArray, FormGroup} from '../forms'; import {addValidators, composeAsyncValidators, composeValidators, hasValidator, removeValidators, toObservable} from '../validators';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  /**  * Reports that a control is valid, meaning that no errors exist in the input value.  *  * @see `status`  */ export const VALID = 'VALID';  /**  * Reports that a control is invalid, meaning that an error exists in the input value.  *  * @see `status`  */ export const INVALID = 'INVALID';  /**  * Reports that a control is pending, meaning that that async validation is occurring and  * errors are not yet available for the input value.  *  * @see `markAsPending`  * @see `status`  */ export const PENDING = 'PENDING';  /**  * Reports that a control is disabled, meaning that the control is exempt from ancestor  * calculations of validity or value.  *  * @see `markAsDisabled`  * @see `status`  */ export const DISABLED = 'DISABLED';  /**  * A form can have several different statuses. Each  * possible status is returned as a string literal.  *  * * **VALID**: Reports that a control is valid, meaning that no errors exist in the input  * value.  * * **INVALID**: Reports that a control is invalid, meaning that an error exists in the input  * value.  * * **PENDING**: Reports that a control is pending, meaning that that async validation is  * occurring and errors are not yet available for the input value.  * * **DISABLED**: Reports that a control is  * disabled, meaning that the control is exempt from ancestor calculations of validity or value.  *  * @publicApi  */ export type FormControlStatus = 'VALID'|'INVALID'|'PENDING'|'DISABLED';  /**  * Gets validators from either an options object or given validators.  */ export function pickValidators(validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|                                null): ValidatorFn|ValidatorFn[]|null {   return (isOptionsObj(validatorOrOpts) ? validatorOrOpts.validators : validatorOrOpts) || null; }  /**  * Creates validator function by combining provided validators.  */ function coerceToValidator(validator: ValidatorFn|ValidatorFn[]|null): ValidatorFn|null {   return Array.isArray(validator) ? composeValidators(validator) : validator || null; }  /**  * Gets async validators from either an options object or given validators.  */ export function pickAsyncValidators(     asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null,     validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null): AsyncValidatorFn|     AsyncValidatorFn[]|null {   if (typeof ngDevMode === 'undefined' || ngDevMode) {     if (isOptionsObj(validatorOrOpts) && asyncValidator) {       console.warn(asyncValidatorsDroppedWithOptsWarning);     }   }   return (isOptionsObj(validatorOrOpts) ? validatorOrOpts.asyncValidators : asyncValidator) || null; }  /**  * Creates async validator function by combining provided async validators.  */ function coerceToAsyncValidator(asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|                                 null): AsyncValidatorFn|null {   return Array.isArray(asyncValidator) ? composeAsyncValidators(asyncValidator) :                                          asyncValidator || null; }  export type FormHooks = 'change'|'blur'|'submit';  /**  * Interface for options provided to an `AbstractControl`.  *  * @publicApi  */ export interface AbstractControlOptions {   /**    * @description    * The list of validators applied to a control.    */   validators?: ValidatorFn|ValidatorFn[]|null;   /**    * @description    * The list of async validators applied to control.    */   asyncValidators?: AsyncValidatorFn|AsyncValidatorFn[]|null;   /**    * @description    * The event name for control to update upon.    */   updateOn?: 'change'|'blur'|'submit'; }  export function isOptionsObj(validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|                              null): validatorOrOpts is AbstractControlOptions {   return validatorOrOpts != null && !Array.isArray(validatorOrOpts) &&       typeof validatorOrOpts === 'object'; }  export function assertControlPresent(parent: any, isGroup: boolean, key: string|number): void {   const controls = parent.controls as {[key: string|number]: unknown};   const collection = isGroup ? Object.keys(controls) : controls;   if (!collection.length) {     throw new RuntimeError(         RuntimeErrorCode.NO_CONTROLS, NG_DEV_MODE ? noControlsError(isGroup) : '');   }   if (!controls[key]) {     throw new RuntimeError(         RuntimeErrorCode.MISSING_CONTROL, NG_DEV_MODE ? missingControlError(isGroup, key) : '');   } }  export function assertAllValuesPresent(control: any, isGroup: boolean, value: any): void {   control._forEachChild((_: unknown, key: string|number) => {     if (value[key] === undefined) {       throw new RuntimeError(           RuntimeErrorCode.MISSING_CONTROL_VALUE,           NG_DEV_MODE ? missingControlValueError(isGroup, key) : '');     }   }); }  // IsAny checks if T is `any`, by checking a condition that couldn't possibly be true otherwise. export type ɵIsAny<T, Y, N> = 0 extends(1&T) ? Y : N;  /**  * `TypedOrUntyped` allows one of two different types to be selected, depending on whether the Forms  * class it's applied to is typed or not.  *  * This is for internal Angular usage to support typed forms; do not directly use it.  */ export type ɵTypedOrUntyped<T, Typed, Untyped> = ɵIsAny<T, Untyped, Typed>;  /**  * Value gives the value type corresponding to a control type.  *  * Note that the resulting type will follow the same rules as `.value` on your control, group, or  * array, including `undefined` for each group element which might be disabled.  *  * If you are trying to extract a value type for a data model, you probably want {@link RawValue},  * which will not have `undefined` in group keys.  *  * @usageNotes  *  * ### `FormControl` value type  *  * You can extract the value type of a single control:  *  * ```ts  * type NameControl = FormControl<string>;  * type NameValue = Value<NameControl>;  * ```  *  * The resulting type is `string`.  *  * ### `FormGroup` value type  *  * Imagine you have an interface defining the controls in your group. You can extract the shape of  * the values as follows:  *  * ```ts  * interface PartyFormControls {  *   address: FormControl<string>;  * }  *  * // Value operates on controls; the object must be wrapped in a FormGroup.  * type PartyFormValues = Value<FormGroup<PartyFormControls>>;  * ```  *  * The resulting type is `{address: string|undefined}`.  *  * ### `FormArray` value type  *  * You can extract values from FormArrays as well:  *  * ```ts  * type GuestNamesControls = FormArray<FormControl<string>>;  *  * type NamesValues = Value<GuestNamesControls>;  * ```  *  * The resulting type is `string[]`.  *  * **Internal: not for public use.**  */ export type ɵValue<T extends AbstractControl|undefined> =     T extends AbstractControl<any, any>? T['value'] : never;  /**  * RawValue gives the raw value type corresponding to a control type.  *  * Note that the resulting type will follow the same rules as `.getRawValue()` on your control,  * group, or array. This means that all controls inside a group will be required, not optional,  * regardless of their disabled state.  *  * You may also wish to use {@link ɵValue}, which will have `undefined` in group keys (which can be  * disabled).  *  * @usageNotes  *  * ### `FormGroup` raw value type  *  * Imagine you have an interface defining the controls in your group. You can extract the shape of  * the raw values as follows:  *  * ```ts  * interface PartyFormControls {  *   address: FormControl<string>;  * }  *  * // RawValue operates on controls; the object must be wrapped in a FormGroup.  * type PartyFormValues = RawValue<FormGroup<PartyFormControls>>;  * ```  *  * The resulting type is `{address: string}`. (Note the absence of `undefined`.)  *  *  **Internal: not for public use.**  */ export type ɵRawValue<T extends AbstractControl|undefined> = T extends AbstractControl<any, any>?     (T['setValue'] extends((v: infer R) => void) ? R : never) :     never;  // Disable clang-format to produce clearer formatting for these multiline types. // clang-format off  /**  * Tokenize splits a string literal S by a delimiter D.  */ export type ɵTokenize<S extends string, D extends string> =   string extends S ? string[] : /* S must be a literal */     S extends `${infer T}${D}${infer U}` ? [T, ...ɵTokenize<U, D>] :       [S] /* Base case */   ;  /**  * CoerceStrArrToNumArr accepts an array of strings, and converts any numeric string to a number.  */ export type ɵCoerceStrArrToNumArr<S> = // Extract the head of the array.   S extends [infer Head, ...infer Tail] ?     // Using a template literal type, coerce the head to `number` if possible.     // Then, recurse on the tail.     Head extends `${number}` ?       [number, ...ɵCoerceStrArrToNumArr<Tail>] :       [Head, ...ɵCoerceStrArrToNumArr<Tail>] :     [];  /**  * Navigate takes a type T and an array K, and returns the type of T[K[0]][K[1]][K[2]]...  */ export type ɵNavigate<T, K extends(Array<string|number>)> =   T extends object ? /* T must be indexable (object or array) */     (K extends [infer Head, ...infer Tail] ? /* Split K into head and tail */       (Head extends keyof T ? /* head(K) must index T */         (Tail extends(string|number)[] ? /* tail(K) must be an array */           [] extends Tail ? T[Head] : /* base case: K can be split, but Tail is empty */             (ɵNavigate<T[Head], Tail>) /* explore T[head(K)] by tail(K) */ :           any) /* tail(K) was not an array, give up */ :         never) /* head(K) does not index T, give up */ :       any) /* K cannot be split, give up */ :     any /* T is not indexable, give up */   ;  /**  * ɵWriteable removes readonly from all keys.  */ export type ɵWriteable<T> = {   -readonly[P in keyof T]: T[P] };  /**  * GetProperty takes a type T and some property names or indices K.  * If K is a dot-separated string, it is tokenized into an array before proceeding.  * Then, the type of the nested property at K is computed: T[K[0]][K[1]][K[2]]...  * This works with both objects, which are indexed by property name, and arrays, which are indexed  * numerically.  *  * For internal use only.  */ export type ɵGetProperty<T, K> =     // K is a string     K extends string ? ɵGetProperty<T, ɵCoerceStrArrToNumArr<ɵTokenize<K, '.'>>> :     // Is is an array     ɵWriteable<K> extends Array<string|number> ? ɵNavigate<T, ɵWriteable<K>> :     // Fall through permissively if we can't calculate the type of K.     any;  // clang-format on  /**  * This is the base class for `FormControl`, `FormGroup`, and `FormArray`.  *  * It provides some of the shared behavior that all controls and groups of controls have, like  * running validators, calculating status, and resetting state. It also defines the properties  * that are shared between all sub-classes, like `value`, `valid`, and `dirty`. It shouldn't be  * instantiated directly.  *  * The first type parameter TValue represents the value type of the control (`control.value`).  * The optional type parameter TRawValue  represents the raw value type (`control.getRawValue()`).  *  * @see [Forms Guide](/guide/forms)  * @see [Reactive Forms Guide](/guide/reactive-forms)  * @see [Dynamic Forms Guide](/guide/dynamic-form)  *  * @publicApi  */ export abstract class AbstractControl<TValue = any, TRawValue extends TValue = TValue> {   /** @internal */   _pendingDirty = false;    /**    * Indicates that a control has its own pending asynchronous validation in progress.    *    * @internal    */   _hasOwnPendingAsyncValidator = false;    /** @internal */   _pendingTouched = false;    /** @internal */   _onCollectionChange = () => {};    /** @internal */   _updateOn?: FormHooks;    private _parent: FormGroup|FormArray|null = null;   private _asyncValidationSubscription: any;    /**    * Contains the result of merging synchronous validators into a single validator function    * (combined using `Validators.compose`).    *    * @internal    */   private _composedValidatorFn!: ValidatorFn|null;    /**    * Contains the result of merging asynchronous validators into a single validator function    * (combined using `Validators.composeAsync`).    *    * @internal    */   private _composedAsyncValidatorFn!: AsyncValidatorFn|null;    /**    * Synchronous validators as they were provided:    *  - in `AbstractControl` constructor    *  - as an argument while calling `setValidators` function    *  - while calling the setter on the `validator` field (e.g. `control.validator = validatorFn`)    *    * @internal    */   private _rawValidators!: ValidatorFn|ValidatorFn[]|null;    /**    * Asynchronous validators as they were provided:    *  - in `AbstractControl` constructor    *  - as an argument while calling `setAsyncValidators` function    *  - while calling the setter on the `asyncValidator` field (e.g. `control.asyncValidator =    * asyncValidatorFn`)    *    * @internal    */   private _rawAsyncValidators!: AsyncValidatorFn|AsyncValidatorFn[]|null;    /**    * The current value of the control.    *    * * For a `FormControl`, the current value.    * * For an enabled `FormGroup`, the values of enabled controls as an object    * with a key-value pair for each member of the group.    * * For a disabled `FormGroup`, the values of all controls as an object    * with a key-value pair for each member of the group.    * * For a `FormArray`, the values of enabled controls as an array.    *    */   public readonly value!: TValue;    /**    * Initialize the AbstractControl instance.    *    * @param validators The function or array of functions that is used to determine the validity of    *     this control synchronously.    * @param asyncValidators The function or array of functions that is used to determine validity of    *     this control asynchronously.    */   constructor(       validators: ValidatorFn|ValidatorFn[]|null,       asyncValidators: AsyncValidatorFn|AsyncValidatorFn[]|null) {     this._assignValidators(validators);     this._assignAsyncValidators(asyncValidators);   }    /**    * Returns the function that is used to determine the validity of this control synchronously.    * If multiple validators have been added, this will be a single composed function.    * See `Validators.compose()` for additional information.    */   get validator(): ValidatorFn|null {     return this._composedValidatorFn;   }   set validator(validatorFn: ValidatorFn|null) {     this._rawValidators = this._composedValidatorFn = validatorFn;   }    /**    * Returns the function that is used to determine the validity of this control asynchronously.    * If multiple validators have been added, this will be a single composed function.    * See `Validators.compose()` for additional information.    */   get asyncValidator(): AsyncValidatorFn|null {     return this._composedAsyncValidatorFn;   }   set asyncValidator(asyncValidatorFn: AsyncValidatorFn|null) {     this._rawAsyncValidators = this._composedAsyncValidatorFn = asyncValidatorFn;   }    /**    * The parent control.    */   get parent(): FormGroup|FormArray|null {     return this._parent;   }    /**    * The validation status of the control.    *    * @see `FormControlStatus`    *    * These status values are mutually exclusive, so a control cannot be    * both valid AND invalid or invalid AND disabled.    */   public readonly status!: FormControlStatus;    /**    * A control is `valid` when its `status` is `VALID`.    *    * @see {@link AbstractControl.status}    *    * @returns True if the control has passed all of its validation tests,    * false otherwise.    */   get valid(): boolean {     return this.status === VALID;   }    /**    * A control is `invalid` when its `status` is `INVALID`.    *    * @see {@link AbstractControl.status}    *    * @returns True if this control has failed one or more of its validation checks,    * false otherwise.    */   get invalid(): boolean {     return this.status === INVALID;   }    /**    * A control is `pending` when its `status` is `PENDING`.    *    * @see {@link AbstractControl.status}    *    * @returns True if this control is in the process of conducting a validation check,    * false otherwise.    */   get pending(): boolean {     return this.status == PENDING;   }    /**    * A control is `disabled` when its `status` is `DISABLED`.    *    * Disabled controls are exempt from validation checks and    * are not included in the aggregate value of their ancestor    * controls.    *    * @see {@link AbstractControl.status}    *    * @returns True if the control is disabled, false otherwise.    */   get disabled(): boolean {     return this.status === DISABLED;   }    /**    * A control is `enabled` as long as its `status` is not `DISABLED`.    *    * @returns True if the control has any status other than 'DISABLED',    * false if the status is 'DISABLED'.    *    * @see {@link AbstractControl.status}    *    */   get enabled(): boolean {     return this.status !== DISABLED;   }    /**    * An object containing any errors generated by failing validation,    * or null if there are no errors.    */   public readonly errors!: ValidationErrors|null;    /**    * A control is `pristine` if the user has not yet changed    * the value in the UI.    *    * @returns True if the user has not yet changed the value in the UI; compare `dirty`.    * Programmatic changes to a control's value do not mark it dirty.    */   public readonly pristine: boolean = true;    /**    * A control is `dirty` if the user has changed the value    * in the UI.    *    * @returns True if the user has changed the value of this control in the UI; compare `pristine`.    * Programmatic changes to a control's value do not mark it dirty.    */   get dirty(): boolean {     return !this.pristine;   }    /**    * True if the control is marked as `touched`.    *    * A control is marked `touched` once the user has triggered    * a `blur` event on it.    */   public readonly touched: boolean = false;    /**    * True if the control has not been marked as touched    *    * A control is `untouched` if the user has not yet triggered    * a `blur` event on it.    */   get untouched(): boolean {     return !this.touched;   }    /**    * A multicasting observable that emits an event every time the value of the control changes, in    * the UI or programmatically. It also emits an event each time you call enable() or disable()    * without passing along {emitEvent: false} as a function argument.    */   public readonly valueChanges!: Observable<TValue>;    /**    * A multicasting observable that emits an event every time the validation `status` of the control    * recalculates.    *    * @see `FormControlStatus`    * @see {@link AbstractControl.status}    *    */   public readonly statusChanges!: Observable<FormControlStatus>;    /**    * Reports the update strategy of the `AbstractControl` (meaning    * the event on which the control updates itself).    * Possible values: `'change'` | `'blur'` | `'submit'`    * Default value: `'change'`    */   get updateOn(): FormHooks {     return this._updateOn ? this._updateOn : (this.parent ? this.parent.updateOn : 'change');   }    /**    * Sets the synchronous validators that are active on this control.  Calling    * this overwrites any existing synchronous validators.    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    * If you want to add a new validator without affecting existing ones, consider    * using `addValidators()` method instead.    */   setValidators(validators: ValidatorFn|ValidatorFn[]|null): void {     this._assignValidators(validators);   }    /**    * Sets the asynchronous validators that are active on this control. Calling this    * overwrites any existing asynchronous validators.    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    * If you want to add a new validator without affecting existing ones, consider    * using `addAsyncValidators()` method instead.    */   setAsyncValidators(validators: AsyncValidatorFn|AsyncValidatorFn[]|null): void {     this._assignAsyncValidators(validators);   }    /**    * Add a synchronous validator or validators to this control, without affecting other validators.    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    * Adding a validator that already exists will have no effect. If duplicate validator functions    * are present in the `validators` array, only the first instance would be added to a form    * control.    *    * @param validators The new validator function or functions to add to this control.    */   addValidators(validators: ValidatorFn|ValidatorFn[]): void {     this.setValidators(addValidators(validators, this._rawValidators));   }    /**    * Add an asynchronous validator or validators to this control, without affecting other    * validators.    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    * Adding a validator that already exists will have no effect.    *    * @param validators The new asynchronous validator function or functions to add to this control.    */   addAsyncValidators(validators: AsyncValidatorFn|AsyncValidatorFn[]): void {     this.setAsyncValidators(addValidators(validators, this._rawAsyncValidators));   }    /**    * Remove a synchronous validator from this control, without affecting other validators.    * Validators are compared by function reference; you must pass a reference to the exact same    * validator function as the one that was originally set. If a provided validator is not found,    * it is ignored.    *    * @usageNotes    *    * ### Reference to a ValidatorFn    *    * ```    * // Reference to the RequiredValidator    * const ctrl = new FormControl<string | null>('', Validators.required);    * ctrl.removeValidators(Validators.required);    *    * // Reference to anonymous function inside MinValidator    * const minValidator = Validators.min(3);    * const ctrl = new FormControl<string | null>('', minValidator);    * expect(ctrl.hasValidator(minValidator)).toEqual(true)    * expect(ctrl.hasValidator(Validators.min(3))).toEqual(false)    *    * ctrl.removeValidators(minValidator);    * ```    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    * @param validators The validator or validators to remove.    */   removeValidators(validators: ValidatorFn|ValidatorFn[]): void {     this.setValidators(removeValidators(validators, this._rawValidators));   }    /**    * Remove an asynchronous validator from this control, without affecting other validators.    * Validators are compared by function reference; you must pass a reference to the exact same    * validator function as the one that was originally set. If a provided validator is not found, it    * is ignored.    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    * @param validators The asynchronous validator or validators to remove.    */   removeAsyncValidators(validators: AsyncValidatorFn|AsyncValidatorFn[]): void {     this.setAsyncValidators(removeValidators(validators, this._rawAsyncValidators));   }    /**    * Check whether a synchronous validator function is present on this control. The provided    * validator must be a reference to the exact same function that was provided.    *    * @usageNotes    *    * ### Reference to a ValidatorFn    *    * ```    * // Reference to the RequiredValidator    * const ctrl = new FormControl<number | null>(0, Validators.required);    * expect(ctrl.hasValidator(Validators.required)).toEqual(true)    *    * // Reference to anonymous function inside MinValidator    * const minValidator = Validators.min(3);    * const ctrl = new FormControl<number | null>(0, minValidator);    * expect(ctrl.hasValidator(minValidator)).toEqual(true)    * expect(ctrl.hasValidator(Validators.min(3))).toEqual(false)    * ```    *    * @param validator The validator to check for presence. Compared by function reference.    * @returns Whether the provided validator was found on this control.    */   hasValidator(validator: ValidatorFn): boolean {     return hasValidator(this._rawValidators, validator);   }    /**    * Check whether an asynchronous validator function is present on this control. The provided    * validator must be a reference to the exact same function that was provided.    *    * @param validator The asynchronous validator to check for presence. Compared by function    *     reference.    * @returns Whether the provided asynchronous validator was found on this control.    */   hasAsyncValidator(validator: AsyncValidatorFn): boolean {     return hasValidator(this._rawAsyncValidators, validator);   }    /**    * Empties out the synchronous validator list.    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    */   clearValidators(): void {     this.validator = null;   }    /**    * Empties out the async validator list.    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    */   clearAsyncValidators(): void {     this.asyncValidator = null;   }    /**    * Marks the control as `touched`. A control is touched by focus and    * blur events that do not change the value.    *    * @see `markAsUntouched()`    * @see `markAsDirty()`    * @see `markAsPristine()`    *    * @param opts Configuration options that determine how the control propagates changes    * and emits events after marking is applied.    * * `onlySelf`: When true, mark only this control. When false or not supplied,    * marks all direct ancestors. Default is false.    */   markAsTouched(opts: {onlySelf?: boolean} = {}): void {     (this as {touched: boolean}).touched = true;      if (this._parent && !opts.onlySelf) {       this._parent.markAsTouched(opts);     }   }    /**    * Marks the control and all its descendant controls as `touched`.    * @see `markAsTouched()`    */   markAllAsTouched(): void {     this.markAsTouched({onlySelf: true});      this._forEachChild((control: AbstractControl) => control.markAllAsTouched());   }    /**    * Marks the control as `untouched`.    *    * If the control has any children, also marks all children as `untouched`    * and recalculates the `touched` status of all parent controls.    *    * @see `markAsTouched()`    * @see `markAsDirty()`    * @see `markAsPristine()`    *    * @param opts Configuration options that determine how the control propagates changes    * and emits events after the marking is applied.    * * `onlySelf`: When true, mark only this control. When false or not supplied,    * marks all direct ancestors. Default is false.    */   markAsUntouched(opts: {onlySelf?: boolean} = {}): void {     (this as {touched: boolean}).touched = false;     this._pendingTouched = false;      this._forEachChild((control: AbstractControl) => {       control.markAsUntouched({onlySelf: true});     });      if (this._parent && !opts.onlySelf) {       this._parent._updateTouched(opts);     }   }    /**    * Marks the control as `dirty`. A control becomes dirty when    * the control's value is changed through the UI; compare `markAsTouched`.    *    * @see `markAsTouched()`    * @see `markAsUntouched()`    * @see `markAsPristine()`    *    * @param opts Configuration options that determine how the control propagates changes    * and emits events after marking is applied.    * * `onlySelf`: When true, mark only this control. When false or not supplied,    * marks all direct ancestors. Default is false.    */   markAsDirty(opts: {onlySelf?: boolean} = {}): void {     (this as {pristine: boolean}).pristine = false;      if (this._parent && !opts.onlySelf) {       this._parent.markAsDirty(opts);     }   }    /**    * Marks the control as `pristine`.    *    * If the control has any children, marks all children as `pristine`,    * and recalculates the `pristine` status of all parent    * controls.    *    * @see `markAsTouched()`    * @see `markAsUntouched()`    * @see `markAsDirty()`    *    * @param opts Configuration options that determine how the control emits events after    * marking is applied.    * * `onlySelf`: When true, mark only this control. When false or not supplied,    * marks all direct ancestors. Default is false.    */   markAsPristine(opts: {onlySelf?: boolean} = {}): void {     (this as {pristine: boolean}).pristine = true;     this._pendingDirty = false;      this._forEachChild((control: AbstractControl) => {       control.markAsPristine({onlySelf: true});     });      if (this._parent && !opts.onlySelf) {       this._parent._updatePristine(opts);     }   }    /**    * Marks the control as `pending`.    *    * A control is pending while the control performs async validation.    *    * @see {@link AbstractControl.status}    *    * @param opts Configuration options that determine how the control propagates changes and    * emits events after marking is applied.    * * `onlySelf`: When true, mark only this control. When false or not supplied,    * marks all direct ancestors. Default is false.    * * `emitEvent`: When true or not supplied (the default), the `statusChanges`    * observable emits an event with the latest status the control is marked pending.    * When false, no events are emitted.    *    */   markAsPending(opts: {onlySelf?: boolean, emitEvent?: boolean} = {}): void {     (this as {status: FormControlStatus}).status = PENDING;      if (opts.emitEvent !== false) {       (this.statusChanges as EventEmitter<FormControlStatus>).emit(this.status);     }      if (this._parent && !opts.onlySelf) {       this._parent.markAsPending(opts);     }   }    /**    * Disables the control. This means the control is exempt from validation checks and    * excluded from the aggregate value of any parent. Its status is `DISABLED`.    *    * If the control has children, all children are also disabled.    *    * @see {@link AbstractControl.status}    *    * @param opts Configuration options that determine how the control propagates    * changes and emits events after the control is disabled.    * * `onlySelf`: When true, mark only this control. When false or not supplied,    * marks all direct ancestors. Default is false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control is disabled.    * When false, no events are emitted.    */   disable(opts: {onlySelf?: boolean, emitEvent?: boolean} = {}): void {     // If parent has been marked artificially dirty we don't want to re-calculate the     // parent's dirtiness based on the children.     const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf);      (this as {status: FormControlStatus}).status = DISABLED;     (this as {errors: ValidationErrors | null}).errors = null;     this._forEachChild((control: AbstractControl) => {       control.disable({...opts, onlySelf: true});     });     this._updateValue();      if (opts.emitEvent !== false) {       (this.valueChanges as EventEmitter<TValue>).emit(this.value);       (this.statusChanges as EventEmitter<FormControlStatus>).emit(this.status);     }      this._updateAncestors({...opts, skipPristineCheck});     this._onDisabledChange.forEach((changeFn) => changeFn(true));   }    /**    * Enables the control. This means the control is included in validation checks and    * the aggregate value of its parent. Its status recalculates based on its value and    * its validators.    *    * By default, if the control has children, all children are enabled.    *    * @see {@link AbstractControl.status}    *    * @param opts Configure options that control how the control propagates changes and    * emits events when marked as untouched    * * `onlySelf`: When true, mark only this control. When false or not supplied,    * marks all direct ancestors. Default is false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control is enabled.    * When false, no events are emitted.    */   enable(opts: {onlySelf?: boolean, emitEvent?: boolean} = {}): void {     // If parent has been marked artificially dirty we don't want to re-calculate the     // parent's dirtiness based on the children.     const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf);      (this as {status: FormControlStatus}).status = VALID;     this._forEachChild((control: AbstractControl) => {       control.enable({...opts, onlySelf: true});     });     this.updateValueAndValidity({onlySelf: true, emitEvent: opts.emitEvent});      this._updateAncestors({...opts, skipPristineCheck});     this._onDisabledChange.forEach((changeFn) => changeFn(false));   }    private _updateAncestors(       opts: {onlySelf?: boolean, emitEvent?: boolean, skipPristineCheck?: boolean}): void {     if (this._parent && !opts.onlySelf) {       this._parent.updateValueAndValidity(opts);       if (!opts.skipPristineCheck) {         this._parent._updatePristine();       }       this._parent._updateTouched();     }   }    /**    * Sets the parent of the control    *    * @param parent The new parent.    */   setParent(parent: FormGroup|FormArray|null): void {     this._parent = parent;   }    /**    * Sets the value of the control. Abstract method (implemented in sub-classes).    */   abstract setValue(value: TRawValue, options?: Object): void;    /**    * Patches the value of the control. Abstract method (implemented in sub-classes).    */   abstract patchValue(value: TValue, options?: Object): void;    /**    * Resets the control. Abstract method (implemented in sub-classes).    */   abstract reset(value?: TValue, options?: Object): void;    /**    * The raw value of this control. For most control implementations, the raw value will include    * disabled children.    */   getRawValue(): any {     return this.value;   }    /**    * Recalculates the value and validation status of the control.    *    * By default, it also updates the value and validity of its ancestors.    *    * @param opts Configuration options determine how the control propagates changes and emits events    * after updates and validity checks are applied.    * * `onlySelf`: When true, only update this control. When false or not supplied,    * update all direct ancestors. Default is false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control is updated.    * When false, no events are emitted.    */   updateValueAndValidity(opts: {onlySelf?: boolean, emitEvent?: boolean} = {}): void {     this._setInitialStatus();     this._updateValue();      if (this.enabled) {       this._cancelExistingSubscription();       (this as {errors: ValidationErrors | null}).errors = this._runValidator();       (this as {status: FormControlStatus}).status = this._calculateStatus();        if (this.status === VALID || this.status === PENDING) {         this._runAsyncValidator(opts.emitEvent);       }     }      if (opts.emitEvent !== false) {       (this.valueChanges as EventEmitter<TValue>).emit(this.value);       (this.statusChanges as EventEmitter<FormControlStatus>).emit(this.status);     }      if (this._parent && !opts.onlySelf) {       this._parent.updateValueAndValidity(opts);     }   }    /** @internal */   _updateTreeValidity(opts: {emitEvent?: boolean} = {emitEvent: true}): void {     this._forEachChild((ctrl: AbstractControl) => ctrl._updateTreeValidity(opts));     this.updateValueAndValidity({onlySelf: true, emitEvent: opts.emitEvent});   }    private _setInitialStatus() {     (this as {status: FormControlStatus}).status = this._allControlsDisabled() ? DISABLED : VALID;   }    private _runValidator(): ValidationErrors|null {     return this.validator ? this.validator(this) : null;   }    private _runAsyncValidator(emitEvent?: boolean): void {     if (this.asyncValidator) {       (this as {status: FormControlStatus}).status = PENDING;       this._hasOwnPendingAsyncValidator = true;       const obs = toObservable(this.asyncValidator(this));       this._asyncValidationSubscription = obs.subscribe((errors: ValidationErrors|null) => {         this._hasOwnPendingAsyncValidator = false;         // This will trigger the recalculation of the validation status, which depends on         // the state of the asynchronous validation (whether it is in progress or not). So, it is         // necessary that we have updated the `_hasOwnPendingAsyncValidator` boolean flag first.         this.setErrors(errors, {emitEvent});       });     }   }    private _cancelExistingSubscription(): void {     if (this._asyncValidationSubscription) {       this._asyncValidationSubscription.unsubscribe();       this._hasOwnPendingAsyncValidator = false;     }   }    /**    * Sets errors on a form control when running validations manually, rather than automatically.    *    * Calling `setErrors` also updates the validity of the parent control.    *    * @param opts Configuration options that determine how the control propagates    * changes and emits events after the control errors are set.    * * `emitEvent`: When true or not supplied (the default), the `statusChanges`    * observable emits an event after the errors are set.    *    * @usageNotes    *    * ### Manually set the errors for a control    *    * ```    * const login = new FormControl('someLogin');    * login.setErrors({    *   notUnique: true    * });    *    * expect(login.valid).toEqual(false);    * expect(login.errors).toEqual({ notUnique: true });    *    * login.setValue('someOtherLogin');    *    * expect(login.valid).toEqual(true);    * ```    */   setErrors(errors: ValidationErrors|null, opts: {emitEvent?: boolean} = {}): void {     (this as {errors: ValidationErrors | null}).errors = errors;     this._updateControlsErrors(opts.emitEvent !== false);   }    /**    * Retrieves a child control given the control's name or path.    *    * This signature for get supports strings and `const` arrays (`.get(['foo', 'bar'] as const)`).    */   get<P extends string|(readonly(string|number)[])>(path: P):       AbstractControl<ɵGetProperty<TRawValue, P>>|null;    /**    * Retrieves a child control given the control's name or path.    *    * This signature for `get` supports non-const (mutable) arrays. Inferred type    * information will not be as robust, so prefer to pass a `readonly` array if possible.    */   get<P extends string|Array<string|number>>(path: P):       AbstractControl<ɵGetProperty<TRawValue, P>>|null;    /**    * Retrieves a child control given the control's name or path.    *    * @param path A dot-delimited string or array of string/number values that define the path to the    * control. If a string is provided, passing it as a string literal will result in improved type    * information. Likewise, if an array is provided, passing it `as const` will cause improved type    * information to be available.    *    * @usageNotes    * ### Retrieve a nested control    *    * For example, to get a `name` control nested within a `person` sub-group:    *    * * `this.form.get('person.name');`    *    * -OR-    *    * * `this.form.get(['person', 'name'] as const);` // `as const` gives improved typings    *    * ### Retrieve a control in a FormArray    *    * When accessing an element inside a FormArray, you can use an element index.    * For example, to get a `price` control from the first element in an `items` array you can use:    *    * * `this.form.get('items.0.price');`    *    * -OR-    *    * * `this.form.get(['items', 0, 'price']);`    */   get<P extends string|((string | number)[])>(path: P):       AbstractControl<ɵGetProperty<TRawValue, P>>|null {     let currPath: Array<string|number>|string = path;     if (currPath == null) return null;     if (!Array.isArray(currPath)) currPath = currPath.split('.');     if (currPath.length === 0) return null;     return currPath.reduce(         (control: AbstractControl|null, name) => control && control._find(name), this);   }    /**    * @description    * Reports error data for the control with the given path.    *    * @param errorCode The code of the error to check    * @param path A list of control names that designates how to move from the current control    * to the control that should be queried for errors.    *    * @usageNotes    * For example, for the following `FormGroup`:    *    * ```    * form = new FormGroup({    *   address: new FormGroup({ street: new FormControl() })    * });    * ```    *    * The path to the 'street' control from the root form would be 'address' -> 'street'.    *    * It can be provided to this method in one of two formats:    *    * 1. An array of string control names, e.g. `['address', 'street']`    * 1. A period-delimited list of control names in one string, e.g. `'address.street'`    *    * @returns error data for that particular error. If the control or error is not present,    * null is returned.    */   getError(errorCode: string, path?: Array<string|number>|string): any {     const control = path ? this.get(path) : this;     return control && control.errors ? control.errors[errorCode] : null;   }    /**    * @description    * Reports whether the control with the given path has the error specified.    *    * @param errorCode The code of the error to check    * @param path A list of control names that designates how to move from the current control    * to the control that should be queried for errors.    *    * @usageNotes    * For example, for the following `FormGroup`:    *    * ```    * form = new FormGroup({    *   address: new FormGroup({ street: new FormControl() })    * });    * ```    *    * The path to the 'street' control from the root form would be 'address' -> 'street'.    *    * It can be provided to this method in one of two formats:    *    * 1. An array of string control names, e.g. `['address', 'street']`    * 1. A period-delimited list of control names in one string, e.g. `'address.street'`    *    * If no path is given, this method checks for the error on the current control.    *    * @returns whether the given error is present in the control at the given path.    *    * If the control is not present, false is returned.    */   hasError(errorCode: string, path?: Array<string|number>|string): boolean {     return !!this.getError(errorCode, path);   }    /**    * Retrieves the top-level ancestor of this control.    */   get root(): AbstractControl {     let x: AbstractControl = this;      while (x._parent) {       x = x._parent;     }      return x;   }    /** @internal */   _updateControlsErrors(emitEvent: boolean): void {     (this as {status: FormControlStatus}).status = this._calculateStatus();      if (emitEvent) {       (this.statusChanges as EventEmitter<FormControlStatus>).emit(this.status);     }      if (this._parent) {       this._parent._updateControlsErrors(emitEvent);     }   }    /** @internal */   _initObservables() {     (this as {valueChanges: Observable<TValue>}).valueChanges = new EventEmitter();     (this as {statusChanges: Observable<FormControlStatus>}).statusChanges = new EventEmitter();   }     private _calculateStatus(): FormControlStatus {     if (this._allControlsDisabled()) return DISABLED;     if (this.errors) return INVALID;     if (this._hasOwnPendingAsyncValidator || this._anyControlsHaveStatus(PENDING)) return PENDING;     if (this._anyControlsHaveStatus(INVALID)) return INVALID;     return VALID;   }    /** @internal */   abstract _updateValue(): void;    /** @internal */   abstract _forEachChild(cb: (c: AbstractControl) => void): void;    /** @internal */   abstract _anyControls(condition: (c: AbstractControl) => boolean): boolean;    /** @internal */   abstract _allControlsDisabled(): boolean;    /** @internal */   abstract _syncPendingControls(): boolean;    /** @internal */   _anyControlsHaveStatus(status: FormControlStatus): boolean {     return this._anyControls((control: AbstractControl) => control.status === status);   }    /** @internal */   _anyControlsDirty(): boolean {     return this._anyControls((control: AbstractControl) => control.dirty);   }    /** @internal */   _anyControlsTouched(): boolean {     return this._anyControls((control: AbstractControl) => control.touched);   }    /** @internal */   _updatePristine(opts: {onlySelf?: boolean} = {}): void {     (this as {pristine: boolean}).pristine = !this._anyControlsDirty();      if (this._parent && !opts.onlySelf) {       this._parent._updatePristine(opts);     }   }    /** @internal */   _updateTouched(opts: {onlySelf?: boolean} = {}): void {     (this as {touched: boolean}).touched = this._anyControlsTouched();      if (this._parent && !opts.onlySelf) {       this._parent._updateTouched(opts);     }   }    /** @internal */   _onDisabledChange: Array<(isDisabled: boolean) => void> = [];    /** @internal */   _registerOnCollectionChange(fn: () => void): void {     this._onCollectionChange = fn;   }    /** @internal */   _setUpdateStrategy(opts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null): void {     if (isOptionsObj(opts) && opts.updateOn != null) {       this._updateOn = opts.updateOn!;     }   }   /**    * Check to see if parent has been marked artificially dirty.    *    * @internal    */   private _parentMarkedDirty(onlySelf?: boolean): boolean {     const parentDirty = this._parent && this._parent.dirty;     return !onlySelf && !!parentDirty && !this._parent!._anyControlsDirty();   }    /** @internal */   _find(name: string|number): AbstractControl|null {     return null;   }    /**    * Internal implementation of the `setValidators` method. Needs to be separated out into a    * different method, because it is called in the constructor and it can break cases where    * a control is extended.    */   private _assignValidators(validators: ValidatorFn|ValidatorFn[]|null): void {     this._rawValidators = Array.isArray(validators) ? validators.slice() : validators;     this._composedValidatorFn = coerceToValidator(this._rawValidators);   }    /**    * Internal implementation of the `setAsyncValidators` method. Needs to be separated out into a    * different method, because it is called in the constructor and it can break cases where    * a control is extended.    */   private _assignAsyncValidators(validators: AsyncValidatorFn|AsyncValidatorFn[]|null): void {     this._rawAsyncValidators = Array.isArray(validators) ? validators.slice() : validators;     this._composedAsyncValidatorFn = coerceToAsyncValidator(this._rawAsyncValidators);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AsyncValidatorFn, ValidatorFn} from '../directives/validators';  import {AbstractControl, AbstractControlOptions, assertAllValuesPresent, assertControlPresent, pickAsyncValidators, pickValidators, ɵRawValue, ɵTypedOrUntyped, ɵValue} from './abstract_model';  /**  * FormGroupValue extracts the type of `.value` from a FormGroup's inner object type. The untyped  * case falls back to {[key: string]: any}.  *  * Angular uses this type internally to support Typed Forms; do not use it directly.  *  * For internal use only.  */ export type ɵFormGroupValue<T extends {[K in keyof T]?: AbstractControl<any>}> =     ɵTypedOrUntyped<T, Partial<{[K in keyof T]: ɵValue<T[K]>}>, {[key: string]: any}>;  /**  * FormGroupRawValue extracts the type of `.getRawValue()` from a FormGroup's inner object type. The  * untyped case falls back to {[key: string]: any}.  *  * Angular uses this type internally to support Typed Forms; do not use it directly.  *  * For internal use only.  */ export type ɵFormGroupRawValue<T extends {[K in keyof T]?: AbstractControl<any>}> =     ɵTypedOrUntyped<T, {[K in keyof T]: ɵRawValue<T[K]>}, {[key: string]: any}>;  /**  * OptionalKeys returns the union of all optional keys in the object.  *  * Angular uses this type internally to support Typed Forms; do not use it directly.  */ export type ɵOptionalKeys<T> = {   [K in keyof T] -?: undefined extends T[K] ? K : never }[keyof T];  /**  * Tracks the value and validity state of a group of `FormControl` instances.  *  * A `FormGroup` aggregates the values of each child `FormControl` into one object,  * with each control name as the key.  It calculates its status by reducing the status values  * of its children. For example, if one of the controls in a group is invalid, the entire  * group becomes invalid.  *  * `FormGroup` is one of the four fundamental building blocks used to define forms in Angular,  * along with `FormControl`, `FormArray`, and `FormRecord`.  *  * When instantiating a `FormGroup`, pass in a collection of child controls as the first  * argument. The key for each child registers the name for the control.  *  * `FormGroup` is intended for use cases where the keys are known ahead of time.  * If you need to dynamically add and remove controls, use {@link FormRecord} instead.  *  * `FormGroup` accepts an optional type parameter `TControl`, which is an object type with inner  * control types as values.  *  * @usageNotes  *  * ### Create a form group with 2 controls  *  * ```  * const form = new FormGroup({  *   first: new FormControl('Nancy', Validators.minLength(2)),  *   last: new FormControl('Drew'),  * });  *  * console.log(form.value);   // {first: 'Nancy', last; 'Drew'}  * console.log(form.status);  // 'VALID'  * ```  *  * ### The type argument, and optional controls  *  * `FormGroup` accepts one generic argument, which is an object containing its inner controls.  * This type will usually be inferred automatically, but you can always specify it explicitly if you  * wish.  *  * If you have controls that are optional (i.e. they can be removed, you can use the `?` in the  * type):  *  * ```  * const form = new FormGroup<{  *   first: FormControl<string|null>,  *   middle?: FormControl<string|null>, // Middle name is optional.  *   last: FormControl<string|null>,  * }>({  *   first: new FormControl('Nancy'),  *   last: new FormControl('Drew'),  * });  * ```  *  * ### Create a form group with a group-level validator  *  * You include group-level validators as the second arg, or group-level async  * validators as the third arg. These come in handy when you want to perform validation  * that considers the value of more than one child control.  *  * ```  * const form = new FormGroup({  *   password: new FormControl('', Validators.minLength(2)),  *   passwordConfirm: new FormControl('', Validators.minLength(2)),  * }, passwordMatchValidator);  *  *  * function passwordMatchValidator(g: FormGroup) {  *    return g.get('password').value === g.get('passwordConfirm').value  *       ? null : {'mismatch': true};  * }  * ```  *  * Like `FormControl` instances, you choose to pass in  * validators and async validators as part of an options object.  *  * ```  * const form = new FormGroup({  *   password: new FormControl('')  *   passwordConfirm: new FormControl('')  * }, { validators: passwordMatchValidator, asyncValidators: otherValidator });  * ```  *  * ### Set the updateOn property for all controls in a form group  *  * The options object is used to set a default value for each child  * control's `updateOn` property. If you set `updateOn` to `'blur'` at the  * group level, all child controls default to 'blur', unless the child  * has explicitly specified a different `updateOn` value.  *  * ```ts  * const c = new FormGroup({  *   one: new FormControl()  * }, { updateOn: 'blur' });  * ```  *  * ### Using a FormGroup with optional controls  *  * It is possible to have optional controls in a FormGroup. An optional control can be removed later  * using `removeControl`, and can be omitted when calling `reset`. Optional controls must be  * declared optional in the group's type.  *  * ```ts  * const c = new FormGroup<{one?: FormControl<string>}>({  *   one: new FormControl('')  * });  * ```  *  * Notice that `c.value.one` has type `string|null|undefined`. This is because calling `c.reset({})`  * without providing the optional key `one` will cause it to become `null`.  *  * @publicApi  */ export class FormGroup<TControl extends {[K in keyof TControl]: AbstractControl<any>} = any> extends     AbstractControl<         ɵTypedOrUntyped<TControl, ɵFormGroupValue<TControl>, any>,         ɵTypedOrUntyped<TControl, ɵFormGroupRawValue<TControl>, any>> {   /**    * Creates a new `FormGroup` instance.    *    * @param controls A collection of child controls. The key for each child is the name    * under which it is registered.    *    * @param validatorOrOpts A synchronous validator function, or an array of    * such functions, or an `AbstractControlOptions` object that contains validation functions    * and a validation trigger.    *    * @param asyncValidator A single async validator or array of async validator functions    *    */   constructor(       controls: TControl, validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null) {     super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts));     this.controls = controls;     this._initObservables();     this._setUpdateStrategy(validatorOrOpts);     this._setUpControls();     this.updateValueAndValidity({       onlySelf: true,       // If `asyncValidator` is present, it will trigger control status change from `PENDING` to       // `VALID` or `INVALID`. The status should be broadcasted via the `statusChanges` observable,       // so we set `emitEvent` to `true` to allow that during the control creation process.       emitEvent: !!this.asyncValidator     });   }    public controls: ɵTypedOrUntyped<TControl, TControl, {[key: string]: AbstractControl<any>}>;    /**    * Registers a control with the group's list of controls. In a strongly-typed group, the control    * must be in the group's type (possibly as an optional key).    *    * This method does not update the value or validity of the control.    * Use {@link FormGroup#addControl addControl} instead.    *    * @param name The control name to register in the collection    * @param control Provides the control for the given name    */   registerControl<K extends string&keyof TControl>(name: K, control: TControl[K]): TControl[K];   registerControl(       this: FormGroup<{[key: string]: AbstractControl<any>}>, name: string,       control: AbstractControl<any>): AbstractControl<any>;    registerControl<K extends string&keyof TControl>(name: K, control: TControl[K]): TControl[K] {     if (this.controls[name]) return (this.controls as any)[name];     this.controls[name] = control;     control.setParent(this as FormGroup);     control._registerOnCollectionChange(this._onCollectionChange);     return control;   }    /**    * Add a control to this group. In a strongly-typed group, the control must be in the group's type    * (possibly as an optional key).    *    * If a control with a given name already exists, it would *not* be replaced with a new one.    * If you want to replace an existing control, use the {@link FormGroup#setControl setControl}    * method instead. This method also updates the value and validity of the control.    *    * @param name The control name to add to the collection    * @param control Provides the control for the given name    * @param options Specifies whether this FormGroup instance should emit events after a new    *     control is added.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control is    * added. When false, no events are emitted.    */   addControl(       this: FormGroup<{[key: string]: AbstractControl<any>}>, name: string,       control: AbstractControl, options?: {emitEvent?: boolean}): void;   addControl<K extends string&keyof TControl>(name: K, control: Required<TControl>[K], options?: {     emitEvent?: boolean   }): void;    addControl<K extends string&keyof TControl>(name: K, control: Required<TControl>[K], options: {     emitEvent?: boolean   } = {}): void {     this.registerControl(name, control);     this.updateValueAndValidity({emitEvent: options.emitEvent});     this._onCollectionChange();   }    removeControl(this: FormGroup<{[key: string]: AbstractControl<any>}>, name: string, options?: {     emitEvent?: boolean;   }): void;   removeControl<S extends string>(name: ɵOptionalKeys<TControl>&S, options?: {     emitEvent?: boolean;   }): void;    /**    * Remove a control from this group. In a strongly-typed group, required controls cannot be    * removed.    *    * This method also updates the value and validity of the control.    *    * @param name The control name to remove from the collection    * @param options Specifies whether this FormGroup instance should emit events after a    *     control is removed.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control is    * removed. When false, no events are emitted.    */   removeControl(name: string, options: {emitEvent?: boolean;} = {}): void {     if ((this.controls as any)[name])       (this.controls as any)[name]._registerOnCollectionChange(() => {});     delete ((this.controls as any)[name]);     this.updateValueAndValidity({emitEvent: options.emitEvent});     this._onCollectionChange();   }    /**    * Replace an existing control. In a strongly-typed group, the control must be in the group's type    * (possibly as an optional key).    *    * If a control with a given name does not exist in this `FormGroup`, it will be added.    *    * @param name The control name to replace in the collection    * @param control Provides the control for the given name    * @param options Specifies whether this FormGroup instance should emit events after an    *     existing control is replaced.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control is    * replaced with a new one. When false, no events are emitted.    */   setControl<K extends string&keyof TControl>(name: K, control: TControl[K], options?: {     emitEvent?: boolean   }): void;   setControl(       this: FormGroup<{[key: string]: AbstractControl<any>}>, name: string,       control: AbstractControl, options?: {emitEvent?: boolean}): void;    setControl<K extends string&keyof TControl>(name: K, control: TControl[K], options: {     emitEvent?: boolean   } = {}): void {     if (this.controls[name]) this.controls[name]._registerOnCollectionChange(() => {});     delete (this.controls[name]);     if (control) this.registerControl(name, control);     this.updateValueAndValidity({emitEvent: options.emitEvent});     this._onCollectionChange();   }    /**    * Check whether there is an enabled control with the given name in the group.    *    * Reports false for disabled controls. If you'd like to check for existence in the group    * only, use {@link AbstractControl#get get} instead.    *    * @param controlName The control name to check for existence in the collection    *    * @returns false for disabled controls, true otherwise.    */   contains<K extends string>(controlName: K): boolean;   contains(this: FormGroup<{[key: string]: AbstractControl<any>}>, controlName: string): boolean;    contains<K extends string&keyof TControl>(controlName: K): boolean {     return this.controls.hasOwnProperty(controlName) && this.controls[controlName].enabled;   }    /**    * Sets the value of the `FormGroup`. It accepts an object that matches    * the structure of the group, with control names as keys.    *    * @usageNotes    * ### Set the complete value for the form group    *    * ```    * const form = new FormGroup({    *   first: new FormControl(),    *   last: new FormControl()    * });    *    * console.log(form.value);   // {first: null, last: null}    *    * form.setValue({first: 'Nancy', last: 'Drew'});    * console.log(form.value);   // {first: 'Nancy', last: 'Drew'}    * ```    *    * @throws When strict checks fail, such as setting the value of a control    * that doesn't exist or if you exclude a value of a control that does exist.    *    * @param value The new value for the control that matches the structure of the group.    * @param options Configuration options that determine how the control propagates changes    * and emits events after the value changes.    * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity    * updateValueAndValidity} method.    *    * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is    * false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control value is updated.    * When false, no events are emitted.    */   override setValue(value: ɵFormGroupRawValue<TControl>, options: {     onlySelf?: boolean,     emitEvent?: boolean   } = {}): void {     assertAllValuesPresent(this, true, value);     (Object.keys(value) as Array<keyof TControl>).forEach(name => {       assertControlPresent(this, true, name as any);       (this.controls as any)[name].setValue(           (value as any)[name], {onlySelf: true, emitEvent: options.emitEvent});     });     this.updateValueAndValidity(options);   }    /**    * Patches the value of the `FormGroup`. It accepts an object with control    * names as keys, and does its best to match the values to the correct controls    * in the group.    *    * It accepts both super-sets and sub-sets of the group without throwing an error.    *    * @usageNotes    * ### Patch the value for a form group    *    * ```    * const form = new FormGroup({    *    first: new FormControl(),    *    last: new FormControl()    * });    * console.log(form.value);   // {first: null, last: null}    *    * form.patchValue({first: 'Nancy'});    * console.log(form.value);   // {first: 'Nancy', last: null}    * ```    *    * @param value The object that matches the structure of the group.    * @param options Configuration options that determine how the control propagates changes and    * emits events after the value is patched.    * * `onlySelf`: When true, each change only affects this control and not its parent. Default is    * true.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control value    * is updated. When false, no events are emitted. The configuration options are passed to    * the {@link AbstractControl#updateValueAndValidity updateValueAndValidity} method.    */   override patchValue(value: ɵFormGroupValue<TControl>, options: {     onlySelf?: boolean,     emitEvent?: boolean   } = {}): void {     // Even though the `value` argument type doesn't allow `null` and `undefined` values, the     // `patchValue` can be called recursively and inner data structures might have these values, so     // we just ignore such cases when a field containing FormGroup instance receives `null` or     // `undefined` as a value.     if (value == null /* both `null` and `undefined` */) return;     (Object.keys(value) as Array<keyof TControl>).forEach(name => {       // The compiler cannot see through the uninstantiated conditional type of `this.controls`, so       // `as any` is required.       const control = (this.controls as any)[name];       if (control) {         control.patchValue(             /* Guaranteed to be present, due to the outer forEach. */ value                 [name as keyof ɵFormGroupValue<TControl>]!,             {onlySelf: true, emitEvent: options.emitEvent});       }     });     this.updateValueAndValidity(options);   }    /**    * Resets the `FormGroup`, marks all descendants `pristine` and `untouched` and sets    * the value of all descendants to their default values, or null if no defaults were provided.    *    * You reset to a specific form state by passing in a map of states    * that matches the structure of your form, with control names as keys. The state    * is a standalone value or a form state object with both a value and a disabled    * status.    *    * @param value Resets the control with an initial value,    * or an object that defines the initial value and disabled state.    *    * @param options Configuration options that determine how the control propagates changes    * and emits events when the group is reset.    * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is    * false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control is reset.    * When false, no events are emitted.    * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity    * updateValueAndValidity} method.    *    * @usageNotes    *    * ### Reset the form group values    *    * ```ts    * const form = new FormGroup({    *   first: new FormControl('first name'),    *   last: new FormControl('last name')    * });    *    * console.log(form.value);  // {first: 'first name', last: 'last name'}    *    * form.reset({ first: 'name', last: 'last name' });    *    * console.log(form.value);  // {first: 'name', last: 'last name'}    * ```    *    * ### Reset the form group values and disabled status    *    * ```    * const form = new FormGroup({    *   first: new FormControl('first name'),    *   last: new FormControl('last name')    * });    *    * form.reset({    *   first: {value: 'name', disabled: true},    *   last: 'last'    * });    *    * console.log(form.value);  // {last: 'last'}    * console.log(form.get('first').status);  // 'DISABLED'    * ```    */   override reset(       value: ɵTypedOrUntyped<TControl, ɵFormGroupValue<TControl>, any> = {} as unknown as           ɵFormGroupValue<TControl>,       options: {onlySelf?: boolean, emitEvent?: boolean} = {}): void {     this._forEachChild((control, name) => {       control.reset((value as any)[name], {onlySelf: true, emitEvent: options.emitEvent});     });     this._updatePristine(options);     this._updateTouched(options);     this.updateValueAndValidity(options);   }    /**    * The aggregate value of the `FormGroup`, including any disabled controls.    *    * Retrieves all values regardless of disabled status.    */   override getRawValue(): ɵTypedOrUntyped<TControl, ɵFormGroupRawValue<TControl>, any> {     return this._reduceChildren({}, (acc, control, name) => {       (acc as any)[name] = (control as any).getRawValue();       return acc;     }) as any;   }    /** @internal */   override _syncPendingControls(): boolean {     let subtreeUpdated = this._reduceChildren(false, (updated: boolean, child) => {       return child._syncPendingControls() ? true : updated;     });     if (subtreeUpdated) this.updateValueAndValidity({onlySelf: true});     return subtreeUpdated;   }    /** @internal */   override _forEachChild(cb: (v: any, k: any) => void): void {     Object.keys(this.controls).forEach(key => {       // The list of controls can change (for ex. controls might be removed) while the loop       // is running (as a result of invoking Forms API in `valueChanges` subscription), so we       // have to null check before invoking the callback.       const control = (this.controls as any)[key];       control && cb(control, key);     });   }    /** @internal */   _setUpControls(): void {     this._forEachChild((control) => {       control.setParent(this);       control._registerOnCollectionChange(this._onCollectionChange);     });   }    /** @internal */   override _updateValue(): void {     (this as {value: any}).value = this._reduceValue();   }    /** @internal */   override _anyControls(condition: (c: AbstractControl) => boolean): boolean {     for (const [controlName, control] of Object.entries(this.controls)) {       if (this.contains(controlName as any) && condition(control as any)) {         return true;       }     }     return false;   }    /** @internal */   _reduceValue(): Partial<TControl> {     let acc: Partial<TControl> = {};     return this._reduceChildren(acc, (acc, control, name) => {       if (control.enabled || this.disabled) {         acc[name] = control.value;       }       return acc;     });   }    /** @internal */   _reduceChildren<T, K extends keyof TControl>(       initValue: T, fn: (acc: T, control: TControl[K], name: K) => T): T {     let res = initValue;     this._forEachChild((control: TControl[K], name: K) => {       res = fn(res, control, name);     });     return res;   }    /** @internal */   override _allControlsDisabled(): boolean {     for (const controlName of (Object.keys(this.controls) as Array<keyof TControl>)) {       if ((this.controls as any)[controlName].enabled) {         return false;       }     }     return Object.keys(this.controls).length > 0 || this.disabled;   }    /** @internal */   override _find(name: string|number): AbstractControl|null {     return this.controls.hasOwnProperty(name as string) ?         (this.controls as any)[name as keyof TControl] :         null;   } }  interface UntypedFormGroupCtor {   new(controls: {[key: string]: AbstractControl},       validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): UntypedFormGroup;    /**    * The presence of an explicit `prototype` property provides backwards-compatibility for apps that    * manually inspect the prototype chain.    */   prototype: FormGroup<any>; }  /**  * UntypedFormGroup is a non-strongly-typed version of @see FormGroup.  */ export type UntypedFormGroup = FormGroup<any>;  export const UntypedFormGroup: UntypedFormGroupCtor = FormGroup;  /**  * @description  * Asserts that the given control is an instance of `FormGroup`  *  * @publicApi  */ export const isFormGroup = (control: unknown): control is FormGroup => control instanceof FormGroup;  /**  * Tracks the value and validity state of a collection of `FormControl` instances, each of which has  * the same value type.  *  * `FormRecord` is very similar to {@link FormGroup}, except it can be used with a dynamic keys,  * with controls added and removed as needed.  *  * `FormRecord` accepts one generic argument, which describes the type of the controls it contains.  *  * @usageNotes  *  * ```  * let numbers = new FormRecord({bill: new FormControl('415-123-456')});  * numbers.addControl('bob', new FormControl('415-234-567'));  * numbers.removeControl('bill');  * ```  *  * @publicApi  */ export class FormRecord<TControl extends AbstractControl = AbstractControl> extends     FormGroup<{[key: string]: TControl}> {}  export interface FormRecord<TControl> {   /**    * Registers a control with the records's list of controls.    *    * See `FormGroup#registerControl` for additional information.    */   registerControl(name: string, control: TControl): TControl;    /**    * Add a control to this group.    *    * See `FormGroup#addControl` for additional information.    */   addControl(name: string, control: TControl, options?: {emitEvent?: boolean}): void;    /**    * Remove a control from this group.    *    * See `FormGroup#removeControl` for additional information.    */   removeControl(name: string, options?: {emitEvent?: boolean}): void;    /**    * Replace an existing control.    *    * See `FormGroup#setControl` for additional information.    */   setControl(name: string, control: TControl, options?: {emitEvent?: boolean}): void;    /**    * Check whether there is an enabled control with the given name in the group.    *    * See `FormGroup#contains` for additional information.    */   contains(controlName: string): boolean;    /**    * Sets the value of the `FormRecord`. It accepts an object that matches    * the structure of the group, with control names as keys.    *    * See `FormGroup#setValue` for additional information.    */   setValue(value: {[key: string]: ɵValue<TControl>}, options?: {     onlySelf?: boolean,     emitEvent?: boolean   }): void;    /**    * Patches the value of the `FormRecord`. It accepts an object with control    * names as keys, and does its best to match the values to the correct controls    * in the group.    *    * See `FormGroup#patchValue` for additional information.    */   patchValue(value: {[key: string]: ɵValue<TControl>}, options?: {     onlySelf?: boolean,     emitEvent?: boolean   }): void;    /**    * Resets the `FormRecord`, marks all descendants `pristine` and `untouched` and sets    * the value of all descendants to null.    *    * See `FormGroup#reset` for additional information.    */   reset(value?: {[key: string]: ɵValue<TControl>}, options?: {     onlySelf?: boolean,     emitEvent?: boolean   }): void;    /**    * The aggregate value of the `FormRecord`, including any disabled controls.    *    * See `FormGroup#getRawValue` for additional information.    */   getRawValue(): {[key: string]: ɵRawValue<TControl>}; }  /**  * @description  * Asserts that the given control is an instance of `FormRecord`  *  * @publicApi  */ export const isFormRecord = (control: unknown): control is FormRecord =>     control instanceof FormRecord; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, InjectionToken, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors'; import {AbstractControl} from '../model/abstract_model'; import {FormArray} from '../model/form_array'; import {FormControl} from '../model/form_control'; import {FormGroup} from '../model/form_group'; import {getControlAsyncValidators, getControlValidators, mergeValidators} from '../validators';  import {AbstractControlDirective} from './abstract_control_directive'; import {AbstractFormGroupDirective} from './abstract_form_group_directive'; import {ControlContainer} from './control_container'; import {BuiltInControlValueAccessor, ControlValueAccessor} from './control_value_accessor'; import {DefaultValueAccessor} from './default_value_accessor'; import {NgControl} from './ng_control'; import {FormArrayName} from './reactive_directives/form_group_name'; import {ngModelWarning} from './reactive_errors'; import {AsyncValidatorFn, Validator, ValidatorFn} from './validators';  /**  * Token to provide to allow SetDisabledState to always be called when a CVA is added, regardless of  * whether the control is disabled or enabled.  *  * @see `FormsModule.withConfig`  */ export const CALL_SET_DISABLED_STATE = new InjectionToken(     'CallSetDisabledState', {providedIn: 'root', factory: () => setDisabledStateDefault});  /**  * The type for CALL_SET_DISABLED_STATE. If `always`, then ControlValueAccessor will always call  * `setDisabledState` when attached, which is the most correct behavior. Otherwise, it will only be  * called when disabled, which is the legacy behavior for compatibility.  *  * @publicApi  * @see `FormsModule.withConfig`  */ export type SetDisabledStateOption = 'whenDisabledForLegacyCode'|'always';  /**  * Whether to use the fixed setDisabledState behavior by default.  */ export const setDisabledStateDefault: SetDisabledStateOption = 'always';  export function controlPath(name: string|null, parent: ControlContainer): string[] {   return [...parent.path!, name!]; }  /**  * Links a Form control and a Form directive by setting up callbacks (such as `onChange`) on both  * instances. This function is typically invoked when form directive is being initialized.  *  * @param control Form control instance that should be linked.  * @param dir Directive that should be linked with a given control.  */ export function setUpControl(     control: FormControl, dir: NgControl,     callSetDisabledState: SetDisabledStateOption = setDisabledStateDefault): void {   if (typeof ngDevMode === 'undefined' || ngDevMode) {     if (!control) _throwError(dir, 'Cannot find control with');     if (!dir.valueAccessor) _throwMissingValueAccessorError(dir);   }    setUpValidators(control, dir);    dir.valueAccessor!.writeValue(control.value);    // The legacy behavior only calls the CVA's `setDisabledState` if the control is disabled.   // If the `callSetDisabledState` option is set to `always`, then this bug is fixed and   // the method is always called.   if (control.disabled || callSetDisabledState === 'always') {     dir.valueAccessor!.setDisabledState?.(control.disabled);   }    setUpViewChangePipeline(control, dir);   setUpModelChangePipeline(control, dir);    setUpBlurPipeline(control, dir);    setUpDisabledChangeHandler(control, dir); }  /**  * Reverts configuration performed by the `setUpControl` control function.  * Effectively disconnects form control with a given form directive.  * This function is typically invoked when corresponding form directive is being destroyed.  *  * @param control Form control which should be cleaned up.  * @param dir Directive that should be disconnected from a given control.  * @param validateControlPresenceOnChange Flag that indicates whether onChange handler should  *     contain asserts to verify that it's not called once directive is destroyed. We need this flag  *     to avoid potentially breaking changes caused by better control cleanup introduced in #39235.  */ export function cleanUpControl(     control: FormControl|null, dir: NgControl,     validateControlPresenceOnChange: boolean = true): void {   const noop = () => {     if (validateControlPresenceOnChange && (typeof ngDevMode === 'undefined' || ngDevMode)) {       _noControlError(dir);     }   };    // The `valueAccessor` field is typically defined on FromControl and FormControlName directive   // instances and there is a logic in `selectValueAccessor` function that throws if it's not the   // case. We still check the presence of `valueAccessor` before invoking its methods to make sure   // that cleanup works correctly if app code or tests are setup to ignore the error thrown from   // `selectValueAccessor`. See https://github.com/angular/angular/issues/40521.   if (dir.valueAccessor) {     dir.valueAccessor.registerOnChange(noop);     dir.valueAccessor.registerOnTouched(noop);   }    cleanUpValidators(control, dir);    if (control) {     dir._invokeOnDestroyCallbacks();     control._registerOnCollectionChange(() => {});   } }  function registerOnValidatorChange<V>(validators: (V|Validator)[], onChange: () => void): void {   validators.forEach((validator: V|Validator) => {     if ((<Validator>validator).registerOnValidatorChange)       (<Validator>validator).registerOnValidatorChange!(onChange);   }); }  /**  * Sets up disabled change handler function on a given form control if ControlValueAccessor  * associated with a given directive instance supports the `setDisabledState` call.  *  * @param control Form control where disabled change handler should be setup.  * @param dir Corresponding directive instance associated with this control.  */ export function setUpDisabledChangeHandler(control: FormControl, dir: NgControl): void {   if (dir.valueAccessor!.setDisabledState) {     const onDisabledChange = (isDisabled: boolean) => {       dir.valueAccessor!.setDisabledState!(isDisabled);     };     control.registerOnDisabledChange(onDisabledChange);      // Register a callback function to cleanup disabled change handler     // from a control instance when a directive is destroyed.     dir._registerOnDestroy(() => {       control._unregisterOnDisabledChange(onDisabledChange);     });   } }  /**  * Sets up sync and async directive validators on provided form control.  * This function merges validators from the directive into the validators of the control.  *  * @param control Form control where directive validators should be setup.  * @param dir Directive instance that contains validators to be setup.  */ export function setUpValidators(control: AbstractControl, dir: AbstractControlDirective): void {   const validators = getControlValidators(control);   if (dir.validator !== null) {     control.setValidators(mergeValidators<ValidatorFn>(validators, dir.validator));   } else if (typeof validators === 'function') {     // If sync validators are represented by a single validator function, we force the     // `Validators.compose` call to happen by executing the `setValidators` function with     // an array that contains that function. We need this to avoid possible discrepancies in     // validators behavior, so sync validators are always processed by the `Validators.compose`.     // Note: we should consider moving this logic inside the `setValidators` function itself, so we     // have consistent behavior on AbstractControl API level. The same applies to the async     // validators logic below.     control.setValidators([validators]);   }    const asyncValidators = getControlAsyncValidators(control);   if (dir.asyncValidator !== null) {     control.setAsyncValidators(         mergeValidators<AsyncValidatorFn>(asyncValidators, dir.asyncValidator));   } else if (typeof asyncValidators === 'function') {     control.setAsyncValidators([asyncValidators]);   }    // Re-run validation when validator binding changes, e.g. minlength=3 -> minlength=4   const onValidatorChange = () => control.updateValueAndValidity();   registerOnValidatorChange<ValidatorFn>(dir._rawValidators, onValidatorChange);   registerOnValidatorChange<AsyncValidatorFn>(dir._rawAsyncValidators, onValidatorChange); }  /**  * Cleans up sync and async directive validators on provided form control.  * This function reverts the setup performed by the `setUpValidators` function, i.e.  * removes directive-specific validators from a given control instance.  *  * @param control Form control from where directive validators should be removed.  * @param dir Directive instance that contains validators to be removed.  * @returns true if a control was updated as a result of this action.  */ export function cleanUpValidators(     control: AbstractControl|null, dir: AbstractControlDirective): boolean {   let isControlUpdated = false;   if (control !== null) {     if (dir.validator !== null) {       const validators = getControlValidators(control);       if (Array.isArray(validators) && validators.length > 0) {         // Filter out directive validator function.         const updatedValidators = validators.filter((validator) => validator !== dir.validator);         if (updatedValidators.length !== validators.length) {           isControlUpdated = true;           control.setValidators(updatedValidators);         }       }     }      if (dir.asyncValidator !== null) {       const asyncValidators = getControlAsyncValidators(control);       if (Array.isArray(asyncValidators) && asyncValidators.length > 0) {         // Filter out directive async validator function.         const updatedAsyncValidators =             asyncValidators.filter((asyncValidator) => asyncValidator !== dir.asyncValidator);         if (updatedAsyncValidators.length !== asyncValidators.length) {           isControlUpdated = true;           control.setAsyncValidators(updatedAsyncValidators);         }       }     }   }    // Clear onValidatorChange callbacks by providing a noop function.   const noop = () => {};   registerOnValidatorChange<ValidatorFn>(dir._rawValidators, noop);   registerOnValidatorChange<AsyncValidatorFn>(dir._rawAsyncValidators, noop);    return isControlUpdated; }  function setUpViewChangePipeline(control: FormControl, dir: NgControl): void {   dir.valueAccessor!.registerOnChange((newValue: any) => {     control._pendingValue = newValue;     control._pendingChange = true;     control._pendingDirty = true;      if (control.updateOn === 'change') updateControl(control, dir);   }); }  function setUpBlurPipeline(control: FormControl, dir: NgControl): void {   dir.valueAccessor!.registerOnTouched(() => {     control._pendingTouched = true;      if (control.updateOn === 'blur' && control._pendingChange) updateControl(control, dir);     if (control.updateOn !== 'submit') control.markAsTouched();   }); }  function updateControl(control: FormControl, dir: NgControl): void {   if (control._pendingDirty) control.markAsDirty();   control.setValue(control._pendingValue, {emitModelToViewChange: false});   dir.viewToModelUpdate(control._pendingValue);   control._pendingChange = false; }  function setUpModelChangePipeline(control: FormControl, dir: NgControl): void {   const onChange = (newValue?: any, emitModelEvent?: boolean) => {     // control -> view     dir.valueAccessor!.writeValue(newValue);      // control -> ngModel     if (emitModelEvent) dir.viewToModelUpdate(newValue);   };   control.registerOnChange(onChange);    // Register a callback function to cleanup onChange handler   // from a control instance when a directive is destroyed.   dir._registerOnDestroy(() => {     control._unregisterOnChange(onChange);   }); }  /**  * Links a FormGroup or FormArray instance and corresponding Form directive by setting up validators  * present in the view.  *  * @param control FormGroup or FormArray instance that should be linked.  * @param dir Directive that provides view validators.  */ export function setUpFormContainer(     control: FormGroup|FormArray, dir: AbstractFormGroupDirective|FormArrayName) {   if (control == null && (typeof ngDevMode === 'undefined' || ngDevMode))     _throwError(dir, 'Cannot find control with');   setUpValidators(control, dir); }  /**  * Reverts the setup performed by the `setUpFormContainer` function.  *  * @param control FormGroup or FormArray instance that should be cleaned up.  * @param dir Directive that provided view validators.  * @returns true if a control was updated as a result of this action.  */ export function cleanUpFormContainer(     control: FormGroup|FormArray, dir: AbstractFormGroupDirective|FormArrayName): boolean {   return cleanUpValidators(control, dir); }  function _noControlError(dir: NgControl) {   return _throwError(dir, 'There is no FormControl instance attached to form control element with'); }  function _throwError(dir: AbstractControlDirective, message: string): void {   const messageEnd = _describeControlLocation(dir);   throw new Error(`${message} ${messageEnd}`); }  function _describeControlLocation(dir: AbstractControlDirective): string {   const path = dir.path;   if (path && path.length > 1) return `path: '${path.join(' -> ')}'`;   if (path?.[0]) return `name: '${path}'`;   return 'unspecified name attribute'; }  function _throwMissingValueAccessorError(dir: AbstractControlDirective) {   const loc = _describeControlLocation(dir);   throw new RuntimeError(       RuntimeErrorCode.NG_MISSING_VALUE_ACCESSOR, `No value accessor for form control ${loc}.`); }  function _throwInvalidValueAccessorError(dir: AbstractControlDirective) {   const loc = _describeControlLocation(dir);   throw new RuntimeError(       RuntimeErrorCode.NG_VALUE_ACCESSOR_NOT_PROVIDED,       `Value accessor was not provided as an array for form control with ${loc}. ` +           `Check that the \\`NG_VALUE_ACCESSOR\\` token is configured as a \\`multi: true\\` provider.`); }  export function isPropertyUpdated(changes: {[key: string]: any}, viewModel: any): boolean {   if (!changes.hasOwnProperty('model')) return false;   const change = changes['model'];    if (change.isFirstChange()) return true;   return !Object.is(viewModel, change.currentValue); }  export function isBuiltInAccessor(valueAccessor: ControlValueAccessor): boolean {   // Check if a given value accessor is an instance of a class that directly extends   // `BuiltInControlValueAccessor` one.   return Object.getPrototypeOf(valueAccessor.constructor) === BuiltInControlValueAccessor; }  export function syncPendingControls(form: FormGroup, directives: Set<NgControl>|NgControl[]): void {   form._syncPendingControls();   directives.forEach((dir: NgControl) => {     const control = dir.control as FormControl;     if (control.updateOn === 'submit' && control._pendingChange) {       dir.viewToModelUpdate(control._pendingValue);       control._pendingChange = false;     }   }); }  // TODO: vsavkin remove it once https://github.com/angular/angular/issues/3011 is implemented export function selectValueAccessor(     dir: NgControl, valueAccessors: ControlValueAccessor[]): ControlValueAccessor|null {   if (!valueAccessors) return null;    if (!Array.isArray(valueAccessors) && (typeof ngDevMode === 'undefined' || ngDevMode))     _throwInvalidValueAccessorError(dir);    let defaultAccessor: ControlValueAccessor|undefined = undefined;   let builtinAccessor: ControlValueAccessor|undefined = undefined;   let customAccessor: ControlValueAccessor|undefined = undefined;    valueAccessors.forEach((v: ControlValueAccessor) => {     if (v.constructor === DefaultValueAccessor) {       defaultAccessor = v;     } else if (isBuiltInAccessor(v)) {       if (builtinAccessor && (typeof ngDevMode === 'undefined' || ngDevMode))         _throwError(dir, 'More than one built-in value accessor matches form control with');       builtinAccessor = v;     } else {       if (customAccessor && (typeof ngDevMode === 'undefined' || ngDevMode))         _throwError(dir, 'More than one custom value accessor matches form control with');       customAccessor = v;     }   });    if (customAccessor) return customAccessor;   if (builtinAccessor) return builtinAccessor;   if (defaultAccessor) return defaultAccessor;    if (typeof ngDevMode === 'undefined' || ngDevMode) {     _throwError(dir, 'No valid value accessor for form control with');   }   return null; }  export function removeListItem<T>(list: T[], el: T): void {   const index = list.indexOf(el);   if (index > -1) list.splice(index, 1); }  // TODO(kara): remove after deprecation period export function _ngModelWarning(     name: string, type: {_ngModelWarningSentOnce: boolean},     instance: {_ngModelWarningSent: boolean}, warningConfig: string|null) {   if (warningConfig === 'never') return;    if (((warningConfig === null || warningConfig === 'once') && !type._ngModelWarningSentOnce) ||       (warningConfig === 'always' && !instance._ngModelWarningSent)) {     console.warn(ngModelWarning(name));     type._ngModelWarningSentOnce = true;     instance._ngModelWarningSent = true;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AfterViewInit, Directive, EventEmitter, forwardRef, Inject, Input, Optional, Provider, Self} from '@angular/core';  import {AbstractControl, FormHooks} from '../model/abstract_model'; import {FormControl} from '../model/form_control'; import {FormGroup} from '../model/form_group'; import {composeAsyncValidators, composeValidators, NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../validators';  import {ControlContainer} from './control_container'; import {Form} from './form_interface'; import {NgControl} from './ng_control'; import {NgModel} from './ng_model'; import {NgModelGroup} from './ng_model_group'; import {CALL_SET_DISABLED_STATE, SetDisabledStateOption, setUpControl, setUpFormContainer, syncPendingControls} from './shared'; import {AsyncValidator, AsyncValidatorFn, Validator, ValidatorFn} from './validators';  const formDirectiveProvider: Provider = {   provide: ControlContainer,   useExisting: forwardRef(() => NgForm) };  const resolvedPromise = (() => Promise.resolve())();  /**  * @description  * Creates a top-level `FormGroup` instance and binds it to a form  * to track aggregate form value and validation status.  *  * As soon as you import the `FormsModule`, this directive becomes active by default on  * all `<form>` tags.  You don't need to add a special selector.  *  * You optionally export the directive into a local template variable using `ngForm` as the key  * (ex: `#myForm=\"ngForm\"`). This is optional, but useful.  Many properties from the underlying  * `FormGroup` instance are duplicated on the directive itself, so a reference to it  * gives you access to the aggregate value and validity status of the form, as well as  * user interaction properties like `dirty` and `touched`.  *  * To register child controls with the form, use `NgModel` with a `name`  * attribute. You may use `NgModelGroup` to create sub-groups within the form.  *  * If necessary, listen to the directive's `ngSubmit` event to be notified when the user has  * triggered a form submission. The `ngSubmit` event emits the original form  * submission event.  *  * In template driven forms, all `<form>` tags are automatically tagged as `NgForm`.  * To import the `FormsModule` but skip its usage in some forms,  * for example, to use native HTML5 validation, add the `ngNoForm` and the `<form>`  * tags won't create an `NgForm` directive. In reactive forms, using `ngNoForm` is  * unnecessary because the `<form>` tags are inert. In that case, you would  * refrain from using the `formGroup` directive.  *  * @usageNotes  *  * ### Listening for form submission  *  * The following example shows how to capture the form values from the \"ngSubmit\" event.  *  * {@example forms/ts/simpleForm/simple_form_example.ts region='Component'}  *  * ### Setting the update options  *  * The following example shows you how to change the \"updateOn\" option from its default using  * ngFormOptions.  *  * ```html  * <form [ngFormOptions]=\"{updateOn: 'blur'}\">  *    <input name=\"one\" ngModel>  <!-- this ngModel will update on blur -->  * </form>  * ```  *  * ### Native DOM validation UI  *  * In order to prevent the native DOM form validation UI from interfering with Angular's form  * validation, Angular automatically adds the `novalidate` attribute on any `<form>` whenever  * `FormModule` or `ReactiveFormModule` are imported into the application.  * If you want to explicitly enable native DOM validation UI with Angular forms, you can add the  * `ngNativeValidate` attribute to the `<form>` element:  *  * ```html  * <form ngNativeValidate>  *   ...  * </form>  * ```  *  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector: 'form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]',   providers: [formDirectiveProvider],   host: {'(submit)': 'onSubmit($event)', '(reset)': 'onReset()'},   outputs: ['ngSubmit'],   exportAs: 'ngForm' }) export class NgForm extends ControlContainer implements Form, AfterViewInit {   /**    * @description    * Returns whether the form submission has been triggered.    */   public readonly submitted: boolean = false;    private _directives = new Set<NgModel>();    /**    * @description    * The `FormGroup` instance created for this form.    */   form: FormGroup;    /**    * @description    * Event emitter for the \"ngSubmit\" event    */   ngSubmit = new EventEmitter();    /**    * @description    * Tracks options for the `NgForm` instance.    *    * **updateOn**: Sets the default `updateOn` value for all child `NgModels` below it    * unless explicitly set by a child `NgModel` using `ngModelOptions`). Defaults to 'change'.    * Possible values: `'change'` | `'blur'` | `'submit'`.    *    */   // TODO(issue/24571): remove '!'.   @Input('ngFormOptions') options!: {updateOn?: FormHooks};    constructor(       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[],       @Optional() @Inject(CALL_SET_DISABLED_STATE) private callSetDisabledState?:           SetDisabledStateOption) {     super();     this.form =         new FormGroup({}, composeValidators(validators), composeAsyncValidators(asyncValidators));   }    /** @nodoc */   ngAfterViewInit() {     this._setUpdateStrategy();   }    /**    * @description    * The directive instance.    */   override get formDirective(): Form {     return this;   }    /**    * @description    * The internal `FormGroup` instance.    */   override get control(): FormGroup {     return this.form;   }    /**    * @description    * Returns an array representing the path to this group. Because this directive    * always lives at the top level of a form, it is always an empty array.    */   override get path(): string[] {     return [];   }    /**    * @description    * Returns a map of the controls in this group.    */   get controls(): {[key: string]: AbstractControl} {     return this.form.controls;   }    /**    * @description    * Method that sets up the control directive in this group, re-calculates its value    * and validity, and adds the instance to the internal list of directives.    *    * @param dir The `NgModel` directive instance.    */   addControl(dir: NgModel): void {     resolvedPromise.then(() => {       const container = this._findContainer(dir.path);       (dir as {control: FormControl}).control =           <FormControl>container.registerControl(dir.name, dir.control);       setUpControl(dir.control, dir, this.callSetDisabledState);       dir.control.updateValueAndValidity({emitEvent: false});       this._directives.add(dir);     });   }    /**    * @description    * Retrieves the `FormControl` instance from the provided `NgModel` directive.    *    * @param dir The `NgModel` directive instance.    */   getControl(dir: NgModel): FormControl {     return <FormControl>this.form.get(dir.path);   }    /**    * @description    * Removes the `NgModel` instance from the internal list of directives    *    * @param dir The `NgModel` directive instance.    */   removeControl(dir: NgModel): void {     resolvedPromise.then(() => {       const container = this._findContainer(dir.path);       if (container) {         container.removeControl(dir.name);       }       this._directives.delete(dir);     });   }    /**    * @description    * Adds a new `NgModelGroup` directive instance to the form.    *    * @param dir The `NgModelGroup` directive instance.    */   addFormGroup(dir: NgModelGroup): void {     resolvedPromise.then(() => {       const container = this._findContainer(dir.path);       const group = new FormGroup({});       setUpFormContainer(group, dir);       container.registerControl(dir.name, group);       group.updateValueAndValidity({emitEvent: false});     });   }    /**    * @description    * Removes the `NgModelGroup` directive instance from the form.    *    * @param dir The `NgModelGroup` directive instance.    */   removeFormGroup(dir: NgModelGroup): void {     resolvedPromise.then(() => {       const container = this._findContainer(dir.path);       if (container) {         container.removeControl(dir.name);       }     });   }    /**    * @description    * Retrieves the `FormGroup` for a provided `NgModelGroup` directive instance    *    * @param dir The `NgModelGroup` directive instance.    */   getFormGroup(dir: NgModelGroup): FormGroup {     return <FormGroup>this.form.get(dir.path);   }    /**    * Sets the new value for the provided `NgControl` directive.    *    * @param dir The `NgControl` directive instance.    * @param value The new value for the directive's control.    */   updateModel(dir: NgControl, value: any): void {     resolvedPromise.then(() => {       const ctrl = <FormControl>this.form.get(dir.path!);       ctrl.setValue(value);     });   }    /**    * @description    * Sets the value for this `FormGroup`.    *    * @param value The new value    */   setValue(value: {[key: string]: any}): void {     this.control.setValue(value);   }    /**    * @description    * Method called when the \"submit\" event is triggered on the form.    * Triggers the `ngSubmit` emitter to emit the \"submit\" event as its payload.    *    * @param $event The \"submit\" event object    */   onSubmit($event: Event): boolean {     (this as {submitted: boolean}).submitted = true;     syncPendingControls(this.form, this._directives);     this.ngSubmit.emit($event);     // Forms with `method=\"dialog\"` have some special behavior     // that won't reload the page and that shouldn't be prevented.     return ($event?.target as HTMLFormElement | null)?.method === 'dialog';   }    /**    * @description    * Method called when the \"reset\" event is triggered on the form.    */   onReset(): void {     this.resetForm();   }    /**    * @description    * Resets the form to an initial value and resets its submitted status.    *    * @param value The new value for the form.    */   resetForm(value: any = undefined): void {     this.form.reset(value);     (this as {submitted: boolean}).submitted = false;   }    private _setUpdateStrategy() {     if (this.options && this.options.updateOn != null) {       this.form._updateOn = this.options.updateOn;     }   }    private _findContainer(path: string[]): FormGroup {     path.pop();     return path.length ? <FormGroup>this.form.get(path) : this.form;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export function removeListItem<T>(list: T[], el: T): void {   const index = list.indexOf(el);   if (index > -1) list.splice(index, 1); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AsyncValidatorFn, ValidatorFn} from '../directives/validators'; import {removeListItem} from '../util';  import {AbstractControl, AbstractControlOptions, isOptionsObj, pickAsyncValidators, pickValidators} from './abstract_model';  /**  * FormControlState is a boxed form value. It is an object with a `value` key and a `disabled` key.  *  * @publicApi  */ export interface FormControlState<T> {   value: T;   disabled: boolean; }  /**  * Interface for options provided to a `FormControl`.  *  * This interface extends all options from {@link AbstractControlOptions}, plus some options  * unique to `FormControl`.  *  * @publicApi  */ export interface FormControlOptions extends AbstractControlOptions {   /**    * @description    * Whether to use the initial value used to construct the `FormControl` as its default value    * as well. If this option is false or not provided, the default value of a FormControl is `null`.    * When a FormControl is reset without an explicit value, its value reverts to    * its default value.    */   nonNullable?: boolean;    /**    * @deprecated Use `nonNullable` instead.    */   initialValueIsDefault?: boolean; }  /**  * Tracks the value and validation status of an individual form control.  *  * This is one of the four fundamental building blocks of Angular forms, along with  * `FormGroup`, `FormArray` and `FormRecord`. It extends the `AbstractControl` class that  * implements most of the base functionality for accessing the value, validation status,  * user interactions and events.  *  * `FormControl` takes a single generic argument, which describes the type of its value. This  * argument always implicitly includes `null` because the control can be reset. To change this  * behavior, set `nonNullable` or see the usage notes below.  *  * See [usage examples below](#usage-notes).  *  * @see `AbstractControl`  * @see [Reactive Forms Guide](guide/reactive-forms)  * @see [Usage Notes](#usage-notes)  *  * @publicApi  *  * @overriddenImplementation ɵFormControlCtor  *  * @usageNotes  *  * ### Initializing Form Controls  *  * Instantiate a `FormControl`, with an initial value.  *  * ```ts  * const control = new FormControl('some value');  * console.log(control.value);     // 'some value'  * ```  *  * The following example initializes the control with a form state object. The `value`  * and `disabled` keys are required in this case.  *  * ```ts  * const control = new FormControl({ value: 'n/a', disabled: true });  * console.log(control.value);     // 'n/a'  * console.log(control.status);    // 'DISABLED'  * ```  *  * The following example initializes the control with a synchronous validator.  *  * ```ts  * const control = new FormControl('', Validators.required);  * console.log(control.value);      // ''  * console.log(control.status);     // 'INVALID'  * ```  *  * The following example initializes the control using an options object.  *  * ```ts  * const control = new FormControl('', {  *    validators: Validators.required,  *    asyncValidators: myAsyncValidator  * });  * ```  *  * ### The single type argument  *  * `FormControl` accepts a generic argument, which describes the type of its value.  * In most cases, this argument will be inferred.  *  * If you are initializing the control to `null`, or you otherwise wish to provide a  * wider type, you may specify the argument explicitly:  *  * ```  * let fc = new FormControl<string|null>(null);  * fc.setValue('foo');  * ```  *  * You might notice that `null` is always added to the type of the control.  * This is because the control will become `null` if you call `reset`. You can change  * this behavior by setting `{nonNullable: true}`.  *  * ### Configure the control to update on a blur event  *  * Set the `updateOn` option to `'blur'` to update on the blur `event`.  *  * ```ts  * const control = new FormControl('', { updateOn: 'blur' });  * ```  *  * ### Configure the control to update on a submit event  *  * Set the `updateOn` option to `'submit'` to update on a submit `event`.  *  * ```ts  * const control = new FormControl('', { updateOn: 'submit' });  * ```  *  * ### Reset the control back to a specific value  *  * You reset to a specific form state by passing through a standalone  * value or a form state object that contains both a value and a disabled state  * (these are the only two properties that cannot be calculated).  *  * ```ts  * const control = new FormControl('Nancy');  *  * console.log(control.value); // 'Nancy'  *  * control.reset('Drew');  *  * console.log(control.value); // 'Drew'  * ```  *  * ### Reset the control to its initial value  *  * If you wish to always reset the control to its initial value (instead of null),  * you can pass the `nonNullable` option:  *  * ```  * const control = new FormControl('Nancy', {nonNullable: true});  *  * console.log(control.value); // 'Nancy'  *  * control.reset();  *  * console.log(control.value); // 'Nancy'  * ```  *  * ### Reset the control back to an initial value and disabled  *  * ```  * const control = new FormControl('Nancy');  *  * console.log(control.value); // 'Nancy'  * console.log(control.status); // 'VALID'  *  * control.reset({ value: 'Drew', disabled: true });  *  * console.log(control.value); // 'Drew'  * console.log(control.status); // 'DISABLED'  * ```  */ export interface FormControl<TValue = any> extends AbstractControl<TValue> {   /**    * The default value of this FormControl, used whenever the control is reset without an explicit    * value. See {@link FormControlOptions#nonNullable} for more information on configuring    * a default value.    */   readonly defaultValue: TValue;    /** @internal */   _onChange: Function[];    /**    * This field holds a pending value that has not yet been applied to the form's value.    * @internal    */   _pendingValue: TValue;    /** @internal */   _pendingChange: boolean;    /**    * Sets a new value for the form control.    *    * @param value The new value for the control.    * @param options Configuration options that determine how the control propagates changes    * and emits events when the value changes.    * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity    * updateValueAndValidity} method.    *    * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is    * false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control value is updated.    * When false, no events are emitted.    * * `emitModelToViewChange`: When true or not supplied  (the default), each change triggers an    * `onChange` event to    * update the view.    * * `emitViewToModelChange`: When true or not supplied (the default), each change triggers an    * `ngModelChange`    * event to update the model.    *    */   setValue(value: TValue, options?: {     onlySelf?: boolean,     emitEvent?: boolean,     emitModelToViewChange?: boolean,     emitViewToModelChange?: boolean   }): void;    /**    * Patches the value of a control.    *    * This function is functionally the same as {@link FormControl#setValue setValue} at this level.    * It exists for symmetry with {@link FormGroup#patchValue patchValue} on `FormGroups` and    * `FormArrays`, where it does behave differently.    *    * @see `setValue` for options    */   patchValue(value: TValue, options?: {     onlySelf?: boolean,     emitEvent?: boolean,     emitModelToViewChange?: boolean,     emitViewToModelChange?: boolean   }): void;    /**    * Resets the form control, marking it `pristine` and `untouched`, and resetting    * the value. The new value will be the provided value (if passed), `null`, or the initial value    * if `nonNullable` was set in the constructor via {@link FormControlOptions}.    *    * ```ts    * // By default, the control will reset to null.    * const dog = new FormControl('spot');    * dog.reset(); // dog.value is null    *    * // If this flag is set, the control will instead reset to the initial value.    * const cat = new FormControl('tabby', {nonNullable: true});    * cat.reset(); // cat.value is \"tabby\"    *    * // A value passed to reset always takes precedence.    * const fish = new FormControl('finn', {nonNullable: true});    * fish.reset('bubble'); // fish.value is \"bubble\"    * ```    *    * @param formState Resets the control with an initial value,    * or an object that defines the initial value and disabled state.    *    * @param options Configuration options that determine how the control propagates changes    * and emits events after the value changes.    *    * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is    * false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control is reset.    * When false, no events are emitted.    *    */   reset(formState?: TValue|FormControlState<TValue>, options?: {     onlySelf?: boolean,     emitEvent?: boolean   }): void;    /**    * For a simple FormControl, the raw value is equivalent to the value.    */   getRawValue(): TValue;    /**    * @internal    */   _updateValue(): void;    /**    * @internal    */   _anyControls(condition: (c: AbstractControl) => boolean): boolean;    /**    * @internal    */   _allControlsDisabled(): boolean;     /**    * Register a listener for change events.    *    * @param fn The method that is called when the value changes    */   registerOnChange(fn: Function): void;     /**    * Internal function to unregister a change events listener.    * @internal    */   _unregisterOnChange(fn: (value?: any, emitModelEvent?: boolean) => void): void;    /**    * Register a listener for disabled events.    *    * @param fn The method that is called when the disabled status changes.    */   registerOnDisabledChange(fn: (isDisabled: boolean) => void): void;    /**    * Internal function to unregister a disabled event listener.    * @internal    */   _unregisterOnDisabledChange(fn: (isDisabled: boolean) => void): void;    /**    * @internal    */   _forEachChild(cb: (c: AbstractControl) => void): void;    /** @internal */   _syncPendingControls(): boolean; }  // This internal interface is present to avoid a naming clash, resulting in the wrong `FormControl` // symbol being used. type FormControlInterface<TValue = any> = FormControl<TValue>;  /**  * Various available constructors for `FormControl`.  * Do not use this interface directly. Instead, use `FormControl`:  * ```  * const fc = new FormControl('foo');  * ```  * This symbol is prefixed with ɵ to make plain that it is an internal symbol.  */ export interface ɵFormControlCtor {   /**    * Construct a FormControl with no initial value or validators.    */   new(): FormControl<any>;    /**    * Creates a new `FormControl` instance.    *    * @param formState Initializes the control with an initial value,    * or an object that defines the initial value and disabled state.    *    * @param validatorOrOpts A synchronous validator function, or an array of    * such functions, or a `FormControlOptions` object that contains validation functions    * and a validation trigger.    *    * @param asyncValidator A single async validator or array of async validator functions    */   new<T = any>(value: FormControlState<T>|T, opts: FormControlOptions&{nonNullable: true}):       FormControl<T>;    /**    * @deprecated Use `nonNullable` instead.    */   new<T = any>(value: FormControlState<T>|T, opts: FormControlOptions&{     initialValueIsDefault: true   }): FormControl<T>;    /**    * @deprecated When passing an `options` argument, the `asyncValidator` argument has no effect.    */   new<T = any>(       value: FormControlState<T>|T, opts: FormControlOptions,       asyncValidator: AsyncValidatorFn|AsyncValidatorFn[]): FormControl<T|null>;    new<T = any>(       value: FormControlState<T>|T,       validatorOrOpts?: ValidatorFn|ValidatorFn[]|FormControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): FormControl<T|null>;    /**    * The presence of an explicit `prototype` property provides backwards-compatibility for apps that    * manually inspect the prototype chain.    */   prototype: FormControl<any>; }  function isFormControlState(formState: unknown): formState is FormControlState<unknown> {   return typeof formState === 'object' && formState !== null &&       Object.keys(formState).length === 2 && 'value' in formState && 'disabled' in formState; }  export const FormControl: ɵFormControlCtor =     (class FormControl<TValue = any> extends AbstractControl<          TValue> implements FormControlInterface<TValue> {       /** @publicApi */       public readonly defaultValue: TValue = null as unknown as TValue;        /** @internal */       _onChange: Array<Function> = [];        /** @internal */       _pendingValue!: TValue;        /** @internal */       _pendingChange: boolean = false;        constructor(           // formState and defaultValue will only be null if T is nullable           formState: FormControlState<TValue>|TValue = null as unknown as TValue,           validatorOrOpts?: ValidatorFn|ValidatorFn[]|FormControlOptions|null,           asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null) {         super(             pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts));         this._applyFormState(formState);         this._setUpdateStrategy(validatorOrOpts);         this._initObservables();         this.updateValueAndValidity({           onlySelf: true,           // If `asyncValidator` is present, it will trigger control status change from `PENDING` to           // `VALID` or `INVALID`.           // The status should be broadcasted via the `statusChanges` observable, so we set           // `emitEvent` to `true` to allow that during the control creation process.           emitEvent: !!this.asyncValidator         });         if (isOptionsObj(validatorOrOpts) &&             (validatorOrOpts.nonNullable || validatorOrOpts.initialValueIsDefault)) {           if (isFormControlState(formState)) {             this.defaultValue = formState.value;           } else {             this.defaultValue = formState;           }         }       }        override setValue(value: TValue, options: {         onlySelf?: boolean,         emitEvent?: boolean,         emitModelToViewChange?: boolean,         emitViewToModelChange?: boolean       } = {}): void {         (this as {value: TValue}).value = this._pendingValue = value;         if (this._onChange.length && options.emitModelToViewChange !== false) {           this._onChange.forEach(               (changeFn) => changeFn(this.value, options.emitViewToModelChange !== false));         }         this.updateValueAndValidity(options);       }        override patchValue(value: TValue, options: {         onlySelf?: boolean,         emitEvent?: boolean,         emitModelToViewChange?: boolean,         emitViewToModelChange?: boolean       } = {}): void {         this.setValue(value, options);       }        override reset(           formState: TValue|FormControlState<TValue> = this.defaultValue,           options: {onlySelf?: boolean, emitEvent?: boolean} = {}): void {         this._applyFormState(formState);         this.markAsPristine(options);         this.markAsUntouched(options);         this.setValue(this.value, options);         this._pendingChange = false;       }        /**  @internal */       override _updateValue(): void {}        /**  @internal */       override _anyControls(condition: (c: AbstractControl) => boolean): boolean {         return false;       }        /**  @internal */       override _allControlsDisabled(): boolean {         return this.disabled;       }        registerOnChange(fn: Function): void {         this._onChange.push(fn);       }        /** @internal */       _unregisterOnChange(fn: (value?: any, emitModelEvent?: boolean) => void): void {         removeListItem(this._onChange, fn);       }        registerOnDisabledChange(fn: (isDisabled: boolean) => void): void {         this._onDisabledChange.push(fn);       }        /** @internal */       _unregisterOnDisabledChange(fn: (isDisabled: boolean) => void): void {         removeListItem(this._onDisabledChange, fn);       }        /** @internal */       override _forEachChild(cb: (c: AbstractControl) => void): void {}        /** @internal */       override _syncPendingControls(): boolean {         if (this.updateOn === 'submit') {           if (this._pendingDirty) this.markAsDirty();           if (this._pendingTouched) this.markAsTouched();           if (this._pendingChange) {             this.setValue(this._pendingValue, {onlySelf: true, emitModelToViewChange: false});             return true;           }         }         return false;       }        private _applyFormState(formState: FormControlState<TValue>|TValue) {         if (isFormControlState(formState)) {           (this as {value: TValue}).value = this._pendingValue = formState.value;           formState.disabled ? this.disable({onlySelf: true, emitEvent: false}) :                                this.enable({onlySelf: true, emitEvent: false});         } else {           (this as {value: TValue}).value = this._pendingValue = formState;         }       }     });  interface UntypedFormControlCtor {   new(): UntypedFormControl;    new(formState?: any, validatorOrOpts?: ValidatorFn|ValidatorFn[]|FormControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): UntypedFormControl;    /**    * The presence of an explicit `prototype` property provides backwards-compatibility for apps that    * manually inspect the prototype chain.    */   prototype: FormControl<any>; }  /**  * UntypedFormControl is a non-strongly-typed version of @see FormControl.  */ export type UntypedFormControl = FormControl<any>;  export const UntypedFormControl: UntypedFormControlCtor = FormControl;  /**  * @description  * Asserts that the given control is an instance of `FormControl`  *  * @publicApi  */ export const isFormControl = (control: unknown): control is FormControl =>     control instanceof FormControl; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, OnDestroy, OnInit} from '@angular/core';  import {FormGroup} from '../model/form_group';  import {ControlContainer} from './control_container'; import {Form} from './form_interface'; import {controlPath} from './shared';    /**  * @description  * A base class for code shared between the `NgModelGroup` and `FormGroupName` directives.  *  * @publicApi  */ @Directive() export class AbstractFormGroupDirective extends ControlContainer implements OnInit, OnDestroy {   /**    * @description    * The parent control for the group    *    * @internal    */   // TODO(issue/24571): remove '!'.   _parent!: ControlContainer;    /** @nodoc */   ngOnInit(): void {     this._checkParentType();     // Register the group with its parent group.     this.formDirective!.addFormGroup(this);   }    /** @nodoc */   ngOnDestroy(): void {     if (this.formDirective) {       // Remove the group from its parent group.       this.formDirective.removeFormGroup(this);     }   }    /**    * @description    * The `FormGroup` bound to this directive.    */   override get control(): FormGroup {     return this.formDirective!.getFormGroup(this);   }    /**    * @description    * The path to this group from the top-level directive.    */   override get path(): string[] {     return controlPath(this.name == null ? this.name : this.name.toString(), this._parent);   }    /**    * @description    * The top-level directive for this group if present, otherwise null.    */   override get formDirective(): Form|null {     return this._parent ? this._parent.formDirective : null;   }    /** @internal */   _checkParentType(): void {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  import {formControlNameExample, formGroupNameExample, ngModelGroupExample, ngModelWithFormGroupExample} from './error_examples';   export function modelParentException(): Error {   return new RuntimeError(RuntimeErrorCode.NGMODEL_IN_FORM_GROUP, `     ngModel cannot be used to register form controls with a parent formGroup directive.  Try using     formGroup's partner directive \"formControlName\" instead.  Example:      ${formControlNameExample}      Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:      Example:      ${ngModelWithFormGroupExample}`); }  export function formGroupNameException(): Error {   return new RuntimeError(RuntimeErrorCode.NGMODEL_IN_FORM_GROUP_NAME, `     ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.      Option 1: Use formControlName instead of ngModel (reactive strategy):      ${formGroupNameExample}      Option 2:  Update ngModel's parent be ngModelGroup (template-driven strategy):      ${ngModelGroupExample}`); }  export function missingNameException(): Error {   return new RuntimeError(       RuntimeErrorCode.NGMODEL_WITHOUT_NAME,       `If ngModel is used within a form tag, either the name attribute must be set or the form     control must be defined as 'standalone' in ngModelOptions.      Example 1: <input [(ngModel)]=\"person.firstName\" name=\"first\">     Example 2: <input [(ngModel)]=\"person.firstName\" [ngModelOptions]=\"{standalone: true}\">`); }  export function modelGroupParentException(): Error {   return new RuntimeError(RuntimeErrorCode.NGMODELGROUP_IN_FORM_GROUP, `     ngModelGroup cannot be used with a parent formGroup directive.      Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):      ${formGroupNameExample}      Option 2:  Use a regular form tag instead of the formGroup directive (template-driven strategy):      ${ngModelGroupExample}`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, forwardRef, Host, Inject, Input, OnDestroy, OnInit, Optional, Self, SkipSelf} from '@angular/core';  import {NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../validators';  import {AbstractFormGroupDirective} from './abstract_form_group_directive'; import {ControlContainer} from './control_container'; import {NgForm} from './ng_form'; import {modelGroupParentException} from './template_driven_errors'; import {AsyncValidator, AsyncValidatorFn, Validator, ValidatorFn} from './validators';  export const modelGroupProvider: any = {   provide: ControlContainer,   useExisting: forwardRef(() => NgModelGroup) };  /**  * @description  * Creates and binds a `FormGroup` instance to a DOM element.  *  * This directive can only be used as a child of `NgForm` (within `<form>` tags).  *  * Use this directive to validate a sub-group of your form separately from the  * rest of your form, or if some values in your domain model make more sense  * to consume together in a nested object.  *  * Provide a name for the sub-group and it will become the key  * for the sub-group in the form's full value. If you need direct access, export the directive into  * a local template variable using `ngModelGroup` (ex: `#myGroup=\"ngModelGroup\"`).  *  * @usageNotes  *  * ### Consuming controls in a grouping  *  * The following example shows you how to combine controls together in a sub-group  * of the form.  *  * {@example forms/ts/ngModelGroup/ng_model_group_example.ts region='Component'}  *  * @ngModule FormsModule  * @publicApi  */ @Directive({selector: '[ngModelGroup]', providers: [modelGroupProvider], exportAs: 'ngModelGroup'}) export class NgModelGroup extends AbstractFormGroupDirective implements OnInit, OnDestroy {   /**    * @description    * Tracks the name of the `NgModelGroup` bound to the directive. The name corresponds    * to a key in the parent `NgForm`.    */   // TODO(issue/24571): remove '!'.   @Input('ngModelGroup') override name!: string;    constructor(       @Host() @SkipSelf() parent: ControlContainer,       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[]) {     super();     this._parent = parent;     this._setValidators(validators);     this._setAsyncValidators(asyncValidators);   }    /** @internal */   override _checkParentType(): void {     if (!(this._parent instanceof NgModelGroup) && !(this._parent instanceof NgForm) &&         (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw modelGroupParentException();     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ChangeDetectorRef, Directive, EventEmitter, forwardRef, Host, Inject, Input, OnChanges, OnDestroy, Optional, Output, Provider, Self, SimpleChanges, ɵcoerceToBoolean as coerceToBoolean} from '@angular/core';  import {FormHooks} from '../model/abstract_model'; import {FormControl} from '../model/form_control'; import {NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../validators';  import {AbstractFormGroupDirective} from './abstract_form_group_directive'; import {ControlContainer} from './control_container'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor'; import {NgControl} from './ng_control'; import {NgForm} from './ng_form'; import {NgModelGroup} from './ng_model_group'; import {CALL_SET_DISABLED_STATE, controlPath, isPropertyUpdated, selectValueAccessor, SetDisabledStateOption, setUpControl} from './shared'; import {formGroupNameException, missingNameException, modelParentException} from './template_driven_errors'; import {AsyncValidator, AsyncValidatorFn, Validator, ValidatorFn} from './validators';  const formControlBinding: Provider = {   provide: NgControl,   useExisting: forwardRef(() => NgModel) };  /**  * `ngModel` forces an additional change detection run when its inputs change:  * E.g.:  * ```  * <div>{{myModel.valid}}</div>  * <input [(ngModel)]=\"myValue\" #myModel=\"ngModel\">  * ```  * I.e. `ngModel` can export itself on the element and then be used in the template.  * Normally, this would result in expressions before the `input` that use the exported directive  * to have an old value as they have been  * dirty checked before. As this is a very common case for `ngModel`, we added this second change  * detection run.  *  * Notes:  * - this is just one extra run no matter how many `ngModel`s have been changed.  * - this is a general problem when using `exportAs` for directives!  */ const resolvedPromise = (() => Promise.resolve())();  /**  * @description  * Creates a `FormControl` instance from a domain model and binds it  * to a form control element.  *  * The `FormControl` instance tracks the value, user interaction, and  * validation status of the control and keeps the view synced with the model. If used  * within a parent form, the directive also registers itself with the form as a child  * control.  *  * This directive is used by itself or as part of a larger form. Use the  * `ngModel` selector to activate it.  *  * It accepts a domain model as an optional `Input`. If you have a one-way binding  * to `ngModel` with `[]` syntax, changing the domain model's value in the component  * class sets the value in the view. If you have a two-way binding with `[()]` syntax  * (also known as 'banana-in-a-box syntax'), the value in the UI always syncs back to  * the domain model in your class.  *  * To inspect the properties of the associated `FormControl` (like the validity state),  * export the directive into a local template variable using `ngModel` as the key (ex:  * `#myVar=\"ngModel\"`). You can then access the control using the directive's `control` property.  * However, the most commonly used properties (like `valid` and `dirty`) also exist on the control  * for direct access. See a full list of properties directly available in  * `AbstractControlDirective`.  *  * @see `RadioControlValueAccessor`  * @see `SelectControlValueAccessor`  *  * @usageNotes  *  * ### Using ngModel on a standalone control  *  * The following examples show a simple standalone control using `ngModel`:  *  * {@example forms/ts/simpleNgModel/simple_ng_model_example.ts region='Component'}  *  * When using the `ngModel` within `<form>` tags, you'll also need to supply a `name` attribute  * so that the control can be registered with the parent form under that name.  *  * In the context of a parent form, it's often unnecessary to include one-way or two-way binding,  * as the parent form syncs the value for you. You access its properties by exporting it into a  * local template variable using `ngForm` such as (`#f=\"ngForm\"`). Use the variable where  * needed on form submission.  *  * If you do need to populate initial values into your form, using a one-way binding for  * `ngModel` tends to be sufficient as long as you use the exported form's value rather  * than the domain model's value on submit.  *  * ### Using ngModel within a form  *  * The following example shows controls using `ngModel` within a form:  *  * {@example forms/ts/simpleForm/simple_form_example.ts region='Component'}  *  * ### Using a standalone ngModel within a group  *  * The following example shows you how to use a standalone ngModel control  * within a form. This controls the display of the form, but doesn't contain form data.  *  * ```html  * <form>  *   <input name=\"login\" ngModel placeholder=\"Login\">  *   <input type=\"checkbox\" ngModel [ngModelOptions]=\"{standalone: true}\"> Show more options?  * </form>  * <!-- form value: {login: ''} -->  * ```  *  * ### Setting the ngModel `name` attribute through options  *  * The following example shows you an alternate way to set the name attribute. Here,  * an attribute identified as name is used within a custom form control component. To still be able  * to specify the NgModel's name, you must specify it using the `ngModelOptions` input instead.  *  * ```html  * <form>  *   <my-custom-form-control name=\"Nancy\" ngModel [ngModelOptions]=\"{name: 'user'}\">  *   </my-custom-form-control>  * </form>  * <!-- form value: {user: ''} -->  * ```  *  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector: '[ngModel]:not([formControlName]):not([formControl])',   providers: [formControlBinding],   exportAs: 'ngModel' }) export class NgModel extends NgControl implements OnChanges, OnDestroy {   public override readonly control: FormControl = new FormControl();    // At runtime we coerce arbitrary values assigned to the \"disabled\" input to a \"boolean\".   // This is not reflected in the type of the property because outside of templates, consumers   // should only deal with booleans. In templates, a string is allowed for convenience and to   // match the native \"disabled attribute\" semantics which can be observed on input elements.   // This static member tells the compiler that values of type \"string\" can also be assigned   // to the input in a template.   /** @nodoc */   static ngAcceptInputType_isDisabled: boolean|string;    /** @internal */   _registered = false;    /**    * Internal reference to the view model value.    * @nodoc    */   viewModel: any;    /**    * @description    * Tracks the name bound to the directive. If a parent form exists, it    * uses this name as a key to retrieve this control's value.    */   // TODO(issue/24571): remove '!'.   @Input() override name!: string;    /**    * @description    * Tracks whether the control is disabled.    */   // TODO(issue/24571): remove '!'.   @Input('disabled') isDisabled!: boolean;    /**    * @description    * Tracks the value bound to this directive.    */   @Input('ngModel') model: any;    /**    * @description    * Tracks the configuration options for this `ngModel` instance.    *    * **name**: An alternative to setting the name attribute on the form control element. See    * the [example](api/forms/NgModel#using-ngmodel-on-a-standalone-control) for using `NgModel`    * as a standalone control.    *    * **standalone**: When set to true, the `ngModel` will not register itself with its parent form,    * and acts as if it's not in the form. Defaults to false. If no parent form exists, this option    * has no effect.    *    * **updateOn**: Defines the event upon which the form control value and validity update.    * Defaults to 'change'. Possible values: `'change'` | `'blur'` | `'submit'`.    *    */   // TODO(issue/24571): remove '!'.   @Input('ngModelOptions') options!: {name?: string, standalone?: boolean, updateOn?: FormHooks};    /**    * @description    * Event emitter for producing the `ngModelChange` event after    * the view model updates.    */   @Output('ngModelChange') update = new EventEmitter();    constructor(       @Optional() @Host() parent: ControlContainer,       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[],       @Optional() @Self() @Inject(NG_VALUE_ACCESSOR) valueAccessors: ControlValueAccessor[],       @Optional() @Inject(ChangeDetectorRef) private _changeDetectorRef?: ChangeDetectorRef|null,       @Optional() @Inject(CALL_SET_DISABLED_STATE) private callSetDisabledState?:           SetDisabledStateOption) {     super();     this._parent = parent;     this._setValidators(validators);     this._setAsyncValidators(asyncValidators);     this.valueAccessor = selectValueAccessor(this, valueAccessors);   }    /** @nodoc */   ngOnChanges(changes: SimpleChanges) {     this._checkForErrors();     if (!this._registered || 'name' in changes) {       if (this._registered) {         this._checkName();         if (this.formDirective) {           // We can't call `formDirective.removeControl(this)`, because the `name` has already been           // changed. We also can't reset the name temporarily since the logic in `removeControl`           // is inside a promise and it won't run immediately. We work around it by giving it an           // object with the same shape instead.           const oldName = changes['name'].previousValue;           this.formDirective.removeControl({name: oldName, path: this._getPath(oldName)});         }       }       this._setUpControl();     }     if ('isDisabled' in changes) {       this._updateDisabled(changes);     }      if (isPropertyUpdated(changes, this.viewModel)) {       this._updateValue(this.model);       this.viewModel = this.model;     }   }    /** @nodoc */   ngOnDestroy(): void {     this.formDirective && this.formDirective.removeControl(this);   }    /**    * @description    * Returns an array that represents the path from the top-level form to this control.    * Each index is the string name of the control on that level.    */   override get path(): string[] {     return this._getPath(this.name);   }    /**    * @description    * The top-level directive for this control if present, otherwise null.    */   get formDirective(): any {     return this._parent ? this._parent.formDirective : null;   }    /**    * @description    * Sets the new value for the view model and emits an `ngModelChange` event.    *    * @param newValue The new value emitted by `ngModelChange`.    */   override viewToModelUpdate(newValue: any): void {     this.viewModel = newValue;     this.update.emit(newValue);   }    private _setUpControl(): void {     this._setUpdateStrategy();     this._isStandalone() ? this._setUpStandalone() : this.formDirective.addControl(this);     this._registered = true;   }    private _setUpdateStrategy(): void {     if (this.options && this.options.updateOn != null) {       this.control._updateOn = this.options.updateOn;     }   }    private _isStandalone(): boolean {     return !this._parent || !!(this.options && this.options.standalone);   }    private _setUpStandalone(): void {     setUpControl(this.control, this, this.callSetDisabledState);     this.control.updateValueAndValidity({emitEvent: false});   }    private _checkForErrors(): void {     if (!this._isStandalone()) {       this._checkParentType();     }     this._checkName();   }    private _checkParentType(): void {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       if (!(this._parent instanceof NgModelGroup) &&           this._parent instanceof AbstractFormGroupDirective) {         throw formGroupNameException();       } else if (!(this._parent instanceof NgModelGroup) && !(this._parent instanceof NgForm)) {         throw modelParentException();       }     }   }    private _checkName(): void {     if (this.options && this.options.name) this.name = this.options.name;      if (!this._isStandalone() && !this.name && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw missingNameException();     }   }    private _updateValue(value: any): void {     resolvedPromise.then(() => {       this.control.setValue(value, {emitViewToModelChange: false});       this._changeDetectorRef?.markForCheck();     });   }    private _updateDisabled(changes: SimpleChanges) {     const disabledValue = changes['isDisabled'].currentValue;     // checking for 0 to avoid breaking change     const isDisabled = disabledValue !== 0 && coerceToBoolean(disabledValue);      resolvedPromise.then(() => {       if (isDisabled && !this.control.disabled) {         this.control.disable();       } else if (!isDisabled && this.control.disabled) {         this.control.enable();       }        this._changeDetectorRef?.markForCheck();     });   }    private _getPath(controlName: string): string[] {     return this._parent ? controlPath(controlName, this._parent) : [controlName];   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive} from '@angular/core';  /**  * @description  *  * Adds `novalidate` attribute to all forms by default.  *  * `novalidate` is used to disable browser's native form validation.  *  * If you want to use native validation with Angular forms, just add `ngNativeValidate` attribute:  *  * ```  * <form ngNativeValidate></form>  * ```  *  * @publicApi  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  */ @Directive({   selector: 'form:not([ngNoForm]):not([ngNativeValidate])',   host: {'novalidate': ''}, }) export class ɵNgNoValidate { }  export {ɵNgNoValidate as NgNoValidate}; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef, forwardRef, Provider} from '@angular/core';  import {BuiltInControlValueAccessor, ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor';  const NUMBER_VALUE_ACCESSOR: Provider = {   provide: NG_VALUE_ACCESSOR,   useExisting: forwardRef(() => NumberValueAccessor),   multi: true };  /**  * @description  * The `ControlValueAccessor` for writing a number value and listening to number input changes.  * The value accessor is used by the `FormControlDirective`, `FormControlName`, and `NgModel`  * directives.  *  * @usageNotes  *  * ### Using a number input with a reactive form.  *  * The following example shows how to use a number input with a reactive form.  *  * ```ts  * const totalCountControl = new FormControl();  * ```  *  * ```  * <input type=\"number\" [formControl]=\"totalCountControl\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]',   host: {'(input)': 'onChange($event.target.value)', '(blur)': 'onTouched()'},   providers: [NUMBER_VALUE_ACCESSOR] }) export class NumberValueAccessor extends BuiltInControlValueAccessor implements     ControlValueAccessor {   /**    * Sets the \"value\" property on the input element.    * @nodoc    */   writeValue(value: number): void {     // The value needs to be normalized for IE9, otherwise it is set to 'null' when null     const normalizedValue = value == null ? '' : value;     this.setProperty('value', normalizedValue);   }    /**    * Registers a function called when the control value changes.    * @nodoc    */   override registerOnChange(fn: (_: number|null) => void): void {     this.onChange = (value) => {       fn(value == '' ? null : parseFloat(value));     };   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef, forwardRef, inject, Injectable, Injector, Input, NgModule, OnDestroy, OnInit, Provider, Renderer2, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  import {BuiltInControlValueAccessor, ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor'; import {NgControl} from './ng_control'; import {CALL_SET_DISABLED_STATE, setDisabledStateDefault, SetDisabledStateOption} from './shared';  const RADIO_VALUE_ACCESSOR: Provider = {   provide: NG_VALUE_ACCESSOR,   useExisting: forwardRef(() => RadioControlValueAccessor),   multi: true };  function throwNameError() {   throw new RuntimeError(RuntimeErrorCode.NAME_AND_FORM_CONTROL_NAME_MUST_MATCH, `       If you define both a name and a formControlName attribute on your radio button, their values       must match. Ex: <input type=\"radio\" formControlName=\"food\" name=\"food\">     `); }  /**  * Internal-only NgModule that works as a host for the `RadioControlRegistry` tree-shakable  * provider. Note: the `InternalFormsSharedModule` can not be used here directly, since it's  * declared *after* the `RadioControlRegistry` class and the `providedIn` doesn't support  * `forwardRef` logic.  */ @NgModule() export class RadioControlRegistryModule { }  /**  * @description  * Class used by Angular to track radio buttons. For internal use only.  */ @Injectable({providedIn: RadioControlRegistryModule}) export class RadioControlRegistry {   private _accessors: any[] = [];    /**    * @description    * Adds a control to the internal registry. For internal use only.    */   add(control: NgControl, accessor: RadioControlValueAccessor) {     this._accessors.push([control, accessor]);   }    /**    * @description    * Removes a control from the internal registry. For internal use only.    */   remove(accessor: RadioControlValueAccessor) {     for (let i = this._accessors.length - 1; i >= 0; --i) {       if (this._accessors[i][1] === accessor) {         this._accessors.splice(i, 1);         return;       }     }   }    /**    * @description    * Selects a radio button. For internal use only.    */   select(accessor: RadioControlValueAccessor) {     this._accessors.forEach((c) => {       if (this._isSameGroup(c, accessor) && c[1] !== accessor) {         c[1].fireUncheck(accessor.value);       }     });   }    private _isSameGroup(       controlPair: [NgControl, RadioControlValueAccessor],       accessor: RadioControlValueAccessor): boolean {     if (!controlPair[0].control) return false;     return controlPair[0]._parent === accessor._control._parent &&         controlPair[1].name === accessor.name;   } }  /**  * @description  * The `ControlValueAccessor` for writing radio control values and listening to radio control  * changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and  * `NgModel` directives.  *  * @usageNotes  *  * ### Using radio buttons with reactive form directives  *  * The follow example shows how to use radio buttons in a reactive form. When using radio buttons in  * a reactive form, radio buttons in the same group should have the same `formControlName`.  * Providing a `name` attribute is optional.  *  * {@example forms/ts/reactiveRadioButtons/reactive_radio_button_example.ts region='Reactive'}  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]',   host: {'(change)': 'onChange()', '(blur)': 'onTouched()'},   providers: [RADIO_VALUE_ACCESSOR] }) export class RadioControlValueAccessor extends BuiltInControlValueAccessor implements     ControlValueAccessor, OnDestroy, OnInit {   /** @internal */   // TODO(issue/24571): remove '!'.   _state!: boolean;   /** @internal */   // TODO(issue/24571): remove '!'.   _control!: NgControl;   /** @internal */   // TODO(issue/24571): remove '!'.   _fn!: Function;    private setDisabledStateFired = false;    /**    * The registered callback function called when a change event occurs on the input element.    * Note: we declare `onChange` here (also used as host listener) as a function with no arguments    * to override the `onChange` function (which expects 1 argument) in the parent    * `BaseControlValueAccessor` class.    * @nodoc    */   override onChange = () => {};    /**    * @description    * Tracks the name of the radio input element.    */   // TODO(issue/24571): remove '!'.   @Input() name!: string;    /**    * @description    * Tracks the name of the `FormControl` bound to the directive. The name corresponds    * to a key in the parent `FormGroup` or `FormArray`.    */   // TODO(issue/24571): remove '!'.   @Input() formControlName!: string;    /**    * @description    * Tracks the value of the radio input element    */   @Input() value: any;    private callSetDisabledState =       inject(CALL_SET_DISABLED_STATE, {optional: true}) ?? setDisabledStateDefault;    constructor(       renderer: Renderer2, elementRef: ElementRef, private _registry: RadioControlRegistry,       private _injector: Injector) {     super(renderer, elementRef);   }    /** @nodoc */   ngOnInit(): void {     this._control = this._injector.get(NgControl);     this._checkName();     this._registry.add(this._control, this);   }    /** @nodoc */   ngOnDestroy(): void {     this._registry.remove(this);   }    /**    * Sets the \"checked\" property value on the radio input element.    * @nodoc    */   writeValue(value: any): void {     this._state = value === this.value;     this.setProperty('checked', this._state);   }    /**    * Registers a function called when the control value changes.    * @nodoc    */   override registerOnChange(fn: (_: any) => {}): void {     this._fn = fn;     this.onChange = () => {       fn(this.value);       this._registry.select(this);     };   }    /** @nodoc */   override setDisabledState(isDisabled: boolean): void {     /**      * `setDisabledState` is supposed to be called whenever the disabled state of a control changes,      * including upon control creation. However, a longstanding bug caused the method to not fire      * when an *enabled* control was attached. This bug was fixed in v15 in #47576.      *      * This had a side effect: previously, it was possible to instantiate a reactive form control      * with `[attr.disabled]=true`, even though the the corresponding control was enabled in the      * model. This resulted in a mismatch between the model and the DOM. Now, because      * `setDisabledState` is always called, the value in the DOM will be immediately overwritten      * with the \"correct\" enabled value.      *      * However, the fix also created an exceptional case: radio buttons. Because Reactive Forms      * models the entire group of radio buttons as a single `FormControl`, there is no way to      * control the disabled state for individual radios, so they can no longer be configured as      * disabled. Thus, we keep the old behavior for radio buttons, so that `[attr.disabled]`      * continues to work. Specifically, we drop the first call to `setDisabledState` if `disabled`      * is `false`, and we are not in legacy mode.      */     if (this.setDisabledStateFired || isDisabled ||         this.callSetDisabledState === 'whenDisabledForLegacyCode') {       this.setProperty('disabled', isDisabled);     }     this.setDisabledStateFired = true;   }    /**    * Sets the \"value\" on the radio input element and unchecks it.    *    * @param value    */   fireUncheck(value: any): void {     this.writeValue(value);   }    private _checkName(): void {     if (this.name && this.formControlName && this.name !== this.formControlName &&         (typeof ngDevMode === 'undefined' || ngDevMode)) {       throwNameError();     }     if (!this.name && this.formControlName) this.name = this.formControlName;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, forwardRef, Provider} from '@angular/core';  import {BuiltInControlValueAccessor, ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor';  const RANGE_VALUE_ACCESSOR: Provider = {   provide: NG_VALUE_ACCESSOR,   useExisting: forwardRef(() => RangeValueAccessor),   multi: true };  /**  * @description  * The `ControlValueAccessor` for writing a range value and listening to range input changes.  * The value accessor is used by the `FormControlDirective`, `FormControlName`, and  `NgModel`  * directives.  *  * @usageNotes  *  * ### Using a range input with a reactive form  *  * The following example shows how to use a range input with a reactive form.  *  * ```ts  * const ageControl = new FormControl();  * ```  *  * ```  * <input type=\"range\" [formControl]=\"ageControl\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]',   host: {     '(change)': 'onChange($event.target.value)',     '(input)': 'onChange($event.target.value)',     '(blur)': 'onTouched()'   },   providers: [RANGE_VALUE_ACCESSOR] }) export class RangeValueAccessor extends BuiltInControlValueAccessor implements     ControlValueAccessor {   /**    * Sets the \"value\" property on the input element.    * @nodoc    */   writeValue(value: any): void {     this.setProperty('value', parseFloat(value));   }    /**    * Registers a function called when the control value changes.    * @nodoc    */   override registerOnChange(fn: (_: number|null) => void): void {     this.onChange = (value) => {       fn(value == '' ? null : parseFloat(value));     };   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, EventEmitter, forwardRef, Inject, InjectionToken, Input, OnChanges, OnDestroy, Optional, Output, Provider, Self, SimpleChanges} from '@angular/core';  import {FormControl} from '../../model/form_control'; import {NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../../validators'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '../control_value_accessor'; import {NgControl} from '../ng_control'; import {disabledAttrWarning} from '../reactive_errors'; import {_ngModelWarning, CALL_SET_DISABLED_STATE, cleanUpControl, isPropertyUpdated, selectValueAccessor, SetDisabledStateOption, setUpControl} from '../shared'; import {AsyncValidator, AsyncValidatorFn, Validator, ValidatorFn} from '../validators';   /**  * Token to provide to turn off the ngModel warning on formControl and formControlName.  */ export const NG_MODEL_WITH_FORM_CONTROL_WARNING =     new InjectionToken('NgModelWithFormControlWarning');  const formControlBinding: Provider = {   provide: NgControl,   useExisting: forwardRef(() => FormControlDirective) };  /**  * @description  * Synchronizes a standalone `FormControl` instance to a form control element.  *  * Note that support for using the `ngModel` input property and `ngModelChange` event with reactive  * form directives was deprecated in Angular v6 and is scheduled for removal in  * a future version of Angular.  * For details, see [Deprecated features](guide/deprecations#ngmodel-with-reactive-forms).  *  * @see [Reactive Forms Guide](guide/reactive-forms)  * @see `FormControl`  * @see `AbstractControl`  *  * @usageNotes  *  * The following example shows how to register a standalone control and set its value.  *  * {@example forms/ts/simpleFormControl/simple_form_control_example.ts region='Component'}  *  * @ngModule ReactiveFormsModule  * @publicApi  */ @Directive({selector: '[formControl]', providers: [formControlBinding], exportAs: 'ngForm'}) export class FormControlDirective extends NgControl implements OnChanges, OnDestroy {   /**    * Internal reference to the view model value.    * @nodoc    */   viewModel: any;    /**    * @description    * Tracks the `FormControl` instance bound to the directive.    */   // TODO(issue/24571): remove '!'.   @Input('formControl') form!: FormControl;    /**    * @description    * Triggers a warning in dev mode that this input should not be used with reactive forms.    */   @Input('disabled')   set isDisabled(isDisabled: boolean) {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       console.warn(disabledAttrWarning);     }   }    // TODO(kara): remove next 4 properties once deprecation period is over    /** @deprecated as of v6 */   @Input('ngModel') model: any;    /** @deprecated as of v6 */   @Output('ngModelChange') update = new EventEmitter();    /**    * @description    * Static property used to track whether any ngModel warnings have been sent across    * all instances of FormControlDirective. Used to support warning config of \"once\".    *    * @internal    */   static _ngModelWarningSentOnce = false;    /**    * @description    * Instance property used to track whether an ngModel warning has been sent out for this    * particular `FormControlDirective` instance. Used to support warning config of \"always\".    *    * @internal    */   _ngModelWarningSent = false;    constructor(       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[],       @Optional() @Self() @Inject(NG_VALUE_ACCESSOR) valueAccessors: ControlValueAccessor[],       @Optional() @Inject(NG_MODEL_WITH_FORM_CONTROL_WARNING) private _ngModelWarningConfig: string|       null,       @Optional() @Inject(CALL_SET_DISABLED_STATE) private callSetDisabledState?:           SetDisabledStateOption) {     super();     this._setValidators(validators);     this._setAsyncValidators(asyncValidators);     this.valueAccessor = selectValueAccessor(this, valueAccessors);   }    /** @nodoc */   ngOnChanges(changes: SimpleChanges): void {     if (this._isControlChanged(changes)) {       const previousForm = changes['form'].previousValue;       if (previousForm) {         cleanUpControl(previousForm, this, /* validateControlPresenceOnChange */ false);       }       setUpControl(this.form, this, this.callSetDisabledState);       this.form.updateValueAndValidity({emitEvent: false});     }     if (isPropertyUpdated(changes, this.viewModel)) {       if (typeof ngDevMode === 'undefined' || ngDevMode) {         _ngModelWarning('formControl', FormControlDirective, this, this._ngModelWarningConfig);       }       this.form.setValue(this.model);       this.viewModel = this.model;     }   }    /** @nodoc */   ngOnDestroy() {     if (this.form) {       cleanUpControl(this.form, this, /* validateControlPresenceOnChange */ false);     }   }    /**    * @description    * Returns an array that represents the path from the top-level form to this control.    * Each index is the string name of the control on that level.    */   override get path(): string[] {     return [];   }    /**    * @description    * The `FormControl` bound to this directive.    */   override get control(): FormControl {     return this.form;   }    /**    * @description    * Sets the new value for the view model and emits an `ngModelChange` event.    *    * @param newValue The new value for the view model.    */   override viewToModelUpdate(newValue: any): void {     this.viewModel = newValue;     this.update.emit(newValue);   }    private _isControlChanged(changes: {[key: string]: any}): boolean {     return changes.hasOwnProperty('form');   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, EventEmitter, forwardRef, Inject, Input, OnChanges, OnDestroy, Optional, Output, Provider, Self, SimpleChanges} from '@angular/core';  import {FormArray} from '../../model/form_array'; import {FormControl, isFormControl} from '../../model/form_control'; import {FormGroup} from '../../model/form_group'; import {NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../../validators'; import {ControlContainer} from '../control_container'; import {Form} from '../form_interface'; import {missingFormException} from '../reactive_errors'; import {CALL_SET_DISABLED_STATE, cleanUpControl, cleanUpFormContainer, cleanUpValidators, removeListItem, SetDisabledStateOption, setUpControl, setUpFormContainer, setUpValidators, syncPendingControls} from '../shared'; import {AsyncValidator, AsyncValidatorFn, Validator, ValidatorFn} from '../validators';  import {FormControlName} from './form_control_name'; import {FormArrayName, FormGroupName} from './form_group_name';  const formDirectiveProvider: Provider = {   provide: ControlContainer,   useExisting: forwardRef(() => FormGroupDirective) };  /**  * @description  *  * Binds an existing `FormGroup` or `FormRecord` to a DOM element.  *  * This directive accepts an existing `FormGroup` instance. It will then use this  * `FormGroup` instance to match any child `FormControl`, `FormGroup`/`FormRecord`,  * and `FormArray` instances to child `FormControlName`, `FormGroupName`,  * and `FormArrayName` directives.  *  * @see [Reactive Forms Guide](guide/reactive-forms)  * @see `AbstractControl`  *  * @usageNotes  * ### Register Form Group  *  * The following example registers a `FormGroup` with first name and last name controls,  * and listens for the *ngSubmit* event when the button is clicked.  *  * {@example forms/ts/simpleFormGroup/simple_form_group_example.ts region='Component'}  *  * @ngModule ReactiveFormsModule  * @publicApi  */ @Directive({   selector: '[formGroup]',   providers: [formDirectiveProvider],   host: {'(submit)': 'onSubmit($event)', '(reset)': 'onReset()'},   exportAs: 'ngForm' }) export class FormGroupDirective extends ControlContainer implements Form, OnChanges, OnDestroy {   /**    * @description    * Reports whether the form submission has been triggered.    */   public readonly submitted: boolean = false;    /**    * Reference to an old form group input value, which is needed to cleanup old instance in case it    * was replaced with a new one.    */   private _oldForm: FormGroup|undefined;    /**    * Callback that should be invoked when controls in FormGroup or FormArray collection change    * (added or removed). This callback triggers corresponding DOM updates.    */   private readonly _onCollectionChange = () => this._updateDomValue();    /**    * @description    * Tracks the list of added `FormControlName` instances    */   directives: FormControlName[] = [];    /**    * @description    * Tracks the `FormGroup` bound to this directive.    */   @Input('formGroup') form: FormGroup = null!;    /**    * @description    * Emits an event when the form submission has been triggered.    */   @Output() ngSubmit = new EventEmitter();    constructor(       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[],       @Optional() @Inject(CALL_SET_DISABLED_STATE) private callSetDisabledState?:           SetDisabledStateOption) {     super();     this._setValidators(validators);     this._setAsyncValidators(asyncValidators);   }    /** @nodoc */   ngOnChanges(changes: SimpleChanges): void {     this._checkFormPresent();     if (changes.hasOwnProperty('form')) {       this._updateValidators();       this._updateDomValue();       this._updateRegistrations();       this._oldForm = this.form;     }   }    /** @nodoc */   ngOnDestroy() {     if (this.form) {       cleanUpValidators(this.form, this);        // Currently the `onCollectionChange` callback is rewritten each time the       // `_registerOnCollectionChange` function is invoked. The implication is that cleanup should       // happen *only* when the `onCollectionChange` callback was set by this directive instance.       // Otherwise it might cause overriding a callback of some other directive instances. We should       // consider updating this logic later to make it similar to how `onChange` callbacks are       // handled, see https://github.com/angular/angular/issues/39732 for additional info.       if (this.form._onCollectionChange === this._onCollectionChange) {         this.form._registerOnCollectionChange(() => {});       }     }   }    /**    * @description    * Returns this directive's instance.    */   override get formDirective(): Form {     return this;   }    /**    * @description    * Returns the `FormGroup` bound to this directive.    */   override get control(): FormGroup {     return this.form;   }    /**    * @description    * Returns an array representing the path to this group. Because this directive    * always lives at the top level of a form, it always an empty array.    */   override get path(): string[] {     return [];   }    /**    * @description    * Method that sets up the control directive in this group, re-calculates its value    * and validity, and adds the instance to the internal list of directives.    *    * @param dir The `FormControlName` directive instance.    */   addControl(dir: FormControlName): FormControl {     const ctrl: any = this.form.get(dir.path);     setUpControl(ctrl, dir, this.callSetDisabledState);     ctrl.updateValueAndValidity({emitEvent: false});     this.directives.push(dir);     return ctrl;   }    /**    * @description    * Retrieves the `FormControl` instance from the provided `FormControlName` directive    *    * @param dir The `FormControlName` directive instance.    */   getControl(dir: FormControlName): FormControl {     return <FormControl>this.form.get(dir.path);   }    /**    * @description    * Removes the `FormControlName` instance from the internal list of directives    *    * @param dir The `FormControlName` directive instance.    */   removeControl(dir: FormControlName): void {     cleanUpControl(dir.control || null, dir, /* validateControlPresenceOnChange */ false);     removeListItem(this.directives, dir);   }    /**    * Adds a new `FormGroupName` directive instance to the form.    *    * @param dir The `FormGroupName` directive instance.    */   addFormGroup(dir: FormGroupName): void {     this._setUpFormContainer(dir);   }    /**    * Performs the necessary cleanup when a `FormGroupName` directive instance is removed from the    * view.    *    * @param dir The `FormGroupName` directive instance.    */   removeFormGroup(dir: FormGroupName): void {     this._cleanUpFormContainer(dir);   }    /**    * @description    * Retrieves the `FormGroup` for a provided `FormGroupName` directive instance    *    * @param dir The `FormGroupName` directive instance.    */   getFormGroup(dir: FormGroupName): FormGroup {     return <FormGroup>this.form.get(dir.path);   }    /**    * Performs the necessary setup when a `FormArrayName` directive instance is added to the view.    *    * @param dir The `FormArrayName` directive instance.    */   addFormArray(dir: FormArrayName): void {     this._setUpFormContainer(dir);   }    /**    * Performs the necessary cleanup when a `FormArrayName` directive instance is removed from the    * view.    *    * @param dir The `FormArrayName` directive instance.    */   removeFormArray(dir: FormArrayName): void {     this._cleanUpFormContainer(dir);   }    /**    * @description    * Retrieves the `FormArray` for a provided `FormArrayName` directive instance.    *    * @param dir The `FormArrayName` directive instance.    */   getFormArray(dir: FormArrayName): FormArray {     return <FormArray>this.form.get(dir.path);   }    /**    * Sets the new value for the provided `FormControlName` directive.    *    * @param dir The `FormControlName` directive instance.    * @param value The new value for the directive's control.    */   updateModel(dir: FormControlName, value: any): void {     const ctrl = <FormControl>this.form.get(dir.path);     ctrl.setValue(value);   }    /**    * @description    * Method called with the \"submit\" event is triggered on the form.    * Triggers the `ngSubmit` emitter to emit the \"submit\" event as its payload.    *    * @param $event The \"submit\" event object    */   onSubmit($event: Event): boolean {     (this as {submitted: boolean}).submitted = true;     syncPendingControls(this.form, this.directives);     this.ngSubmit.emit($event);     // Forms with `method=\"dialog\"` have some special behavior that won't reload the page and that     // shouldn't be prevented. Note that we need to null check the `event` and the `target`, because     // some internal apps call this method directly with the wrong arguments.     return ($event?.target as HTMLFormElement | null)?.method === 'dialog';   }    /**    * @description    * Method called when the \"reset\" event is triggered on the form.    */   onReset(): void {     this.resetForm();   }    /**    * @description    * Resets the form to an initial value and resets its submitted status.    *    * @param value The new value for the form.    */   resetForm(value: any = undefined): void {     this.form.reset(value);     (this as {submitted: boolean}).submitted = false;   }    /** @internal */   _updateDomValue() {     this.directives.forEach(dir => {       const oldCtrl = dir.control;       const newCtrl = this.form.get(dir.path);       if (oldCtrl !== newCtrl) {         // Note: the value of the `dir.control` may not be defined, for example when it's a first         // `FormControl` that is added to a `FormGroup` instance (via `addControl` call).         cleanUpControl(oldCtrl || null, dir);          // Check whether new control at the same location inside the corresponding `FormGroup` is an         // instance of `FormControl` and perform control setup only if that's the case.         // Note: we don't need to clear the list of directives (`this.directives`) here, it would be         // taken care of in the `removeControl` method invoked when corresponding `formControlName`         // directive instance is being removed (invoked from `FormControlName.ngOnDestroy`).         if (isFormControl(newCtrl)) {           setUpControl(newCtrl, dir, this.callSetDisabledState);           (dir as {control: FormControl}).control = newCtrl;         }       }     });      this.form._updateTreeValidity({emitEvent: false});   }    private _setUpFormContainer(dir: FormArrayName|FormGroupName): void {     const ctrl: any = this.form.get(dir.path);     setUpFormContainer(ctrl, dir);     // NOTE: this operation looks unnecessary in case no new validators were added in     // `setUpFormContainer` call. Consider updating this code to match the logic in     // `_cleanUpFormContainer` function.     ctrl.updateValueAndValidity({emitEvent: false});   }    private _cleanUpFormContainer(dir: FormArrayName|FormGroupName): void {     if (this.form) {       const ctrl: any = this.form.get(dir.path);       if (ctrl) {         const isControlUpdated = cleanUpFormContainer(ctrl, dir);         if (isControlUpdated) {           // Run validity check only in case a control was updated (i.e. view validators were           // removed) as removing view validators might cause validity to change.           ctrl.updateValueAndValidity({emitEvent: false});         }       }     }   }    private _updateRegistrations() {     this.form._registerOnCollectionChange(this._onCollectionChange);     if (this._oldForm) {       this._oldForm._registerOnCollectionChange(() => {});     }   }    private _updateValidators() {     setUpValidators(this.form, this);     if (this._oldForm) {       cleanUpValidators(this._oldForm, this);     }   }    private _checkFormPresent() {     if (!this.form && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw missingFormException();     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, forwardRef, Host, Inject, Input, OnDestroy, OnInit, Optional, Provider, Self, SkipSelf} from '@angular/core';  import {FormArray} from '../../model/form_array'; import {NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../../validators'; import {AbstractFormGroupDirective} from '../abstract_form_group_directive'; import {ControlContainer} from '../control_container'; import {arrayParentException, groupParentException} from '../reactive_errors'; import {controlPath} from '../shared'; import {AsyncValidator, AsyncValidatorFn, Validator, ValidatorFn} from '../validators';  import {FormGroupDirective} from './form_group_directive';  const formGroupNameProvider: Provider = {   provide: ControlContainer,   useExisting: forwardRef(() => FormGroupName) };  /**  * @description  *  * Syncs a nested `FormGroup` or `FormRecord` to a DOM element.  *  * This directive can only be used with a parent `FormGroupDirective`.  *  * It accepts the string name of the nested `FormGroup` or `FormRecord` to link, and  * looks for a `FormGroup` or `FormRecord` registered with that name in the parent  * `FormGroup` instance you passed into `FormGroupDirective`.  *  * Use nested form groups to validate a sub-group of a  * form separately from the rest or to group the values of certain  * controls into their own nested object.  *  * @see [Reactive Forms Guide](guide/reactive-forms)  *  * @usageNotes  *  * ### Access the group by name  *  * The following example uses the `AbstractControl.get` method to access the  * associated `FormGroup`  *  * ```ts  *   this.form.get('name');  * ```  *  * ### Access individual controls in the group  *  * The following example uses the `AbstractControl.get` method to access  * individual controls within the group using dot syntax.  *  * ```ts  *   this.form.get('name.first');  * ```  *  * ### Register a nested `FormGroup`.  *  * The following example registers a nested *name* `FormGroup` within an existing `FormGroup`,  * and provides methods to retrieve the nested `FormGroup` and individual controls.  *  * {@example forms/ts/nestedFormGroup/nested_form_group_example.ts region='Component'}  *  * @ngModule ReactiveFormsModule  * @publicApi  */ @Directive({selector: '[formGroupName]', providers: [formGroupNameProvider]}) export class FormGroupName extends AbstractFormGroupDirective implements OnInit, OnDestroy {   /**    * @description    * Tracks the name of the `FormGroup` bound to the directive. The name corresponds    * to a key in the parent `FormGroup` or `FormArray`.    * Accepts a name as a string or a number.    * The name in the form of a string is useful for individual forms,    * while the numerical form allows for form groups to be bound    * to indices when iterating over groups in a `FormArray`.    */   // TODO(issue/24571): remove '!'.   @Input('formGroupName') override name!: string|number|null;    constructor(       @Optional() @Host() @SkipSelf() parent: ControlContainer,       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[]) {     super();     this._parent = parent;     this._setValidators(validators);     this._setAsyncValidators(asyncValidators);   }    /** @internal */   override _checkParentType(): void {     if (_hasInvalidParent(this._parent) && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw groupParentException();     }   } }  export const formArrayNameProvider: any = {   provide: ControlContainer,   useExisting: forwardRef(() => FormArrayName) };  /**  * @description  *  * Syncs a nested `FormArray` to a DOM element.  *  * This directive is designed to be used with a parent `FormGroupDirective` (selector:  * `[formGroup]`).  *  * It accepts the string name of the nested `FormArray` you want to link, and  * will look for a `FormArray` registered with that name in the parent  * `FormGroup` instance you passed into `FormGroupDirective`.  *  * @see [Reactive Forms Guide](guide/reactive-forms)  * @see `AbstractControl`  *  * @usageNotes  *  * ### Example  *  * {@example forms/ts/nestedFormArray/nested_form_array_example.ts region='Component'}  *  * @ngModule ReactiveFormsModule  * @publicApi  */ @Directive({selector: '[formArrayName]', providers: [formArrayNameProvider]}) export class FormArrayName extends ControlContainer implements OnInit, OnDestroy {   /** @internal */   _parent: ControlContainer;    /**    * @description    * Tracks the name of the `FormArray` bound to the directive. The name corresponds    * to a key in the parent `FormGroup` or `FormArray`.    * Accepts a name as a string or a number.    * The name in the form of a string is useful for individual forms,    * while the numerical form allows for form arrays to be bound    * to indices when iterating over arrays in a `FormArray`.    */   // TODO(issue/24571): remove '!'.   @Input('formArrayName') override name!: string|number|null;    constructor(       @Optional() @Host() @SkipSelf() parent: ControlContainer,       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[]) {     super();     this._parent = parent;     this._setValidators(validators);     this._setAsyncValidators(asyncValidators);   }    /**    * A lifecycle method called when the directive's inputs are initialized. For internal use only.    * @throws If the directive does not have a valid parent.    * @nodoc    */   ngOnInit(): void {     this._checkParentType();     this.formDirective!.addFormArray(this);   }    /**    * A lifecycle method called before the directive's instance is destroyed. For internal use only.    * @nodoc    */   ngOnDestroy(): void {     if (this.formDirective) {       this.formDirective.removeFormArray(this);     }   }    /**    * @description    * The `FormArray` bound to this directive.    */   override get control(): FormArray {     return this.formDirective!.getFormArray(this);   }    /**    * @description    * The top-level directive for this group if present, otherwise null.    */   override get formDirective(): FormGroupDirective|null {     return this._parent ? <FormGroupDirective>this._parent.formDirective : null;   }    /**    * @description    * Returns an array that represents the path from the top-level form to this control.    * Each index is the string name of the control on that level.    */   override get path(): string[] {     return controlPath(this.name == null ? this.name : this.name.toString(), this._parent);   }    private _checkParentType(): void {     if (_hasInvalidParent(this._parent) && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw arrayParentException();     }   } }  function _hasInvalidParent(parent: ControlContainer): boolean {   return !(parent instanceof FormGroupName) && !(parent instanceof FormGroupDirective) &&       !(parent instanceof FormArrayName); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, EventEmitter, forwardRef, Host, Inject, Input, OnChanges, OnDestroy, Optional, Output, Provider, Self, SimpleChanges, SkipSelf} from '@angular/core';  import {FormControl} from '../../model/form_control'; import {NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../../validators'; import {AbstractFormGroupDirective} from '../abstract_form_group_directive'; import {ControlContainer} from '../control_container'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '../control_value_accessor'; import {NgControl} from '../ng_control'; import {controlParentException, disabledAttrWarning, ngModelGroupException} from '../reactive_errors'; import {_ngModelWarning, controlPath, isPropertyUpdated, selectValueAccessor} from '../shared'; import {AsyncValidator, AsyncValidatorFn, Validator, ValidatorFn} from '../validators';  import {NG_MODEL_WITH_FORM_CONTROL_WARNING} from './form_control_directive'; import {FormGroupDirective} from './form_group_directive'; import {FormArrayName, FormGroupName} from './form_group_name';  const controlNameBinding: Provider = {   provide: NgControl,   useExisting: forwardRef(() => FormControlName) };  /**  * @description  * Syncs a `FormControl` in an existing `FormGroup` to a form control  * element by name.  *  * @see [Reactive Forms Guide](guide/reactive-forms)  * @see `FormControl`  * @see `AbstractControl`  *  * @usageNotes  *  * ### Register `FormControl` within a group  *  * The following example shows how to register multiple form controls within a form group  * and set their value.  *  * {@example forms/ts/simpleFormGroup/simple_form_group_example.ts region='Component'}  *  * To see `formControlName` examples with different form control types, see:  *  * * Radio buttons: `RadioControlValueAccessor`  * * Selects: `SelectControlValueAccessor`  *  * ### Use with ngModel is deprecated  *  * Support for using the `ngModel` input property and `ngModelChange` event with reactive  * form directives has been deprecated in Angular v6 and is scheduled for removal in  * a future version of Angular.  *  * For details, see [Deprecated features](guide/deprecations#ngmodel-with-reactive-forms).  *  * @ngModule ReactiveFormsModule  * @publicApi  */ @Directive({selector: '[formControlName]', providers: [controlNameBinding]}) export class FormControlName extends NgControl implements OnChanges, OnDestroy {   private _added = false;   /**    * Internal reference to the view model value.    * @internal    */   viewModel: any;    /**    * @description    * Tracks the `FormControl` instance bound to the directive.    */   // TODO(issue/24571): remove '!'.   override readonly control!: FormControl;    /**    * @description    * Tracks the name of the `FormControl` bound to the directive. The name corresponds    * to a key in the parent `FormGroup` or `FormArray`.    * Accepts a name as a string or a number.    * The name in the form of a string is useful for individual forms,    * while the numerical form allows for form controls to be bound    * to indices when iterating over controls in a `FormArray`.    */   // TODO(issue/24571): remove '!'.   @Input('formControlName') override name!: string|number|null;    /**    * @description    * Triggers a warning in dev mode that this input should not be used with reactive forms.    */   @Input('disabled')   set isDisabled(isDisabled: boolean) {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       console.warn(disabledAttrWarning);     }   }    // TODO(kara): remove next 4 properties once deprecation period is over    /** @deprecated as of v6 */   @Input('ngModel') model: any;    /** @deprecated as of v6 */   @Output('ngModelChange') update = new EventEmitter();    /**    * @description    * Static property used to track whether any ngModel warnings have been sent across    * all instances of FormControlName. Used to support warning config of \"once\".    *    * @internal    */   static _ngModelWarningSentOnce = false;    /**    * @description    * Instance property used to track whether an ngModel warning has been sent out for this    * particular FormControlName instance. Used to support warning config of \"always\".    *    * @internal    */   _ngModelWarningSent = false;    constructor(       @Optional() @Host() @SkipSelf() parent: ControlContainer,       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[],       @Optional() @Self() @Inject(NG_VALUE_ACCESSOR) valueAccessors: ControlValueAccessor[],       @Optional() @Inject(NG_MODEL_WITH_FORM_CONTROL_WARNING) private _ngModelWarningConfig: string|       null) {     super();     this._parent = parent;     this._setValidators(validators);     this._setAsyncValidators(asyncValidators);     this.valueAccessor = selectValueAccessor(this, valueAccessors);   }    /** @nodoc */   ngOnChanges(changes: SimpleChanges) {     if (!this._added) this._setUpControl();     if (isPropertyUpdated(changes, this.viewModel)) {       if (typeof ngDevMode === 'undefined' || ngDevMode) {         _ngModelWarning('formControlName', FormControlName, this, this._ngModelWarningConfig);       }       this.viewModel = this.model;       this.formDirective.updateModel(this, this.model);     }   }    /** @nodoc */   ngOnDestroy(): void {     if (this.formDirective) {       this.formDirective.removeControl(this);     }   }    /**    * @description    * Sets the new value for the view model and emits an `ngModelChange` event.    *    * @param newValue The new value for the view model.    */   override viewToModelUpdate(newValue: any): void {     this.viewModel = newValue;     this.update.emit(newValue);   }    /**    * @description    * Returns an array that represents the path from the top-level form to this control.    * Each index is the string name of the control on that level.    */   override get path(): string[] {     return controlPath(this.name == null ? this.name : this.name.toString(), this._parent!);   }    /**    * @description    * The top-level directive for this group if present, otherwise null.    */   get formDirective(): any {     return this._parent ? this._parent.formDirective : null;   }    private _checkParentType(): void {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       if (!(this._parent instanceof FormGroupName) &&           this._parent instanceof AbstractFormGroupDirective) {         throw ngModelGroupException();       } else if (           !(this._parent instanceof FormGroupName) &&           !(this._parent instanceof FormGroupDirective) &&           !(this._parent instanceof FormArrayName)) {         throw controlParentException();       }     }   }    private _setUpControl() {     this._checkParentType();     (this as {control: FormControl}).control = this.formDirective.addControl(this);     this._added = true;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef, forwardRef, Host, Input, OnDestroy, Optional, Provider, Renderer2, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  import {BuiltInControlValueAccessor, ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor';  const SELECT_VALUE_ACCESSOR: Provider = {   provide: NG_VALUE_ACCESSOR,   useExisting: forwardRef(() => SelectControlValueAccessor),   multi: true };  function _buildValueString(id: string|null, value: any): string {   if (id == null) return `${value}`;   if (value && typeof value === 'object') value = 'Object';   return `${id}: ${value}`.slice(0, 50); }  function _extractId(valueString: string): string {   return valueString.split(':')[0]; }  /**  * @description  * The `ControlValueAccessor` for writing select control values and listening to select control  * changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and  * `NgModel` directives.  *  * @usageNotes  *  * ### Using select controls in a reactive form  *  * The following examples show how to use a select control in a reactive form.  *  * {@example forms/ts/reactiveSelectControl/reactive_select_control_example.ts region='Component'}  *  * ### Using select controls in a template-driven form  *  * To use a select in a template-driven form, simply add an `ngModel` and a `name`  * attribute to the main `<select>` tag.  *  * {@example forms/ts/selectControl/select_control_example.ts region='Component'}  *  * ### Customizing option selection  *  * Angular uses object identity to select option. It's possible for the identities of items  * to change while the data does not. This can happen, for example, if the items are produced  * from an RPC to the server, and that RPC is re-run. Even if the data hasn't changed, the  * second response will produce objects with different identities.  *  * To customize the default option comparison algorithm, `<select>` supports `compareWith` input.  * `compareWith` takes a **function** which has two arguments: `option1` and `option2`.  * If `compareWith` is given, Angular selects option by the return value of the function.  *  * ```ts  * const selectedCountriesControl = new FormControl();  * ```  *  * ```  * <select [compareWith]=\"compareFn\"  [formControl]=\"selectedCountriesControl\">  *     <option *ngFor=\"let country of countries\" [ngValue]=\"country\">  *         {{country.name}}  *     </option>  * </select>  *  * compareFn(c1: Country, c2: Country): boolean {  *     return c1 && c2 ? c1.id === c2.id : c1 === c2;  * }  * ```  *  * **Note:** We listen to the 'change' event because 'input' events aren't fired  * for selects in IE, see:  * https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event#browser_compatibility  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]',   host: {'(change)': 'onChange($event.target.value)', '(blur)': 'onTouched()'},   providers: [SELECT_VALUE_ACCESSOR] }) export class SelectControlValueAccessor extends BuiltInControlValueAccessor implements     ControlValueAccessor {   /** @nodoc */   value: any;    /** @internal */   _optionMap: Map<string, any> = new Map<string, any>();    /** @internal */   _idCounter: number = 0;    /**    * @description    * Tracks the option comparison algorithm for tracking identities when    * checking for changes.    */   @Input()   set compareWith(fn: (o1: any, o2: any) => boolean) {     if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw new RuntimeError(           RuntimeErrorCode.COMPAREWITH_NOT_A_FN,           `compareWith must be a function, but received ${JSON.stringify(fn)}`);     }     this._compareWith = fn;   }    private _compareWith: (o1: any, o2: any) => boolean = Object.is;    /**    * Sets the \"value\" property on the select element.    * @nodoc    */   writeValue(value: any): void {     this.value = value;     const id: string|null = this._getOptionId(value);     const valueString = _buildValueString(id, value);     this.setProperty('value', valueString);   }    /**    * Registers a function called when the control value changes.    * @nodoc    */   override registerOnChange(fn: (value: any) => any): void {     this.onChange = (valueString: string) => {       this.value = this._getOptionValue(valueString);       fn(this.value);     };   }    /** @internal */   _registerOption(): string {     return (this._idCounter++).toString();   }    /** @internal */   _getOptionId(value: any): string|null {     for (const id of Array.from(this._optionMap.keys())) {       if (this._compareWith(this._optionMap.get(id), value)) return id;     }     return null;   }    /** @internal */   _getOptionValue(valueString: string): any {     const id: string = _extractId(valueString);     return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;   } }  /**  * @description  * Marks `<option>` as dynamic, so Angular can be notified when options change.  *  * @see `SelectControlValueAccessor`  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({selector: 'option'}) export class NgSelectOption implements OnDestroy {   /**    * @description    * ID of the option element    */   // TODO(issue/24571): remove '!'.   id!: string;    constructor(       private _element: ElementRef, private _renderer: Renderer2,       @Optional() @Host() private _select: SelectControlValueAccessor) {     if (this._select) this.id = this._select._registerOption();   }    /**    * @description    * Tracks the value bound to the option element. Unlike the value binding,    * ngValue supports binding to objects.    */   @Input('ngValue')   set ngValue(value: any) {     if (this._select == null) return;     this._select._optionMap.set(this.id, value);     this._setElementValue(_buildValueString(this.id, value));     this._select.writeValue(this._select.value);   }    /**    * @description    * Tracks simple string values bound to the option element.    * For objects, use the `ngValue` input binding.    */   @Input('value')   set value(value: any) {     this._setElementValue(value);     if (this._select) this._select.writeValue(this._select.value);   }    /** @internal */   _setElementValue(value: string): void {     this._renderer.setProperty(this._element.nativeElement, 'value', value);   }    /** @nodoc */   ngOnDestroy(): void {     if (this._select) {       this._select._optionMap.delete(this.id);       this._select.writeValue(this._select.value);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef, forwardRef, Host, Input, OnDestroy, Optional, Provider, Renderer2, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  import {BuiltInControlValueAccessor, ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor';  const SELECT_MULTIPLE_VALUE_ACCESSOR: Provider = {   provide: NG_VALUE_ACCESSOR,   useExisting: forwardRef(() => SelectMultipleControlValueAccessor),   multi: true };  function _buildValueString(id: string, value: any): string {   if (id == null) return `${value}`;   if (typeof value === 'string') value = `'${value}'`;   if (value && typeof value === 'object') value = 'Object';   return `${id}: ${value}`.slice(0, 50); }  function _extractId(valueString: string): string {   return valueString.split(':')[0]; }  /** Mock interface for HTML Options */ interface HTMLOption {   value: string;   selected: boolean; }  /** Mock interface for HTMLCollection */ abstract class HTMLCollection {   // TODO(issue/24571): remove '!'.   length!: number;   abstract item(_: number): HTMLOption; }  /**  * @description  * The `ControlValueAccessor` for writing multi-select control values and listening to multi-select  * control changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and  * `NgModel` directives.  *  * @see `SelectControlValueAccessor`  *  * @usageNotes  *  * ### Using a multi-select control  *  * The follow example shows you how to use a multi-select control with a reactive form.  *  * ```ts  * const countryControl = new FormControl();  * ```  *  * ```  * <select multiple name=\"countries\" [formControl]=\"countryControl\">  *   <option *ngFor=\"let country of countries\" [ngValue]=\"country\">  *     {{ country.name }}  *   </option>  * </select>  * ```  *  * ### Customizing option selection  *  * To customize the default option comparison algorithm, `<select>` supports `compareWith` input.  * See the `SelectControlValueAccessor` for usage.  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]',   host: {'(change)': 'onChange($event.target)', '(blur)': 'onTouched()'},   providers: [SELECT_MULTIPLE_VALUE_ACCESSOR] }) export class SelectMultipleControlValueAccessor extends BuiltInControlValueAccessor implements     ControlValueAccessor {   /**    * The current value.    * @nodoc    */   value: any;    /** @internal */   _optionMap: Map<string, ɵNgSelectMultipleOption> = new Map<string, ɵNgSelectMultipleOption>();    /** @internal */   _idCounter: number = 0;    /**    * @description    * Tracks the option comparison algorithm for tracking identities when    * checking for changes.    */   @Input()   set compareWith(fn: (o1: any, o2: any) => boolean) {     if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw new RuntimeError(           RuntimeErrorCode.COMPAREWITH_NOT_A_FN,           `compareWith must be a function, but received ${JSON.stringify(fn)}`);     }     this._compareWith = fn;   }    private _compareWith: (o1: any, o2: any) => boolean = Object.is;    /**    * Sets the \"value\" property on one or of more of the select's options.    * @nodoc    */   writeValue(value: any): void {     this.value = value;     let optionSelectedStateSetter: (opt: ɵNgSelectMultipleOption, o: any) => void;     if (Array.isArray(value)) {       // convert values to ids       const ids = value.map((v) => this._getOptionId(v));       optionSelectedStateSetter = (opt, o) => {         opt._setSelected(ids.indexOf(o.toString()) > -1);       };     } else {       optionSelectedStateSetter = (opt, o) => {         opt._setSelected(false);       };     }     this._optionMap.forEach(optionSelectedStateSetter);   }    /**    * Registers a function called when the control value changes    * and writes an array of the selected options.    * @nodoc    */   override registerOnChange(fn: (value: any) => any): void {     this.onChange = (element: HTMLSelectElement) => {       const selected: Array<any> = [];       const selectedOptions = element.selectedOptions;       if (selectedOptions !== undefined) {         const options = selectedOptions;         for (let i = 0; i < options.length; i++) {           const opt = options[i];           const val = this._getOptionValue(opt.value);           selected.push(val);         }       }       // Degrade to use `options` when `selectedOptions` property is not available.       // Note: the `selectedOptions` is available in all supported browsers, but the Domino lib       // doesn't have it currently, see https://github.com/fgnass/domino/issues/177.       else {         const options = element.options;         for (let i = 0; i < options.length; i++) {           const opt = options[i];           if (opt.selected) {             const val = this._getOptionValue(opt.value);             selected.push(val);           }         }       }       this.value = selected;       fn(selected);     };   }    /** @internal */   _registerOption(value: ɵNgSelectMultipleOption): string {     const id: string = (this._idCounter++).toString();     this._optionMap.set(id, value);     return id;   }    /** @internal */   _getOptionId(value: any): string|null {     for (const id of Array.from(this._optionMap.keys())) {       if (this._compareWith(this._optionMap.get(id)!._value, value)) return id;     }     return null;   }    /** @internal */   _getOptionValue(valueString: string): any {     const id: string = _extractId(valueString);     return this._optionMap.has(id) ? this._optionMap.get(id)!._value : valueString;   } }  /**  * @description  * Marks `<option>` as dynamic, so Angular can be notified when options change.  *  * @see `SelectMultipleControlValueAccessor`  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({selector: 'option'}) export class ɵNgSelectMultipleOption implements OnDestroy {   // TODO(issue/24571): remove '!'.   id!: string;   /** @internal */   _value: any;    constructor(       private _element: ElementRef, private _renderer: Renderer2,       @Optional() @Host() private _select: SelectMultipleControlValueAccessor) {     if (this._select) {       this.id = this._select._registerOption(this);     }   }    /**    * @description    * Tracks the value bound to the option element. Unlike the value binding,    * ngValue supports binding to objects.    */   @Input('ngValue')   set ngValue(value: any) {     if (this._select == null) return;     this._value = value;     this._setElementValue(_buildValueString(this.id, value));     this._select.writeValue(this._select.value);   }    /**    * @description    * Tracks simple string values bound to the option element.    * For objects, use the `ngValue` input binding.    */   @Input('value')   set value(value: any) {     if (this._select) {       this._value = value;       this._setElementValue(_buildValueString(this.id, value));       this._select.writeValue(this._select.value);     } else {       this._setElementValue(value);     }   }    /** @internal */   _setElementValue(value: string): void {     this._renderer.setProperty(this._element.nativeElement, 'value', value);   }    /** @internal */   _setSelected(selected: boolean) {     this._renderer.setProperty(this._element.nativeElement, 'selected', selected);   }    /** @nodoc */   ngOnDestroy(): void {     if (this._select) {       this._select._optionMap.delete(this.id);       this._select.writeValue(this._select.value);     }   } }  export {ɵNgSelectMultipleOption as NgSelectMultipleOption}; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, forwardRef, Input, OnChanges, Provider, SimpleChanges, ɵcoerceToBoolean as coerceToBoolean} from '@angular/core'; import {Observable} from 'rxjs';  import {AbstractControl} from '../model/abstract_model'; import {emailValidator, maxLengthValidator, maxValidator, minLengthValidator, minValidator, NG_VALIDATORS, nullValidator, patternValidator, requiredTrueValidator, requiredValidator} from '../validators';  /**  * Method that updates string to integer if not already a number  *  * @param value The value to convert to integer.  * @returns value of parameter converted to number or integer.  */ function toInteger(value: string|number): number {   return typeof value === 'number' ? value : parseInt(value, 10); }  /**  * Method that ensures that provided value is a float (and converts it to float if needed).  *  * @param value The value to convert to float.  * @returns value of parameter converted to number or float.  */ function toFloat(value: string|number): number {   return typeof value === 'number' ? value : parseFloat(value); }  /**  * @description  * Defines the map of errors returned from failed validation checks.  *  * @publicApi  */ export type ValidationErrors = {   [key: string]: any };  /**  * @description  * An interface implemented by classes that perform synchronous validation.  *  * @usageNotes  *  * ### Provide a custom validator  *  * The following example implements the `Validator` interface to create a  * validator directive with a custom error key.  *  * ```typescript  * @Directive({  *   selector: '[customValidator]',  *   providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]  * })  * class CustomValidatorDirective implements Validator {  *   validate(control: AbstractControl): ValidationErrors|null {  *     return {'custom': true};  *   }  * }  * ```  *  * @publicApi  */ export interface Validator {   /**    * @description    * Method that performs synchronous validation against the provided control.    *    * @param control The control to validate against.    *    * @returns A map of validation errors if validation fails,    * otherwise null.    */   validate(control: AbstractControl): ValidationErrors|null;    /**    * @description    * Registers a callback function to call when the validator inputs change.    *    * @param fn The callback function    */   registerOnValidatorChange?(fn: () => void): void; }  /**  * A base class for Validator-based Directives. The class contains common logic shared across such  * Directives.  *  * For internal use only, this class is not intended for use outside of the Forms package.  */ @Directive() abstract class AbstractValidatorDirective implements Validator, OnChanges {   private _validator: ValidatorFn = nullValidator;   private _onChange!: () => void;    /**    * A flag that tracks whether this validator is enabled.    *    * Marking it `internal` (vs `protected`), so that this flag can be used in host bindings of    * directive classes that extend this base class.    * @internal    */   _enabled?: boolean;    /**    * Name of an input that matches directive selector attribute (e.g. `minlength` for    * `MinLengthDirective`). An input with a given name might contain configuration information (like    * `minlength='10'`) or a flag that indicates whether validator should be enabled (like    * `[required]='false'`).    *    * @internal    */   abstract inputName: string;    /**    * Creates an instance of a validator (specific to a directive that extends this base class).    *    * @internal    */   abstract createValidator(input: unknown): ValidatorFn;    /**    * Performs the necessary input normalization based on a specific logic of a Directive.    * For example, the function might be used to convert string-based representation of the    * `minlength` input to an integer value that can later be used in the `Validators.minLength`    * validator.    *    * @internal    */   abstract normalizeInput(input: unknown): unknown;    /** @nodoc */   ngOnChanges(changes: SimpleChanges): void {     if (this.inputName in changes) {       const input = this.normalizeInput(changes[this.inputName].currentValue);       this._enabled = this.enabled(input);       this._validator = this._enabled ? this.createValidator(input) : nullValidator;       if (this._onChange) {         this._onChange();       }     }   }    /** @nodoc */   validate(control: AbstractControl): ValidationErrors|null {     return this._validator(control);   }    /** @nodoc */   registerOnValidatorChange(fn: () => void): void {     this._onChange = fn;   }    /**    * @description    * Determines whether this validator should be active or not based on an input.    * Base class implementation checks whether an input is defined (if the value is different from    * `null` and `undefined`). Validator classes that extend this base class can override this    * function with the logic specific to a particular validator directive.    */   enabled(input: unknown): boolean {     return input != null /* both `null` and `undefined` */;   } }  /**  * @description  * Provider which adds `MaxValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const MAX_VALIDATOR: Provider = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => MaxValidator),   multi: true };  /**  * A directive which installs the {@link MaxValidator} for any `formControlName`,  * `formControl`, or control with `ngModel` that also has a `max` attribute.  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding a max validator  *  * The following example shows how to add a max validator to an input attached to an  * ngModel binding.  *  * ```html  * <input type=\"number\" ngModel max=\"4\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]',   providers: [MAX_VALIDATOR],   host: {'[attr.max]': '_enabled ? max : null'} }) export class MaxValidator extends AbstractValidatorDirective {   /**    * @description    * Tracks changes to the max bound to this directive.    */   @Input() max!: string|number|null;   /** @internal */   override inputName = 'max';   /** @internal */   override normalizeInput = (input: string|number): number => toFloat(input);   /** @internal */   override createValidator = (max: number): ValidatorFn => maxValidator(max); }  /**  * @description  * Provider which adds `MinValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const MIN_VALIDATOR: Provider = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => MinValidator),   multi: true };  /**  * A directive which installs the {@link MinValidator} for any `formControlName`,  * `formControl`, or control with `ngModel` that also has a `min` attribute.  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding a min validator  *  * The following example shows how to add a min validator to an input attached to an  * ngModel binding.  *  * ```html  * <input type=\"number\" ngModel min=\"4\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]',   providers: [MIN_VALIDATOR],   host: {'[attr.min]': '_enabled ? min : null'} }) export class MinValidator extends AbstractValidatorDirective {   /**    * @description    * Tracks changes to the min bound to this directive.    */   @Input() min!: string|number|null;   /** @internal */   override inputName = 'min';   /** @internal */   override normalizeInput = (input: string|number): number => toFloat(input);   /** @internal */   override createValidator = (min: number): ValidatorFn => minValidator(min); }  /**  * @description  * An interface implemented by classes that perform asynchronous validation.  *  * @usageNotes  *  * ### Provide a custom async validator directive  *  * The following example implements the `AsyncValidator` interface to create an  * async validator directive with a custom error key.  *  * ```typescript  * import { of } from 'rxjs';  *  * @Directive({  *   selector: '[customAsyncValidator]',  *   providers: [{provide: NG_ASYNC_VALIDATORS, useExisting: CustomAsyncValidatorDirective, multi:  * true}]  * })  * class CustomAsyncValidatorDirective implements AsyncValidator {  *   validate(control: AbstractControl): Observable<ValidationErrors|null> {  *     return of({'custom': true});  *   }  * }  * ```  *  * @publicApi  */ export interface AsyncValidator extends Validator {   /**    * @description    * Method that performs async validation against the provided control.    *    * @param control The control to validate against.    *    * @returns A promise or observable that resolves a map of validation errors    * if validation fails, otherwise null.    */   validate(control: AbstractControl):       Promise<ValidationErrors|null>|Observable<ValidationErrors|null>; }  /**  * @description  * Provider which adds `RequiredValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const REQUIRED_VALIDATOR: Provider = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => RequiredValidator),   multi: true };  /**  * @description  * Provider which adds `CheckboxRequiredValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const CHECKBOX_REQUIRED_VALIDATOR: Provider = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => CheckboxRequiredValidator),   multi: true };   /**  * @description  * A directive that adds the `required` validator to any controls marked with the  * `required` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding a required validator using template-driven forms  *  * ```  * <input name=\"fullName\" ngModel required>  * ```  *  * @ngModule FormsModule  * @ngModule ReactiveFormsModule  * @publicApi  */ @Directive({   selector:       ':not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]',   providers: [REQUIRED_VALIDATOR],   host: {'[attr.required]': '_enabled ? \"\" : null'} }) export class RequiredValidator extends AbstractValidatorDirective {   /**    * @description    * Tracks changes to the required attribute bound to this directive.    */   @Input() required!: boolean|string;    /** @internal */   override inputName = 'required';    /** @internal */   override normalizeInput = coerceToBoolean;    /** @internal */   override createValidator = (input: boolean): ValidatorFn => requiredValidator;    /** @nodoc */   override enabled(input: boolean): boolean {     return input;   } }   /**  * A Directive that adds the `required` validator to checkbox controls marked with the  * `required` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding a required checkbox validator using template-driven forms  *  * The following example shows how to add a checkbox required validator to an input attached to an  * ngModel binding.  *  * ```  * <input type=\"checkbox\" name=\"active\" ngModel required>  * ```  *  * @publicApi  * @ngModule FormsModule  * @ngModule ReactiveFormsModule  */ @Directive({   selector:       'input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]',   providers: [CHECKBOX_REQUIRED_VALIDATOR],   host: {'[attr.required]': '_enabled ? \"\" : null'} }) export class CheckboxRequiredValidator extends RequiredValidator {   /** @internal */   override createValidator = (input: unknown): ValidatorFn => requiredTrueValidator; }  /**  * @description  * Provider which adds `EmailValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const EMAIL_VALIDATOR: any = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => EmailValidator),   multi: true };  /**  * A directive that adds the `email` validator to controls marked with the  * `email` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.  *  * The email validation is based on the WHATWG HTML specification with some enhancements to  * incorporate more RFC rules. More information can be found on the [Validators.email  * page](api/forms/Validators#email).  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding an email validator  *  * The following example shows how to add an email validator to an input attached to an ngModel  * binding.  *  * ```  * <input type=\"email\" name=\"email\" ngModel email>  * <input type=\"email\" name=\"email\" ngModel email=\"true\">  * <input type=\"email\" name=\"email\" ngModel [email]=\"true\">  * ```  *  * @publicApi  * @ngModule FormsModule  * @ngModule ReactiveFormsModule  */ @Directive({   selector: '[email][formControlName],[email][formControl],[email][ngModel]',   providers: [EMAIL_VALIDATOR] }) export class EmailValidator extends AbstractValidatorDirective {   /**    * @description    * Tracks changes to the email attribute bound to this directive.    */   @Input() email!: boolean|string;    /** @internal */   override inputName = 'email';    /** @internal */   override normalizeInput = coerceToBoolean;    /** @internal */   override createValidator = (input: number): ValidatorFn => emailValidator;    /** @nodoc */   override enabled(input: boolean): boolean {     return input;   } }  /**  * @description  * A function that receives a control and synchronously returns a map of  * validation errors if present, otherwise null.  *  * @publicApi  */ export interface ValidatorFn {   (control: AbstractControl): ValidationErrors|null; }  /**  * @description  * A function that receives a control and returns a Promise or observable  * that emits validation errors if present, otherwise null.  *  * @publicApi  */ export interface AsyncValidatorFn {   (control: AbstractControl): Promise<ValidationErrors|null>|Observable<ValidationErrors|null>; }  /**  * @description  * Provider which adds `MinLengthValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const MIN_LENGTH_VALIDATOR: any = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => MinLengthValidator),   multi: true };  /**  * A directive that adds minimum length validation to controls marked with the  * `minlength` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding a minimum length validator  *  * The following example shows how to add a minimum length validator to an input attached to an  * ngModel binding.  *  * ```html  * <input name=\"firstName\" ngModel minlength=\"4\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector: '[minlength][formControlName],[minlength][formControl],[minlength][ngModel]',   providers: [MIN_LENGTH_VALIDATOR],   host: {'[attr.minlength]': '_enabled ? minlength : null'} }) export class MinLengthValidator extends AbstractValidatorDirective {   /**    * @description    * Tracks changes to the minimum length bound to this directive.    */   @Input() minlength!: string|number|null;    /** @internal */   override inputName = 'minlength';    /** @internal */   override normalizeInput = (input: string|number): number => toInteger(input);    /** @internal */   override createValidator = (minlength: number): ValidatorFn => minLengthValidator(minlength); }  /**  * @description  * Provider which adds `MaxLengthValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const MAX_LENGTH_VALIDATOR: any = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => MaxLengthValidator),   multi: true };  /**  * A directive that adds max length validation to controls marked with the  * `maxlength` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding a maximum length validator  *  * The following example shows how to add a maximum length validator to an input attached to an  * ngModel binding.  *  * ```html  * <input name=\"firstName\" ngModel maxlength=\"25\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector: '[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]',   providers: [MAX_LENGTH_VALIDATOR],   host: {'[attr.maxlength]': '_enabled ? maxlength : null'} }) export class MaxLengthValidator extends AbstractValidatorDirective {   /**    * @description    * Tracks changes to the minimum length bound to this directive.    */   @Input() maxlength!: string|number|null;    /** @internal */   override inputName = 'maxlength';    /** @internal */   override normalizeInput = (input: string|number): number => toInteger(input);    /** @internal */   override createValidator = (maxlength: number): ValidatorFn => maxLengthValidator(maxlength); }  /**  * @description  * Provider which adds `PatternValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const PATTERN_VALIDATOR: any = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => PatternValidator),   multi: true };   /**  * @description  * A directive that adds regex pattern validation to controls marked with the  * `pattern` attribute. The regex must match the entire control value.  * The directive is provided with the `NG_VALIDATORS` multi-provider list.  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding a pattern validator  *  * The following example shows how to add a pattern validator to an input attached to an  * ngModel binding.  *  * ```html  * <input name=\"firstName\" ngModel pattern=\"[a-zA-Z ]*\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector: '[pattern][formControlName],[pattern][formControl],[pattern][ngModel]',   providers: [PATTERN_VALIDATOR],   host: {'[attr.pattern]': '_enabled ? pattern : null'} }) export class PatternValidator extends AbstractValidatorDirective {   /**    * @description    * Tracks changes to the pattern bound to this directive.    */   @Input()   pattern!: string|RegExp;  // This input is always defined, since the name matches selector.    /** @internal */   override inputName = 'pattern';    /** @internal */   override normalizeInput = (input: string|RegExp): string|RegExp => input;    /** @internal */   override createValidator = (input: string|RegExp): ValidatorFn => patternValidator(input); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule, Type} from '@angular/core';  import {CheckboxControlValueAccessor} from './directives/checkbox_value_accessor'; import {DefaultValueAccessor} from './directives/default_value_accessor'; import {NgControlStatus, NgControlStatusGroup} from './directives/ng_control_status'; import {NgForm} from './directives/ng_form'; import {NgModel} from './directives/ng_model'; import {NgModelGroup} from './directives/ng_model_group'; import {NgNoValidate} from './directives/ng_no_validate_directive'; import {NumberValueAccessor} from './directives/number_value_accessor'; import {RadioControlRegistryModule, RadioControlValueAccessor} from './directives/radio_control_value_accessor'; import {RangeValueAccessor} from './directives/range_value_accessor'; import {FormControlDirective} from './directives/reactive_directives/form_control_directive'; import {FormControlName} from './directives/reactive_directives/form_control_name'; import {FormGroupDirective} from './directives/reactive_directives/form_group_directive'; import {FormArrayName, FormGroupName} from './directives/reactive_directives/form_group_name'; import {NgSelectOption, SelectControlValueAccessor} from './directives/select_control_value_accessor'; import {NgSelectMultipleOption, SelectMultipleControlValueAccessor} from './directives/select_multiple_control_value_accessor'; import {CheckboxRequiredValidator, EmailValidator, MaxLengthValidator, MaxValidator, MinLengthValidator, MinValidator, PatternValidator, RequiredValidator} from './directives/validators';  export {CheckboxControlValueAccessor} from './directives/checkbox_value_accessor'; export {ControlValueAccessor} from './directives/control_value_accessor'; export {DefaultValueAccessor} from './directives/default_value_accessor'; export {NgControl} from './directives/ng_control'; export {NgControlStatus, NgControlStatusGroup} from './directives/ng_control_status'; export {NgForm} from './directives/ng_form'; export {NgModel} from './directives/ng_model'; export {NgModelGroup} from './directives/ng_model_group'; export {NumberValueAccessor} from './directives/number_value_accessor'; export {RadioControlValueAccessor} from './directives/radio_control_value_accessor'; export {RangeValueAccessor} from './directives/range_value_accessor'; export {FormControlDirective, NG_MODEL_WITH_FORM_CONTROL_WARNING} from './directives/reactive_directives/form_control_directive'; export {FormControlName} from './directives/reactive_directives/form_control_name'; export {FormGroupDirective} from './directives/reactive_directives/form_group_directive'; export {FormArrayName, FormGroupName} from './directives/reactive_directives/form_group_name'; export {NgSelectOption, SelectControlValueAccessor} from './directives/select_control_value_accessor'; export {NgSelectMultipleOption, SelectMultipleControlValueAccessor} from './directives/select_multiple_control_value_accessor'; export {CALL_SET_DISABLED_STATE} from './directives/shared';  export const SHARED_FORM_DIRECTIVES: Type<any>[] = [   NgNoValidate,   NgSelectOption,   NgSelectMultipleOption,   DefaultValueAccessor,   NumberValueAccessor,   RangeValueAccessor,   CheckboxControlValueAccessor,   SelectControlValueAccessor,   SelectMultipleControlValueAccessor,   RadioControlValueAccessor,   NgControlStatus,   NgControlStatusGroup,   RequiredValidator,   MinLengthValidator,   MaxLengthValidator,   PatternValidator,   CheckboxRequiredValidator,   EmailValidator,   MinValidator,   MaxValidator, ];  export const TEMPLATE_DRIVEN_DIRECTIVES: Type<any>[] = [NgModel, NgModelGroup, NgForm];  export const REACTIVE_DRIVEN_DIRECTIVES: Type<any>[] =     [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName];  /**  * Internal module used for sharing directives between FormsModule and ReactiveFormsModule  */ @NgModule({   declarations: SHARED_FORM_DIRECTIVES,   imports: [RadioControlRegistryModule],   exports: SHARED_FORM_DIRECTIVES, }) export class ɵInternalFormsSharedModule { }  export {ɵInternalFormsSharedModule as InternalFormsSharedModule}; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AsyncValidatorFn, ValidatorFn} from '../directives/validators';  import {AbstractControl, AbstractControlOptions, assertAllValuesPresent, assertControlPresent, pickAsyncValidators, pickValidators, ɵRawValue, ɵTypedOrUntyped, ɵValue} from './abstract_model';  /**  * FormArrayValue extracts the type of `.value` from a FormArray's element type, and wraps it in an  * array.  *  * Angular uses this type internally to support Typed Forms; do not use it directly. The untyped  * case falls back to any[].  */ export type ɵFormArrayValue<T extends AbstractControl<any>> =     ɵTypedOrUntyped<T, Array<ɵValue<T>>, any[]>;  /**  * FormArrayRawValue extracts the type of `.getRawValue()` from a FormArray's element type, and  * wraps it in an array. The untyped case falls back to any[].  *  * Angular uses this type internally to support Typed Forms; do not use it directly.  */ export type ɵFormArrayRawValue<T extends AbstractControl<any>> =     ɵTypedOrUntyped<T, Array<ɵRawValue<T>>, any[]>;  /**  * Tracks the value and validity state of an array of `FormControl`,  * `FormGroup` or `FormArray` instances.  *  * A `FormArray` aggregates the values of each child `FormControl` into an array.  * It calculates its status by reducing the status values of its children. For example, if one of  * the controls in a `FormArray` is invalid, the entire array becomes invalid.  *  * `FormArray` accepts one generic argument, which is the type of the controls inside.  * If you need a heterogenous array, use {@link UntypedFormArray}.  *  * `FormArray` is one of the four fundamental building blocks used to define forms in Angular,  * along with `FormControl`, `FormGroup`, and `FormRecord`.  *  * @usageNotes  *  * ### Create an array of form controls  *  * ```  * const arr = new FormArray([  *   new FormControl('Nancy', Validators.minLength(2)),  *   new FormControl('Drew'),  * ]);  *  * console.log(arr.value);   // ['Nancy', 'Drew']  * console.log(arr.status);  // 'VALID'  * ```  *  * ### Create a form array with array-level validators  *  * You include array-level validators and async validators. These come in handy  * when you want to perform validation that considers the value of more than one child  * control.  *  * The two types of validators are passed in separately as the second and third arg  * respectively, or together as part of an options object.  *  * ```  * const arr = new FormArray([  *   new FormControl('Nancy'),  *   new FormControl('Drew')  * ], {validators: myValidator, asyncValidators: myAsyncValidator});  * ```  *  * ### Set the updateOn property for all controls in a form array  *  * The options object is used to set a default value for each child  * control's `updateOn` property. If you set `updateOn` to `'blur'` at the  * array level, all child controls default to 'blur', unless the child  * has explicitly specified a different `updateOn` value.  *  * ```ts  * const arr = new FormArray([  *    new FormControl()  * ], {updateOn: 'blur'});  * ```  *  * ### Adding or removing controls from a form array  *  * To change the controls in the array, use the `push`, `insert`, `removeAt` or `clear` methods  * in `FormArray` itself. These methods ensure the controls are properly tracked in the  * form's hierarchy. Do not modify the array of `AbstractControl`s used to instantiate  * the `FormArray` directly, as that result in strange and unexpected behavior such  * as broken change detection.  *  * @publicApi  */ export class FormArray<TControl extends AbstractControl<any> = any> extends AbstractControl<     ɵTypedOrUntyped<TControl, ɵFormArrayValue<TControl>, any>,     ɵTypedOrUntyped<TControl, ɵFormArrayRawValue<TControl>, any>> {   /**    * Creates a new `FormArray` instance.    *    * @param controls An array of child controls. Each child control is given an index    * where it is registered.    *    * @param validatorOrOpts A synchronous validator function, or an array of    * such functions, or an `AbstractControlOptions` object that contains validation functions    * and a validation trigger.    *    * @param asyncValidator A single async validator or array of async validator functions    *    */   constructor(       controls: Array<TControl>,       validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null) {     super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts));     this.controls = controls;     this._initObservables();     this._setUpdateStrategy(validatorOrOpts);     this._setUpControls();     this.updateValueAndValidity({       onlySelf: true,       // If `asyncValidator` is present, it will trigger control status change from `PENDING` to       // `VALID` or `INVALID`.       // The status should be broadcasted via the `statusChanges` observable, so we set `emitEvent`       // to `true` to allow that during the control creation process.       emitEvent: !!this.asyncValidator     });   }    public controls: ɵTypedOrUntyped<TControl, Array<TControl>, Array<AbstractControl<any>>>;    /**    * Get the `AbstractControl` at the given `index` in the array.    *    * @param index Index in the array to retrieve the control. If `index` is negative, it will wrap    *     around from the back, and if index is greatly negative (less than `-length`), the result is    * undefined. This behavior is the same as `Array.at(index)`.    */   at(index: number): ɵTypedOrUntyped<TControl, TControl, AbstractControl<any>> {     return (this.controls as any)[this._adjustIndex(index)];   }    /**    * Insert a new `AbstractControl` at the end of the array.    *    * @param control Form control to be inserted    * @param options Specifies whether this FormArray instance should emit events after a new    *     control is added.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control is    * inserted. When false, no events are emitted.    */   push(control: TControl, options: {emitEvent?: boolean} = {}): void {     this.controls.push(control);     this._registerControl(control);     this.updateValueAndValidity({emitEvent: options.emitEvent});     this._onCollectionChange();   }    /**    * Insert a new `AbstractControl` at the given `index` in the array.    *    * @param index Index in the array to insert the control. If `index` is negative, wraps around    *     from the back. If `index` is greatly negative (less than `-length`), prepends to the array.    * This behavior is the same as `Array.splice(index, 0, control)`.    * @param control Form control to be inserted    * @param options Specifies whether this FormArray instance should emit events after a new    *     control is inserted.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control is    * inserted. When false, no events are emitted.    */   insert(index: number, control: TControl, options: {emitEvent?: boolean} = {}): void {     this.controls.splice(index, 0, control);      this._registerControl(control);     this.updateValueAndValidity({emitEvent: options.emitEvent});   }    /**    * Remove the control at the given `index` in the array.    *    * @param index Index in the array to remove the control.  If `index` is negative, wraps around    *     from the back. If `index` is greatly negative (less than `-length`), removes the first    *     element. This behavior is the same as `Array.splice(index, 1)`.    * @param options Specifies whether this FormArray instance should emit events after a    *     control is removed.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control is    * removed. When false, no events are emitted.    */   removeAt(index: number, options: {emitEvent?: boolean} = {}): void {     // Adjust the index, then clamp it at no less than 0 to prevent undesired underflows.     let adjustedIndex = this._adjustIndex(index);     if (adjustedIndex < 0) adjustedIndex = 0;      if (this.controls[adjustedIndex])       this.controls[adjustedIndex]._registerOnCollectionChange(() => {});     this.controls.splice(adjustedIndex, 1);     this.updateValueAndValidity({emitEvent: options.emitEvent});   }    /**    * Replace an existing control.    *    * @param index Index in the array to replace the control. If `index` is negative, wraps around    *     from the back. If `index` is greatly negative (less than `-length`), replaces the first    *     element. This behavior is the same as `Array.splice(index, 1, control)`.    * @param control The `AbstractControl` control to replace the existing control    * @param options Specifies whether this FormArray instance should emit events after an    *     existing control is replaced with a new one.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control is    * replaced with a new one. When false, no events are emitted.    */   setControl(index: number, control: TControl, options: {emitEvent?: boolean} = {}): void {     // Adjust the index, then clamp it at no less than 0 to prevent undesired underflows.     let adjustedIndex = this._adjustIndex(index);     if (adjustedIndex < 0) adjustedIndex = 0;      if (this.controls[adjustedIndex])       this.controls[adjustedIndex]._registerOnCollectionChange(() => {});     this.controls.splice(adjustedIndex, 1);      if (control) {       this.controls.splice(adjustedIndex, 0, control);       this._registerControl(control);     }      this.updateValueAndValidity({emitEvent: options.emitEvent});     this._onCollectionChange();   }    /**    * Length of the control array.    */   get length(): number {     return this.controls.length;   }    /**    * Sets the value of the `FormArray`. It accepts an array that matches    * the structure of the control.    *    * This method performs strict checks, and throws an error if you try    * to set the value of a control that doesn't exist or if you exclude the    * value of a control.    *    * @usageNotes    * ### Set the values for the controls in the form array    *    * ```    * const arr = new FormArray([    *   new FormControl(),    *   new FormControl()    * ]);    * console.log(arr.value);   // [null, null]    *    * arr.setValue(['Nancy', 'Drew']);    * console.log(arr.value);   // ['Nancy', 'Drew']    * ```    *    * @param value Array of values for the controls    * @param options Configure options that determine how the control propagates changes and    * emits events after the value changes    *    * * `onlySelf`: When true, each change only affects this control, and not its parent. Default    * is false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control value is updated.    * When false, no events are emitted.    * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity    * updateValueAndValidity} method.    */   override setValue(value: ɵFormArrayRawValue<TControl>, options: {     onlySelf?: boolean,     emitEvent?: boolean   } = {}): void {     assertAllValuesPresent(this, false, value);     value.forEach((newValue: any, index: number) => {       assertControlPresent(this, false, index);       this.at(index).setValue(newValue, {onlySelf: true, emitEvent: options.emitEvent});     });     this.updateValueAndValidity(options);   }    /**    * Patches the value of the `FormArray`. It accepts an array that matches the    * structure of the control, and does its best to match the values to the correct    * controls in the group.    *    * It accepts both super-sets and sub-sets of the array without throwing an error.    *    * @usageNotes    * ### Patch the values for controls in a form array    *    * ```    * const arr = new FormArray([    *    new FormControl(),    *    new FormControl()    * ]);    * console.log(arr.value);   // [null, null]    *    * arr.patchValue(['Nancy']);    * console.log(arr.value);   // ['Nancy', null]    * ```    *    * @param value Array of latest values for the controls    * @param options Configure options that determine how the control propagates changes and    * emits events after the value changes    *    * * `onlySelf`: When true, each change only affects this control, and not its parent. Default    * is false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control    * value is updated. When false, no events are emitted. The configuration options are passed to    * the {@link AbstractControl#updateValueAndValidity updateValueAndValidity} method.    */   override patchValue(value: ɵFormArrayValue<TControl>, options: {     onlySelf?: boolean,     emitEvent?: boolean   } = {}): void {     // Even though the `value` argument type doesn't allow `null` and `undefined` values, the     // `patchValue` can be called recursively and inner data structures might have these values,     // so we just ignore such cases when a field containing FormArray instance receives `null` or     // `undefined` as a value.     if (value == null /* both `null` and `undefined` */) return;      value.forEach((newValue, index) => {       if (this.at(index)) {         this.at(index).patchValue(newValue, {onlySelf: true, emitEvent: options.emitEvent});       }     });     this.updateValueAndValidity(options);   }    /**    * Resets the `FormArray` and all descendants are marked `pristine` and `untouched`, and the    * value of all descendants to null or null maps.    *    * You reset to a specific form state by passing in an array of states    * that matches the structure of the control. The state is a standalone value    * or a form state object with both a value and a disabled status.    *    * @usageNotes    * ### Reset the values in a form array    *    * ```ts    * const arr = new FormArray([    *    new FormControl(),    *    new FormControl()    * ]);    * arr.reset(['name', 'last name']);    *    * console.log(arr.value);  // ['name', 'last name']    * ```    *    * ### Reset the values in a form array and the disabled status for the first control    *    * ```    * arr.reset([    *   {value: 'name', disabled: true},    *   'last'    * ]);    *    * console.log(arr.value);  // ['last']    * console.log(arr.at(0).status);  // 'DISABLED'    * ```    *    * @param value Array of values for the controls    * @param options Configure options that determine how the control propagates changes and    * emits events after the value changes    *    * * `onlySelf`: When true, each change only affects this control, and not its parent. Default    * is false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control is reset.    * When false, no events are emitted.    * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity    * updateValueAndValidity} method.    */   override reset(value: ɵTypedOrUntyped<TControl, ɵFormArrayValue<TControl>, any> = [], options: {     onlySelf?: boolean,     emitEvent?: boolean   } = {}): void {     this._forEachChild((control: AbstractControl, index: number) => {       control.reset(value[index], {onlySelf: true, emitEvent: options.emitEvent});     });     this._updatePristine(options);     this._updateTouched(options);     this.updateValueAndValidity(options);   }    /**    * The aggregate value of the array, including any disabled controls.    *    * Reports all values regardless of disabled status.    */   override getRawValue(): ɵFormArrayRawValue<TControl> {     return this.controls.map((control: AbstractControl) => control.getRawValue());   }    /**    * Remove all controls in the `FormArray`.    *    * @param options Specifies whether this FormArray instance should emit events after all    *     controls are removed.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when all controls    * in this FormArray instance are removed. When false, no events are emitted.    *    * @usageNotes    * ### Remove all elements from a FormArray    *    * ```ts    * const arr = new FormArray([    *    new FormControl(),    *    new FormControl()    * ]);    * console.log(arr.length);  // 2    *    * arr.clear();    * console.log(arr.length);  // 0    * ```    *    * It's a simpler and more efficient alternative to removing all elements one by one:    *    * ```ts    * const arr = new FormArray([    *    new FormControl(),    *    new FormControl()    * ]);    *    * while (arr.length) {    *    arr.removeAt(0);    * }    * ```    */   clear(options: {emitEvent?: boolean} = {}): void {     if (this.controls.length < 1) return;     this._forEachChild((control) => control._registerOnCollectionChange(() => {}));     this.controls.splice(0);     this.updateValueAndValidity({emitEvent: options.emitEvent});   }    /**    * Adjusts a negative index by summing it with the length of the array. For very negative    * indices, the result may remain negative.    * @internal    */   private _adjustIndex(index: number): number {     return index < 0 ? index + this.length : index;   }    /** @internal */   override _syncPendingControls(): boolean {     let subtreeUpdated = (this.controls as any).reduce((updated: any, child: any) => {       return child._syncPendingControls() ? true : updated;     }, false);     if (subtreeUpdated) this.updateValueAndValidity({onlySelf: true});     return subtreeUpdated;   }    /** @internal */   override _forEachChild(cb: (c: AbstractControl, index: number) => void): void {     this.controls.forEach((control: AbstractControl, index: number) => {       cb(control, index);     });   }    /** @internal */   override _updateValue(): void {     (this as {value: any}).value =         this.controls.filter((control) => control.enabled || this.disabled)             .map((control) => control.value);   }    /** @internal */   override _anyControls(condition: (c: AbstractControl) => boolean): boolean {     return this.controls.some((control) => control.enabled && condition(control));   }    /** @internal */   _setUpControls(): void {     this._forEachChild((control) => this._registerControl(control));   }    /** @internal */   override _allControlsDisabled(): boolean {     for (const control of this.controls) {       if (control.enabled) return false;     }     return this.controls.length > 0 || this.disabled;   }    private _registerControl(control: AbstractControl) {     control.setParent(this);     control._registerOnCollectionChange(this._onCollectionChange);   }    /** @internal */   override _find(name: string|number): AbstractControl|null {     return this.at(name as number) ?? null;   } }  interface UntypedFormArrayCtor {   new(controls: AbstractControl[],       validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): UntypedFormArray;    /**    * The presence of an explicit `prototype` property provides backwards-compatibility for apps that    * manually inspect the prototype chain.    */   prototype: FormArray<any>; }  /**  * UntypedFormArray is a non-strongly-typed version of @see FormArray, which  * permits heterogenous controls.  */ export type UntypedFormArray = FormArray<any>;  export const UntypedFormArray: UntypedFormArrayCtor = FormArray;  /**  * @description  * Asserts that the given control is an instance of `FormArray`  *  * @publicApi  */ export const isFormArray = (control: unknown): control is FormArray => control instanceof FormArray; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {inject, Injectable} from '@angular/core';  import {AsyncValidatorFn, ValidatorFn} from './directives/validators'; import {AbstractControl, AbstractControlOptions, FormHooks} from './model/abstract_model'; import {FormArray, UntypedFormArray} from './model/form_array'; import {FormControl, FormControlOptions, FormControlState, UntypedFormControl} from './model/form_control'; import {FormGroup, FormRecord, UntypedFormGroup} from './model/form_group';  function isAbstractControlOptions(options: AbstractControlOptions|{[key: string]: any}|null|                                   undefined): options is AbstractControlOptions {   return !!options &&       ((options as AbstractControlOptions).asyncValidators !== undefined ||        (options as AbstractControlOptions).validators !== undefined ||        (options as AbstractControlOptions).updateOn !== undefined); }  /**  * The union of all validator types that can be accepted by a ControlConfig.  */ type ValidatorConfig = ValidatorFn|AsyncValidatorFn|ValidatorFn[]|AsyncValidatorFn[];  /**  * The compiler may not always be able to prove that the elements of the control config are a tuple  * (i.e. occur in a fixed order). This slightly looser type is used for inference, to catch cases  * where the compiler cannot prove order and position.  *  * For example, consider the simple case `fb.group({foo: ['bar', Validators.required]})`. The  * compiler will infer this as an array, not as a tuple.  */ type PermissiveControlConfig<T> = Array<T|FormControlState<T>|ValidatorConfig>;  /**  * Helper type to allow the compiler to accept [XXXX, { updateOn: string }] as a valid shorthand  * argument for .group()  */ interface PermissiveAbstractControlOptions extends Omit<AbstractControlOptions, 'updateOn'> {   updateOn?: string; }  /**  * ControlConfig<T> is a tuple containing a value of type T, plus optional validators and async  * validators.  *  * @publicApi  */ export type ControlConfig<T> = [T|FormControlState<T>, (ValidatorFn|(ValidatorFn[]))?, (AsyncValidatorFn|AsyncValidatorFn[])?];  // Disable clang-format to produce clearer formatting for this multiline type. // clang-format off  /**  * FormBuilder accepts values in various container shapes, as well as raw values.  * Element returns the appropriate corresponding model class, given the container T.  * The flag N, if not never, makes the resulting `FormControl` have N in its type.  */ export type ɵElement<T, N extends null> =   // The `extends` checks are wrapped in arrays in order to prevent TypeScript from applying type unions   // through the distributive conditional type. This is the officially recommended solution:   // https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types   //   // Identify FormControl container types.   [T] extends [FormControl<infer U>] ? FormControl<U> :   // Or FormControl containers that are optional in their parent group.   [T] extends [FormControl<infer U>|undefined] ? FormControl<U> :   // FormGroup containers.   [T] extends [FormGroup<infer U>] ? FormGroup<U> :   // Optional FormGroup containers.   [T] extends [FormGroup<infer U>|undefined] ? FormGroup<U> :   // FormRecord containers.   [T] extends [FormRecord<infer U>] ? FormRecord<U> :   // Optional FormRecord containers.   [T] extends [FormRecord<infer U>|undefined] ? FormRecord<U> :   // FormArray containers.   [T] extends [FormArray<infer U>] ? FormArray<U> :   // Optional FormArray containers.   [T] extends [FormArray<infer U>|undefined] ? FormArray<U> :   // Otherwise unknown AbstractControl containers.   [T] extends [AbstractControl<infer U>] ? AbstractControl<U> :   // Optional AbstractControl containers.   [T] extends [AbstractControl<infer U>|undefined] ? AbstractControl<U> :   // FormControlState object container, which produces a nullable control.   [T] extends [FormControlState<infer U>] ? FormControl<U|N> :   // A ControlConfig tuple, which produces a nullable control.   [T] extends [PermissiveControlConfig<infer U>] ? FormControl<Exclude<U, ValidatorConfig| PermissiveAbstractControlOptions>|N> :   FormControl<T|N>;  // clang-format on  /**  * @description  * Creates an `AbstractControl` from a user-specified configuration.  *  * The `FormBuilder` provides syntactic sugar that shortens creating instances of a  * `FormControl`, `FormGroup`, or `FormArray`. It reduces the amount of boilerplate needed to  * build complex forms.  *  * @see [Reactive Forms Guide](guide/reactive-forms)  *  * @publicApi  */ @Injectable({providedIn: 'root'}) export class FormBuilder {   private useNonNullable: boolean = false;    /**    * @description    * Returns a FormBuilder in which automatically constructed @see FormControl} elements    * have `{nonNullable: true}` and are non-nullable.    *    * **Constructing non-nullable controls**    *    * When constructing a control, it will be non-nullable, and will reset to its initial value.    *    * ```ts    * let nnfb = new FormBuilder().nonNullable;    * let name = nnfb.control('Alex'); // FormControl<string>    * name.reset();    * console.log(name); // 'Alex'    * ```    *    * **Constructing non-nullable groups or arrays**    *    * When constructing a group or array, all automatically created inner controls will be    * non-nullable, and will reset to their initial values.    *    * ```ts    * let nnfb = new FormBuilder().nonNullable;    * let name = nnfb.group({who: 'Alex'}); // FormGroup<{who: FormControl<string>}>    * name.reset();    * console.log(name); // {who: 'Alex'}    * ```    * **Constructing *nullable* fields on groups or arrays**    *    * It is still possible to have a nullable field. In particular, any `FormControl` which is    * *already* constructed will not be altered. For example:    *    * ```ts    * let nnfb = new FormBuilder().nonNullable;    * // FormGroup<{who: FormControl<string|null>}>    * let name = nnfb.group({who: new FormControl('Alex')});    * name.reset(); console.log(name); // {who: null}    * ```    *    * Because the inner control is constructed explicitly by the caller, the builder has    * no control over how it is created, and cannot exclude the `null`.    */   get nonNullable(): NonNullableFormBuilder {     const nnfb = new FormBuilder();     nnfb.useNonNullable = true;     return nnfb as NonNullableFormBuilder;   }    /**    * @description    * Constructs a new `FormGroup` instance. Accepts a single generic argument, which is an object    * containing all the keys and corresponding inner control types.    *    * @param controls A collection of child controls. The key for each child is the name    * under which it is registered.    *    * @param options Configuration options object for the `FormGroup`. The object should have the    * `AbstractControlOptions` type and might contain the following fields:    * * `validators`: A synchronous validator function, or an array of validator functions.    * * `asyncValidators`: A single async validator or array of async validator functions.    * * `updateOn`: The event upon which the control should be updated (options: 'change' | 'blur'    * | submit').    */   group<T extends {}>(       controls: T,       options?: AbstractControlOptions|null,       ): FormGroup<{[K in keyof T]: ɵElement<T[K], null>}>;    /**    * @description    * Constructs a new `FormGroup` instance.    *    * @deprecated This API is not typesafe and can result in issues with Closure Compiler renaming.    * Use the `FormBuilder#group` overload with `AbstractControlOptions` instead.    * Note that `AbstractControlOptions` expects `validators` and `asyncValidators` to be valid    * validators. If you have custom validators, make sure their validation function parameter is    * `AbstractControl` and not a sub-class, such as `FormGroup`. These functions will be called    * with an object of type `AbstractControl` and that cannot be automatically downcast to a    * subclass, so TypeScript sees this as an error. For example, change the `(group: FormGroup) =>    * ValidationErrors|null` signature to be `(group: AbstractControl) => ValidationErrors|null`.    *    * @param controls A record of child controls. The key for each child is the name    * under which the control is registered.    *    * @param options Configuration options object for the `FormGroup`. The legacy configuration    * object consists of:    * * `validator`: A synchronous validator function, or an array of validator functions.    * * `asyncValidator`: A single async validator or array of async validator functions    * Note: the legacy format is deprecated and might be removed in one of the next major versions    * of Angular.    */   group(       controls: {[key: string]: any},       options: {[key: string]: any},       ): FormGroup;    group(controls: {[key: string]: any}, options: AbstractControlOptions|{[key: string]:                                                                              any}|null = null):       FormGroup {     const reducedControls = this._reduceControls(controls);     let newOptions: FormControlOptions = {};     if (isAbstractControlOptions(options)) {       // `options` are `AbstractControlOptions`       newOptions = options;     } else if (options !== null) {       // `options` are legacy form group options       newOptions.validators = (options as any).validator;       newOptions.asyncValidators = (options as any).asyncValidator;     }     return new FormGroup(reducedControls, newOptions);   }    /**    * @description    * Constructs a new `FormRecord` instance. Accepts a single generic argument, which is an object    * containing all the keys and corresponding inner control types.    *    * @param controls A collection of child controls. The key for each child is the name    * under which it is registered.    *    * @param options Configuration options object for the `FormRecord`. The object should have the    * `AbstractControlOptions` type and might contain the following fields:    * * `validators`: A synchronous validator function, or an array of validator functions.    * * `asyncValidators`: A single async validator or array of async validator functions.    * * `updateOn`: The event upon which the control should be updated (options: 'change' | 'blur'    * | submit').    */   record<T>(controls: {[key: string]: T}, options: AbstractControlOptions|null = null):       FormRecord<ɵElement<T, null>> {     const reducedControls = this._reduceControls(controls);     // Cast to `any` because the inferred types are not as specific as Element.     return new FormRecord(reducedControls, options) as any;   }    /** @deprecated Use `nonNullable` instead. */   control<T>(formState: T|FormControlState<T>, opts: FormControlOptions&{     initialValueIsDefault: true   }): FormControl<T>;    control<T>(formState: T|FormControlState<T>, opts: FormControlOptions&{nonNullable: true}):       FormControl<T>;    /**    * @deprecated When passing an `options` argument, the `asyncValidator` argument has no effect.    */   control<T>(       formState: T|FormControlState<T>, opts: FormControlOptions,       asyncValidator: AsyncValidatorFn|AsyncValidatorFn[]): FormControl<T|null>;    control<T>(       formState: T|FormControlState<T>,       validatorOrOpts?: ValidatorFn|ValidatorFn[]|FormControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): FormControl<T|null>;    /**    * @description    * Constructs a new `FormControl` with the given state, validators and options. Sets    * `{nonNullable: true}` in the options to get a non-nullable control. Otherwise, the    * control will be nullable. Accepts a single generic argument, which is the type  of the    * control's value.    *    * @param formState Initializes the control with an initial state value, or    * with an object that contains both a value and a disabled status.    *    * @param validatorOrOpts A synchronous validator function, or an array of    * such functions, or a `FormControlOptions` object that contains    * validation functions and a validation trigger.    *    * @param asyncValidator A single async validator or array of async validator    * functions.    *    * @usageNotes    *    * ### Initialize a control as disabled    *    * The following example returns a control with an initial value in a disabled state.    *    * <code-example path=\"forms/ts/formBuilder/form_builder_example.ts\" region=\"disabled-control\">    * </code-example>    */   control<T>(       formState: T|FormControlState<T>,       validatorOrOpts?: ValidatorFn|ValidatorFn[]|FormControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): FormControl {     let newOptions: FormControlOptions = {};     if (!this.useNonNullable) {       return new FormControl(formState, validatorOrOpts, asyncValidator);     }     if (isAbstractControlOptions(validatorOrOpts)) {       // If the second argument is options, then they are copied.       newOptions = validatorOrOpts;     } else {       // If the other arguments are validators, they are copied into an options object.       newOptions.validators = validatorOrOpts;       newOptions.asyncValidators = asyncValidator;     }     return new FormControl<T>(formState, {...newOptions, nonNullable: true});   }    /**    * Constructs a new `FormArray` from the given array of configurations,    * validators and options. Accepts a single generic argument, which is the type of each control    * inside the array.    *    * @param controls An array of child controls or control configs. Each child control is given an    *     index when it is registered.    *    * @param validatorOrOpts A synchronous validator function, or an array of such functions, or an    *     `AbstractControlOptions` object that contains    * validation functions and a validation trigger.    *    * @param asyncValidator A single async validator or array of async validator functions.    */   array<T>(       controls: Array<T>, validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): FormArray<ɵElement<T, null>> {     const createdControls = controls.map(c => this._createControl(c));     // Cast to `any` because the inferred types are not as specific as Element.     return new FormArray(createdControls, validatorOrOpts, asyncValidator) as any;   }    /** @internal */   _reduceControls<T>(controls:                          {[k: string]: T|ControlConfig<T>|FormControlState<T>|AbstractControl<T>}):       {[key: string]: AbstractControl} {     const createdControls: {[key: string]: AbstractControl} = {};     Object.keys(controls).forEach(controlName => {       createdControls[controlName] = this._createControl(controls[controlName]);     });     return createdControls;   }    /** @internal */   _createControl<T>(controls: T|FormControlState<T>|ControlConfig<T>|FormControl<T>|                     AbstractControl<T>): FormControl<T>|FormControl<T|null>|AbstractControl<T> {     if (controls instanceof FormControl) {       return controls as FormControl<T>;     } else if (controls instanceof AbstractControl) {  // A control; just return it       return controls;     } else if (Array.isArray(controls)) {  // ControlConfig Tuple       const value: T|FormControlState<T> = controls[0];       const validator: ValidatorFn|ValidatorFn[]|null = controls.length > 1 ? controls[1]! : null;       const asyncValidator: AsyncValidatorFn|AsyncValidatorFn[]|null =           controls.length > 2 ? controls[2]! : null;       return this.control<T>(value, validator, asyncValidator);     } else {  // T or FormControlState<T>       return this.control<T>(controls);     }   } }  /**  * @description  * `NonNullableFormBuilder` is similar to {@link FormBuilder}, but automatically constructed  * {@link FormControl} elements have `{nonNullable: true}` and are non-nullable.  *  * @publicApi  */ @Injectable({   providedIn: 'root',   useFactory: () => inject(FormBuilder).nonNullable, }) export abstract class NonNullableFormBuilder {   /**    * Similar to `FormBuilder#group`, except any implicitly constructed `FormControl`    * will be non-nullable (i.e. it will have `nonNullable` set to true). Note    * that already-constructed controls will not be altered.    */   abstract group<T extends {}>(       controls: T,       options?: AbstractControlOptions|null,       ): FormGroup<{[K in keyof T]: ɵElement<T[K], never>}>;    /**    * Similar to `FormBuilder#record`, except any implicitly constructed `FormControl`    * will be non-nullable (i.e. it will have `nonNullable` set to true). Note    * that already-constructed controls will not be altered.    */   abstract record<T>(       controls: {[key: string]: T},       options?: AbstractControlOptions|null,       ): FormRecord<ɵElement<T, never>>;    /**    * Similar to `FormBuilder#array`, except any implicitly constructed `FormControl`    * will be non-nullable (i.e. it will have `nonNullable` set to true). Note    * that already-constructed controls will not be altered.    */   abstract array<T>(       controls: Array<T>, validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): FormArray<ɵElement<T, never>>;    /**    * Similar to `FormBuilder#control`, except this overridden version of `control` forces    * `nonNullable` to be `true`, resulting in the control always being non-nullable.    */   abstract control<T>(       formState: T|FormControlState<T>,       validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): FormControl<T>; }  /**  * UntypedFormBuilder is the same as @see FormBuilder, but it provides untyped controls.  */ @Injectable({providedIn: 'root'}) export class UntypedFormBuilder extends FormBuilder {   /**    * Like `FormBuilder#group`, except the resulting group is untyped.    */   override group(       controlsConfig: {[key: string]: any},       options?: AbstractControlOptions|null,       ): UntypedFormGroup;    /**    * @deprecated This API is not typesafe and can result in issues with Closure Compiler renaming.    * Use the `FormBuilder#group` overload with `AbstractControlOptions` instead.    */   override group(       controlsConfig: {[key: string]: any},       options: {[key: string]: any},       ): UntypedFormGroup;    override group(       controlsConfig: {[key: string]: any},       options: AbstractControlOptions|{[key: string]: any}|null = null): UntypedFormGroup {     return super.group(controlsConfig, options);   }    /**    * Like `FormBuilder#control`, except the resulting control is untyped.    */   override control(       formState: any, validatorOrOpts?: ValidatorFn|ValidatorFn[]|FormControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): UntypedFormControl {     return super.control(formState, validatorOrOpts, asyncValidator);   }    /**    * Like `FormBuilder#array`, except the resulting array is untyped.    */   override array(       controlsConfig: any[],       validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): UntypedFormArray {     return super.array(controlsConfig, validatorOrOpts, asyncValidator);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the forms package.  */  import {Version} from '@angular/core';  /**  * @publicApi  */ export const VERSION = new Version('15.2.0'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ModuleWithProviders, NgModule} from '@angular/core';  import {InternalFormsSharedModule, NG_MODEL_WITH_FORM_CONTROL_WARNING, REACTIVE_DRIVEN_DIRECTIVES, TEMPLATE_DRIVEN_DIRECTIVES} from './directives'; import {CALL_SET_DISABLED_STATE, setDisabledStateDefault, SetDisabledStateOption} from './directives/shared';  /**  * Exports the required providers and directives for template-driven forms,  * making them available for import by NgModules that import this module.  *  * Providers associated with this module:  * * `RadioControlRegistry`  *  * @see [Forms Overview](/guide/forms-overview)  * @see [Template-driven Forms Guide](/guide/forms)  *  * @publicApi  */ @NgModule({   declarations: TEMPLATE_DRIVEN_DIRECTIVES,   exports: [InternalFormsSharedModule, TEMPLATE_DRIVEN_DIRECTIVES] }) export class FormsModule {   /**    * @description    * Provides options for configuring the forms module.    *    * @param opts An object of configuration options    * * `callSetDisabledState` Configures whether to `always` call `setDisabledState`, which is more    * correct, or to only call it `whenDisabled`, which is the legacy behavior.    */   static withConfig(opts: {     callSetDisabledState?: SetDisabledStateOption,   }): ModuleWithProviders<FormsModule> {     return {       ngModule: FormsModule,       providers: [{         provide: CALL_SET_DISABLED_STATE,         useValue: opts.callSetDisabledState ?? setDisabledStateDefault       }]     };   } }  /**  * Exports the required infrastructure and directives for reactive forms,  * making them available for import by NgModules that import this module.  *  * Providers associated with this module:  * * `FormBuilder`  * * `RadioControlRegistry`  *  * @see [Forms Overview](guide/forms-overview)  * @see [Reactive Forms Guide](guide/reactive-forms)  *  * @publicApi  */ @NgModule({   declarations: [REACTIVE_DRIVEN_DIRECTIVES],   exports: [InternalFormsSharedModule, REACTIVE_DRIVEN_DIRECTIVES] }) export class ReactiveFormsModule {   /**    * @description    * Provides options for configuring the reactive forms module.    *    * @param opts An object of configuration options    * * `warnOnNgModelWithFormControl` Configures when to emit a warning when an `ngModel`    * binding is used with reactive form directives.    * * `callSetDisabledState` Configures whether to `always` call `setDisabledState`, which is more    * correct, or to only call it `whenDisabled`, which is the legacy behavior.    */   static withConfig(opts: {                     /** @deprecated as of v6 */ warnOnNgModelWithFormControl?: 'never'|'once'|                                                                             'always',                     callSetDisabledState?: SetDisabledStateOption,                     }): ModuleWithProviders<ReactiveFormsModule> {     return {       ngModule: ReactiveFormsModule,       providers: [         {           provide: NG_MODEL_WITH_FORM_CONTROL_WARNING,           useValue: opts.warnOnNgModelWithFormControl ?? 'always'         },         {           provide: CALL_SET_DISABLED_STATE,           useValue: opts.callSetDisabledState ?? setDisabledStateDefault         }       ]     };   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * This module is used for handling user input, by defining and building a `FormGroup` that  * consists of `FormControl` objects, and mapping them onto the DOM. `FormControl`  * objects can then be used to read information from the form DOM elements.  *  * Forms providers are not included in default providers; you must import these providers  * explicitly.  */  export {ɵInternalFormsSharedModule} from './directives'; export {AbstractControlDirective} from './directives/abstract_control_directive'; export {AbstractFormGroupDirective} from './directives/abstract_form_group_directive'; export {CheckboxControlValueAccessor} from './directives/checkbox_value_accessor'; export {ControlContainer} from './directives/control_container'; export {ControlValueAccessor, NG_VALUE_ACCESSOR} from './directives/control_value_accessor'; export {COMPOSITION_BUFFER_MODE, DefaultValueAccessor} from './directives/default_value_accessor'; export {Form} from './directives/form_interface'; export {NgControl} from './directives/ng_control'; export {NgControlStatus, NgControlStatusGroup} from './directives/ng_control_status'; export {NgForm} from './directives/ng_form'; export {NgModel} from './directives/ng_model'; export {NgModelGroup} from './directives/ng_model_group'; export {ɵNgNoValidate} from './directives/ng_no_validate_directive'; export {NumberValueAccessor} from './directives/number_value_accessor'; export {RadioControlValueAccessor} from './directives/radio_control_value_accessor'; export {RangeValueAccessor} from './directives/range_value_accessor'; export {FormControlDirective} from './directives/reactive_directives/form_control_directive'; export {FormControlName} from './directives/reactive_directives/form_control_name'; export {FormGroupDirective} from './directives/reactive_directives/form_group_directive'; export {FormArrayName, FormGroupName} from './directives/reactive_directives/form_group_name'; export {NgSelectOption, SelectControlValueAccessor} from './directives/select_control_value_accessor'; export {SelectMultipleControlValueAccessor, ɵNgSelectMultipleOption} from './directives/select_multiple_control_value_accessor'; export {SetDisabledStateOption} from './directives/shared'; export {AsyncValidator, AsyncValidatorFn, CheckboxRequiredValidator, EmailValidator, MaxLengthValidator, MaxValidator, MinLengthValidator, MinValidator, PatternValidator, RequiredValidator, ValidationErrors, Validator, ValidatorFn} from './directives/validators'; export {ControlConfig, FormBuilder, NonNullableFormBuilder, UntypedFormBuilder, ɵElement} from './form_builder'; export {AbstractControl, AbstractControlOptions, FormControlStatus, ɵCoerceStrArrToNumArr, ɵGetProperty, ɵNavigate, ɵRawValue, ɵTokenize, ɵTypedOrUntyped, ɵValue, ɵWriteable} from './model/abstract_model'; export {FormArray, isFormArray, UntypedFormArray, ɵFormArrayRawValue, ɵFormArrayValue} from './model/form_array'; export {FormControl, FormControlOptions, FormControlState, isFormControl, UntypedFormControl, ɵFormControlCtor} from './model/form_control'; export {FormGroup, FormRecord, isFormGroup, isFormRecord, UntypedFormGroup, ɵFormGroupRawValue, ɵFormGroupValue, ɵOptionalKeys} from './model/form_group'; export {NG_ASYNC_VALIDATORS, NG_VALIDATORS, Validators} from './validators'; export {VERSION} from './version';  export * from './form_providers'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/forms';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["getDOM","NG_DEV_MODE","isPromise","isObservable","RuntimeError","i1.NgControl","i2.ControlContainer","removeListItem","formDirectiveProvider","resolvedPromise","i1.ControlContainer","formControlBinding","coerceToBoolean","_buildValueString","_extractId","NgNoValidate","NgSelectMultipleOption","InternalFormsSharedModule","i1.NgModel","i2.NgModelGroup","i3.NgForm","i4.FormControlDirective","i5.FormGroupDirective","i6.FormControlName","i7.FormGroupName","i7.FormArrayName"],"mappings":"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"}
-------------------- SECTION 238 --------------------
{"version":3,"file":"forms.mjs","sources":["../../../../../../packages/forms/src/directives/control_value_accessor.ts","../../../../../../packages/forms/src/directives/checkbox_value_accessor.ts","../../../../../../packages/forms/src/directives/default_value_accessor.ts","../../../../../../packages/forms/src/validators.ts","../../../../../../packages/forms/src/directives/abstract_control_directive.ts","../../../../../../packages/forms/src/directives/control_container.ts","../../../../../../packages/forms/src/directives/ng_control.ts","../../../../../../packages/forms/src/directives/ng_control_status.ts","../../../../../../packages/forms/src/directives/error_examples.ts","../../../../../../packages/forms/src/directives/reactive_errors.ts","../../../../../../packages/forms/src/model/abstract_model.ts","../../../../../../packages/forms/src/model/form_group.ts","../../../../../../packages/forms/src/directives/shared.ts","../../../../../../packages/forms/src/directives/ng_form.ts","../../../../../../packages/forms/src/util.ts","../../../../../../packages/forms/src/model/form_control.ts","../../../../../../packages/forms/src/directives/abstract_form_group_directive.ts","../../../../../../packages/forms/src/directives/template_driven_errors.ts","../../../../../../packages/forms/src/directives/ng_model_group.ts","../../../../../../packages/forms/src/directives/ng_model.ts","../../../../../../packages/forms/src/directives/ng_no_validate_directive.ts","../../../../../../packages/forms/src/directives/number_value_accessor.ts","../../../../../../packages/forms/src/directives/radio_control_value_accessor.ts","../../../../../../packages/forms/src/directives/range_value_accessor.ts","../../../../../../packages/forms/src/directives/reactive_directives/form_control_directive.ts","../../../../../../packages/forms/src/directives/reactive_directives/form_group_directive.ts","../../../../../../packages/forms/src/directives/reactive_directives/form_group_name.ts","../../../../../../packages/forms/src/directives/reactive_directives/form_control_name.ts","../../../../../../packages/forms/src/directives/select_control_value_accessor.ts","../../../../../../packages/forms/src/directives/select_multiple_control_value_accessor.ts","../../../../../../packages/forms/src/directives/validators.ts","../../../../../../packages/forms/src/directives.ts","../../../../../../packages/forms/src/model/form_array.ts","../../../../../../packages/forms/src/form_builder.ts","../../../../../../packages/forms/src/version.ts","../../../../../../packages/forms/src/form_providers.ts","../../../../../../packages/forms/src/forms.ts","../../../../../../packages/forms/public_api.ts","../../../../../../packages/forms/index.ts","../../../../../../packages/forms/forms.ts"],"sourcesContent":["/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef, InjectionToken, Renderer2} from '@angular/core';  /**  * @description  * Defines an interface that acts as a bridge between the Angular forms API and a  * native element in the DOM.  *  * Implement this interface to create a custom form control directive  * that integrates with Angular forms.  *  * @see DefaultValueAccessor  *  * @publicApi  */ export interface ControlValueAccessor {   /**    * @description    * Writes a new value to the element.    *    * This method is called by the forms API to write to the view when programmatic    * changes from model to view are requested.    *    * @usageNotes    * ### Write a value to the element    *    * The following example writes a value to the native DOM element.    *    * ```ts    * writeValue(value: any): void {    *   this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);    * }    * ```    *    * @param obj The new value for the element    */   writeValue(obj: any): void;    /**    * @description    * Registers a callback function that is called when the control's value    * changes in the UI.    *    * This method is called by the forms API on initialization to update the form    * model when values propagate from the view to the model.    *    * When implementing the `registerOnChange` method in your own value accessor,    * save the given function so your class calls it at the appropriate time.    *    * @usageNotes    * ### Store the change function    *    * The following example stores the provided function as an internal method.    *    * ```ts    * registerOnChange(fn: (_: any) => void): void {    *   this._onChange = fn;    * }    * ```    *    * When the value changes in the UI, call the registered    * function to allow the forms API to update itself:    *    * ```ts    * host: {    *    '(change)': '_onChange($event.target.value)'    * }    * ```    *    * @param fn The callback function to register    */   registerOnChange(fn: any): void;    /**    * @description    * Registers a callback function that is called by the forms API on initialization    * to update the form model on blur.    *    * When implementing `registerOnTouched` in your own value accessor, save the given    * function so your class calls it when the control should be considered    * blurred or \"touched\".    *    * @usageNotes    * ### Store the callback function    *    * The following example stores the provided function as an internal method.    *    * ```ts    * registerOnTouched(fn: any): void {    *   this._onTouched = fn;    * }    * ```    *    * On blur (or equivalent), your class should call the registered function to allow    * the forms API to update itself:    *    * ```ts    * host: {    *    '(blur)': '_onTouched()'    * }    * ```    *    * @param fn The callback function to register    */   registerOnTouched(fn: any): void;    /**    * @description    * Function that is called by the forms API when the control status changes to    * or from 'DISABLED'. Depending on the status, it enables or disables the    * appropriate DOM element.    *    * @usageNotes    * The following is an example of writing the disabled property to a native DOM element:    *    * ```ts    * setDisabledState(isDisabled: boolean): void {    *   this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);    * }    * ```    *    * @param isDisabled The disabled status to set on the element    */   setDisabledState?(isDisabled: boolean): void; }  /**  * Base class for all ControlValueAccessor classes defined in Forms package.  * Contains common logic and utility functions.  *  * Note: this is an *internal-only* class and should not be extended or used directly in  * applications code.  */ @Directive() export class BaseControlValueAccessor {   /**    * The registered callback function called when a change or input event occurs on the input    * element.    * @nodoc    */   onChange = (_: any) => {};    /**    * The registered callback function called when a blur event occurs on the input element.    * @nodoc    */   onTouched = () => {};    constructor(private _renderer: Renderer2, private _elementRef: ElementRef) {}    /**    * Helper method that sets a property on a target element using the current Renderer    * implementation.    * @nodoc    */   protected setProperty(key: string, value: any): void {     this._renderer.setProperty(this._elementRef.nativeElement, key, value);   }    /**    * Registers a function called when the control is touched.    * @nodoc    */   registerOnTouched(fn: () => void): void {     this.onTouched = fn;   }    /**    * Registers a function called when the control value changes.    * @nodoc    */   registerOnChange(fn: (_: any) => {}): void {     this.onChange = fn;   }    /**    * Sets the \"disabled\" property on the range input element.    * @nodoc    */   setDisabledState(isDisabled: boolean): void {     this.setProperty('disabled', isDisabled);   } }  /**  * Base class for all built-in ControlValueAccessor classes (except DefaultValueAccessor, which is  * used in case no other CVAs can be found). We use this class to distinguish between default CVA,  * built-in CVAs and custom CVAs, so that Forms logic can recognize built-in CVAs and treat custom  * ones with higher priority (when both built-in and custom CVAs are present).  *  * Note: this is an *internal-only* class and should not be extended or used directly in  * applications code.  */ @Directive() export class BuiltInControlValueAccessor extends BaseControlValueAccessor { }  /**  * Used to provide a `ControlValueAccessor` for form controls.  *  * See `DefaultValueAccessor` for how to implement one.  *  * @publicApi  */ export const NG_VALUE_ACCESSOR =     new InjectionToken<ReadonlyArray<ControlValueAccessor>>('NgValueAccessor'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, forwardRef, Provider} from '@angular/core';  import {BuiltInControlValueAccessor, ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor';  const CHECKBOX_VALUE_ACCESSOR: Provider = {   provide: NG_VALUE_ACCESSOR,   useExisting: forwardRef(() => CheckboxControlValueAccessor),   multi: true, };  /**  * @description  * A `ControlValueAccessor` for writing a value and listening to changes on a checkbox input  * element.  *  * @usageNotes  *  * ### Using a checkbox with a reactive form.  *  * The following example shows how to use a checkbox with a reactive form.  *  * ```ts  * const rememberLoginControl = new FormControl();  * ```  *  * ```  * <input type=\"checkbox\" [formControl]=\"rememberLoginControl\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]',   host: {'(change)': 'onChange($event.target.checked)', '(blur)': 'onTouched()'},   providers: [CHECKBOX_VALUE_ACCESSOR] }) export class CheckboxControlValueAccessor extends BuiltInControlValueAccessor implements     ControlValueAccessor {   /**    * Sets the \"checked\" property on the input element.    * @nodoc    */   writeValue(value: any): void {     this.setProperty('checked', value);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵgetDOM as getDOM} from '@angular/common'; import {Directive, ElementRef, forwardRef, Inject, InjectionToken, Optional, Renderer2} from '@angular/core';  import {BaseControlValueAccessor, ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor';  export const DEFAULT_VALUE_ACCESSOR: any = {   provide: NG_VALUE_ACCESSOR,   useExisting: forwardRef(() => DefaultValueAccessor),   multi: true };  /**  * We must check whether the agent is Android because composition events  * behave differently between iOS and Android.  */ function _isAndroid(): boolean {   const userAgent = getDOM() ? getDOM().getUserAgent() : '';   return /android (\\d+)/.test(userAgent.toLowerCase()); }  /**  * @description  * Provide this token to control if form directives buffer IME input until  * the \"compositionend\" event occurs.  * @publicApi  */ export const COMPOSITION_BUFFER_MODE = new InjectionToken<boolean>('CompositionEventMode');  /**  * The default `ControlValueAccessor` for writing a value and listening to changes on input  * elements. The accessor is used by the `FormControlDirective`, `FormControlName`, and  * `NgModel` directives.  *  * {@searchKeywords ngDefaultControl}  *  * @usageNotes  *  * ### Using the default value accessor  *  * The following example shows how to use an input element that activates the default value accessor  * (in this case, a text field).  *  * ```ts  * const firstNameControl = new FormControl();  * ```  *  * ```  * <input type=\"text\" [formControl]=\"firstNameControl\">  * ```  *  * This value accessor is used by default for `<input type=\"text\">` and `<textarea>` elements, but  * you could also use it for custom components that have similar behavior and do not require special  * processing. In order to attach the default value accessor to a custom element, add the  * `ngDefaultControl` attribute as shown below.  *  * ```  * <custom-input-component ngDefaultControl [(ngModel)]=\"value\"></custom-input-component>  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]',   // TODO: vsavkin replace the above selector with the one below it once   // https://github.com/angular/angular/issues/3011 is implemented   // selector: '[ngModel],[formControl],[formControlName]',   host: {     '(input)': '$any(this)._handleInput($event.target.value)',     '(blur)': 'onTouched()',     '(compositionstart)': '$any(this)._compositionStart()',     '(compositionend)': '$any(this)._compositionEnd($event.target.value)'   },   providers: [DEFAULT_VALUE_ACCESSOR] }) export class DefaultValueAccessor extends BaseControlValueAccessor implements ControlValueAccessor {   /** Whether the user is creating a composition string (IME events). */   private _composing = false;    constructor(       renderer: Renderer2, elementRef: ElementRef,       @Optional() @Inject(COMPOSITION_BUFFER_MODE) private _compositionMode: boolean) {     super(renderer, elementRef);     if (this._compositionMode == null) {       this._compositionMode = !_isAndroid();     }   }    /**    * Sets the \"value\" property on the input element.    * @nodoc    */   writeValue(value: any): void {     const normalizedValue = value == null ? '' : value;     this.setProperty('value', normalizedValue);   }    /** @internal */   _handleInput(value: any): void {     if (!this._compositionMode || (this._compositionMode && !this._composing)) {       this.onChange(value);     }   }    /** @internal */   _compositionStart(): void {     this._composing = true;   }    /** @internal */   _compositionEnd(value: any): void {     this._composing = false;     this._compositionMode && this.onChange(value);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {InjectionToken, ɵisObservable as isObservable, ɵisPromise as isPromise, ɵRuntimeError as RuntimeError} from '@angular/core'; import {forkJoin, from, Observable} from 'rxjs'; import {map} from 'rxjs/operators';  import {AsyncValidator, AsyncValidatorFn, ValidationErrors, Validator, ValidatorFn} from './directives/validators'; import {RuntimeErrorCode} from './errors'; import {AbstractControl} from './model/abstract_model';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  function isEmptyInputValue(value: any): boolean {   /**    * Check if the object is a string or array before evaluating the length attribute.    * This avoids falsely rejecting objects that contain a custom length attribute.    * For example, the object {id: 1, length: 0, width: 0} should not be returned as empty.    */   return value == null ||       ((typeof value === 'string' || Array.isArray(value)) && value.length === 0); }  function hasValidLength(value: any): boolean {   // non-strict comparison is intentional, to check for both `null` and `undefined` values   return value != null && typeof value.length === 'number'; }  /**  * @description  * An `InjectionToken` for registering additional synchronous validators used with  * `AbstractControl`s.  *  * @see `NG_ASYNC_VALIDATORS`  *  * @usageNotes  *  * ### Providing a custom validator  *  * The following example registers a custom validator directive. Adding the validator to the  * existing collection of validators requires the `multi: true` option.  *  * ```typescript  * @Directive({  *   selector: '[customValidator]',  *   providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]  * })  * class CustomValidatorDirective implements Validator {  *   validate(control: AbstractControl): ValidationErrors | null {  *     return { 'custom': true };  *   }  * }  * ```  *  * @publicApi  */ export const NG_VALIDATORS = new InjectionToken<Array<Validator|Function>>('NgValidators');  /**  * @description  * An `InjectionToken` for registering additional asynchronous validators used with  * `AbstractControl`s.  *  * @see `NG_VALIDATORS`  *  * @usageNotes  *  * ### Provide a custom async validator directive  *  * The following example implements the `AsyncValidator` interface to create an  * async validator directive with a custom error key.  *  * ```typescript  * @Directive({  *   selector: '[customAsyncValidator]',  *   providers: [{provide: NG_ASYNC_VALIDATORS, useExisting: CustomAsyncValidatorDirective, multi:  * true}]  * })  * class CustomAsyncValidatorDirective implements AsyncValidator {  *   validate(control: AbstractControl): Promise<ValidationErrors|null> {  *     return Promise.resolve({'custom': true});  *   }  * }  * ```  *  * @publicApi  */ export const NG_ASYNC_VALIDATORS =     new InjectionToken<Array<Validator|Function>>('NgAsyncValidators');  /**  * A regular expression that matches valid e-mail addresses.  *  * At a high level, this regexp matches e-mail addresses of the format `local-part@tld`, where:  * - `local-part` consists of one or more of the allowed characters (alphanumeric and some  *   punctuation symbols).  * - `local-part` cannot begin or end with a period (`.`).  * - `local-part` cannot be longer than 64 characters.  * - `tld` consists of one or more `labels` separated by periods (`.`). For example `localhost` or  *   `foo.com`.  * - A `label` consists of one or more of the allowed characters (alphanumeric, dashes (`-`) and  *   periods (`.`)).  * - A `label` cannot begin or end with a dash (`-`) or a period (`.`).  * - A `label` cannot be longer than 63 characters.  * - The whole address cannot be longer than 254 characters.  *  * ## Implementation background  *  * This regexp was ported over from AngularJS (see there for git history):  * https://github.com/angular/angular.js/blob/c133ef836/src/ng/directive/input.js#L27  * It is based on the  * [WHATWG version](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) with  * some enhancements to incorporate more RFC rules (such as rules related to domain names and the  * lengths of different parts of the address). The main differences from the WHATWG version are:  *   - Disallow `local-part` to begin or end with a period (`.`).  *   - Disallow `local-part` length to exceed 64 characters.  *   - Disallow total address length to exceed 254 characters.  *  * See [this commit](https://github.com/angular/angular.js/commit/f3f5cf72e) for more details.  */ const EMAIL_REGEXP =     /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[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])?)*$/;  /**  * @description  * Provides a set of built-in validators that can be used by form controls.  *  * A validator is a function that processes a `FormControl` or collection of  * controls and returns an error map or null. A null map means that validation has passed.  *  * @see [Form Validation](/guide/form-validation)  *  * @publicApi  */ export class Validators {   /**    * @description    * Validator that requires the control's value to be greater than or equal to the provided number.    *    * @usageNotes    *    * ### Validate against a minimum of 3    *    * ```typescript    * const control = new FormControl(2, Validators.min(3));    *    * console.log(control.errors); // {min: {min: 3, actual: 2}}    * ```    *    * @returns A validator function that returns an error map with the    * `min` property if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static min(min: number): ValidatorFn {     return minValidator(min);   }    /**    * @description    * Validator that requires the control's value to be less than or equal to the provided number.    *    * @usageNotes    *    * ### Validate against a maximum of 15    *    * ```typescript    * const control = new FormControl(16, Validators.max(15));    *    * console.log(control.errors); // {max: {max: 15, actual: 16}}    * ```    *    * @returns A validator function that returns an error map with the    * `max` property if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static max(max: number): ValidatorFn {     return maxValidator(max);   }    /**    * @description    * Validator that requires the control have a non-empty value.    *    * @usageNotes    *    * ### Validate that the field is non-empty    *    * ```typescript    * const control = new FormControl('', Validators.required);    *    * console.log(control.errors); // {required: true}    * ```    *    * @returns An error map with the `required` property    * if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static required(control: AbstractControl): ValidationErrors|null {     return requiredValidator(control);   }    /**    * @description    * Validator that requires the control's value be true. This validator is commonly    * used for required checkboxes.    *    * @usageNotes    *    * ### Validate that the field value is true    *    * ```typescript    * const control = new FormControl('some value', Validators.requiredTrue);    *    * console.log(control.errors); // {required: true}    * ```    *    * @returns An error map that contains the `required` property    * set to `true` if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static requiredTrue(control: AbstractControl): ValidationErrors|null {     return requiredTrueValidator(control);   }    /**    * @description    * Validator that requires the control's value pass an email validation test.    *    * Tests the value using a [regular    * expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)    * pattern suitable for common use cases. The pattern is based on the definition of a valid email    * address in the [WHATWG HTML    * specification](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) with    * some enhancements to incorporate more RFC rules (such as rules related to domain names and the    * lengths of different parts of the address).    *    * The differences from the WHATWG version include:    * - Disallow `local-part` (the part before the `@` symbol) to begin or end with a period (`.`).    * - Disallow `local-part` to be longer than 64 characters.    * - Disallow the whole address to be longer than 254 characters.    *    * If this pattern does not satisfy your business needs, you can use `Validators.pattern()` to    * validate the value against a different pattern.    *    * @usageNotes    *    * ### Validate that the field matches a valid email pattern    *    * ```typescript    * const control = new FormControl('bad@', Validators.email);    *    * console.log(control.errors); // {email: true}    * ```    *    * @returns An error map with the `email` property    * if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static email(control: AbstractControl): ValidationErrors|null {     return emailValidator(control);   }    /**    * @description    * Validator that requires the length of the control's value to be greater than or equal    * to the provided minimum length. This validator is also provided by default if you use the    * the HTML5 `minlength` attribute. Note that the `minLength` validator is intended to be used    * only for types that have a numeric `length` property, such as strings or arrays. The    * `minLength` validator logic is also not invoked for values when their `length` property is 0    * (for example in case of an empty string or an empty array), to support optional controls. You    * can use the standard `required` validator if empty values should not be considered valid.    *    * @usageNotes    *    * ### Validate that the field has a minimum of 3 characters    *    * ```typescript    * const control = new FormControl('ng', Validators.minLength(3));    *    * console.log(control.errors); // {minlength: {requiredLength: 3, actualLength: 2}}    * ```    *    * ```html    * <input minlength=\"5\">    * ```    *    * @returns A validator function that returns an error map with the    * `minlength` property if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static minLength(minLength: number): ValidatorFn {     return minLengthValidator(minLength);   }    /**    * @description    * Validator that requires the length of the control's value to be less than or equal    * to the provided maximum length. This validator is also provided by default if you use the    * the HTML5 `maxlength` attribute. Note that the `maxLength` validator is intended to be used    * only for types that have a numeric `length` property, such as strings or arrays.    *    * @usageNotes    *    * ### Validate that the field has maximum of 5 characters    *    * ```typescript    * const control = new FormControl('Angular', Validators.maxLength(5));    *    * console.log(control.errors); // {maxlength: {requiredLength: 5, actualLength: 7}}    * ```    *    * ```html    * <input maxlength=\"5\">    * ```    *    * @returns A validator function that returns an error map with the    * `maxlength` property if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static maxLength(maxLength: number): ValidatorFn {     return maxLengthValidator(maxLength);   }    /**    * @description    * Validator that requires the control's value to match a regex pattern. This validator is also    * provided by default if you use the HTML5 `pattern` attribute.    *    * @usageNotes    *    * ### Validate that the field only contains letters or spaces    *    * ```typescript    * const control = new FormControl('1', Validators.pattern('[a-zA-Z ]*'));    *    * console.log(control.errors); // {pattern: {requiredPattern: '^[a-zA-Z ]*$', actualValue: '1'}}    * ```    *    * ```html    * <input pattern=\"[a-zA-Z ]*\">    * ```    *    * ### Pattern matching with the global or sticky flag    *    * `RegExp` objects created with the `g` or `y` flags that are passed into `Validators.pattern`    * can produce different results on the same input when validations are run consecutively. This is    * due to how the behavior of `RegExp.prototype.test` is    * specified in [ECMA-262](https://tc39.es/ecma262/#sec-regexpbuiltinexec)    * (`RegExp` preserves the index of the last match when the global or sticky flag is used).    * Due to this behavior, it is recommended that when using    * `Validators.pattern` you **do not** pass in a `RegExp` object with either the global or sticky    * flag enabled.    *    * ```typescript    * // Not recommended (since the `g` flag is used)    * const controlOne = new FormControl('1', Validators.pattern(/foo/g));    *    * // Good    * const controlTwo = new FormControl('1', Validators.pattern(/foo/));    * ```    *    * @param pattern A regular expression to be used as is to test the values, or a string.    * If a string is passed, the `^` character is prepended and the `$` character is    * appended to the provided string (if not already present), and the resulting regular    * expression is used to test the values.    *    * @returns A validator function that returns an error map with the    * `pattern` property if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static pattern(pattern: string|RegExp): ValidatorFn {     return patternValidator(pattern);   }    /**    * @description    * Validator that performs no operation.    *    * @see `updateValueAndValidity()`    *    */   static nullValidator(control: AbstractControl): ValidationErrors|null {     return nullValidator(control);   }    /**    * @description    * Compose multiple validators into a single function that returns the union    * of the individual error maps for the provided control.    *    * @returns A validator function that returns an error map with the    * merged error maps of the validators if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static compose(validators: null): null;   static compose(validators: (ValidatorFn|null|undefined)[]): ValidatorFn|null;   static compose(validators: (ValidatorFn|null|undefined)[]|null): ValidatorFn|null {     return compose(validators);   }    /**    * @description    * Compose multiple async validators into a single function that returns the union    * of the individual error objects for the provided control.    *    * @returns A validator function that returns an error map with the    * merged error objects of the async validators if the validation check fails, otherwise `null`.    *    * @see `updateValueAndValidity()`    *    */   static composeAsync(validators: (AsyncValidatorFn|null)[]): AsyncValidatorFn|null {     return composeAsync(validators);   } }  /**  * Validator that requires the control's value to be greater than or equal to the provided number.  * See `Validators.min` for additional information.  */ export function minValidator(min: number): ValidatorFn {   return (control: AbstractControl): ValidationErrors|null => {     if (isEmptyInputValue(control.value) || isEmptyInputValue(min)) {       return null;  // don't validate empty values to allow optional controls     }     const value = parseFloat(control.value);     // Controls with NaN values after parsing should be treated as not having a     // minimum, per the HTML forms spec: https://www.w3.org/TR/html5/forms.html#attr-input-min     return !isNaN(value) && value < min ? {'min': {'min': min, 'actual': control.value}} : null;   }; }  /**  * Validator that requires the control's value to be less than or equal to the provided number.  * See `Validators.max` for additional information.  */ export function maxValidator(max: number): ValidatorFn {   return (control: AbstractControl): ValidationErrors|null => {     if (isEmptyInputValue(control.value) || isEmptyInputValue(max)) {       return null;  // don't validate empty values to allow optional controls     }     const value = parseFloat(control.value);     // Controls with NaN values after parsing should be treated as not having a     // maximum, per the HTML forms spec: https://www.w3.org/TR/html5/forms.html#attr-input-max     return !isNaN(value) && value > max ? {'max': {'max': max, 'actual': control.value}} : null;   }; }  /**  * Validator that requires the control have a non-empty value.  * See `Validators.required` for additional information.  */ export function requiredValidator(control: AbstractControl): ValidationErrors|null {   return isEmptyInputValue(control.value) ? {'required': true} : null; }  /**  * Validator that requires the control's value be true. This validator is commonly  * used for required checkboxes.  * See `Validators.requiredTrue` for additional information.  */ export function requiredTrueValidator(control: AbstractControl): ValidationErrors|null {   return control.value === true ? null : {'required': true}; }  /**  * Validator that requires the control's value pass an email validation test.  * See `Validators.email` for additional information.  */ export function emailValidator(control: AbstractControl): ValidationErrors|null {   if (isEmptyInputValue(control.value)) {     return null;  // don't validate empty values to allow optional controls   }   return EMAIL_REGEXP.test(control.value) ? null : {'email': true}; }  /**  * Validator that requires the length of the control's value to be greater than or equal  * to the provided minimum length. See `Validators.minLength` for additional information.  */ export function minLengthValidator(minLength: number): ValidatorFn {   return (control: AbstractControl): ValidationErrors|null => {     if (isEmptyInputValue(control.value) || !hasValidLength(control.value)) {       // don't validate empty values to allow optional controls       // don't validate values without `length` property       return null;     }      return control.value.length < minLength ?         {'minlength': {'requiredLength': minLength, 'actualLength': control.value.length}} :         null;   }; }  /**  * Validator that requires the length of the control's value to be less than or equal  * to the provided maximum length. See `Validators.maxLength` for additional information.  */ export function maxLengthValidator(maxLength: number): ValidatorFn {   return (control: AbstractControl): ValidationErrors|null => {     return hasValidLength(control.value) && control.value.length > maxLength ?         {'maxlength': {'requiredLength': maxLength, 'actualLength': control.value.length}} :         null;   }; }  /**  * Validator that requires the control's value to match a regex pattern.  * See `Validators.pattern` for additional information.  */ export function patternValidator(pattern: string|RegExp): ValidatorFn {   if (!pattern) return nullValidator;   let regex: RegExp;   let regexStr: string;   if (typeof pattern === 'string') {     regexStr = '';      if (pattern.charAt(0) !== '^') regexStr += '^';      regexStr += pattern;      if (pattern.charAt(pattern.length - 1) !== '$') regexStr += '$';      regex = new RegExp(regexStr);   } else {     regexStr = pattern.toString();     regex = pattern;   }   return (control: AbstractControl): ValidationErrors|null => {     if (isEmptyInputValue(control.value)) {       return null;  // don't validate empty values to allow optional controls     }     const value: string = control.value;     return regex.test(value) ? null :                                {'pattern': {'requiredPattern': regexStr, 'actualValue': value}};   }; }  /**  * Function that has `ValidatorFn` shape, but performs no operation.  */ export function nullValidator(control: AbstractControl): ValidationErrors|null {   return null; }  function isPresent(o: any): boolean {   return o != null; }  export function toObservable(value: any): Observable<any> {   const obs = isPromise(value) ? from(value) : value;   if (NG_DEV_MODE && !(isObservable(obs))) {     let errorMessage = `Expected async validator to return Promise or Observable.`;     // A synchronous validator will return object or null.     if (typeof value === 'object') {       errorMessage +=           ' Are you using a synchronous validator where an async validator is expected?';     }     throw new RuntimeError(RuntimeErrorCode.WRONG_VALIDATOR_RETURN_TYPE, errorMessage);   }   return obs; }  function mergeErrors(arrayOfErrors: (ValidationErrors|null)[]): ValidationErrors|null {   let res: {[key: string]: any} = {};   arrayOfErrors.forEach((errors: ValidationErrors|null) => {     res = errors != null ? {...res!, ...errors} : res!;   });    return Object.keys(res).length === 0 ? null : res; }  type GenericValidatorFn = (control: AbstractControl) => any;  function executeValidators<V extends GenericValidatorFn>(     control: AbstractControl, validators: V[]): ReturnType<V>[] {   return validators.map(validator => validator(control)); }  function isValidatorFn<V>(validator: V|Validator|AsyncValidator): validator is V {   return !(validator as Validator).validate; }  /**  * Given the list of validators that may contain both functions as well as classes, return the list  * of validator functions (convert validator classes into validator functions). This is needed to  * have consistent structure in validators list before composing them.  *  * @param validators The set of validators that may contain validators both in plain function form  *     as well as represented as a validator class.  */ export function normalizeValidators<V>(validators: (V|Validator|AsyncValidator)[]): V[] {   return validators.map(validator => {     return isValidatorFn<V>(validator) ?         validator :         ((c: AbstractControl) => validator.validate(c)) as unknown as V;   }); }  /**  * Merges synchronous validators into a single validator function.  * See `Validators.compose` for additional information.  */ function compose(validators: (ValidatorFn|null|undefined)[]|null): ValidatorFn|null {   if (!validators) return null;   const presentValidators: ValidatorFn[] = validators.filter(isPresent) as any;   if (presentValidators.length == 0) return null;    return function(control: AbstractControl) {     return mergeErrors(executeValidators<ValidatorFn>(control, presentValidators));   }; }  /**  * Accepts a list of validators of different possible shapes (`Validator` and `ValidatorFn`),  * normalizes the list (converts everything to `ValidatorFn`) and merges them into a single  * validator function.  */ export function composeValidators(validators: Array<Validator|ValidatorFn>): ValidatorFn|null {   return validators != null ? compose(normalizeValidators<ValidatorFn>(validators)) : null; }  /**  * Merges asynchronous validators into a single validator function.  * See `Validators.composeAsync` for additional information.  */ function composeAsync(validators: (AsyncValidatorFn|null)[]): AsyncValidatorFn|null {   if (!validators) return null;   const presentValidators: AsyncValidatorFn[] = validators.filter(isPresent) as any;   if (presentValidators.length == 0) return null;    return function(control: AbstractControl) {     const observables =         executeValidators<AsyncValidatorFn>(control, presentValidators).map(toObservable);     return forkJoin(observables).pipe(map(mergeErrors));   }; }  /**  * Accepts a list of async validators of different possible shapes (`AsyncValidator` and  * `AsyncValidatorFn`), normalizes the list (converts everything to `AsyncValidatorFn`) and merges  * them into a single validator function.  */ export function composeAsyncValidators(validators: Array<AsyncValidator|AsyncValidatorFn>):     AsyncValidatorFn|null {   return validators != null ? composeAsync(normalizeValidators<AsyncValidatorFn>(validators)) :                               null; }  /**  * Merges raw control validators with a given directive validator and returns the combined list of  * validators as an array.  */ export function mergeValidators<V>(controlValidators: V|V[]|null, dirValidator: V): V[] {   if (controlValidators === null) return [dirValidator];   return Array.isArray(controlValidators) ? [...controlValidators, dirValidator] :                                             [controlValidators, dirValidator]; }  /**  * Retrieves the list of raw synchronous validators attached to a given control.  */ export function getControlValidators(control: AbstractControl): ValidatorFn|ValidatorFn[]|null {   return (control as any)._rawValidators as ValidatorFn | ValidatorFn[] | null; }  /**  * Retrieves the list of raw asynchronous validators attached to a given control.  */ export function getControlAsyncValidators(control: AbstractControl): AsyncValidatorFn|     AsyncValidatorFn[]|null {   return (control as any)._rawAsyncValidators as AsyncValidatorFn | AsyncValidatorFn[] | null; }  /**  * Accepts a singleton validator, an array, or null, and returns an array type with the provided  * validators.  *  * @param validators A validator, validators, or null.  * @returns A validators array.  */ export function makeValidatorsArray<T extends ValidatorFn|AsyncValidatorFn>(validators: T|T[]|                                                                             null): T[] {   if (!validators) return [];   return Array.isArray(validators) ? validators : [validators]; }  /**  * Determines whether a validator or validators array has a given validator.  *  * @param validators The validator or validators to compare against.  * @param validator The validator to check.  * @returns Whether the validator is present.  */ export function hasValidator<T extends ValidatorFn|AsyncValidatorFn>(     validators: T|T[]|null, validator: T): boolean {   return Array.isArray(validators) ? validators.includes(validator) : validators === validator; }  /**  * Combines two arrays of validators into one. If duplicates are provided, only one will be added.  *  * @param validators The new validators.  * @param currentValidators The base array of current validators.  * @returns An array of validators.  */ export function addValidators<T extends ValidatorFn|AsyncValidatorFn>(     validators: T|T[], currentValidators: T|T[]|null): T[] {   const current = makeValidatorsArray(currentValidators);   const validatorsToAdd = makeValidatorsArray(validators);   validatorsToAdd.forEach((v: T) => {     // Note: if there are duplicate entries in the new validators array,     // only the first one would be added to the current list of validators.     // Duplicate ones would be ignored since `hasValidator` would detect     // the presence of a validator function and we update the current list in place.     if (!hasValidator(current, v)) {       current.push(v);     }   });   return current; }  export function removeValidators<T extends ValidatorFn|AsyncValidatorFn>(     validators: T|T[], currentValidators: T|T[]|null): T[] {   return makeValidatorsArray(currentValidators).filter(v => !hasValidator(validators, v)); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Observable} from 'rxjs';  import {AbstractControl} from '../model/abstract_model'; import {composeAsyncValidators, composeValidators} from '../validators';  import {AsyncValidator, AsyncValidatorFn, ValidationErrors, Validator, ValidatorFn} from './validators';   /**  * @description  * Base class for control directives.  *  * This class is only used internally in the `ReactiveFormsModule` and the `FormsModule`.  *  * @publicApi  */ export abstract class AbstractControlDirective {   /**    * @description    * A reference to the underlying control.    *    * @returns the control that backs this directive. Most properties fall through to that instance.    */   abstract get control(): AbstractControl|null;    /**    * @description    * Reports the value of the control if it is present, otherwise null.    */   get value(): any {     return this.control ? this.control.value : null;   }    /**    * @description    * Reports whether the control is valid. A control is considered valid if no    * validation errors exist with the current value.    * If the control is not present, null is returned.    */   get valid(): boolean|null {     return this.control ? this.control.valid : null;   }    /**    * @description    * Reports whether the control is invalid, meaning that an error exists in the input value.    * If the control is not present, null is returned.    */   get invalid(): boolean|null {     return this.control ? this.control.invalid : null;   }    /**    * @description    * Reports whether a control is pending, meaning that that async validation is occurring and    * errors are not yet available for the input value. If the control is not present, null is    * returned.    */   get pending(): boolean|null {     return this.control ? this.control.pending : null;   }    /**    * @description    * Reports whether the control is disabled, meaning that the control is disabled    * in the UI and is exempt from validation checks and excluded from aggregate    * values of ancestor controls. If the control is not present, null is returned.    */   get disabled(): boolean|null {     return this.control ? this.control.disabled : null;   }    /**    * @description    * Reports whether the control is enabled, meaning that the control is included in ancestor    * calculations of validity or value. If the control is not present, null is returned.    */   get enabled(): boolean|null {     return this.control ? this.control.enabled : null;   }    /**    * @description    * Reports the control's validation errors. If the control is not present, null is returned.    */   get errors(): ValidationErrors|null {     return this.control ? this.control.errors : null;   }    /**    * @description    * Reports whether the control is pristine, meaning that the user has not yet changed    * the value in the UI. If the control is not present, null is returned.    */   get pristine(): boolean|null {     return this.control ? this.control.pristine : null;   }    /**    * @description    * Reports whether the control is dirty, meaning that the user has changed    * the value in the UI. If the control is not present, null is returned.    */   get dirty(): boolean|null {     return this.control ? this.control.dirty : null;   }    /**    * @description    * Reports whether the control is touched, meaning that the user has triggered    * a `blur` event on it. If the control is not present, null is returned.    */   get touched(): boolean|null {     return this.control ? this.control.touched : null;   }    /**    * @description    * Reports the validation status of the control. Possible values include:    * 'VALID', 'INVALID', 'DISABLED', and 'PENDING'.    * If the control is not present, null is returned.    */   get status(): string|null {     return this.control ? this.control.status : null;   }    /**    * @description    * Reports whether the control is untouched, meaning that the user has not yet triggered    * a `blur` event on it. If the control is not present, null is returned.    */   get untouched(): boolean|null {     return this.control ? this.control.untouched : null;   }    /**    * @description    * Returns a multicasting observable that emits a validation status whenever it is    * calculated for the control. If the control is not present, null is returned.    */   get statusChanges(): Observable<any>|null {     return this.control ? this.control.statusChanges : null;   }    /**    * @description    * Returns a multicasting observable of value changes for the control that emits every time the    * value of the control changes in the UI or programmatically.    * If the control is not present, null is returned.    */   get valueChanges(): Observable<any>|null {     return this.control ? this.control.valueChanges : null;   }    /**    * @description    * Returns an array that represents the path from the top-level form to this control.    * Each index is the string name of the control on that level.    */   get path(): string[]|null {     return null;   }    /**    * Contains the result of merging synchronous validators into a single validator function    * (combined using `Validators.compose`).    */   private _composedValidatorFn: ValidatorFn|null|undefined;    /**    * Contains the result of merging asynchronous validators into a single validator function    * (combined using `Validators.composeAsync`).    */   private _composedAsyncValidatorFn: AsyncValidatorFn|null|undefined;    /**    * Set of synchronous validators as they were provided while calling `setValidators` function.    * @internal    */   _rawValidators: Array<Validator|ValidatorFn> = [];    /**    * Set of asynchronous validators as they were provided while calling `setAsyncValidators`    * function.    * @internal    */   _rawAsyncValidators: Array<AsyncValidator|AsyncValidatorFn> = [];    /**    * Sets synchronous validators for this directive.    * @internal    */   _setValidators(validators: Array<Validator|ValidatorFn>|undefined): void {     this._rawValidators = validators || [];     this._composedValidatorFn = composeValidators(this._rawValidators);   }    /**    * Sets asynchronous validators for this directive.    * @internal    */   _setAsyncValidators(validators: Array<AsyncValidator|AsyncValidatorFn>|undefined): void {     this._rawAsyncValidators = validators || [];     this._composedAsyncValidatorFn = composeAsyncValidators(this._rawAsyncValidators);   }    /**    * @description    * Synchronous validator function composed of all the synchronous validators registered with this    * directive.    */   get validator(): ValidatorFn|null {     return this._composedValidatorFn || null;   }    /**    * @description    * Asynchronous validator function composed of all the asynchronous validators registered with    * this directive.    */   get asyncValidator(): AsyncValidatorFn|null {     return this._composedAsyncValidatorFn || null;   }    /*    * The set of callbacks to be invoked when directive instance is being destroyed.    */   private _onDestroyCallbacks: (() => void)[] = [];    /**    * Internal function to register callbacks that should be invoked    * when directive instance is being destroyed.    * @internal    */   _registerOnDestroy(fn: () => void): void {     this._onDestroyCallbacks.push(fn);   }    /**    * Internal function to invoke all registered \"on destroy\" callbacks.    * Note: calling this function also clears the list of callbacks.    * @internal    */   _invokeOnDestroyCallbacks(): void {     this._onDestroyCallbacks.forEach(fn => fn());     this._onDestroyCallbacks = [];   }    /**    * @description    * Resets the control with the provided value if the control is present.    */   reset(value: any = undefined): void {     if (this.control) this.control.reset(value);   }    /**    * @description    * Reports whether the control with the given path has the error specified.    *    * @param errorCode The code of the error to check    * @param path A list of control names that designates how to move from the current control    * to the control that should be queried for errors.    *    * @usageNotes    * For example, for the following `FormGroup`:    *    * ```    * form = new FormGroup({    *   address: new FormGroup({ street: new FormControl() })    * });    * ```    *    * The path to the 'street' control from the root form would be 'address' -> 'street'.    *    * It can be provided to this method in one of two formats:    *    * 1. An array of string control names, e.g. `['address', 'street']`    * 1. A period-delimited list of control names in one string, e.g. `'address.street'`    *    * If no path is given, this method checks for the error on the current control.    *    * @returns whether the given error is present in the control at the given path.    *    * If the control is not present, false is returned.    */   hasError(errorCode: string, path?: Array<string|number>|string): boolean {     return this.control ? this.control.hasError(errorCode, path) : false;   }    /**    * @description    * Reports error data for the control with the given path.    *    * @param errorCode The code of the error to check    * @param path A list of control names that designates how to move from the current control    * to the control that should be queried for errors.    *    * @usageNotes    * For example, for the following `FormGroup`:    *    * ```    * form = new FormGroup({    *   address: new FormGroup({ street: new FormControl() })    * });    * ```    *    * The path to the 'street' control from the root form would be 'address' -> 'street'.    *    * It can be provided to this method in one of two formats:    *    * 1. An array of string control names, e.g. `['address', 'street']`    * 1. A period-delimited list of control names in one string, e.g. `'address.street'`    *    * @returns error data for that particular error. If the control or error is not present,    * null is returned.    */   getError(errorCode: string, path?: Array<string|number>|string): any {     return this.control ? this.control.getError(errorCode, path) : null;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AbstractControlDirective} from './abstract_control_directive'; import {Form} from './form_interface';   /**  * @description  * A base class for directives that contain multiple registered instances of `NgControl`.  * Only used by the forms module.  *  * @publicApi  */ export abstract class ControlContainer extends AbstractControlDirective {   /**    * @description    * The name for the control    */   // TODO(issue/24571): remove '!'.   name!: string|number|null;    /**    * @description    * The top-level form directive for the control.    */   get formDirective(): Form|null {     return null;   }    /**    * @description    * The path to this group.    */   override get path(): string[]|null {     return null;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AbstractControlDirective} from './abstract_control_directive'; import {ControlContainer} from './control_container'; import {ControlValueAccessor} from './control_value_accessor';   /**  * @description  * A base class that all `FormControl`-based directives extend. It binds a `FormControl`  * object to a DOM element.  *  * @publicApi  */ export abstract class NgControl extends AbstractControlDirective {   /**    * @description    * The parent form for the control.    *    * @internal    */   _parent: ControlContainer|null = null;    /**    * @description    * The name for the control    */   name: string|number|null = null;    /**    * @description    * The value accessor for the control    */   valueAccessor: ControlValueAccessor|null = null;    /**    * @description    * The callback method to update the model from the view when requested    *    * @param newValue The new value for the view    */   abstract viewToModelUpdate(newValue: any): void; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, Optional, Self} from '@angular/core';  import {AbstractControlDirective} from './abstract_control_directive'; import {ControlContainer} from './control_container'; import {NgControl} from './ng_control';  // DO NOT REFACTOR! // Each status is represented by a separate function to make sure that // advanced Closure Compiler optimizations related to property renaming // can work correctly. export class AbstractControlStatus {   private _cd: AbstractControlDirective|null;    constructor(cd: AbstractControlDirective|null) {     this._cd = cd;   }    protected get isTouched() {     return !!this._cd?.control?.touched;   }    protected get isUntouched() {     return !!this._cd?.control?.untouched;   }    protected get isPristine() {     return !!this._cd?.control?.pristine;   }    protected get isDirty() {     return !!this._cd?.control?.dirty;   }    protected get isValid() {     return !!this._cd?.control?.valid;   }    protected get isInvalid() {     return !!this._cd?.control?.invalid;   }    protected get isPending() {     return !!this._cd?.control?.pending;   }    protected get isSubmitted() {     // We check for the `submitted` field from `NgForm` and `FormGroupDirective` classes, but     // we avoid instanceof checks to prevent non-tree-shakable references to those types.     return !!(this._cd as unknown as {submitted: boolean} | null)?.submitted;   } }  export const ngControlStatusHost = {   '[class.ng-untouched]': 'isUntouched',   '[class.ng-touched]': 'isTouched',   '[class.ng-pristine]': 'isPristine',   '[class.ng-dirty]': 'isDirty',   '[class.ng-valid]': 'isValid',   '[class.ng-invalid]': 'isInvalid',   '[class.ng-pending]': 'isPending', };  export const ngGroupStatusHost = {   ...ngControlStatusHost,   '[class.ng-submitted]': 'isSubmitted', };  /**  * @description  * Directive automatically applied to Angular form controls that sets CSS classes  * based on control status.  *  * @usageNotes  *  * ### CSS classes applied  *  * The following classes are applied as the properties become true:  *  * * ng-valid  * * ng-invalid  * * ng-pending  * * ng-pristine  * * ng-dirty  * * ng-untouched  * * ng-touched  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({selector: '[formControlName],[ngModel],[formControl]', host: ngControlStatusHost}) export class NgControlStatus extends AbstractControlStatus {   constructor(@Self() cd: NgControl) {     super(cd);   } }  /**  * @description  * Directive automatically applied to Angular form groups that sets CSS classes  * based on control status (valid/invalid/dirty/etc). On groups, this includes the additional  * class ng-submitted.  *  * @see `NgControlStatus`  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       '[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]',   host: ngGroupStatusHost }) export class NgControlStatusGroup extends AbstractControlStatus {   constructor(@Optional() @Self() cd: ControlContainer) {     super(cd);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export const formControlNameExample = `   <div [formGroup]=\"myGroup\">     <input formControlName=\"firstName\">   </div>    In your class:    this.myGroup = new FormGroup({       firstName: new FormControl()   });`;  export const formGroupNameExample = `   <div [formGroup]=\"myGroup\">       <div formGroupName=\"person\">         <input formControlName=\"firstName\">       </div>   </div>    In your class:    this.myGroup = new FormGroup({       person: new FormGroup({ firstName: new FormControl() })   });`;  export const formArrayNameExample = `   <div [formGroup]=\"myGroup\">     <div formArrayName=\"cities\">       <div *ngFor=\"let city of cityArray.controls; index as i\">         <input [formControlName]=\"i\">       </div>     </div>   </div>    In your class:    this.cityArray = new FormArray([new FormControl('SF')]);   this.myGroup = new FormGroup({     cities: this.cityArray   });`;  export const ngModelGroupExample = `   <form>       <div ngModelGroup=\"person\">         <input [(ngModel)]=\"person.name\" name=\"firstName\">       </div>   </form>`;  export const ngModelWithFormGroupExample = `   <div [formGroup]=\"myGroup\">       <input formControlName=\"firstName\">       <input [(ngModel)]=\"showMoreControls\" [ngModelOptions]=\"{standalone: true}\">   </div> `; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  import {formArrayNameExample, formControlNameExample, formGroupNameExample, ngModelGroupExample} from './error_examples';   export function controlParentException(): Error {   return new RuntimeError(       RuntimeErrorCode.FORM_CONTROL_NAME_MISSING_PARENT,       `formControlName must be used with a parent formGroup directive.  You'll want to add a formGroup       directive and pass it an existing FormGroup instance (you can create one in your class).      Example:      ${formControlNameExample}`); }  export function ngModelGroupException(): Error {   return new RuntimeError(       RuntimeErrorCode.FORM_CONTROL_NAME_INSIDE_MODEL_GROUP,       `formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents       that also have a \"form\" prefix: formGroupName, formArrayName, or formGroup.        Option 1:  Update the parent to be formGroupName (reactive form strategy)        ${formGroupNameExample}        Option 2: Use ngModel instead of formControlName (template-driven strategy)        ${ngModelGroupExample}`); }  export function missingFormException(): Error {   return new RuntimeError(       RuntimeErrorCode.FORM_GROUP_MISSING_INSTANCE,       `formGroup expects a FormGroup instance. Please pass one in.        Example:        ${formControlNameExample}`); }  export function groupParentException(): Error {   return new RuntimeError(       RuntimeErrorCode.FORM_GROUP_NAME_MISSING_PARENT,       `formGroupName must be used with a parent formGroup directive.  You'll want to add a formGroup     directive and pass it an existing FormGroup instance (you can create one in your class).      Example:      ${formGroupNameExample}`); }  export function arrayParentException(): Error {   return new RuntimeError(       RuntimeErrorCode.FORM_ARRAY_NAME_MISSING_PARENT,       `formArrayName must be used with a parent formGroup directive.  You'll want to add a formGroup       directive and pass it an existing FormGroup instance (you can create one in your class).        Example:        ${formArrayNameExample}`); }  export const disabledAttrWarning = `   It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true   when you set up this control in your component class, the disabled attribute will actually be set in the DOM for   you. We recommend using this approach to avoid 'changed after checked' errors.    Example:   // Specify the \\`disabled\\` property at control creation time:   form = new FormGroup({     first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),     last: new FormControl('Drew', Validators.required)   });    // Controls can also be enabled/disabled after creation:   form.get('first')?.enable();   form.get('last')?.disable(); `;  export const asyncValidatorsDroppedWithOptsWarning = `   It looks like you're constructing using a FormControl with both an options argument and an   async validators argument. Mixing these arguments will cause your async validators to be dropped.   You should either put all your validators in the options object, or in separate validators   arguments. For example:    // Using validators arguments   fc = new FormControl(42, Validators.required, myAsyncValidator);    // Using AbstractControlOptions   fc = new FormControl(42, {validators: Validators.required, asyncValidators: myAV});    // Do NOT mix them: async validators will be dropped!   fc = new FormControl(42, {validators: Validators.required}, /* Oops! */ myAsyncValidator); `;  export function ngModelWarning(directiveName: string): string {   return `   It looks like you're using ngModel on the same form field as ${directiveName}.   Support for using the ngModel input property and ngModelChange event with   reactive form directives has been deprecated in Angular v6 and will be removed   in a future version of Angular.    For more information on this, see our API docs here:   https://angular.io/api/forms/${       directiveName === 'formControl' ? 'FormControlDirective' : 'FormControlName'}#use-with-ngmodel   `; }  function describeKey(isFormGroup: boolean, key: string|number): string {   return isFormGroup ? `with name: '${key}'` : `at index: ${key}`; }  export function noControlsError(isFormGroup: boolean): string {   return `     There are no form controls registered with this ${       isFormGroup ? 'group' : 'array'} yet. If you're using ngModel,     you may want to check next tick (e.g. use setTimeout).   `; }  export function missingControlError(isFormGroup: boolean, key: string|number): string {   return `Cannot find form control ${describeKey(isFormGroup, key)}`; }  export function missingControlValueError(isFormGroup: boolean, key: string|number): string {   return `Must supply a value for form control ${describeKey(isFormGroup, key)}`; } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {EventEmitter, ɵRuntimeError as RuntimeError} from '@angular/core'; import {Observable} from 'rxjs';  import {asyncValidatorsDroppedWithOptsWarning, missingControlError, missingControlValueError, noControlsError} from '../directives/reactive_errors'; import {AsyncValidatorFn, ValidationErrors, ValidatorFn} from '../directives/validators'; import {RuntimeErrorCode} from '../errors'; import {FormArray, FormGroup} from '../forms'; import {addValidators, composeAsyncValidators, composeValidators, hasValidator, removeValidators, toObservable} from '../validators';  const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;  /**  * Reports that a control is valid, meaning that no errors exist in the input value.  *  * @see `status`  */ export const VALID = 'VALID';  /**  * Reports that a control is invalid, meaning that an error exists in the input value.  *  * @see `status`  */ export const INVALID = 'INVALID';  /**  * Reports that a control is pending, meaning that that async validation is occurring and  * errors are not yet available for the input value.  *  * @see `markAsPending`  * @see `status`  */ export const PENDING = 'PENDING';  /**  * Reports that a control is disabled, meaning that the control is exempt from ancestor  * calculations of validity or value.  *  * @see `markAsDisabled`  * @see `status`  */ export const DISABLED = 'DISABLED';  /**  * A form can have several different statuses. Each  * possible status is returned as a string literal.  *  * * **VALID**: Reports that a control is valid, meaning that no errors exist in the input  * value.  * * **INVALID**: Reports that a control is invalid, meaning that an error exists in the input  * value.  * * **PENDING**: Reports that a control is pending, meaning that that async validation is  * occurring and errors are not yet available for the input value.  * * **DISABLED**: Reports that a control is  * disabled, meaning that the control is exempt from ancestor calculations of validity or value.  *  * @publicApi  */ export type FormControlStatus = 'VALID'|'INVALID'|'PENDING'|'DISABLED';  /**  * Gets validators from either an options object or given validators.  */ export function pickValidators(validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|                                null): ValidatorFn|ValidatorFn[]|null {   return (isOptionsObj(validatorOrOpts) ? validatorOrOpts.validators : validatorOrOpts) || null; }  /**  * Creates validator function by combining provided validators.  */ function coerceToValidator(validator: ValidatorFn|ValidatorFn[]|null): ValidatorFn|null {   return Array.isArray(validator) ? composeValidators(validator) : validator || null; }  /**  * Gets async validators from either an options object or given validators.  */ export function pickAsyncValidators(     asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null,     validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null): AsyncValidatorFn|     AsyncValidatorFn[]|null {   if (typeof ngDevMode === 'undefined' || ngDevMode) {     if (isOptionsObj(validatorOrOpts) && asyncValidator) {       console.warn(asyncValidatorsDroppedWithOptsWarning);     }   }   return (isOptionsObj(validatorOrOpts) ? validatorOrOpts.asyncValidators : asyncValidator) || null; }  /**  * Creates async validator function by combining provided async validators.  */ function coerceToAsyncValidator(asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|                                 null): AsyncValidatorFn|null {   return Array.isArray(asyncValidator) ? composeAsyncValidators(asyncValidator) :                                          asyncValidator || null; }  export type FormHooks = 'change'|'blur'|'submit';  /**  * Interface for options provided to an `AbstractControl`.  *  * @publicApi  */ export interface AbstractControlOptions {   /**    * @description    * The list of validators applied to a control.    */   validators?: ValidatorFn|ValidatorFn[]|null;   /**    * @description    * The list of async validators applied to control.    */   asyncValidators?: AsyncValidatorFn|AsyncValidatorFn[]|null;   /**    * @description    * The event name for control to update upon.    */   updateOn?: 'change'|'blur'|'submit'; }  export function isOptionsObj(validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|                              null): validatorOrOpts is AbstractControlOptions {   return validatorOrOpts != null && !Array.isArray(validatorOrOpts) &&       typeof validatorOrOpts === 'object'; }  export function assertControlPresent(parent: any, isGroup: boolean, key: string|number): void {   const controls = parent.controls as {[key: string|number]: unknown};   const collection = isGroup ? Object.keys(controls) : controls;   if (!collection.length) {     throw new RuntimeError(         RuntimeErrorCode.NO_CONTROLS, NG_DEV_MODE ? noControlsError(isGroup) : '');   }   if (!controls[key]) {     throw new RuntimeError(         RuntimeErrorCode.MISSING_CONTROL, NG_DEV_MODE ? missingControlError(isGroup, key) : '');   } }  export function assertAllValuesPresent(control: any, isGroup: boolean, value: any): void {   control._forEachChild((_: unknown, key: string|number) => {     if (value[key] === undefined) {       throw new RuntimeError(           RuntimeErrorCode.MISSING_CONTROL_VALUE,           NG_DEV_MODE ? missingControlValueError(isGroup, key) : '');     }   }); }  // IsAny checks if T is `any`, by checking a condition that couldn't possibly be true otherwise. export type ɵIsAny<T, Y, N> = 0 extends(1&T) ? Y : N;  /**  * `TypedOrUntyped` allows one of two different types to be selected, depending on whether the Forms  * class it's applied to is typed or not.  *  * This is for internal Angular usage to support typed forms; do not directly use it.  */ export type ɵTypedOrUntyped<T, Typed, Untyped> = ɵIsAny<T, Untyped, Typed>;  /**  * Value gives the value type corresponding to a control type.  *  * Note that the resulting type will follow the same rules as `.value` on your control, group, or  * array, including `undefined` for each group element which might be disabled.  *  * If you are trying to extract a value type for a data model, you probably want {@link RawValue},  * which will not have `undefined` in group keys.  *  * @usageNotes  *  * ### `FormControl` value type  *  * You can extract the value type of a single control:  *  * ```ts  * type NameControl = FormControl<string>;  * type NameValue = Value<NameControl>;  * ```  *  * The resulting type is `string`.  *  * ### `FormGroup` value type  *  * Imagine you have an interface defining the controls in your group. You can extract the shape of  * the values as follows:  *  * ```ts  * interface PartyFormControls {  *   address: FormControl<string>;  * }  *  * // Value operates on controls; the object must be wrapped in a FormGroup.  * type PartyFormValues = Value<FormGroup<PartyFormControls>>;  * ```  *  * The resulting type is `{address: string|undefined}`.  *  * ### `FormArray` value type  *  * You can extract values from FormArrays as well:  *  * ```ts  * type GuestNamesControls = FormArray<FormControl<string>>;  *  * type NamesValues = Value<GuestNamesControls>;  * ```  *  * The resulting type is `string[]`.  *  * **Internal: not for public use.**  */ export type ɵValue<T extends AbstractControl|undefined> =     T extends AbstractControl<any, any>? T['value'] : never;  /**  * RawValue gives the raw value type corresponding to a control type.  *  * Note that the resulting type will follow the same rules as `.getRawValue()` on your control,  * group, or array. This means that all controls inside a group will be required, not optional,  * regardless of their disabled state.  *  * You may also wish to use {@link ɵValue}, which will have `undefined` in group keys (which can be  * disabled).  *  * @usageNotes  *  * ### `FormGroup` raw value type  *  * Imagine you have an interface defining the controls in your group. You can extract the shape of  * the raw values as follows:  *  * ```ts  * interface PartyFormControls {  *   address: FormControl<string>;  * }  *  * // RawValue operates on controls; the object must be wrapped in a FormGroup.  * type PartyFormValues = RawValue<FormGroup<PartyFormControls>>;  * ```  *  * The resulting type is `{address: string}`. (Note the absence of `undefined`.)  *  *  **Internal: not for public use.**  */ export type ɵRawValue<T extends AbstractControl|undefined> = T extends AbstractControl<any, any>?     (T['setValue'] extends((v: infer R) => void) ? R : never) :     never;  // Disable clang-format to produce clearer formatting for these multiline types. // clang-format off  /**  * Tokenize splits a string literal S by a delimiter D.  */ export type ɵTokenize<S extends string, D extends string> =   string extends S ? string[] : /* S must be a literal */     S extends `${infer T}${D}${infer U}` ? [T, ...ɵTokenize<U, D>] :       [S] /* Base case */   ;  /**  * CoerceStrArrToNumArr accepts an array of strings, and converts any numeric string to a number.  */ export type ɵCoerceStrArrToNumArr<S> = // Extract the head of the array.   S extends [infer Head, ...infer Tail] ?     // Using a template literal type, coerce the head to `number` if possible.     // Then, recurse on the tail.     Head extends `${number}` ?       [number, ...ɵCoerceStrArrToNumArr<Tail>] :       [Head, ...ɵCoerceStrArrToNumArr<Tail>] :     [];  /**  * Navigate takes a type T and an array K, and returns the type of T[K[0]][K[1]][K[2]]...  */ export type ɵNavigate<T, K extends(Array<string|number>)> =   T extends object ? /* T must be indexable (object or array) */     (K extends [infer Head, ...infer Tail] ? /* Split K into head and tail */       (Head extends keyof T ? /* head(K) must index T */         (Tail extends(string|number)[] ? /* tail(K) must be an array */           [] extends Tail ? T[Head] : /* base case: K can be split, but Tail is empty */             (ɵNavigate<T[Head], Tail>) /* explore T[head(K)] by tail(K) */ :           any) /* tail(K) was not an array, give up */ :         never) /* head(K) does not index T, give up */ :       any) /* K cannot be split, give up */ :     any /* T is not indexable, give up */   ;  /**  * ɵWriteable removes readonly from all keys.  */ export type ɵWriteable<T> = {   -readonly[P in keyof T]: T[P] };  /**  * GetProperty takes a type T and some property names or indices K.  * If K is a dot-separated string, it is tokenized into an array before proceeding.  * Then, the type of the nested property at K is computed: T[K[0]][K[1]][K[2]]...  * This works with both objects, which are indexed by property name, and arrays, which are indexed  * numerically.  *  * For internal use only.  */ export type ɵGetProperty<T, K> =     // K is a string     K extends string ? ɵGetProperty<T, ɵCoerceStrArrToNumArr<ɵTokenize<K, '.'>>> :     // Is is an array     ɵWriteable<K> extends Array<string|number> ? ɵNavigate<T, ɵWriteable<K>> :     // Fall through permissively if we can't calculate the type of K.     any;  // clang-format on  /**  * This is the base class for `FormControl`, `FormGroup`, and `FormArray`.  *  * It provides some of the shared behavior that all controls and groups of controls have, like  * running validators, calculating status, and resetting state. It also defines the properties  * that are shared between all sub-classes, like `value`, `valid`, and `dirty`. It shouldn't be  * instantiated directly.  *  * The first type parameter TValue represents the value type of the control (`control.value`).  * The optional type parameter TRawValue  represents the raw value type (`control.getRawValue()`).  *  * @see [Forms Guide](/guide/forms)  * @see [Reactive Forms Guide](/guide/reactive-forms)  * @see [Dynamic Forms Guide](/guide/dynamic-form)  *  * @publicApi  */ export abstract class AbstractControl<TValue = any, TRawValue extends TValue = TValue> {   /** @internal */   _pendingDirty = false;    /**    * Indicates that a control has its own pending asynchronous validation in progress.    *    * @internal    */   _hasOwnPendingAsyncValidator = false;    /** @internal */   _pendingTouched = false;    /** @internal */   _onCollectionChange = () => {};    /** @internal */   _updateOn?: FormHooks;    private _parent: FormGroup|FormArray|null = null;   private _asyncValidationSubscription: any;    /**    * Contains the result of merging synchronous validators into a single validator function    * (combined using `Validators.compose`).    *    * @internal    */   private _composedValidatorFn!: ValidatorFn|null;    /**    * Contains the result of merging asynchronous validators into a single validator function    * (combined using `Validators.composeAsync`).    *    * @internal    */   private _composedAsyncValidatorFn!: AsyncValidatorFn|null;    /**    * Synchronous validators as they were provided:    *  - in `AbstractControl` constructor    *  - as an argument while calling `setValidators` function    *  - while calling the setter on the `validator` field (e.g. `control.validator = validatorFn`)    *    * @internal    */   private _rawValidators!: ValidatorFn|ValidatorFn[]|null;    /**    * Asynchronous validators as they were provided:    *  - in `AbstractControl` constructor    *  - as an argument while calling `setAsyncValidators` function    *  - while calling the setter on the `asyncValidator` field (e.g. `control.asyncValidator =    * asyncValidatorFn`)    *    * @internal    */   private _rawAsyncValidators!: AsyncValidatorFn|AsyncValidatorFn[]|null;    /**    * The current value of the control.    *    * * For a `FormControl`, the current value.    * * For an enabled `FormGroup`, the values of enabled controls as an object    * with a key-value pair for each member of the group.    * * For a disabled `FormGroup`, the values of all controls as an object    * with a key-value pair for each member of the group.    * * For a `FormArray`, the values of enabled controls as an array.    *    */   public readonly value!: TValue;    /**    * Initialize the AbstractControl instance.    *    * @param validators The function or array of functions that is used to determine the validity of    *     this control synchronously.    * @param asyncValidators The function or array of functions that is used to determine validity of    *     this control asynchronously.    */   constructor(       validators: ValidatorFn|ValidatorFn[]|null,       asyncValidators: AsyncValidatorFn|AsyncValidatorFn[]|null) {     this._assignValidators(validators);     this._assignAsyncValidators(asyncValidators);   }    /**    * Returns the function that is used to determine the validity of this control synchronously.    * If multiple validators have been added, this will be a single composed function.    * See `Validators.compose()` for additional information.    */   get validator(): ValidatorFn|null {     return this._composedValidatorFn;   }   set validator(validatorFn: ValidatorFn|null) {     this._rawValidators = this._composedValidatorFn = validatorFn;   }    /**    * Returns the function that is used to determine the validity of this control asynchronously.    * If multiple validators have been added, this will be a single composed function.    * See `Validators.compose()` for additional information.    */   get asyncValidator(): AsyncValidatorFn|null {     return this._composedAsyncValidatorFn;   }   set asyncValidator(asyncValidatorFn: AsyncValidatorFn|null) {     this._rawAsyncValidators = this._composedAsyncValidatorFn = asyncValidatorFn;   }    /**    * The parent control.    */   get parent(): FormGroup|FormArray|null {     return this._parent;   }    /**    * The validation status of the control.    *    * @see `FormControlStatus`    *    * These status values are mutually exclusive, so a control cannot be    * both valid AND invalid or invalid AND disabled.    */   public readonly status!: FormControlStatus;    /**    * A control is `valid` when its `status` is `VALID`.    *    * @see {@link AbstractControl.status}    *    * @returns True if the control has passed all of its validation tests,    * false otherwise.    */   get valid(): boolean {     return this.status === VALID;   }    /**    * A control is `invalid` when its `status` is `INVALID`.    *    * @see {@link AbstractControl.status}    *    * @returns True if this control has failed one or more of its validation checks,    * false otherwise.    */   get invalid(): boolean {     return this.status === INVALID;   }    /**    * A control is `pending` when its `status` is `PENDING`.    *    * @see {@link AbstractControl.status}    *    * @returns True if this control is in the process of conducting a validation check,    * false otherwise.    */   get pending(): boolean {     return this.status == PENDING;   }    /**    * A control is `disabled` when its `status` is `DISABLED`.    *    * Disabled controls are exempt from validation checks and    * are not included in the aggregate value of their ancestor    * controls.    *    * @see {@link AbstractControl.status}    *    * @returns True if the control is disabled, false otherwise.    */   get disabled(): boolean {     return this.status === DISABLED;   }    /**    * A control is `enabled` as long as its `status` is not `DISABLED`.    *    * @returns True if the control has any status other than 'DISABLED',    * false if the status is 'DISABLED'.    *    * @see {@link AbstractControl.status}    *    */   get enabled(): boolean {     return this.status !== DISABLED;   }    /**    * An object containing any errors generated by failing validation,    * or null if there are no errors.    */   public readonly errors!: ValidationErrors|null;    /**    * A control is `pristine` if the user has not yet changed    * the value in the UI.    *    * @returns True if the user has not yet changed the value in the UI; compare `dirty`.    * Programmatic changes to a control's value do not mark it dirty.    */   public readonly pristine: boolean = true;    /**    * A control is `dirty` if the user has changed the value    * in the UI.    *    * @returns True if the user has changed the value of this control in the UI; compare `pristine`.    * Programmatic changes to a control's value do not mark it dirty.    */   get dirty(): boolean {     return !this.pristine;   }    /**    * True if the control is marked as `touched`.    *    * A control is marked `touched` once the user has triggered    * a `blur` event on it.    */   public readonly touched: boolean = false;    /**    * True if the control has not been marked as touched    *    * A control is `untouched` if the user has not yet triggered    * a `blur` event on it.    */   get untouched(): boolean {     return !this.touched;   }    /**    * A multicasting observable that emits an event every time the value of the control changes, in    * the UI or programmatically. It also emits an event each time you call enable() or disable()    * without passing along {emitEvent: false} as a function argument.    */   public readonly valueChanges!: Observable<TValue>;    /**    * A multicasting observable that emits an event every time the validation `status` of the control    * recalculates.    *    * @see `FormControlStatus`    * @see {@link AbstractControl.status}    *    */   public readonly statusChanges!: Observable<FormControlStatus>;    /**    * Reports the update strategy of the `AbstractControl` (meaning    * the event on which the control updates itself).    * Possible values: `'change'` | `'blur'` | `'submit'`    * Default value: `'change'`    */   get updateOn(): FormHooks {     return this._updateOn ? this._updateOn : (this.parent ? this.parent.updateOn : 'change');   }    /**    * Sets the synchronous validators that are active on this control.  Calling    * this overwrites any existing synchronous validators.    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    * If you want to add a new validator without affecting existing ones, consider    * using `addValidators()` method instead.    */   setValidators(validators: ValidatorFn|ValidatorFn[]|null): void {     this._assignValidators(validators);   }    /**    * Sets the asynchronous validators that are active on this control. Calling this    * overwrites any existing asynchronous validators.    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    * If you want to add a new validator without affecting existing ones, consider    * using `addAsyncValidators()` method instead.    */   setAsyncValidators(validators: AsyncValidatorFn|AsyncValidatorFn[]|null): void {     this._assignAsyncValidators(validators);   }    /**    * Add a synchronous validator or validators to this control, without affecting other validators.    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    * Adding a validator that already exists will have no effect. If duplicate validator functions    * are present in the `validators` array, only the first instance would be added to a form    * control.    *    * @param validators The new validator function or functions to add to this control.    */   addValidators(validators: ValidatorFn|ValidatorFn[]): void {     this.setValidators(addValidators(validators, this._rawValidators));   }    /**    * Add an asynchronous validator or validators to this control, without affecting other    * validators.    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    * Adding a validator that already exists will have no effect.    *    * @param validators The new asynchronous validator function or functions to add to this control.    */   addAsyncValidators(validators: AsyncValidatorFn|AsyncValidatorFn[]): void {     this.setAsyncValidators(addValidators(validators, this._rawAsyncValidators));   }    /**    * Remove a synchronous validator from this control, without affecting other validators.    * Validators are compared by function reference; you must pass a reference to the exact same    * validator function as the one that was originally set. If a provided validator is not found,    * it is ignored.    *    * @usageNotes    *    * ### Reference to a ValidatorFn    *    * ```    * // Reference to the RequiredValidator    * const ctrl = new FormControl<string | null>('', Validators.required);    * ctrl.removeValidators(Validators.required);    *    * // Reference to anonymous function inside MinValidator    * const minValidator = Validators.min(3);    * const ctrl = new FormControl<string | null>('', minValidator);    * expect(ctrl.hasValidator(minValidator)).toEqual(true)    * expect(ctrl.hasValidator(Validators.min(3))).toEqual(false)    *    * ctrl.removeValidators(minValidator);    * ```    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    * @param validators The validator or validators to remove.    */   removeValidators(validators: ValidatorFn|ValidatorFn[]): void {     this.setValidators(removeValidators(validators, this._rawValidators));   }    /**    * Remove an asynchronous validator from this control, without affecting other validators.    * Validators are compared by function reference; you must pass a reference to the exact same    * validator function as the one that was originally set. If a provided validator is not found, it    * is ignored.    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    * @param validators The asynchronous validator or validators to remove.    */   removeAsyncValidators(validators: AsyncValidatorFn|AsyncValidatorFn[]): void {     this.setAsyncValidators(removeValidators(validators, this._rawAsyncValidators));   }    /**    * Check whether a synchronous validator function is present on this control. The provided    * validator must be a reference to the exact same function that was provided.    *    * @usageNotes    *    * ### Reference to a ValidatorFn    *    * ```    * // Reference to the RequiredValidator    * const ctrl = new FormControl<number | null>(0, Validators.required);    * expect(ctrl.hasValidator(Validators.required)).toEqual(true)    *    * // Reference to anonymous function inside MinValidator    * const minValidator = Validators.min(3);    * const ctrl = new FormControl<number | null>(0, minValidator);    * expect(ctrl.hasValidator(minValidator)).toEqual(true)    * expect(ctrl.hasValidator(Validators.min(3))).toEqual(false)    * ```    *    * @param validator The validator to check for presence. Compared by function reference.    * @returns Whether the provided validator was found on this control.    */   hasValidator(validator: ValidatorFn): boolean {     return hasValidator(this._rawValidators, validator);   }    /**    * Check whether an asynchronous validator function is present on this control. The provided    * validator must be a reference to the exact same function that was provided.    *    * @param validator The asynchronous validator to check for presence. Compared by function    *     reference.    * @returns Whether the provided asynchronous validator was found on this control.    */   hasAsyncValidator(validator: AsyncValidatorFn): boolean {     return hasValidator(this._rawAsyncValidators, validator);   }    /**    * Empties out the synchronous validator list.    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    */   clearValidators(): void {     this.validator = null;   }    /**    * Empties out the async validator list.    *    * When you add or remove a validator at run time, you must call    * `updateValueAndValidity()` for the new validation to take effect.    *    */   clearAsyncValidators(): void {     this.asyncValidator = null;   }    /**    * Marks the control as `touched`. A control is touched by focus and    * blur events that do not change the value.    *    * @see `markAsUntouched()`    * @see `markAsDirty()`    * @see `markAsPristine()`    *    * @param opts Configuration options that determine how the control propagates changes    * and emits events after marking is applied.    * * `onlySelf`: When true, mark only this control. When false or not supplied,    * marks all direct ancestors. Default is false.    */   markAsTouched(opts: {onlySelf?: boolean} = {}): void {     (this as {touched: boolean}).touched = true;      if (this._parent && !opts.onlySelf) {       this._parent.markAsTouched(opts);     }   }    /**    * Marks the control and all its descendant controls as `touched`.    * @see `markAsTouched()`    */   markAllAsTouched(): void {     this.markAsTouched({onlySelf: true});      this._forEachChild((control: AbstractControl) => control.markAllAsTouched());   }    /**    * Marks the control as `untouched`.    *    * If the control has any children, also marks all children as `untouched`    * and recalculates the `touched` status of all parent controls.    *    * @see `markAsTouched()`    * @see `markAsDirty()`    * @see `markAsPristine()`    *    * @param opts Configuration options that determine how the control propagates changes    * and emits events after the marking is applied.    * * `onlySelf`: When true, mark only this control. When false or not supplied,    * marks all direct ancestors. Default is false.    */   markAsUntouched(opts: {onlySelf?: boolean} = {}): void {     (this as {touched: boolean}).touched = false;     this._pendingTouched = false;      this._forEachChild((control: AbstractControl) => {       control.markAsUntouched({onlySelf: true});     });      if (this._parent && !opts.onlySelf) {       this._parent._updateTouched(opts);     }   }    /**    * Marks the control as `dirty`. A control becomes dirty when    * the control's value is changed through the UI; compare `markAsTouched`.    *    * @see `markAsTouched()`    * @see `markAsUntouched()`    * @see `markAsPristine()`    *    * @param opts Configuration options that determine how the control propagates changes    * and emits events after marking is applied.    * * `onlySelf`: When true, mark only this control. When false or not supplied,    * marks all direct ancestors. Default is false.    */   markAsDirty(opts: {onlySelf?: boolean} = {}): void {     (this as {pristine: boolean}).pristine = false;      if (this._parent && !opts.onlySelf) {       this._parent.markAsDirty(opts);     }   }    /**    * Marks the control as `pristine`.    *    * If the control has any children, marks all children as `pristine`,    * and recalculates the `pristine` status of all parent    * controls.    *    * @see `markAsTouched()`    * @see `markAsUntouched()`    * @see `markAsDirty()`    *    * @param opts Configuration options that determine how the control emits events after    * marking is applied.    * * `onlySelf`: When true, mark only this control. When false or not supplied,    * marks all direct ancestors. Default is false.    */   markAsPristine(opts: {onlySelf?: boolean} = {}): void {     (this as {pristine: boolean}).pristine = true;     this._pendingDirty = false;      this._forEachChild((control: AbstractControl) => {       control.markAsPristine({onlySelf: true});     });      if (this._parent && !opts.onlySelf) {       this._parent._updatePristine(opts);     }   }    /**    * Marks the control as `pending`.    *    * A control is pending while the control performs async validation.    *    * @see {@link AbstractControl.status}    *    * @param opts Configuration options that determine how the control propagates changes and    * emits events after marking is applied.    * * `onlySelf`: When true, mark only this control. When false or not supplied,    * marks all direct ancestors. Default is false.    * * `emitEvent`: When true or not supplied (the default), the `statusChanges`    * observable emits an event with the latest status the control is marked pending.    * When false, no events are emitted.    *    */   markAsPending(opts: {onlySelf?: boolean, emitEvent?: boolean} = {}): void {     (this as {status: FormControlStatus}).status = PENDING;      if (opts.emitEvent !== false) {       (this.statusChanges as EventEmitter<FormControlStatus>).emit(this.status);     }      if (this._parent && !opts.onlySelf) {       this._parent.markAsPending(opts);     }   }    /**    * Disables the control. This means the control is exempt from validation checks and    * excluded from the aggregate value of any parent. Its status is `DISABLED`.    *    * If the control has children, all children are also disabled.    *    * @see {@link AbstractControl.status}    *    * @param opts Configuration options that determine how the control propagates    * changes and emits events after the control is disabled.    * * `onlySelf`: When true, mark only this control. When false or not supplied,    * marks all direct ancestors. Default is false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control is disabled.    * When false, no events are emitted.    */   disable(opts: {onlySelf?: boolean, emitEvent?: boolean} = {}): void {     // If parent has been marked artificially dirty we don't want to re-calculate the     // parent's dirtiness based on the children.     const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf);      (this as {status: FormControlStatus}).status = DISABLED;     (this as {errors: ValidationErrors | null}).errors = null;     this._forEachChild((control: AbstractControl) => {       control.disable({...opts, onlySelf: true});     });     this._updateValue();      if (opts.emitEvent !== false) {       (this.valueChanges as EventEmitter<TValue>).emit(this.value);       (this.statusChanges as EventEmitter<FormControlStatus>).emit(this.status);     }      this._updateAncestors({...opts, skipPristineCheck});     this._onDisabledChange.forEach((changeFn) => changeFn(true));   }    /**    * Enables the control. This means the control is included in validation checks and    * the aggregate value of its parent. Its status recalculates based on its value and    * its validators.    *    * By default, if the control has children, all children are enabled.    *    * @see {@link AbstractControl.status}    *    * @param opts Configure options that control how the control propagates changes and    * emits events when marked as untouched    * * `onlySelf`: When true, mark only this control. When false or not supplied,    * marks all direct ancestors. Default is false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control is enabled.    * When false, no events are emitted.    */   enable(opts: {onlySelf?: boolean, emitEvent?: boolean} = {}): void {     // If parent has been marked artificially dirty we don't want to re-calculate the     // parent's dirtiness based on the children.     const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf);      (this as {status: FormControlStatus}).status = VALID;     this._forEachChild((control: AbstractControl) => {       control.enable({...opts, onlySelf: true});     });     this.updateValueAndValidity({onlySelf: true, emitEvent: opts.emitEvent});      this._updateAncestors({...opts, skipPristineCheck});     this._onDisabledChange.forEach((changeFn) => changeFn(false));   }    private _updateAncestors(       opts: {onlySelf?: boolean, emitEvent?: boolean, skipPristineCheck?: boolean}): void {     if (this._parent && !opts.onlySelf) {       this._parent.updateValueAndValidity(opts);       if (!opts.skipPristineCheck) {         this._parent._updatePristine();       }       this._parent._updateTouched();     }   }    /**    * Sets the parent of the control    *    * @param parent The new parent.    */   setParent(parent: FormGroup|FormArray|null): void {     this._parent = parent;   }    /**    * Sets the value of the control. Abstract method (implemented in sub-classes).    */   abstract setValue(value: TRawValue, options?: Object): void;    /**    * Patches the value of the control. Abstract method (implemented in sub-classes).    */   abstract patchValue(value: TValue, options?: Object): void;    /**    * Resets the control. Abstract method (implemented in sub-classes).    */   abstract reset(value?: TValue, options?: Object): void;    /**    * The raw value of this control. For most control implementations, the raw value will include    * disabled children.    */   getRawValue(): any {     return this.value;   }    /**    * Recalculates the value and validation status of the control.    *    * By default, it also updates the value and validity of its ancestors.    *    * @param opts Configuration options determine how the control propagates changes and emits events    * after updates and validity checks are applied.    * * `onlySelf`: When true, only update this control. When false or not supplied,    * update all direct ancestors. Default is false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control is updated.    * When false, no events are emitted.    */   updateValueAndValidity(opts: {onlySelf?: boolean, emitEvent?: boolean} = {}): void {     this._setInitialStatus();     this._updateValue();      if (this.enabled) {       this._cancelExistingSubscription();       (this as {errors: ValidationErrors | null}).errors = this._runValidator();       (this as {status: FormControlStatus}).status = this._calculateStatus();        if (this.status === VALID || this.status === PENDING) {         this._runAsyncValidator(opts.emitEvent);       }     }      if (opts.emitEvent !== false) {       (this.valueChanges as EventEmitter<TValue>).emit(this.value);       (this.statusChanges as EventEmitter<FormControlStatus>).emit(this.status);     }      if (this._parent && !opts.onlySelf) {       this._parent.updateValueAndValidity(opts);     }   }    /** @internal */   _updateTreeValidity(opts: {emitEvent?: boolean} = {emitEvent: true}): void {     this._forEachChild((ctrl: AbstractControl) => ctrl._updateTreeValidity(opts));     this.updateValueAndValidity({onlySelf: true, emitEvent: opts.emitEvent});   }    private _setInitialStatus() {     (this as {status: FormControlStatus}).status = this._allControlsDisabled() ? DISABLED : VALID;   }    private _runValidator(): ValidationErrors|null {     return this.validator ? this.validator(this) : null;   }    private _runAsyncValidator(emitEvent?: boolean): void {     if (this.asyncValidator) {       (this as {status: FormControlStatus}).status = PENDING;       this._hasOwnPendingAsyncValidator = true;       const obs = toObservable(this.asyncValidator(this));       this._asyncValidationSubscription = obs.subscribe((errors: ValidationErrors|null) => {         this._hasOwnPendingAsyncValidator = false;         // This will trigger the recalculation of the validation status, which depends on         // the state of the asynchronous validation (whether it is in progress or not). So, it is         // necessary that we have updated the `_hasOwnPendingAsyncValidator` boolean flag first.         this.setErrors(errors, {emitEvent});       });     }   }    private _cancelExistingSubscription(): void {     if (this._asyncValidationSubscription) {       this._asyncValidationSubscription.unsubscribe();       this._hasOwnPendingAsyncValidator = false;     }   }    /**    * Sets errors on a form control when running validations manually, rather than automatically.    *    * Calling `setErrors` also updates the validity of the parent control.    *    * @param opts Configuration options that determine how the control propagates    * changes and emits events after the control errors are set.    * * `emitEvent`: When true or not supplied (the default), the `statusChanges`    * observable emits an event after the errors are set.    *    * @usageNotes    *    * ### Manually set the errors for a control    *    * ```    * const login = new FormControl('someLogin');    * login.setErrors({    *   notUnique: true    * });    *    * expect(login.valid).toEqual(false);    * expect(login.errors).toEqual({ notUnique: true });    *    * login.setValue('someOtherLogin');    *    * expect(login.valid).toEqual(true);    * ```    */   setErrors(errors: ValidationErrors|null, opts: {emitEvent?: boolean} = {}): void {     (this as {errors: ValidationErrors | null}).errors = errors;     this._updateControlsErrors(opts.emitEvent !== false);   }    /**    * Retrieves a child control given the control's name or path.    *    * This signature for get supports strings and `const` arrays (`.get(['foo', 'bar'] as const)`).    */   get<P extends string|(readonly(string|number)[])>(path: P):       AbstractControl<ɵGetProperty<TRawValue, P>>|null;    /**    * Retrieves a child control given the control's name or path.    *    * This signature for `get` supports non-const (mutable) arrays. Inferred type    * information will not be as robust, so prefer to pass a `readonly` array if possible.    */   get<P extends string|Array<string|number>>(path: P):       AbstractControl<ɵGetProperty<TRawValue, P>>|null;    /**    * Retrieves a child control given the control's name or path.    *    * @param path A dot-delimited string or array of string/number values that define the path to the    * control. If a string is provided, passing it as a string literal will result in improved type    * information. Likewise, if an array is provided, passing it `as const` will cause improved type    * information to be available.    *    * @usageNotes    * ### Retrieve a nested control    *    * For example, to get a `name` control nested within a `person` sub-group:    *    * * `this.form.get('person.name');`    *    * -OR-    *    * * `this.form.get(['person', 'name'] as const);` // `as const` gives improved typings    *    * ### Retrieve a control in a FormArray    *    * When accessing an element inside a FormArray, you can use an element index.    * For example, to get a `price` control from the first element in an `items` array you can use:    *    * * `this.form.get('items.0.price');`    *    * -OR-    *    * * `this.form.get(['items', 0, 'price']);`    */   get<P extends string|((string | number)[])>(path: P):       AbstractControl<ɵGetProperty<TRawValue, P>>|null {     let currPath: Array<string|number>|string = path;     if (currPath == null) return null;     if (!Array.isArray(currPath)) currPath = currPath.split('.');     if (currPath.length === 0) return null;     return currPath.reduce(         (control: AbstractControl|null, name) => control && control._find(name), this);   }    /**    * @description    * Reports error data for the control with the given path.    *    * @param errorCode The code of the error to check    * @param path A list of control names that designates how to move from the current control    * to the control that should be queried for errors.    *    * @usageNotes    * For example, for the following `FormGroup`:    *    * ```    * form = new FormGroup({    *   address: new FormGroup({ street: new FormControl() })    * });    * ```    *    * The path to the 'street' control from the root form would be 'address' -> 'street'.    *    * It can be provided to this method in one of two formats:    *    * 1. An array of string control names, e.g. `['address', 'street']`    * 1. A period-delimited list of control names in one string, e.g. `'address.street'`    *    * @returns error data for that particular error. If the control or error is not present,    * null is returned.    */   getError(errorCode: string, path?: Array<string|number>|string): any {     const control = path ? this.get(path) : this;     return control && control.errors ? control.errors[errorCode] : null;   }    /**    * @description    * Reports whether the control with the given path has the error specified.    *    * @param errorCode The code of the error to check    * @param path A list of control names that designates how to move from the current control    * to the control that should be queried for errors.    *    * @usageNotes    * For example, for the following `FormGroup`:    *    * ```    * form = new FormGroup({    *   address: new FormGroup({ street: new FormControl() })    * });    * ```    *    * The path to the 'street' control from the root form would be 'address' -> 'street'.    *    * It can be provided to this method in one of two formats:    *    * 1. An array of string control names, e.g. `['address', 'street']`    * 1. A period-delimited list of control names in one string, e.g. `'address.street'`    *    * If no path is given, this method checks for the error on the current control.    *    * @returns whether the given error is present in the control at the given path.    *    * If the control is not present, false is returned.    */   hasError(errorCode: string, path?: Array<string|number>|string): boolean {     return !!this.getError(errorCode, path);   }    /**    * Retrieves the top-level ancestor of this control.    */   get root(): AbstractControl {     let x: AbstractControl = this;      while (x._parent) {       x = x._parent;     }      return x;   }    /** @internal */   _updateControlsErrors(emitEvent: boolean): void {     (this as {status: FormControlStatus}).status = this._calculateStatus();      if (emitEvent) {       (this.statusChanges as EventEmitter<FormControlStatus>).emit(this.status);     }      if (this._parent) {       this._parent._updateControlsErrors(emitEvent);     }   }    /** @internal */   _initObservables() {     (this as {valueChanges: Observable<TValue>}).valueChanges = new EventEmitter();     (this as {statusChanges: Observable<FormControlStatus>}).statusChanges = new EventEmitter();   }     private _calculateStatus(): FormControlStatus {     if (this._allControlsDisabled()) return DISABLED;     if (this.errors) return INVALID;     if (this._hasOwnPendingAsyncValidator || this._anyControlsHaveStatus(PENDING)) return PENDING;     if (this._anyControlsHaveStatus(INVALID)) return INVALID;     return VALID;   }    /** @internal */   abstract _updateValue(): void;    /** @internal */   abstract _forEachChild(cb: (c: AbstractControl) => void): void;    /** @internal */   abstract _anyControls(condition: (c: AbstractControl) => boolean): boolean;    /** @internal */   abstract _allControlsDisabled(): boolean;    /** @internal */   abstract _syncPendingControls(): boolean;    /** @internal */   _anyControlsHaveStatus(status: FormControlStatus): boolean {     return this._anyControls((control: AbstractControl) => control.status === status);   }    /** @internal */   _anyControlsDirty(): boolean {     return this._anyControls((control: AbstractControl) => control.dirty);   }    /** @internal */   _anyControlsTouched(): boolean {     return this._anyControls((control: AbstractControl) => control.touched);   }    /** @internal */   _updatePristine(opts: {onlySelf?: boolean} = {}): void {     (this as {pristine: boolean}).pristine = !this._anyControlsDirty();      if (this._parent && !opts.onlySelf) {       this._parent._updatePristine(opts);     }   }    /** @internal */   _updateTouched(opts: {onlySelf?: boolean} = {}): void {     (this as {touched: boolean}).touched = this._anyControlsTouched();      if (this._parent && !opts.onlySelf) {       this._parent._updateTouched(opts);     }   }    /** @internal */   _onDisabledChange: Array<(isDisabled: boolean) => void> = [];    /** @internal */   _registerOnCollectionChange(fn: () => void): void {     this._onCollectionChange = fn;   }    /** @internal */   _setUpdateStrategy(opts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null): void {     if (isOptionsObj(opts) && opts.updateOn != null) {       this._updateOn = opts.updateOn!;     }   }   /**    * Check to see if parent has been marked artificially dirty.    *    * @internal    */   private _parentMarkedDirty(onlySelf?: boolean): boolean {     const parentDirty = this._parent && this._parent.dirty;     return !onlySelf && !!parentDirty && !this._parent!._anyControlsDirty();   }    /** @internal */   _find(name: string|number): AbstractControl|null {     return null;   }    /**    * Internal implementation of the `setValidators` method. Needs to be separated out into a    * different method, because it is called in the constructor and it can break cases where    * a control is extended.    */   private _assignValidators(validators: ValidatorFn|ValidatorFn[]|null): void {     this._rawValidators = Array.isArray(validators) ? validators.slice() : validators;     this._composedValidatorFn = coerceToValidator(this._rawValidators);   }    /**    * Internal implementation of the `setAsyncValidators` method. Needs to be separated out into a    * different method, because it is called in the constructor and it can break cases where    * a control is extended.    */   private _assignAsyncValidators(validators: AsyncValidatorFn|AsyncValidatorFn[]|null): void {     this._rawAsyncValidators = Array.isArray(validators) ? validators.slice() : validators;     this._composedAsyncValidatorFn = coerceToAsyncValidator(this._rawAsyncValidators);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AsyncValidatorFn, ValidatorFn} from '../directives/validators';  import {AbstractControl, AbstractControlOptions, assertAllValuesPresent, assertControlPresent, pickAsyncValidators, pickValidators, ɵRawValue, ɵTypedOrUntyped, ɵValue} from './abstract_model';  /**  * FormGroupValue extracts the type of `.value` from a FormGroup's inner object type. The untyped  * case falls back to {[key: string]: any}.  *  * Angular uses this type internally to support Typed Forms; do not use it directly.  *  * For internal use only.  */ export type ɵFormGroupValue<T extends {[K in keyof T]?: AbstractControl<any>}> =     ɵTypedOrUntyped<T, Partial<{[K in keyof T]: ɵValue<T[K]>}>, {[key: string]: any}>;  /**  * FormGroupRawValue extracts the type of `.getRawValue()` from a FormGroup's inner object type. The  * untyped case falls back to {[key: string]: any}.  *  * Angular uses this type internally to support Typed Forms; do not use it directly.  *  * For internal use only.  */ export type ɵFormGroupRawValue<T extends {[K in keyof T]?: AbstractControl<any>}> =     ɵTypedOrUntyped<T, {[K in keyof T]: ɵRawValue<T[K]>}, {[key: string]: any}>;  /**  * OptionalKeys returns the union of all optional keys in the object.  *  * Angular uses this type internally to support Typed Forms; do not use it directly.  */ export type ɵOptionalKeys<T> = {   [K in keyof T] -?: undefined extends T[K] ? K : never }[keyof T];  /**  * Tracks the value and validity state of a group of `FormControl` instances.  *  * A `FormGroup` aggregates the values of each child `FormControl` into one object,  * with each control name as the key.  It calculates its status by reducing the status values  * of its children. For example, if one of the controls in a group is invalid, the entire  * group becomes invalid.  *  * `FormGroup` is one of the four fundamental building blocks used to define forms in Angular,  * along with `FormControl`, `FormArray`, and `FormRecord`.  *  * When instantiating a `FormGroup`, pass in a collection of child controls as the first  * argument. The key for each child registers the name for the control.  *  * `FormGroup` is intended for use cases where the keys are known ahead of time.  * If you need to dynamically add and remove controls, use {@link FormRecord} instead.  *  * `FormGroup` accepts an optional type parameter `TControl`, which is an object type with inner  * control types as values.  *  * @usageNotes  *  * ### Create a form group with 2 controls  *  * ```  * const form = new FormGroup({  *   first: new FormControl('Nancy', Validators.minLength(2)),  *   last: new FormControl('Drew'),  * });  *  * console.log(form.value);   // {first: 'Nancy', last; 'Drew'}  * console.log(form.status);  // 'VALID'  * ```  *  * ### The type argument, and optional controls  *  * `FormGroup` accepts one generic argument, which is an object containing its inner controls.  * This type will usually be inferred automatically, but you can always specify it explicitly if you  * wish.  *  * If you have controls that are optional (i.e. they can be removed, you can use the `?` in the  * type):  *  * ```  * const form = new FormGroup<{  *   first: FormControl<string|null>,  *   middle?: FormControl<string|null>, // Middle name is optional.  *   last: FormControl<string|null>,  * }>({  *   first: new FormControl('Nancy'),  *   last: new FormControl('Drew'),  * });  * ```  *  * ### Create a form group with a group-level validator  *  * You include group-level validators as the second arg, or group-level async  * validators as the third arg. These come in handy when you want to perform validation  * that considers the value of more than one child control.  *  * ```  * const form = new FormGroup({  *   password: new FormControl('', Validators.minLength(2)),  *   passwordConfirm: new FormControl('', Validators.minLength(2)),  * }, passwordMatchValidator);  *  *  * function passwordMatchValidator(g: FormGroup) {  *    return g.get('password').value === g.get('passwordConfirm').value  *       ? null : {'mismatch': true};  * }  * ```  *  * Like `FormControl` instances, you choose to pass in  * validators and async validators as part of an options object.  *  * ```  * const form = new FormGroup({  *   password: new FormControl('')  *   passwordConfirm: new FormControl('')  * }, { validators: passwordMatchValidator, asyncValidators: otherValidator });  * ```  *  * ### Set the updateOn property for all controls in a form group  *  * The options object is used to set a default value for each child  * control's `updateOn` property. If you set `updateOn` to `'blur'` at the  * group level, all child controls default to 'blur', unless the child  * has explicitly specified a different `updateOn` value.  *  * ```ts  * const c = new FormGroup({  *   one: new FormControl()  * }, { updateOn: 'blur' });  * ```  *  * ### Using a FormGroup with optional controls  *  * It is possible to have optional controls in a FormGroup. An optional control can be removed later  * using `removeControl`, and can be omitted when calling `reset`. Optional controls must be  * declared optional in the group's type.  *  * ```ts  * const c = new FormGroup<{one?: FormControl<string>}>({  *   one: new FormControl('')  * });  * ```  *  * Notice that `c.value.one` has type `string|null|undefined`. This is because calling `c.reset({})`  * without providing the optional key `one` will cause it to become `null`.  *  * @publicApi  */ export class FormGroup<TControl extends {[K in keyof TControl]: AbstractControl<any>} = any> extends     AbstractControl<         ɵTypedOrUntyped<TControl, ɵFormGroupValue<TControl>, any>,         ɵTypedOrUntyped<TControl, ɵFormGroupRawValue<TControl>, any>> {   /**    * Creates a new `FormGroup` instance.    *    * @param controls A collection of child controls. The key for each child is the name    * under which it is registered.    *    * @param validatorOrOpts A synchronous validator function, or an array of    * such functions, or an `AbstractControlOptions` object that contains validation functions    * and a validation trigger.    *    * @param asyncValidator A single async validator or array of async validator functions    *    */   constructor(       controls: TControl, validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null) {     super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts));     this.controls = controls;     this._initObservables();     this._setUpdateStrategy(validatorOrOpts);     this._setUpControls();     this.updateValueAndValidity({       onlySelf: true,       // If `asyncValidator` is present, it will trigger control status change from `PENDING` to       // `VALID` or `INVALID`. The status should be broadcasted via the `statusChanges` observable,       // so we set `emitEvent` to `true` to allow that during the control creation process.       emitEvent: !!this.asyncValidator     });   }    public controls: ɵTypedOrUntyped<TControl, TControl, {[key: string]: AbstractControl<any>}>;    /**    * Registers a control with the group's list of controls. In a strongly-typed group, the control    * must be in the group's type (possibly as an optional key).    *    * This method does not update the value or validity of the control.    * Use {@link FormGroup#addControl addControl} instead.    *    * @param name The control name to register in the collection    * @param control Provides the control for the given name    */   registerControl<K extends string&keyof TControl>(name: K, control: TControl[K]): TControl[K];   registerControl(       this: FormGroup<{[key: string]: AbstractControl<any>}>, name: string,       control: AbstractControl<any>): AbstractControl<any>;    registerControl<K extends string&keyof TControl>(name: K, control: TControl[K]): TControl[K] {     if (this.controls[name]) return (this.controls as any)[name];     this.controls[name] = control;     control.setParent(this as FormGroup);     control._registerOnCollectionChange(this._onCollectionChange);     return control;   }    /**    * Add a control to this group. In a strongly-typed group, the control must be in the group's type    * (possibly as an optional key).    *    * If a control with a given name already exists, it would *not* be replaced with a new one.    * If you want to replace an existing control, use the {@link FormGroup#setControl setControl}    * method instead. This method also updates the value and validity of the control.    *    * @param name The control name to add to the collection    * @param control Provides the control for the given name    * @param options Specifies whether this FormGroup instance should emit events after a new    *     control is added.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control is    * added. When false, no events are emitted.    */   addControl(       this: FormGroup<{[key: string]: AbstractControl<any>}>, name: string,       control: AbstractControl, options?: {emitEvent?: boolean}): void;   addControl<K extends string&keyof TControl>(name: K, control: Required<TControl>[K], options?: {     emitEvent?: boolean   }): void;    addControl<K extends string&keyof TControl>(name: K, control: Required<TControl>[K], options: {     emitEvent?: boolean   } = {}): void {     this.registerControl(name, control);     this.updateValueAndValidity({emitEvent: options.emitEvent});     this._onCollectionChange();   }    removeControl(this: FormGroup<{[key: string]: AbstractControl<any>}>, name: string, options?: {     emitEvent?: boolean;   }): void;   removeControl<S extends string>(name: ɵOptionalKeys<TControl>&S, options?: {     emitEvent?: boolean;   }): void;    /**    * Remove a control from this group. In a strongly-typed group, required controls cannot be    * removed.    *    * This method also updates the value and validity of the control.    *    * @param name The control name to remove from the collection    * @param options Specifies whether this FormGroup instance should emit events after a    *     control is removed.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control is    * removed. When false, no events are emitted.    */   removeControl(name: string, options: {emitEvent?: boolean;} = {}): void {     if ((this.controls as any)[name])       (this.controls as any)[name]._registerOnCollectionChange(() => {});     delete ((this.controls as any)[name]);     this.updateValueAndValidity({emitEvent: options.emitEvent});     this._onCollectionChange();   }    /**    * Replace an existing control. In a strongly-typed group, the control must be in the group's type    * (possibly as an optional key).    *    * If a control with a given name does not exist in this `FormGroup`, it will be added.    *    * @param name The control name to replace in the collection    * @param control Provides the control for the given name    * @param options Specifies whether this FormGroup instance should emit events after an    *     existing control is replaced.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control is    * replaced with a new one. When false, no events are emitted.    */   setControl<K extends string&keyof TControl>(name: K, control: TControl[K], options?: {     emitEvent?: boolean   }): void;   setControl(       this: FormGroup<{[key: string]: AbstractControl<any>}>, name: string,       control: AbstractControl, options?: {emitEvent?: boolean}): void;    setControl<K extends string&keyof TControl>(name: K, control: TControl[K], options: {     emitEvent?: boolean   } = {}): void {     if (this.controls[name]) this.controls[name]._registerOnCollectionChange(() => {});     delete (this.controls[name]);     if (control) this.registerControl(name, control);     this.updateValueAndValidity({emitEvent: options.emitEvent});     this._onCollectionChange();   }    /**    * Check whether there is an enabled control with the given name in the group.    *    * Reports false for disabled controls. If you'd like to check for existence in the group    * only, use {@link AbstractControl#get get} instead.    *    * @param controlName The control name to check for existence in the collection    *    * @returns false for disabled controls, true otherwise.    */   contains<K extends string>(controlName: K): boolean;   contains(this: FormGroup<{[key: string]: AbstractControl<any>}>, controlName: string): boolean;    contains<K extends string&keyof TControl>(controlName: K): boolean {     return this.controls.hasOwnProperty(controlName) && this.controls[controlName].enabled;   }    /**    * Sets the value of the `FormGroup`. It accepts an object that matches    * the structure of the group, with control names as keys.    *    * @usageNotes    * ### Set the complete value for the form group    *    * ```    * const form = new FormGroup({    *   first: new FormControl(),    *   last: new FormControl()    * });    *    * console.log(form.value);   // {first: null, last: null}    *    * form.setValue({first: 'Nancy', last: 'Drew'});    * console.log(form.value);   // {first: 'Nancy', last: 'Drew'}    * ```    *    * @throws When strict checks fail, such as setting the value of a control    * that doesn't exist or if you exclude a value of a control that does exist.    *    * @param value The new value for the control that matches the structure of the group.    * @param options Configuration options that determine how the control propagates changes    * and emits events after the value changes.    * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity    * updateValueAndValidity} method.    *    * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is    * false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control value is updated.    * When false, no events are emitted.    */   override setValue(value: ɵFormGroupRawValue<TControl>, options: {     onlySelf?: boolean,     emitEvent?: boolean   } = {}): void {     assertAllValuesPresent(this, true, value);     (Object.keys(value) as Array<keyof TControl>).forEach(name => {       assertControlPresent(this, true, name as any);       (this.controls as any)[name].setValue(           (value as any)[name], {onlySelf: true, emitEvent: options.emitEvent});     });     this.updateValueAndValidity(options);   }    /**    * Patches the value of the `FormGroup`. It accepts an object with control    * names as keys, and does its best to match the values to the correct controls    * in the group.    *    * It accepts both super-sets and sub-sets of the group without throwing an error.    *    * @usageNotes    * ### Patch the value for a form group    *    * ```    * const form = new FormGroup({    *    first: new FormControl(),    *    last: new FormControl()    * });    * console.log(form.value);   // {first: null, last: null}    *    * form.patchValue({first: 'Nancy'});    * console.log(form.value);   // {first: 'Nancy', last: null}    * ```    *    * @param value The object that matches the structure of the group.    * @param options Configuration options that determine how the control propagates changes and    * emits events after the value is patched.    * * `onlySelf`: When true, each change only affects this control and not its parent. Default is    * true.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control value    * is updated. When false, no events are emitted. The configuration options are passed to    * the {@link AbstractControl#updateValueAndValidity updateValueAndValidity} method.    */   override patchValue(value: ɵFormGroupValue<TControl>, options: {     onlySelf?: boolean,     emitEvent?: boolean   } = {}): void {     // Even though the `value` argument type doesn't allow `null` and `undefined` values, the     // `patchValue` can be called recursively and inner data structures might have these values, so     // we just ignore such cases when a field containing FormGroup instance receives `null` or     // `undefined` as a value.     if (value == null /* both `null` and `undefined` */) return;     (Object.keys(value) as Array<keyof TControl>).forEach(name => {       // The compiler cannot see through the uninstantiated conditional type of `this.controls`, so       // `as any` is required.       const control = (this.controls as any)[name];       if (control) {         control.patchValue(             /* Guaranteed to be present, due to the outer forEach. */ value                 [name as keyof ɵFormGroupValue<TControl>]!,             {onlySelf: true, emitEvent: options.emitEvent});       }     });     this.updateValueAndValidity(options);   }    /**    * Resets the `FormGroup`, marks all descendants `pristine` and `untouched` and sets    * the value of all descendants to their default values, or null if no defaults were provided.    *    * You reset to a specific form state by passing in a map of states    * that matches the structure of your form, with control names as keys. The state    * is a standalone value or a form state object with both a value and a disabled    * status.    *    * @param value Resets the control with an initial value,    * or an object that defines the initial value and disabled state.    *    * @param options Configuration options that determine how the control propagates changes    * and emits events when the group is reset.    * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is    * false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control is reset.    * When false, no events are emitted.    * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity    * updateValueAndValidity} method.    *    * @usageNotes    *    * ### Reset the form group values    *    * ```ts    * const form = new FormGroup({    *   first: new FormControl('first name'),    *   last: new FormControl('last name')    * });    *    * console.log(form.value);  // {first: 'first name', last: 'last name'}    *    * form.reset({ first: 'name', last: 'last name' });    *    * console.log(form.value);  // {first: 'name', last: 'last name'}    * ```    *    * ### Reset the form group values and disabled status    *    * ```    * const form = new FormGroup({    *   first: new FormControl('first name'),    *   last: new FormControl('last name')    * });    *    * form.reset({    *   first: {value: 'name', disabled: true},    *   last: 'last'    * });    *    * console.log(form.value);  // {last: 'last'}    * console.log(form.get('first').status);  // 'DISABLED'    * ```    */   override reset(       value: ɵTypedOrUntyped<TControl, ɵFormGroupValue<TControl>, any> = {} as unknown as           ɵFormGroupValue<TControl>,       options: {onlySelf?: boolean, emitEvent?: boolean} = {}): void {     this._forEachChild((control, name) => {       control.reset((value as any)[name], {onlySelf: true, emitEvent: options.emitEvent});     });     this._updatePristine(options);     this._updateTouched(options);     this.updateValueAndValidity(options);   }    /**    * The aggregate value of the `FormGroup`, including any disabled controls.    *    * Retrieves all values regardless of disabled status.    */   override getRawValue(): ɵTypedOrUntyped<TControl, ɵFormGroupRawValue<TControl>, any> {     return this._reduceChildren({}, (acc, control, name) => {       (acc as any)[name] = (control as any).getRawValue();       return acc;     }) as any;   }    /** @internal */   override _syncPendingControls(): boolean {     let subtreeUpdated = this._reduceChildren(false, (updated: boolean, child) => {       return child._syncPendingControls() ? true : updated;     });     if (subtreeUpdated) this.updateValueAndValidity({onlySelf: true});     return subtreeUpdated;   }    /** @internal */   override _forEachChild(cb: (v: any, k: any) => void): void {     Object.keys(this.controls).forEach(key => {       // The list of controls can change (for ex. controls might be removed) while the loop       // is running (as a result of invoking Forms API in `valueChanges` subscription), so we       // have to null check before invoking the callback.       const control = (this.controls as any)[key];       control && cb(control, key);     });   }    /** @internal */   _setUpControls(): void {     this._forEachChild((control) => {       control.setParent(this);       control._registerOnCollectionChange(this._onCollectionChange);     });   }    /** @internal */   override _updateValue(): void {     (this as {value: any}).value = this._reduceValue();   }    /** @internal */   override _anyControls(condition: (c: AbstractControl) => boolean): boolean {     for (const [controlName, control] of Object.entries(this.controls)) {       if (this.contains(controlName as any) && condition(control as any)) {         return true;       }     }     return false;   }    /** @internal */   _reduceValue(): Partial<TControl> {     let acc: Partial<TControl> = {};     return this._reduceChildren(acc, (acc, control, name) => {       if (control.enabled || this.disabled) {         acc[name] = control.value;       }       return acc;     });   }    /** @internal */   _reduceChildren<T, K extends keyof TControl>(       initValue: T, fn: (acc: T, control: TControl[K], name: K) => T): T {     let res = initValue;     this._forEachChild((control: TControl[K], name: K) => {       res = fn(res, control, name);     });     return res;   }    /** @internal */   override _allControlsDisabled(): boolean {     for (const controlName of (Object.keys(this.controls) as Array<keyof TControl>)) {       if ((this.controls as any)[controlName].enabled) {         return false;       }     }     return Object.keys(this.controls).length > 0 || this.disabled;   }    /** @internal */   override _find(name: string|number): AbstractControl|null {     return this.controls.hasOwnProperty(name as string) ?         (this.controls as any)[name as keyof TControl] :         null;   } }  interface UntypedFormGroupCtor {   new(controls: {[key: string]: AbstractControl},       validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): UntypedFormGroup;    /**    * The presence of an explicit `prototype` property provides backwards-compatibility for apps that    * manually inspect the prototype chain.    */   prototype: FormGroup<any>; }  /**  * UntypedFormGroup is a non-strongly-typed version of @see FormGroup.  */ export type UntypedFormGroup = FormGroup<any>;  export const UntypedFormGroup: UntypedFormGroupCtor = FormGroup;  /**  * @description  * Asserts that the given control is an instance of `FormGroup`  *  * @publicApi  */ export const isFormGroup = (control: unknown): control is FormGroup => control instanceof FormGroup;  /**  * Tracks the value and validity state of a collection of `FormControl` instances, each of which has  * the same value type.  *  * `FormRecord` is very similar to {@link FormGroup}, except it can be used with a dynamic keys,  * with controls added and removed as needed.  *  * `FormRecord` accepts one generic argument, which describes the type of the controls it contains.  *  * @usageNotes  *  * ```  * let numbers = new FormRecord({bill: new FormControl('415-123-456')});  * numbers.addControl('bob', new FormControl('415-234-567'));  * numbers.removeControl('bill');  * ```  *  * @publicApi  */ export class FormRecord<TControl extends AbstractControl = AbstractControl> extends     FormGroup<{[key: string]: TControl}> {}  export interface FormRecord<TControl> {   /**    * Registers a control with the records's list of controls.    *    * See `FormGroup#registerControl` for additional information.    */   registerControl(name: string, control: TControl): TControl;    /**    * Add a control to this group.    *    * See `FormGroup#addControl` for additional information.    */   addControl(name: string, control: TControl, options?: {emitEvent?: boolean}): void;    /**    * Remove a control from this group.    *    * See `FormGroup#removeControl` for additional information.    */   removeControl(name: string, options?: {emitEvent?: boolean}): void;    /**    * Replace an existing control.    *    * See `FormGroup#setControl` for additional information.    */   setControl(name: string, control: TControl, options?: {emitEvent?: boolean}): void;    /**    * Check whether there is an enabled control with the given name in the group.    *    * See `FormGroup#contains` for additional information.    */   contains(controlName: string): boolean;    /**    * Sets the value of the `FormRecord`. It accepts an object that matches    * the structure of the group, with control names as keys.    *    * See `FormGroup#setValue` for additional information.    */   setValue(value: {[key: string]: ɵValue<TControl>}, options?: {     onlySelf?: boolean,     emitEvent?: boolean   }): void;    /**    * Patches the value of the `FormRecord`. It accepts an object with control    * names as keys, and does its best to match the values to the correct controls    * in the group.    *    * See `FormGroup#patchValue` for additional information.    */   patchValue(value: {[key: string]: ɵValue<TControl>}, options?: {     onlySelf?: boolean,     emitEvent?: boolean   }): void;    /**    * Resets the `FormRecord`, marks all descendants `pristine` and `untouched` and sets    * the value of all descendants to null.    *    * See `FormGroup#reset` for additional information.    */   reset(value?: {[key: string]: ɵValue<TControl>}, options?: {     onlySelf?: boolean,     emitEvent?: boolean   }): void;    /**    * The aggregate value of the `FormRecord`, including any disabled controls.    *    * See `FormGroup#getRawValue` for additional information.    */   getRawValue(): {[key: string]: ɵRawValue<TControl>}; }  /**  * @description  * Asserts that the given control is an instance of `FormRecord`  *  * @publicApi  */ export const isFormRecord = (control: unknown): control is FormRecord =>     control instanceof FormRecord; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Inject, InjectionToken, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors'; import {AbstractControl} from '../model/abstract_model'; import {FormArray} from '../model/form_array'; import {FormControl} from '../model/form_control'; import {FormGroup} from '../model/form_group'; import {getControlAsyncValidators, getControlValidators, mergeValidators} from '../validators';  import {AbstractControlDirective} from './abstract_control_directive'; import {AbstractFormGroupDirective} from './abstract_form_group_directive'; import {ControlContainer} from './control_container'; import {BuiltInControlValueAccessor, ControlValueAccessor} from './control_value_accessor'; import {DefaultValueAccessor} from './default_value_accessor'; import {NgControl} from './ng_control'; import {FormArrayName} from './reactive_directives/form_group_name'; import {ngModelWarning} from './reactive_errors'; import {AsyncValidatorFn, Validator, ValidatorFn} from './validators';  /**  * Token to provide to allow SetDisabledState to always be called when a CVA is added, regardless of  * whether the control is disabled or enabled.  *  * @see `FormsModule.withConfig`  */ export const CALL_SET_DISABLED_STATE = new InjectionToken(     'CallSetDisabledState', {providedIn: 'root', factory: () => setDisabledStateDefault});  /**  * The type for CALL_SET_DISABLED_STATE. If `always`, then ControlValueAccessor will always call  * `setDisabledState` when attached, which is the most correct behavior. Otherwise, it will only be  * called when disabled, which is the legacy behavior for compatibility.  *  * @publicApi  * @see `FormsModule.withConfig`  */ export type SetDisabledStateOption = 'whenDisabledForLegacyCode'|'always';  /**  * Whether to use the fixed setDisabledState behavior by default.  */ export const setDisabledStateDefault: SetDisabledStateOption = 'always';  export function controlPath(name: string|null, parent: ControlContainer): string[] {   return [...parent.path!, name!]; }  /**  * Links a Form control and a Form directive by setting up callbacks (such as `onChange`) on both  * instances. This function is typically invoked when form directive is being initialized.  *  * @param control Form control instance that should be linked.  * @param dir Directive that should be linked with a given control.  */ export function setUpControl(     control: FormControl, dir: NgControl,     callSetDisabledState: SetDisabledStateOption = setDisabledStateDefault): void {   if (typeof ngDevMode === 'undefined' || ngDevMode) {     if (!control) _throwError(dir, 'Cannot find control with');     if (!dir.valueAccessor) _throwMissingValueAccessorError(dir);   }    setUpValidators(control, dir);    dir.valueAccessor!.writeValue(control.value);    // The legacy behavior only calls the CVA's `setDisabledState` if the control is disabled.   // If the `callSetDisabledState` option is set to `always`, then this bug is fixed and   // the method is always called.   if (control.disabled || callSetDisabledState === 'always') {     dir.valueAccessor!.setDisabledState?.(control.disabled);   }    setUpViewChangePipeline(control, dir);   setUpModelChangePipeline(control, dir);    setUpBlurPipeline(control, dir);    setUpDisabledChangeHandler(control, dir); }  /**  * Reverts configuration performed by the `setUpControl` control function.  * Effectively disconnects form control with a given form directive.  * This function is typically invoked when corresponding form directive is being destroyed.  *  * @param control Form control which should be cleaned up.  * @param dir Directive that should be disconnected from a given control.  * @param validateControlPresenceOnChange Flag that indicates whether onChange handler should  *     contain asserts to verify that it's not called once directive is destroyed. We need this flag  *     to avoid potentially breaking changes caused by better control cleanup introduced in #39235.  */ export function cleanUpControl(     control: FormControl|null, dir: NgControl,     validateControlPresenceOnChange: boolean = true): void {   const noop = () => {     if (validateControlPresenceOnChange && (typeof ngDevMode === 'undefined' || ngDevMode)) {       _noControlError(dir);     }   };    // The `valueAccessor` field is typically defined on FromControl and FormControlName directive   // instances and there is a logic in `selectValueAccessor` function that throws if it's not the   // case. We still check the presence of `valueAccessor` before invoking its methods to make sure   // that cleanup works correctly if app code or tests are setup to ignore the error thrown from   // `selectValueAccessor`. See https://github.com/angular/angular/issues/40521.   if (dir.valueAccessor) {     dir.valueAccessor.registerOnChange(noop);     dir.valueAccessor.registerOnTouched(noop);   }    cleanUpValidators(control, dir);    if (control) {     dir._invokeOnDestroyCallbacks();     control._registerOnCollectionChange(() => {});   } }  function registerOnValidatorChange<V>(validators: (V|Validator)[], onChange: () => void): void {   validators.forEach((validator: V|Validator) => {     if ((<Validator>validator).registerOnValidatorChange)       (<Validator>validator).registerOnValidatorChange!(onChange);   }); }  /**  * Sets up disabled change handler function on a given form control if ControlValueAccessor  * associated with a given directive instance supports the `setDisabledState` call.  *  * @param control Form control where disabled change handler should be setup.  * @param dir Corresponding directive instance associated with this control.  */ export function setUpDisabledChangeHandler(control: FormControl, dir: NgControl): void {   if (dir.valueAccessor!.setDisabledState) {     const onDisabledChange = (isDisabled: boolean) => {       dir.valueAccessor!.setDisabledState!(isDisabled);     };     control.registerOnDisabledChange(onDisabledChange);      // Register a callback function to cleanup disabled change handler     // from a control instance when a directive is destroyed.     dir._registerOnDestroy(() => {       control._unregisterOnDisabledChange(onDisabledChange);     });   } }  /**  * Sets up sync and async directive validators on provided form control.  * This function merges validators from the directive into the validators of the control.  *  * @param control Form control where directive validators should be setup.  * @param dir Directive instance that contains validators to be setup.  */ export function setUpValidators(control: AbstractControl, dir: AbstractControlDirective): void {   const validators = getControlValidators(control);   if (dir.validator !== null) {     control.setValidators(mergeValidators<ValidatorFn>(validators, dir.validator));   } else if (typeof validators === 'function') {     // If sync validators are represented by a single validator function, we force the     // `Validators.compose` call to happen by executing the `setValidators` function with     // an array that contains that function. We need this to avoid possible discrepancies in     // validators behavior, so sync validators are always processed by the `Validators.compose`.     // Note: we should consider moving this logic inside the `setValidators` function itself, so we     // have consistent behavior on AbstractControl API level. The same applies to the async     // validators logic below.     control.setValidators([validators]);   }    const asyncValidators = getControlAsyncValidators(control);   if (dir.asyncValidator !== null) {     control.setAsyncValidators(         mergeValidators<AsyncValidatorFn>(asyncValidators, dir.asyncValidator));   } else if (typeof asyncValidators === 'function') {     control.setAsyncValidators([asyncValidators]);   }    // Re-run validation when validator binding changes, e.g. minlength=3 -> minlength=4   const onValidatorChange = () => control.updateValueAndValidity();   registerOnValidatorChange<ValidatorFn>(dir._rawValidators, onValidatorChange);   registerOnValidatorChange<AsyncValidatorFn>(dir._rawAsyncValidators, onValidatorChange); }  /**  * Cleans up sync and async directive validators on provided form control.  * This function reverts the setup performed by the `setUpValidators` function, i.e.  * removes directive-specific validators from a given control instance.  *  * @param control Form control from where directive validators should be removed.  * @param dir Directive instance that contains validators to be removed.  * @returns true if a control was updated as a result of this action.  */ export function cleanUpValidators(     control: AbstractControl|null, dir: AbstractControlDirective): boolean {   let isControlUpdated = false;   if (control !== null) {     if (dir.validator !== null) {       const validators = getControlValidators(control);       if (Array.isArray(validators) && validators.length > 0) {         // Filter out directive validator function.         const updatedValidators = validators.filter((validator) => validator !== dir.validator);         if (updatedValidators.length !== validators.length) {           isControlUpdated = true;           control.setValidators(updatedValidators);         }       }     }      if (dir.asyncValidator !== null) {       const asyncValidators = getControlAsyncValidators(control);       if (Array.isArray(asyncValidators) && asyncValidators.length > 0) {         // Filter out directive async validator function.         const updatedAsyncValidators =             asyncValidators.filter((asyncValidator) => asyncValidator !== dir.asyncValidator);         if (updatedAsyncValidators.length !== asyncValidators.length) {           isControlUpdated = true;           control.setAsyncValidators(updatedAsyncValidators);         }       }     }   }    // Clear onValidatorChange callbacks by providing a noop function.   const noop = () => {};   registerOnValidatorChange<ValidatorFn>(dir._rawValidators, noop);   registerOnValidatorChange<AsyncValidatorFn>(dir._rawAsyncValidators, noop);    return isControlUpdated; }  function setUpViewChangePipeline(control: FormControl, dir: NgControl): void {   dir.valueAccessor!.registerOnChange((newValue: any) => {     control._pendingValue = newValue;     control._pendingChange = true;     control._pendingDirty = true;      if (control.updateOn === 'change') updateControl(control, dir);   }); }  function setUpBlurPipeline(control: FormControl, dir: NgControl): void {   dir.valueAccessor!.registerOnTouched(() => {     control._pendingTouched = true;      if (control.updateOn === 'blur' && control._pendingChange) updateControl(control, dir);     if (control.updateOn !== 'submit') control.markAsTouched();   }); }  function updateControl(control: FormControl, dir: NgControl): void {   if (control._pendingDirty) control.markAsDirty();   control.setValue(control._pendingValue, {emitModelToViewChange: false});   dir.viewToModelUpdate(control._pendingValue);   control._pendingChange = false; }  function setUpModelChangePipeline(control: FormControl, dir: NgControl): void {   const onChange = (newValue?: any, emitModelEvent?: boolean) => {     // control -> view     dir.valueAccessor!.writeValue(newValue);      // control -> ngModel     if (emitModelEvent) dir.viewToModelUpdate(newValue);   };   control.registerOnChange(onChange);    // Register a callback function to cleanup onChange handler   // from a control instance when a directive is destroyed.   dir._registerOnDestroy(() => {     control._unregisterOnChange(onChange);   }); }  /**  * Links a FormGroup or FormArray instance and corresponding Form directive by setting up validators  * present in the view.  *  * @param control FormGroup or FormArray instance that should be linked.  * @param dir Directive that provides view validators.  */ export function setUpFormContainer(     control: FormGroup|FormArray, dir: AbstractFormGroupDirective|FormArrayName) {   if (control == null && (typeof ngDevMode === 'undefined' || ngDevMode))     _throwError(dir, 'Cannot find control with');   setUpValidators(control, dir); }  /**  * Reverts the setup performed by the `setUpFormContainer` function.  *  * @param control FormGroup or FormArray instance that should be cleaned up.  * @param dir Directive that provided view validators.  * @returns true if a control was updated as a result of this action.  */ export function cleanUpFormContainer(     control: FormGroup|FormArray, dir: AbstractFormGroupDirective|FormArrayName): boolean {   return cleanUpValidators(control, dir); }  function _noControlError(dir: NgControl) {   return _throwError(dir, 'There is no FormControl instance attached to form control element with'); }  function _throwError(dir: AbstractControlDirective, message: string): void {   const messageEnd = _describeControlLocation(dir);   throw new Error(`${message} ${messageEnd}`); }  function _describeControlLocation(dir: AbstractControlDirective): string {   const path = dir.path;   if (path && path.length > 1) return `path: '${path.join(' -> ')}'`;   if (path?.[0]) return `name: '${path}'`;   return 'unspecified name attribute'; }  function _throwMissingValueAccessorError(dir: AbstractControlDirective) {   const loc = _describeControlLocation(dir);   throw new RuntimeError(       RuntimeErrorCode.NG_MISSING_VALUE_ACCESSOR, `No value accessor for form control ${loc}.`); }  function _throwInvalidValueAccessorError(dir: AbstractControlDirective) {   const loc = _describeControlLocation(dir);   throw new RuntimeError(       RuntimeErrorCode.NG_VALUE_ACCESSOR_NOT_PROVIDED,       `Value accessor was not provided as an array for form control with ${loc}. ` +           `Check that the \\`NG_VALUE_ACCESSOR\\` token is configured as a \\`multi: true\\` provider.`); }  export function isPropertyUpdated(changes: {[key: string]: any}, viewModel: any): boolean {   if (!changes.hasOwnProperty('model')) return false;   const change = changes['model'];    if (change.isFirstChange()) return true;   return !Object.is(viewModel, change.currentValue); }  export function isBuiltInAccessor(valueAccessor: ControlValueAccessor): boolean {   // Check if a given value accessor is an instance of a class that directly extends   // `BuiltInControlValueAccessor` one.   return Object.getPrototypeOf(valueAccessor.constructor) === BuiltInControlValueAccessor; }  export function syncPendingControls(form: FormGroup, directives: Set<NgControl>|NgControl[]): void {   form._syncPendingControls();   directives.forEach((dir: NgControl) => {     const control = dir.control as FormControl;     if (control.updateOn === 'submit' && control._pendingChange) {       dir.viewToModelUpdate(control._pendingValue);       control._pendingChange = false;     }   }); }  // TODO: vsavkin remove it once https://github.com/angular/angular/issues/3011 is implemented export function selectValueAccessor(     dir: NgControl, valueAccessors: ControlValueAccessor[]): ControlValueAccessor|null {   if (!valueAccessors) return null;    if (!Array.isArray(valueAccessors) && (typeof ngDevMode === 'undefined' || ngDevMode))     _throwInvalidValueAccessorError(dir);    let defaultAccessor: ControlValueAccessor|undefined = undefined;   let builtinAccessor: ControlValueAccessor|undefined = undefined;   let customAccessor: ControlValueAccessor|undefined = undefined;    valueAccessors.forEach((v: ControlValueAccessor) => {     if (v.constructor === DefaultValueAccessor) {       defaultAccessor = v;     } else if (isBuiltInAccessor(v)) {       if (builtinAccessor && (typeof ngDevMode === 'undefined' || ngDevMode))         _throwError(dir, 'More than one built-in value accessor matches form control with');       builtinAccessor = v;     } else {       if (customAccessor && (typeof ngDevMode === 'undefined' || ngDevMode))         _throwError(dir, 'More than one custom value accessor matches form control with');       customAccessor = v;     }   });    if (customAccessor) return customAccessor;   if (builtinAccessor) return builtinAccessor;   if (defaultAccessor) return defaultAccessor;    if (typeof ngDevMode === 'undefined' || ngDevMode) {     _throwError(dir, 'No valid value accessor for form control with');   }   return null; }  export function removeListItem<T>(list: T[], el: T): void {   const index = list.indexOf(el);   if (index > -1) list.splice(index, 1); }  // TODO(kara): remove after deprecation period export function _ngModelWarning(     name: string, type: {_ngModelWarningSentOnce: boolean},     instance: {_ngModelWarningSent: boolean}, warningConfig: string|null) {   if (warningConfig === 'never') return;    if (((warningConfig === null || warningConfig === 'once') && !type._ngModelWarningSentOnce) ||       (warningConfig === 'always' && !instance._ngModelWarningSent)) {     console.warn(ngModelWarning(name));     type._ngModelWarningSentOnce = true;     instance._ngModelWarningSent = true;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AfterViewInit, Directive, EventEmitter, forwardRef, Inject, Input, Optional, Provider, Self} from '@angular/core';  import {AbstractControl, FormHooks} from '../model/abstract_model'; import {FormControl} from '../model/form_control'; import {FormGroup} from '../model/form_group'; import {composeAsyncValidators, composeValidators, NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../validators';  import {ControlContainer} from './control_container'; import {Form} from './form_interface'; import {NgControl} from './ng_control'; import {NgModel} from './ng_model'; import {NgModelGroup} from './ng_model_group'; import {CALL_SET_DISABLED_STATE, SetDisabledStateOption, setUpControl, setUpFormContainer, syncPendingControls} from './shared'; import {AsyncValidator, AsyncValidatorFn, Validator, ValidatorFn} from './validators';  const formDirectiveProvider: Provider = {   provide: ControlContainer,   useExisting: forwardRef(() => NgForm) };  const resolvedPromise = (() => Promise.resolve())();  /**  * @description  * Creates a top-level `FormGroup` instance and binds it to a form  * to track aggregate form value and validation status.  *  * As soon as you import the `FormsModule`, this directive becomes active by default on  * all `<form>` tags.  You don't need to add a special selector.  *  * You optionally export the directive into a local template variable using `ngForm` as the key  * (ex: `#myForm=\"ngForm\"`). This is optional, but useful.  Many properties from the underlying  * `FormGroup` instance are duplicated on the directive itself, so a reference to it  * gives you access to the aggregate value and validity status of the form, as well as  * user interaction properties like `dirty` and `touched`.  *  * To register child controls with the form, use `NgModel` with a `name`  * attribute. You may use `NgModelGroup` to create sub-groups within the form.  *  * If necessary, listen to the directive's `ngSubmit` event to be notified when the user has  * triggered a form submission. The `ngSubmit` event emits the original form  * submission event.  *  * In template driven forms, all `<form>` tags are automatically tagged as `NgForm`.  * To import the `FormsModule` but skip its usage in some forms,  * for example, to use native HTML5 validation, add the `ngNoForm` and the `<form>`  * tags won't create an `NgForm` directive. In reactive forms, using `ngNoForm` is  * unnecessary because the `<form>` tags are inert. In that case, you would  * refrain from using the `formGroup` directive.  *  * @usageNotes  *  * ### Listening for form submission  *  * The following example shows how to capture the form values from the \"ngSubmit\" event.  *  * {@example forms/ts/simpleForm/simple_form_example.ts region='Component'}  *  * ### Setting the update options  *  * The following example shows you how to change the \"updateOn\" option from its default using  * ngFormOptions.  *  * ```html  * <form [ngFormOptions]=\"{updateOn: 'blur'}\">  *    <input name=\"one\" ngModel>  <!-- this ngModel will update on blur -->  * </form>  * ```  *  * ### Native DOM validation UI  *  * In order to prevent the native DOM form validation UI from interfering with Angular's form  * validation, Angular automatically adds the `novalidate` attribute on any `<form>` whenever  * `FormModule` or `ReactiveFormModule` are imported into the application.  * If you want to explicitly enable native DOM validation UI with Angular forms, you can add the  * `ngNativeValidate` attribute to the `<form>` element:  *  * ```html  * <form ngNativeValidate>  *   ...  * </form>  * ```  *  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector: 'form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]',   providers: [formDirectiveProvider],   host: {'(submit)': 'onSubmit($event)', '(reset)': 'onReset()'},   outputs: ['ngSubmit'],   exportAs: 'ngForm' }) export class NgForm extends ControlContainer implements Form, AfterViewInit {   /**    * @description    * Returns whether the form submission has been triggered.    */   public readonly submitted: boolean = false;    private _directives = new Set<NgModel>();    /**    * @description    * The `FormGroup` instance created for this form.    */   form: FormGroup;    /**    * @description    * Event emitter for the \"ngSubmit\" event    */   ngSubmit = new EventEmitter();    /**    * @description    * Tracks options for the `NgForm` instance.    *    * **updateOn**: Sets the default `updateOn` value for all child `NgModels` below it    * unless explicitly set by a child `NgModel` using `ngModelOptions`). Defaults to 'change'.    * Possible values: `'change'` | `'blur'` | `'submit'`.    *    */   // TODO(issue/24571): remove '!'.   @Input('ngFormOptions') options!: {updateOn?: FormHooks};    constructor(       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[],       @Optional() @Inject(CALL_SET_DISABLED_STATE) private callSetDisabledState?:           SetDisabledStateOption) {     super();     this.form =         new FormGroup({}, composeValidators(validators), composeAsyncValidators(asyncValidators));   }    /** @nodoc */   ngAfterViewInit() {     this._setUpdateStrategy();   }    /**    * @description    * The directive instance.    */   override get formDirective(): Form {     return this;   }    /**    * @description    * The internal `FormGroup` instance.    */   override get control(): FormGroup {     return this.form;   }    /**    * @description    * Returns an array representing the path to this group. Because this directive    * always lives at the top level of a form, it is always an empty array.    */   override get path(): string[] {     return [];   }    /**    * @description    * Returns a map of the controls in this group.    */   get controls(): {[key: string]: AbstractControl} {     return this.form.controls;   }    /**    * @description    * Method that sets up the control directive in this group, re-calculates its value    * and validity, and adds the instance to the internal list of directives.    *    * @param dir The `NgModel` directive instance.    */   addControl(dir: NgModel): void {     resolvedPromise.then(() => {       const container = this._findContainer(dir.path);       (dir as {control: FormControl}).control =           <FormControl>container.registerControl(dir.name, dir.control);       setUpControl(dir.control, dir, this.callSetDisabledState);       dir.control.updateValueAndValidity({emitEvent: false});       this._directives.add(dir);     });   }    /**    * @description    * Retrieves the `FormControl` instance from the provided `NgModel` directive.    *    * @param dir The `NgModel` directive instance.    */   getControl(dir: NgModel): FormControl {     return <FormControl>this.form.get(dir.path);   }    /**    * @description    * Removes the `NgModel` instance from the internal list of directives    *    * @param dir The `NgModel` directive instance.    */   removeControl(dir: NgModel): void {     resolvedPromise.then(() => {       const container = this._findContainer(dir.path);       if (container) {         container.removeControl(dir.name);       }       this._directives.delete(dir);     });   }    /**    * @description    * Adds a new `NgModelGroup` directive instance to the form.    *    * @param dir The `NgModelGroup` directive instance.    */   addFormGroup(dir: NgModelGroup): void {     resolvedPromise.then(() => {       const container = this._findContainer(dir.path);       const group = new FormGroup({});       setUpFormContainer(group, dir);       container.registerControl(dir.name, group);       group.updateValueAndValidity({emitEvent: false});     });   }    /**    * @description    * Removes the `NgModelGroup` directive instance from the form.    *    * @param dir The `NgModelGroup` directive instance.    */   removeFormGroup(dir: NgModelGroup): void {     resolvedPromise.then(() => {       const container = this._findContainer(dir.path);       if (container) {         container.removeControl(dir.name);       }     });   }    /**    * @description    * Retrieves the `FormGroup` for a provided `NgModelGroup` directive instance    *    * @param dir The `NgModelGroup` directive instance.    */   getFormGroup(dir: NgModelGroup): FormGroup {     return <FormGroup>this.form.get(dir.path);   }    /**    * Sets the new value for the provided `NgControl` directive.    *    * @param dir The `NgControl` directive instance.    * @param value The new value for the directive's control.    */   updateModel(dir: NgControl, value: any): void {     resolvedPromise.then(() => {       const ctrl = <FormControl>this.form.get(dir.path!);       ctrl.setValue(value);     });   }    /**    * @description    * Sets the value for this `FormGroup`.    *    * @param value The new value    */   setValue(value: {[key: string]: any}): void {     this.control.setValue(value);   }    /**    * @description    * Method called when the \"submit\" event is triggered on the form.    * Triggers the `ngSubmit` emitter to emit the \"submit\" event as its payload.    *    * @param $event The \"submit\" event object    */   onSubmit($event: Event): boolean {     (this as {submitted: boolean}).submitted = true;     syncPendingControls(this.form, this._directives);     this.ngSubmit.emit($event);     // Forms with `method=\"dialog\"` have some special behavior     // that won't reload the page and that shouldn't be prevented.     return ($event?.target as HTMLFormElement | null)?.method === 'dialog';   }    /**    * @description    * Method called when the \"reset\" event is triggered on the form.    */   onReset(): void {     this.resetForm();   }    /**    * @description    * Resets the form to an initial value and resets its submitted status.    *    * @param value The new value for the form.    */   resetForm(value: any = undefined): void {     this.form.reset(value);     (this as {submitted: boolean}).submitted = false;   }    private _setUpdateStrategy() {     if (this.options && this.options.updateOn != null) {       this.form._updateOn = this.options.updateOn;     }   }    private _findContainer(path: string[]): FormGroup {     path.pop();     return path.length ? <FormGroup>this.form.get(path) : this.form;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  export function removeListItem<T>(list: T[], el: T): void {   const index = list.indexOf(el);   if (index > -1) list.splice(index, 1); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AsyncValidatorFn, ValidatorFn} from '../directives/validators'; import {removeListItem} from '../util';  import {AbstractControl, AbstractControlOptions, isOptionsObj, pickAsyncValidators, pickValidators} from './abstract_model';  /**  * FormControlState is a boxed form value. It is an object with a `value` key and a `disabled` key.  *  * @publicApi  */ export interface FormControlState<T> {   value: T;   disabled: boolean; }  /**  * Interface for options provided to a `FormControl`.  *  * This interface extends all options from {@link AbstractControlOptions}, plus some options  * unique to `FormControl`.  *  * @publicApi  */ export interface FormControlOptions extends AbstractControlOptions {   /**    * @description    * Whether to use the initial value used to construct the `FormControl` as its default value    * as well. If this option is false or not provided, the default value of a FormControl is `null`.    * When a FormControl is reset without an explicit value, its value reverts to    * its default value.    */   nonNullable?: boolean;    /**    * @deprecated Use `nonNullable` instead.    */   initialValueIsDefault?: boolean; }  /**  * Tracks the value and validation status of an individual form control.  *  * This is one of the four fundamental building blocks of Angular forms, along with  * `FormGroup`, `FormArray` and `FormRecord`. It extends the `AbstractControl` class that  * implements most of the base functionality for accessing the value, validation status,  * user interactions and events.  *  * `FormControl` takes a single generic argument, which describes the type of its value. This  * argument always implicitly includes `null` because the control can be reset. To change this  * behavior, set `nonNullable` or see the usage notes below.  *  * See [usage examples below](#usage-notes).  *  * @see `AbstractControl`  * @see [Reactive Forms Guide](guide/reactive-forms)  * @see [Usage Notes](#usage-notes)  *  * @publicApi  *  * @overriddenImplementation ɵFormControlCtor  *  * @usageNotes  *  * ### Initializing Form Controls  *  * Instantiate a `FormControl`, with an initial value.  *  * ```ts  * const control = new FormControl('some value');  * console.log(control.value);     // 'some value'  * ```  *  * The following example initializes the control with a form state object. The `value`  * and `disabled` keys are required in this case.  *  * ```ts  * const control = new FormControl({ value: 'n/a', disabled: true });  * console.log(control.value);     // 'n/a'  * console.log(control.status);    // 'DISABLED'  * ```  *  * The following example initializes the control with a synchronous validator.  *  * ```ts  * const control = new FormControl('', Validators.required);  * console.log(control.value);      // ''  * console.log(control.status);     // 'INVALID'  * ```  *  * The following example initializes the control using an options object.  *  * ```ts  * const control = new FormControl('', {  *    validators: Validators.required,  *    asyncValidators: myAsyncValidator  * });  * ```  *  * ### The single type argument  *  * `FormControl` accepts a generic argument, which describes the type of its value.  * In most cases, this argument will be inferred.  *  * If you are initializing the control to `null`, or you otherwise wish to provide a  * wider type, you may specify the argument explicitly:  *  * ```  * let fc = new FormControl<string|null>(null);  * fc.setValue('foo');  * ```  *  * You might notice that `null` is always added to the type of the control.  * This is because the control will become `null` if you call `reset`. You can change  * this behavior by setting `{nonNullable: true}`.  *  * ### Configure the control to update on a blur event  *  * Set the `updateOn` option to `'blur'` to update on the blur `event`.  *  * ```ts  * const control = new FormControl('', { updateOn: 'blur' });  * ```  *  * ### Configure the control to update on a submit event  *  * Set the `updateOn` option to `'submit'` to update on a submit `event`.  *  * ```ts  * const control = new FormControl('', { updateOn: 'submit' });  * ```  *  * ### Reset the control back to a specific value  *  * You reset to a specific form state by passing through a standalone  * value or a form state object that contains both a value and a disabled state  * (these are the only two properties that cannot be calculated).  *  * ```ts  * const control = new FormControl('Nancy');  *  * console.log(control.value); // 'Nancy'  *  * control.reset('Drew');  *  * console.log(control.value); // 'Drew'  * ```  *  * ### Reset the control to its initial value  *  * If you wish to always reset the control to its initial value (instead of null),  * you can pass the `nonNullable` option:  *  * ```  * const control = new FormControl('Nancy', {nonNullable: true});  *  * console.log(control.value); // 'Nancy'  *  * control.reset();  *  * console.log(control.value); // 'Nancy'  * ```  *  * ### Reset the control back to an initial value and disabled  *  * ```  * const control = new FormControl('Nancy');  *  * console.log(control.value); // 'Nancy'  * console.log(control.status); // 'VALID'  *  * control.reset({ value: 'Drew', disabled: true });  *  * console.log(control.value); // 'Drew'  * console.log(control.status); // 'DISABLED'  * ```  */ export interface FormControl<TValue = any> extends AbstractControl<TValue> {   /**    * The default value of this FormControl, used whenever the control is reset without an explicit    * value. See {@link FormControlOptions#nonNullable} for more information on configuring    * a default value.    */   readonly defaultValue: TValue;    /** @internal */   _onChange: Function[];    /**    * This field holds a pending value that has not yet been applied to the form's value.    * @internal    */   _pendingValue: TValue;    /** @internal */   _pendingChange: boolean;    /**    * Sets a new value for the form control.    *    * @param value The new value for the control.    * @param options Configuration options that determine how the control propagates changes    * and emits events when the value changes.    * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity    * updateValueAndValidity} method.    *    * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is    * false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control value is updated.    * When false, no events are emitted.    * * `emitModelToViewChange`: When true or not supplied  (the default), each change triggers an    * `onChange` event to    * update the view.    * * `emitViewToModelChange`: When true or not supplied (the default), each change triggers an    * `ngModelChange`    * event to update the model.    *    */   setValue(value: TValue, options?: {     onlySelf?: boolean,     emitEvent?: boolean,     emitModelToViewChange?: boolean,     emitViewToModelChange?: boolean   }): void;    /**    * Patches the value of a control.    *    * This function is functionally the same as {@link FormControl#setValue setValue} at this level.    * It exists for symmetry with {@link FormGroup#patchValue patchValue} on `FormGroups` and    * `FormArrays`, where it does behave differently.    *    * @see `setValue` for options    */   patchValue(value: TValue, options?: {     onlySelf?: boolean,     emitEvent?: boolean,     emitModelToViewChange?: boolean,     emitViewToModelChange?: boolean   }): void;    /**    * Resets the form control, marking it `pristine` and `untouched`, and resetting    * the value. The new value will be the provided value (if passed), `null`, or the initial value    * if `nonNullable` was set in the constructor via {@link FormControlOptions}.    *    * ```ts    * // By default, the control will reset to null.    * const dog = new FormControl('spot');    * dog.reset(); // dog.value is null    *    * // If this flag is set, the control will instead reset to the initial value.    * const cat = new FormControl('tabby', {nonNullable: true});    * cat.reset(); // cat.value is \"tabby\"    *    * // A value passed to reset always takes precedence.    * const fish = new FormControl('finn', {nonNullable: true});    * fish.reset('bubble'); // fish.value is \"bubble\"    * ```    *    * @param formState Resets the control with an initial value,    * or an object that defines the initial value and disabled state.    *    * @param options Configuration options that determine how the control propagates changes    * and emits events after the value changes.    *    * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is    * false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control is reset.    * When false, no events are emitted.    *    */   reset(formState?: TValue|FormControlState<TValue>, options?: {     onlySelf?: boolean,     emitEvent?: boolean   }): void;    /**    * For a simple FormControl, the raw value is equivalent to the value.    */   getRawValue(): TValue;    /**    * @internal    */   _updateValue(): void;    /**    * @internal    */   _anyControls(condition: (c: AbstractControl) => boolean): boolean;    /**    * @internal    */   _allControlsDisabled(): boolean;     /**    * Register a listener for change events.    *    * @param fn The method that is called when the value changes    */   registerOnChange(fn: Function): void;     /**    * Internal function to unregister a change events listener.    * @internal    */   _unregisterOnChange(fn: (value?: any, emitModelEvent?: boolean) => void): void;    /**    * Register a listener for disabled events.    *    * @param fn The method that is called when the disabled status changes.    */   registerOnDisabledChange(fn: (isDisabled: boolean) => void): void;    /**    * Internal function to unregister a disabled event listener.    * @internal    */   _unregisterOnDisabledChange(fn: (isDisabled: boolean) => void): void;    /**    * @internal    */   _forEachChild(cb: (c: AbstractControl) => void): void;    /** @internal */   _syncPendingControls(): boolean; }  // This internal interface is present to avoid a naming clash, resulting in the wrong `FormControl` // symbol being used. type FormControlInterface<TValue = any> = FormControl<TValue>;  /**  * Various available constructors for `FormControl`.  * Do not use this interface directly. Instead, use `FormControl`:  * ```  * const fc = new FormControl('foo');  * ```  * This symbol is prefixed with ɵ to make plain that it is an internal symbol.  */ export interface ɵFormControlCtor {   /**    * Construct a FormControl with no initial value or validators.    */   new(): FormControl<any>;    /**    * Creates a new `FormControl` instance.    *    * @param formState Initializes the control with an initial value,    * or an object that defines the initial value and disabled state.    *    * @param validatorOrOpts A synchronous validator function, or an array of    * such functions, or a `FormControlOptions` object that contains validation functions    * and a validation trigger.    *    * @param asyncValidator A single async validator or array of async validator functions    */   new<T = any>(value: FormControlState<T>|T, opts: FormControlOptions&{nonNullable: true}):       FormControl<T>;    /**    * @deprecated Use `nonNullable` instead.    */   new<T = any>(value: FormControlState<T>|T, opts: FormControlOptions&{     initialValueIsDefault: true   }): FormControl<T>;    /**    * @deprecated When passing an `options` argument, the `asyncValidator` argument has no effect.    */   new<T = any>(       value: FormControlState<T>|T, opts: FormControlOptions,       asyncValidator: AsyncValidatorFn|AsyncValidatorFn[]): FormControl<T|null>;    new<T = any>(       value: FormControlState<T>|T,       validatorOrOpts?: ValidatorFn|ValidatorFn[]|FormControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): FormControl<T|null>;    /**    * The presence of an explicit `prototype` property provides backwards-compatibility for apps that    * manually inspect the prototype chain.    */   prototype: FormControl<any>; }  function isFormControlState(formState: unknown): formState is FormControlState<unknown> {   return typeof formState === 'object' && formState !== null &&       Object.keys(formState).length === 2 && 'value' in formState && 'disabled' in formState; }  export const FormControl: ɵFormControlCtor =     (class FormControl<TValue = any> extends AbstractControl<          TValue> implements FormControlInterface<TValue> {       /** @publicApi */       public readonly defaultValue: TValue = null as unknown as TValue;        /** @internal */       _onChange: Array<Function> = [];        /** @internal */       _pendingValue!: TValue;        /** @internal */       _pendingChange: boolean = false;        constructor(           // formState and defaultValue will only be null if T is nullable           formState: FormControlState<TValue>|TValue = null as unknown as TValue,           validatorOrOpts?: ValidatorFn|ValidatorFn[]|FormControlOptions|null,           asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null) {         super(             pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts));         this._applyFormState(formState);         this._setUpdateStrategy(validatorOrOpts);         this._initObservables();         this.updateValueAndValidity({           onlySelf: true,           // If `asyncValidator` is present, it will trigger control status change from `PENDING` to           // `VALID` or `INVALID`.           // The status should be broadcasted via the `statusChanges` observable, so we set           // `emitEvent` to `true` to allow that during the control creation process.           emitEvent: !!this.asyncValidator         });         if (isOptionsObj(validatorOrOpts) &&             (validatorOrOpts.nonNullable || validatorOrOpts.initialValueIsDefault)) {           if (isFormControlState(formState)) {             this.defaultValue = formState.value;           } else {             this.defaultValue = formState;           }         }       }        override setValue(value: TValue, options: {         onlySelf?: boolean,         emitEvent?: boolean,         emitModelToViewChange?: boolean,         emitViewToModelChange?: boolean       } = {}): void {         (this as {value: TValue}).value = this._pendingValue = value;         if (this._onChange.length && options.emitModelToViewChange !== false) {           this._onChange.forEach(               (changeFn) => changeFn(this.value, options.emitViewToModelChange !== false));         }         this.updateValueAndValidity(options);       }        override patchValue(value: TValue, options: {         onlySelf?: boolean,         emitEvent?: boolean,         emitModelToViewChange?: boolean,         emitViewToModelChange?: boolean       } = {}): void {         this.setValue(value, options);       }        override reset(           formState: TValue|FormControlState<TValue> = this.defaultValue,           options: {onlySelf?: boolean, emitEvent?: boolean} = {}): void {         this._applyFormState(formState);         this.markAsPristine(options);         this.markAsUntouched(options);         this.setValue(this.value, options);         this._pendingChange = false;       }        /**  @internal */       override _updateValue(): void {}        /**  @internal */       override _anyControls(condition: (c: AbstractControl) => boolean): boolean {         return false;       }        /**  @internal */       override _allControlsDisabled(): boolean {         return this.disabled;       }        registerOnChange(fn: Function): void {         this._onChange.push(fn);       }        /** @internal */       _unregisterOnChange(fn: (value?: any, emitModelEvent?: boolean) => void): void {         removeListItem(this._onChange, fn);       }        registerOnDisabledChange(fn: (isDisabled: boolean) => void): void {         this._onDisabledChange.push(fn);       }        /** @internal */       _unregisterOnDisabledChange(fn: (isDisabled: boolean) => void): void {         removeListItem(this._onDisabledChange, fn);       }        /** @internal */       override _forEachChild(cb: (c: AbstractControl) => void): void {}        /** @internal */       override _syncPendingControls(): boolean {         if (this.updateOn === 'submit') {           if (this._pendingDirty) this.markAsDirty();           if (this._pendingTouched) this.markAsTouched();           if (this._pendingChange) {             this.setValue(this._pendingValue, {onlySelf: true, emitModelToViewChange: false});             return true;           }         }         return false;       }        private _applyFormState(formState: FormControlState<TValue>|TValue) {         if (isFormControlState(formState)) {           (this as {value: TValue}).value = this._pendingValue = formState.value;           formState.disabled ? this.disable({onlySelf: true, emitEvent: false}) :                                this.enable({onlySelf: true, emitEvent: false});         } else {           (this as {value: TValue}).value = this._pendingValue = formState;         }       }     });  interface UntypedFormControlCtor {   new(): UntypedFormControl;    new(formState?: any, validatorOrOpts?: ValidatorFn|ValidatorFn[]|FormControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): UntypedFormControl;    /**    * The presence of an explicit `prototype` property provides backwards-compatibility for apps that    * manually inspect the prototype chain.    */   prototype: FormControl<any>; }  /**  * UntypedFormControl is a non-strongly-typed version of @see FormControl.  */ export type UntypedFormControl = FormControl<any>;  export const UntypedFormControl: UntypedFormControlCtor = FormControl;  /**  * @description  * Asserts that the given control is an instance of `FormControl`  *  * @publicApi  */ export const isFormControl = (control: unknown): control is FormControl =>     control instanceof FormControl; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, OnDestroy, OnInit} from '@angular/core';  import {FormGroup} from '../model/form_group';  import {ControlContainer} from './control_container'; import {Form} from './form_interface'; import {controlPath} from './shared';    /**  * @description  * A base class for code shared between the `NgModelGroup` and `FormGroupName` directives.  *  * @publicApi  */ @Directive() export class AbstractFormGroupDirective extends ControlContainer implements OnInit, OnDestroy {   /**    * @description    * The parent control for the group    *    * @internal    */   // TODO(issue/24571): remove '!'.   _parent!: ControlContainer;    /** @nodoc */   ngOnInit(): void {     this._checkParentType();     // Register the group with its parent group.     this.formDirective!.addFormGroup(this);   }    /** @nodoc */   ngOnDestroy(): void {     if (this.formDirective) {       // Remove the group from its parent group.       this.formDirective.removeFormGroup(this);     }   }    /**    * @description    * The `FormGroup` bound to this directive.    */   override get control(): FormGroup {     return this.formDirective!.getFormGroup(this);   }    /**    * @description    * The path to this group from the top-level directive.    */   override get path(): string[] {     return controlPath(this.name == null ? this.name : this.name.toString(), this._parent);   }    /**    * @description    * The top-level directive for this group if present, otherwise null.    */   override get formDirective(): Form|null {     return this._parent ? this._parent.formDirective : null;   }    /** @internal */   _checkParentType(): void {} } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  import {formControlNameExample, formGroupNameExample, ngModelGroupExample, ngModelWithFormGroupExample} from './error_examples';   export function modelParentException(): Error {   return new RuntimeError(RuntimeErrorCode.NGMODEL_IN_FORM_GROUP, `     ngModel cannot be used to register form controls with a parent formGroup directive.  Try using     formGroup's partner directive \"formControlName\" instead.  Example:      ${formControlNameExample}      Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:      Example:      ${ngModelWithFormGroupExample}`); }  export function formGroupNameException(): Error {   return new RuntimeError(RuntimeErrorCode.NGMODEL_IN_FORM_GROUP_NAME, `     ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.      Option 1: Use formControlName instead of ngModel (reactive strategy):      ${formGroupNameExample}      Option 2:  Update ngModel's parent be ngModelGroup (template-driven strategy):      ${ngModelGroupExample}`); }  export function missingNameException(): Error {   return new RuntimeError(       RuntimeErrorCode.NGMODEL_WITHOUT_NAME,       `If ngModel is used within a form tag, either the name attribute must be set or the form     control must be defined as 'standalone' in ngModelOptions.      Example 1: <input [(ngModel)]=\"person.firstName\" name=\"first\">     Example 2: <input [(ngModel)]=\"person.firstName\" [ngModelOptions]=\"{standalone: true}\">`); }  export function modelGroupParentException(): Error {   return new RuntimeError(RuntimeErrorCode.NGMODELGROUP_IN_FORM_GROUP, `     ngModelGroup cannot be used with a parent formGroup directive.      Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):      ${formGroupNameExample}      Option 2:  Use a regular form tag instead of the formGroup directive (template-driven strategy):      ${ngModelGroupExample}`); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, forwardRef, Host, Inject, Input, OnDestroy, OnInit, Optional, Self, SkipSelf} from '@angular/core';  import {NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../validators';  import {AbstractFormGroupDirective} from './abstract_form_group_directive'; import {ControlContainer} from './control_container'; import {NgForm} from './ng_form'; import {modelGroupParentException} from './template_driven_errors'; import {AsyncValidator, AsyncValidatorFn, Validator, ValidatorFn} from './validators';  export const modelGroupProvider: any = {   provide: ControlContainer,   useExisting: forwardRef(() => NgModelGroup) };  /**  * @description  * Creates and binds a `FormGroup` instance to a DOM element.  *  * This directive can only be used as a child of `NgForm` (within `<form>` tags).  *  * Use this directive to validate a sub-group of your form separately from the  * rest of your form, or if some values in your domain model make more sense  * to consume together in a nested object.  *  * Provide a name for the sub-group and it will become the key  * for the sub-group in the form's full value. If you need direct access, export the directive into  * a local template variable using `ngModelGroup` (ex: `#myGroup=\"ngModelGroup\"`).  *  * @usageNotes  *  * ### Consuming controls in a grouping  *  * The following example shows you how to combine controls together in a sub-group  * of the form.  *  * {@example forms/ts/ngModelGroup/ng_model_group_example.ts region='Component'}  *  * @ngModule FormsModule  * @publicApi  */ @Directive({selector: '[ngModelGroup]', providers: [modelGroupProvider], exportAs: 'ngModelGroup'}) export class NgModelGroup extends AbstractFormGroupDirective implements OnInit, OnDestroy {   /**    * @description    * Tracks the name of the `NgModelGroup` bound to the directive. The name corresponds    * to a key in the parent `NgForm`.    */   // TODO(issue/24571): remove '!'.   @Input('ngModelGroup') override name!: string;    constructor(       @Host() @SkipSelf() parent: ControlContainer,       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[]) {     super();     this._parent = parent;     this._setValidators(validators);     this._setAsyncValidators(asyncValidators);   }    /** @internal */   override _checkParentType(): void {     if (!(this._parent instanceof NgModelGroup) && !(this._parent instanceof NgForm) &&         (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw modelGroupParentException();     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ChangeDetectorRef, Directive, EventEmitter, forwardRef, Host, Inject, Input, OnChanges, OnDestroy, Optional, Output, Provider, Self, SimpleChanges, ɵcoerceToBoolean as coerceToBoolean} from '@angular/core';  import {FormHooks} from '../model/abstract_model'; import {FormControl} from '../model/form_control'; import {NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../validators';  import {AbstractFormGroupDirective} from './abstract_form_group_directive'; import {ControlContainer} from './control_container'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor'; import {NgControl} from './ng_control'; import {NgForm} from './ng_form'; import {NgModelGroup} from './ng_model_group'; import {CALL_SET_DISABLED_STATE, controlPath, isPropertyUpdated, selectValueAccessor, SetDisabledStateOption, setUpControl} from './shared'; import {formGroupNameException, missingNameException, modelParentException} from './template_driven_errors'; import {AsyncValidator, AsyncValidatorFn, Validator, ValidatorFn} from './validators';  const formControlBinding: Provider = {   provide: NgControl,   useExisting: forwardRef(() => NgModel) };  /**  * `ngModel` forces an additional change detection run when its inputs change:  * E.g.:  * ```  * <div>{{myModel.valid}}</div>  * <input [(ngModel)]=\"myValue\" #myModel=\"ngModel\">  * ```  * I.e. `ngModel` can export itself on the element and then be used in the template.  * Normally, this would result in expressions before the `input` that use the exported directive  * to have an old value as they have been  * dirty checked before. As this is a very common case for `ngModel`, we added this second change  * detection run.  *  * Notes:  * - this is just one extra run no matter how many `ngModel`s have been changed.  * - this is a general problem when using `exportAs` for directives!  */ const resolvedPromise = (() => Promise.resolve())();  /**  * @description  * Creates a `FormControl` instance from a domain model and binds it  * to a form control element.  *  * The `FormControl` instance tracks the value, user interaction, and  * validation status of the control and keeps the view synced with the model. If used  * within a parent form, the directive also registers itself with the form as a child  * control.  *  * This directive is used by itself or as part of a larger form. Use the  * `ngModel` selector to activate it.  *  * It accepts a domain model as an optional `Input`. If you have a one-way binding  * to `ngModel` with `[]` syntax, changing the domain model's value in the component  * class sets the value in the view. If you have a two-way binding with `[()]` syntax  * (also known as 'banana-in-a-box syntax'), the value in the UI always syncs back to  * the domain model in your class.  *  * To inspect the properties of the associated `FormControl` (like the validity state),  * export the directive into a local template variable using `ngModel` as the key (ex:  * `#myVar=\"ngModel\"`). You can then access the control using the directive's `control` property.  * However, the most commonly used properties (like `valid` and `dirty`) also exist on the control  * for direct access. See a full list of properties directly available in  * `AbstractControlDirective`.  *  * @see `RadioControlValueAccessor`  * @see `SelectControlValueAccessor`  *  * @usageNotes  *  * ### Using ngModel on a standalone control  *  * The following examples show a simple standalone control using `ngModel`:  *  * {@example forms/ts/simpleNgModel/simple_ng_model_example.ts region='Component'}  *  * When using the `ngModel` within `<form>` tags, you'll also need to supply a `name` attribute  * so that the control can be registered with the parent form under that name.  *  * In the context of a parent form, it's often unnecessary to include one-way or two-way binding,  * as the parent form syncs the value for you. You access its properties by exporting it into a  * local template variable using `ngForm` such as (`#f=\"ngForm\"`). Use the variable where  * needed on form submission.  *  * If you do need to populate initial values into your form, using a one-way binding for  * `ngModel` tends to be sufficient as long as you use the exported form's value rather  * than the domain model's value on submit.  *  * ### Using ngModel within a form  *  * The following example shows controls using `ngModel` within a form:  *  * {@example forms/ts/simpleForm/simple_form_example.ts region='Component'}  *  * ### Using a standalone ngModel within a group  *  * The following example shows you how to use a standalone ngModel control  * within a form. This controls the display of the form, but doesn't contain form data.  *  * ```html  * <form>  *   <input name=\"login\" ngModel placeholder=\"Login\">  *   <input type=\"checkbox\" ngModel [ngModelOptions]=\"{standalone: true}\"> Show more options?  * </form>  * <!-- form value: {login: ''} -->  * ```  *  * ### Setting the ngModel `name` attribute through options  *  * The following example shows you an alternate way to set the name attribute. Here,  * an attribute identified as name is used within a custom form control component. To still be able  * to specify the NgModel's name, you must specify it using the `ngModelOptions` input instead.  *  * ```html  * <form>  *   <my-custom-form-control name=\"Nancy\" ngModel [ngModelOptions]=\"{name: 'user'}\">  *   </my-custom-form-control>  * </form>  * <!-- form value: {user: ''} -->  * ```  *  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector: '[ngModel]:not([formControlName]):not([formControl])',   providers: [formControlBinding],   exportAs: 'ngModel' }) export class NgModel extends NgControl implements OnChanges, OnDestroy {   public override readonly control: FormControl = new FormControl();    // At runtime we coerce arbitrary values assigned to the \"disabled\" input to a \"boolean\".   // This is not reflected in the type of the property because outside of templates, consumers   // should only deal with booleans. In templates, a string is allowed for convenience and to   // match the native \"disabled attribute\" semantics which can be observed on input elements.   // This static member tells the compiler that values of type \"string\" can also be assigned   // to the input in a template.   /** @nodoc */   static ngAcceptInputType_isDisabled: boolean|string;    /** @internal */   _registered = false;    /**    * Internal reference to the view model value.    * @nodoc    */   viewModel: any;    /**    * @description    * Tracks the name bound to the directive. If a parent form exists, it    * uses this name as a key to retrieve this control's value.    */   // TODO(issue/24571): remove '!'.   @Input() override name!: string;    /**    * @description    * Tracks whether the control is disabled.    */   // TODO(issue/24571): remove '!'.   @Input('disabled') isDisabled!: boolean;    /**    * @description    * Tracks the value bound to this directive.    */   @Input('ngModel') model: any;    /**    * @description    * Tracks the configuration options for this `ngModel` instance.    *    * **name**: An alternative to setting the name attribute on the form control element. See    * the [example](api/forms/NgModel#using-ngmodel-on-a-standalone-control) for using `NgModel`    * as a standalone control.    *    * **standalone**: When set to true, the `ngModel` will not register itself with its parent form,    * and acts as if it's not in the form. Defaults to false. If no parent form exists, this option    * has no effect.    *    * **updateOn**: Defines the event upon which the form control value and validity update.    * Defaults to 'change'. Possible values: `'change'` | `'blur'` | `'submit'`.    *    */   // TODO(issue/24571): remove '!'.   @Input('ngModelOptions') options!: {name?: string, standalone?: boolean, updateOn?: FormHooks};    /**    * @description    * Event emitter for producing the `ngModelChange` event after    * the view model updates.    */   @Output('ngModelChange') update = new EventEmitter();    constructor(       @Optional() @Host() parent: ControlContainer,       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[],       @Optional() @Self() @Inject(NG_VALUE_ACCESSOR) valueAccessors: ControlValueAccessor[],       @Optional() @Inject(ChangeDetectorRef) private _changeDetectorRef?: ChangeDetectorRef|null,       @Optional() @Inject(CALL_SET_DISABLED_STATE) private callSetDisabledState?:           SetDisabledStateOption) {     super();     this._parent = parent;     this._setValidators(validators);     this._setAsyncValidators(asyncValidators);     this.valueAccessor = selectValueAccessor(this, valueAccessors);   }    /** @nodoc */   ngOnChanges(changes: SimpleChanges) {     this._checkForErrors();     if (!this._registered || 'name' in changes) {       if (this._registered) {         this._checkName();         if (this.formDirective) {           // We can't call `formDirective.removeControl(this)`, because the `name` has already been           // changed. We also can't reset the name temporarily since the logic in `removeControl`           // is inside a promise and it won't run immediately. We work around it by giving it an           // object with the same shape instead.           const oldName = changes['name'].previousValue;           this.formDirective.removeControl({name: oldName, path: this._getPath(oldName)});         }       }       this._setUpControl();     }     if ('isDisabled' in changes) {       this._updateDisabled(changes);     }      if (isPropertyUpdated(changes, this.viewModel)) {       this._updateValue(this.model);       this.viewModel = this.model;     }   }    /** @nodoc */   ngOnDestroy(): void {     this.formDirective && this.formDirective.removeControl(this);   }    /**    * @description    * Returns an array that represents the path from the top-level form to this control.    * Each index is the string name of the control on that level.    */   override get path(): string[] {     return this._getPath(this.name);   }    /**    * @description    * The top-level directive for this control if present, otherwise null.    */   get formDirective(): any {     return this._parent ? this._parent.formDirective : null;   }    /**    * @description    * Sets the new value for the view model and emits an `ngModelChange` event.    *    * @param newValue The new value emitted by `ngModelChange`.    */   override viewToModelUpdate(newValue: any): void {     this.viewModel = newValue;     this.update.emit(newValue);   }    private _setUpControl(): void {     this._setUpdateStrategy();     this._isStandalone() ? this._setUpStandalone() : this.formDirective.addControl(this);     this._registered = true;   }    private _setUpdateStrategy(): void {     if (this.options && this.options.updateOn != null) {       this.control._updateOn = this.options.updateOn;     }   }    private _isStandalone(): boolean {     return !this._parent || !!(this.options && this.options.standalone);   }    private _setUpStandalone(): void {     setUpControl(this.control, this, this.callSetDisabledState);     this.control.updateValueAndValidity({emitEvent: false});   }    private _checkForErrors(): void {     if (!this._isStandalone()) {       this._checkParentType();     }     this._checkName();   }    private _checkParentType(): void {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       if (!(this._parent instanceof NgModelGroup) &&           this._parent instanceof AbstractFormGroupDirective) {         throw formGroupNameException();       } else if (!(this._parent instanceof NgModelGroup) && !(this._parent instanceof NgForm)) {         throw modelParentException();       }     }   }    private _checkName(): void {     if (this.options && this.options.name) this.name = this.options.name;      if (!this._isStandalone() && !this.name && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw missingNameException();     }   }    private _updateValue(value: any): void {     resolvedPromise.then(() => {       this.control.setValue(value, {emitViewToModelChange: false});       this._changeDetectorRef?.markForCheck();     });   }    private _updateDisabled(changes: SimpleChanges) {     const disabledValue = changes['isDisabled'].currentValue;     // checking for 0 to avoid breaking change     const isDisabled = disabledValue !== 0 && coerceToBoolean(disabledValue);      resolvedPromise.then(() => {       if (isDisabled && !this.control.disabled) {         this.control.disable();       } else if (!isDisabled && this.control.disabled) {         this.control.enable();       }        this._changeDetectorRef?.markForCheck();     });   }    private _getPath(controlName: string): string[] {     return this._parent ? controlPath(controlName, this._parent) : [controlName];   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive} from '@angular/core';  /**  * @description  *  * Adds `novalidate` attribute to all forms by default.  *  * `novalidate` is used to disable browser's native form validation.  *  * If you want to use native validation with Angular forms, just add `ngNativeValidate` attribute:  *  * ```  * <form ngNativeValidate></form>  * ```  *  * @publicApi  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  */ @Directive({   selector: 'form:not([ngNoForm]):not([ngNativeValidate])',   host: {'novalidate': ''}, }) export class ɵNgNoValidate { }  export {ɵNgNoValidate as NgNoValidate}; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef, forwardRef, Provider} from '@angular/core';  import {BuiltInControlValueAccessor, ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor';  const NUMBER_VALUE_ACCESSOR: Provider = {   provide: NG_VALUE_ACCESSOR,   useExisting: forwardRef(() => NumberValueAccessor),   multi: true };  /**  * @description  * The `ControlValueAccessor` for writing a number value and listening to number input changes.  * The value accessor is used by the `FormControlDirective`, `FormControlName`, and `NgModel`  * directives.  *  * @usageNotes  *  * ### Using a number input with a reactive form.  *  * The following example shows how to use a number input with a reactive form.  *  * ```ts  * const totalCountControl = new FormControl();  * ```  *  * ```  * <input type=\"number\" [formControl]=\"totalCountControl\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]',   host: {'(input)': 'onChange($event.target.value)', '(blur)': 'onTouched()'},   providers: [NUMBER_VALUE_ACCESSOR] }) export class NumberValueAccessor extends BuiltInControlValueAccessor implements     ControlValueAccessor {   /**    * Sets the \"value\" property on the input element.    * @nodoc    */   writeValue(value: number): void {     // The value needs to be normalized for IE9, otherwise it is set to 'null' when null     const normalizedValue = value == null ? '' : value;     this.setProperty('value', normalizedValue);   }    /**    * Registers a function called when the control value changes.    * @nodoc    */   override registerOnChange(fn: (_: number|null) => void): void {     this.onChange = (value) => {       fn(value == '' ? null : parseFloat(value));     };   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef, forwardRef, inject, Injectable, Injector, Input, NgModule, OnDestroy, OnInit, Provider, Renderer2, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  import {BuiltInControlValueAccessor, ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor'; import {NgControl} from './ng_control'; import {CALL_SET_DISABLED_STATE, setDisabledStateDefault, SetDisabledStateOption} from './shared';  const RADIO_VALUE_ACCESSOR: Provider = {   provide: NG_VALUE_ACCESSOR,   useExisting: forwardRef(() => RadioControlValueAccessor),   multi: true };  function throwNameError() {   throw new RuntimeError(RuntimeErrorCode.NAME_AND_FORM_CONTROL_NAME_MUST_MATCH, `       If you define both a name and a formControlName attribute on your radio button, their values       must match. Ex: <input type=\"radio\" formControlName=\"food\" name=\"food\">     `); }  /**  * Internal-only NgModule that works as a host for the `RadioControlRegistry` tree-shakable  * provider. Note: the `InternalFormsSharedModule` can not be used here directly, since it's  * declared *after* the `RadioControlRegistry` class and the `providedIn` doesn't support  * `forwardRef` logic.  */ @NgModule() export class RadioControlRegistryModule { }  /**  * @description  * Class used by Angular to track radio buttons. For internal use only.  */ @Injectable({providedIn: RadioControlRegistryModule}) export class RadioControlRegistry {   private _accessors: any[] = [];    /**    * @description    * Adds a control to the internal registry. For internal use only.    */   add(control: NgControl, accessor: RadioControlValueAccessor) {     this._accessors.push([control, accessor]);   }    /**    * @description    * Removes a control from the internal registry. For internal use only.    */   remove(accessor: RadioControlValueAccessor) {     for (let i = this._accessors.length - 1; i >= 0; --i) {       if (this._accessors[i][1] === accessor) {         this._accessors.splice(i, 1);         return;       }     }   }    /**    * @description    * Selects a radio button. For internal use only.    */   select(accessor: RadioControlValueAccessor) {     this._accessors.forEach((c) => {       if (this._isSameGroup(c, accessor) && c[1] !== accessor) {         c[1].fireUncheck(accessor.value);       }     });   }    private _isSameGroup(       controlPair: [NgControl, RadioControlValueAccessor],       accessor: RadioControlValueAccessor): boolean {     if (!controlPair[0].control) return false;     return controlPair[0]._parent === accessor._control._parent &&         controlPair[1].name === accessor.name;   } }  /**  * @description  * The `ControlValueAccessor` for writing radio control values and listening to radio control  * changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and  * `NgModel` directives.  *  * @usageNotes  *  * ### Using radio buttons with reactive form directives  *  * The follow example shows how to use radio buttons in a reactive form. When using radio buttons in  * a reactive form, radio buttons in the same group should have the same `formControlName`.  * Providing a `name` attribute is optional.  *  * {@example forms/ts/reactiveRadioButtons/reactive_radio_button_example.ts region='Reactive'}  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]',   host: {'(change)': 'onChange()', '(blur)': 'onTouched()'},   providers: [RADIO_VALUE_ACCESSOR] }) export class RadioControlValueAccessor extends BuiltInControlValueAccessor implements     ControlValueAccessor, OnDestroy, OnInit {   /** @internal */   // TODO(issue/24571): remove '!'.   _state!: boolean;   /** @internal */   // TODO(issue/24571): remove '!'.   _control!: NgControl;   /** @internal */   // TODO(issue/24571): remove '!'.   _fn!: Function;    private setDisabledStateFired = false;    /**    * The registered callback function called when a change event occurs on the input element.    * Note: we declare `onChange` here (also used as host listener) as a function with no arguments    * to override the `onChange` function (which expects 1 argument) in the parent    * `BaseControlValueAccessor` class.    * @nodoc    */   override onChange = () => {};    /**    * @description    * Tracks the name of the radio input element.    */   // TODO(issue/24571): remove '!'.   @Input() name!: string;    /**    * @description    * Tracks the name of the `FormControl` bound to the directive. The name corresponds    * to a key in the parent `FormGroup` or `FormArray`.    */   // TODO(issue/24571): remove '!'.   @Input() formControlName!: string;    /**    * @description    * Tracks the value of the radio input element    */   @Input() value: any;    private callSetDisabledState =       inject(CALL_SET_DISABLED_STATE, {optional: true}) ?? setDisabledStateDefault;    constructor(       renderer: Renderer2, elementRef: ElementRef, private _registry: RadioControlRegistry,       private _injector: Injector) {     super(renderer, elementRef);   }    /** @nodoc */   ngOnInit(): void {     this._control = this._injector.get(NgControl);     this._checkName();     this._registry.add(this._control, this);   }    /** @nodoc */   ngOnDestroy(): void {     this._registry.remove(this);   }    /**    * Sets the \"checked\" property value on the radio input element.    * @nodoc    */   writeValue(value: any): void {     this._state = value === this.value;     this.setProperty('checked', this._state);   }    /**    * Registers a function called when the control value changes.    * @nodoc    */   override registerOnChange(fn: (_: any) => {}): void {     this._fn = fn;     this.onChange = () => {       fn(this.value);       this._registry.select(this);     };   }    /** @nodoc */   override setDisabledState(isDisabled: boolean): void {     /**      * `setDisabledState` is supposed to be called whenever the disabled state of a control changes,      * including upon control creation. However, a longstanding bug caused the method to not fire      * when an *enabled* control was attached. This bug was fixed in v15 in #47576.      *      * This had a side effect: previously, it was possible to instantiate a reactive form control      * with `[attr.disabled]=true`, even though the the corresponding control was enabled in the      * model. This resulted in a mismatch between the model and the DOM. Now, because      * `setDisabledState` is always called, the value in the DOM will be immediately overwritten      * with the \"correct\" enabled value.      *      * However, the fix also created an exceptional case: radio buttons. Because Reactive Forms      * models the entire group of radio buttons as a single `FormControl`, there is no way to      * control the disabled state for individual radios, so they can no longer be configured as      * disabled. Thus, we keep the old behavior for radio buttons, so that `[attr.disabled]`      * continues to work. Specifically, we drop the first call to `setDisabledState` if `disabled`      * is `false`, and we are not in legacy mode.      */     if (this.setDisabledStateFired || isDisabled ||         this.callSetDisabledState === 'whenDisabledForLegacyCode') {       this.setProperty('disabled', isDisabled);     }     this.setDisabledStateFired = true;   }    /**    * Sets the \"value\" on the radio input element and unchecks it.    *    * @param value    */   fireUncheck(value: any): void {     this.writeValue(value);   }    private _checkName(): void {     if (this.name && this.formControlName && this.name !== this.formControlName &&         (typeof ngDevMode === 'undefined' || ngDevMode)) {       throwNameError();     }     if (!this.name && this.formControlName) this.name = this.formControlName;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, forwardRef, Provider} from '@angular/core';  import {BuiltInControlValueAccessor, ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor';  const RANGE_VALUE_ACCESSOR: Provider = {   provide: NG_VALUE_ACCESSOR,   useExisting: forwardRef(() => RangeValueAccessor),   multi: true };  /**  * @description  * The `ControlValueAccessor` for writing a range value and listening to range input changes.  * The value accessor is used by the `FormControlDirective`, `FormControlName`, and  `NgModel`  * directives.  *  * @usageNotes  *  * ### Using a range input with a reactive form  *  * The following example shows how to use a range input with a reactive form.  *  * ```ts  * const ageControl = new FormControl();  * ```  *  * ```  * <input type=\"range\" [formControl]=\"ageControl\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]',   host: {     '(change)': 'onChange($event.target.value)',     '(input)': 'onChange($event.target.value)',     '(blur)': 'onTouched()'   },   providers: [RANGE_VALUE_ACCESSOR] }) export class RangeValueAccessor extends BuiltInControlValueAccessor implements     ControlValueAccessor {   /**    * Sets the \"value\" property on the input element.    * @nodoc    */   writeValue(value: any): void {     this.setProperty('value', parseFloat(value));   }    /**    * Registers a function called when the control value changes.    * @nodoc    */   override registerOnChange(fn: (_: number|null) => void): void {     this.onChange = (value) => {       fn(value == '' ? null : parseFloat(value));     };   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, EventEmitter, forwardRef, Inject, InjectionToken, Input, OnChanges, OnDestroy, Optional, Output, Provider, Self, SimpleChanges} from '@angular/core';  import {FormControl} from '../../model/form_control'; import {NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../../validators'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '../control_value_accessor'; import {NgControl} from '../ng_control'; import {disabledAttrWarning} from '../reactive_errors'; import {_ngModelWarning, CALL_SET_DISABLED_STATE, cleanUpControl, isPropertyUpdated, selectValueAccessor, SetDisabledStateOption, setUpControl} from '../shared'; import {AsyncValidator, AsyncValidatorFn, Validator, ValidatorFn} from '../validators';   /**  * Token to provide to turn off the ngModel warning on formControl and formControlName.  */ export const NG_MODEL_WITH_FORM_CONTROL_WARNING =     new InjectionToken('NgModelWithFormControlWarning');  const formControlBinding: Provider = {   provide: NgControl,   useExisting: forwardRef(() => FormControlDirective) };  /**  * @description  * Synchronizes a standalone `FormControl` instance to a form control element.  *  * Note that support for using the `ngModel` input property and `ngModelChange` event with reactive  * form directives was deprecated in Angular v6 and is scheduled for removal in  * a future version of Angular.  * For details, see [Deprecated features](guide/deprecations#ngmodel-with-reactive-forms).  *  * @see [Reactive Forms Guide](guide/reactive-forms)  * @see `FormControl`  * @see `AbstractControl`  *  * @usageNotes  *  * The following example shows how to register a standalone control and set its value.  *  * {@example forms/ts/simpleFormControl/simple_form_control_example.ts region='Component'}  *  * @ngModule ReactiveFormsModule  * @publicApi  */ @Directive({selector: '[formControl]', providers: [formControlBinding], exportAs: 'ngForm'}) export class FormControlDirective extends NgControl implements OnChanges, OnDestroy {   /**    * Internal reference to the view model value.    * @nodoc    */   viewModel: any;    /**    * @description    * Tracks the `FormControl` instance bound to the directive.    */   // TODO(issue/24571): remove '!'.   @Input('formControl') form!: FormControl;    /**    * @description    * Triggers a warning in dev mode that this input should not be used with reactive forms.    */   @Input('disabled')   set isDisabled(isDisabled: boolean) {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       console.warn(disabledAttrWarning);     }   }    // TODO(kara): remove next 4 properties once deprecation period is over    /** @deprecated as of v6 */   @Input('ngModel') model: any;    /** @deprecated as of v6 */   @Output('ngModelChange') update = new EventEmitter();    /**    * @description    * Static property used to track whether any ngModel warnings have been sent across    * all instances of FormControlDirective. Used to support warning config of \"once\".    *    * @internal    */   static _ngModelWarningSentOnce = false;    /**    * @description    * Instance property used to track whether an ngModel warning has been sent out for this    * particular `FormControlDirective` instance. Used to support warning config of \"always\".    *    * @internal    */   _ngModelWarningSent = false;    constructor(       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[],       @Optional() @Self() @Inject(NG_VALUE_ACCESSOR) valueAccessors: ControlValueAccessor[],       @Optional() @Inject(NG_MODEL_WITH_FORM_CONTROL_WARNING) private _ngModelWarningConfig: string|       null,       @Optional() @Inject(CALL_SET_DISABLED_STATE) private callSetDisabledState?:           SetDisabledStateOption) {     super();     this._setValidators(validators);     this._setAsyncValidators(asyncValidators);     this.valueAccessor = selectValueAccessor(this, valueAccessors);   }    /** @nodoc */   ngOnChanges(changes: SimpleChanges): void {     if (this._isControlChanged(changes)) {       const previousForm = changes['form'].previousValue;       if (previousForm) {         cleanUpControl(previousForm, this, /* validateControlPresenceOnChange */ false);       }       setUpControl(this.form, this, this.callSetDisabledState);       this.form.updateValueAndValidity({emitEvent: false});     }     if (isPropertyUpdated(changes, this.viewModel)) {       if (typeof ngDevMode === 'undefined' || ngDevMode) {         _ngModelWarning('formControl', FormControlDirective, this, this._ngModelWarningConfig);       }       this.form.setValue(this.model);       this.viewModel = this.model;     }   }    /** @nodoc */   ngOnDestroy() {     if (this.form) {       cleanUpControl(this.form, this, /* validateControlPresenceOnChange */ false);     }   }    /**    * @description    * Returns an array that represents the path from the top-level form to this control.    * Each index is the string name of the control on that level.    */   override get path(): string[] {     return [];   }    /**    * @description    * The `FormControl` bound to this directive.    */   override get control(): FormControl {     return this.form;   }    /**    * @description    * Sets the new value for the view model and emits an `ngModelChange` event.    *    * @param newValue The new value for the view model.    */   override viewToModelUpdate(newValue: any): void {     this.viewModel = newValue;     this.update.emit(newValue);   }    private _isControlChanged(changes: {[key: string]: any}): boolean {     return changes.hasOwnProperty('form');   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, EventEmitter, forwardRef, Inject, Input, OnChanges, OnDestroy, Optional, Output, Provider, Self, SimpleChanges} from '@angular/core';  import {FormArray} from '../../model/form_array'; import {FormControl, isFormControl} from '../../model/form_control'; import {FormGroup} from '../../model/form_group'; import {NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../../validators'; import {ControlContainer} from '../control_container'; import {Form} from '../form_interface'; import {missingFormException} from '../reactive_errors'; import {CALL_SET_DISABLED_STATE, cleanUpControl, cleanUpFormContainer, cleanUpValidators, removeListItem, SetDisabledStateOption, setUpControl, setUpFormContainer, setUpValidators, syncPendingControls} from '../shared'; import {AsyncValidator, AsyncValidatorFn, Validator, ValidatorFn} from '../validators';  import {FormControlName} from './form_control_name'; import {FormArrayName, FormGroupName} from './form_group_name';  const formDirectiveProvider: Provider = {   provide: ControlContainer,   useExisting: forwardRef(() => FormGroupDirective) };  /**  * @description  *  * Binds an existing `FormGroup` or `FormRecord` to a DOM element.  *  * This directive accepts an existing `FormGroup` instance. It will then use this  * `FormGroup` instance to match any child `FormControl`, `FormGroup`/`FormRecord`,  * and `FormArray` instances to child `FormControlName`, `FormGroupName`,  * and `FormArrayName` directives.  *  * @see [Reactive Forms Guide](guide/reactive-forms)  * @see `AbstractControl`  *  * @usageNotes  * ### Register Form Group  *  * The following example registers a `FormGroup` with first name and last name controls,  * and listens for the *ngSubmit* event when the button is clicked.  *  * {@example forms/ts/simpleFormGroup/simple_form_group_example.ts region='Component'}  *  * @ngModule ReactiveFormsModule  * @publicApi  */ @Directive({   selector: '[formGroup]',   providers: [formDirectiveProvider],   host: {'(submit)': 'onSubmit($event)', '(reset)': 'onReset()'},   exportAs: 'ngForm' }) export class FormGroupDirective extends ControlContainer implements Form, OnChanges, OnDestroy {   /**    * @description    * Reports whether the form submission has been triggered.    */   public readonly submitted: boolean = false;    /**    * Reference to an old form group input value, which is needed to cleanup old instance in case it    * was replaced with a new one.    */   private _oldForm: FormGroup|undefined;    /**    * Callback that should be invoked when controls in FormGroup or FormArray collection change    * (added or removed). This callback triggers corresponding DOM updates.    */   private readonly _onCollectionChange = () => this._updateDomValue();    /**    * @description    * Tracks the list of added `FormControlName` instances    */   directives: FormControlName[] = [];    /**    * @description    * Tracks the `FormGroup` bound to this directive.    */   @Input('formGroup') form: FormGroup = null!;    /**    * @description    * Emits an event when the form submission has been triggered.    */   @Output() ngSubmit = new EventEmitter();    constructor(       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[],       @Optional() @Inject(CALL_SET_DISABLED_STATE) private callSetDisabledState?:           SetDisabledStateOption) {     super();     this._setValidators(validators);     this._setAsyncValidators(asyncValidators);   }    /** @nodoc */   ngOnChanges(changes: SimpleChanges): void {     this._checkFormPresent();     if (changes.hasOwnProperty('form')) {       this._updateValidators();       this._updateDomValue();       this._updateRegistrations();       this._oldForm = this.form;     }   }    /** @nodoc */   ngOnDestroy() {     if (this.form) {       cleanUpValidators(this.form, this);        // Currently the `onCollectionChange` callback is rewritten each time the       // `_registerOnCollectionChange` function is invoked. The implication is that cleanup should       // happen *only* when the `onCollectionChange` callback was set by this directive instance.       // Otherwise it might cause overriding a callback of some other directive instances. We should       // consider updating this logic later to make it similar to how `onChange` callbacks are       // handled, see https://github.com/angular/angular/issues/39732 for additional info.       if (this.form._onCollectionChange === this._onCollectionChange) {         this.form._registerOnCollectionChange(() => {});       }     }   }    /**    * @description    * Returns this directive's instance.    */   override get formDirective(): Form {     return this;   }    /**    * @description    * Returns the `FormGroup` bound to this directive.    */   override get control(): FormGroup {     return this.form;   }    /**    * @description    * Returns an array representing the path to this group. Because this directive    * always lives at the top level of a form, it always an empty array.    */   override get path(): string[] {     return [];   }    /**    * @description    * Method that sets up the control directive in this group, re-calculates its value    * and validity, and adds the instance to the internal list of directives.    *    * @param dir The `FormControlName` directive instance.    */   addControl(dir: FormControlName): FormControl {     const ctrl: any = this.form.get(dir.path);     setUpControl(ctrl, dir, this.callSetDisabledState);     ctrl.updateValueAndValidity({emitEvent: false});     this.directives.push(dir);     return ctrl;   }    /**    * @description    * Retrieves the `FormControl` instance from the provided `FormControlName` directive    *    * @param dir The `FormControlName` directive instance.    */   getControl(dir: FormControlName): FormControl {     return <FormControl>this.form.get(dir.path);   }    /**    * @description    * Removes the `FormControlName` instance from the internal list of directives    *    * @param dir The `FormControlName` directive instance.    */   removeControl(dir: FormControlName): void {     cleanUpControl(dir.control || null, dir, /* validateControlPresenceOnChange */ false);     removeListItem(this.directives, dir);   }    /**    * Adds a new `FormGroupName` directive instance to the form.    *    * @param dir The `FormGroupName` directive instance.    */   addFormGroup(dir: FormGroupName): void {     this._setUpFormContainer(dir);   }    /**    * Performs the necessary cleanup when a `FormGroupName` directive instance is removed from the    * view.    *    * @param dir The `FormGroupName` directive instance.    */   removeFormGroup(dir: FormGroupName): void {     this._cleanUpFormContainer(dir);   }    /**    * @description    * Retrieves the `FormGroup` for a provided `FormGroupName` directive instance    *    * @param dir The `FormGroupName` directive instance.    */   getFormGroup(dir: FormGroupName): FormGroup {     return <FormGroup>this.form.get(dir.path);   }    /**    * Performs the necessary setup when a `FormArrayName` directive instance is added to the view.    *    * @param dir The `FormArrayName` directive instance.    */   addFormArray(dir: FormArrayName): void {     this._setUpFormContainer(dir);   }    /**    * Performs the necessary cleanup when a `FormArrayName` directive instance is removed from the    * view.    *    * @param dir The `FormArrayName` directive instance.    */   removeFormArray(dir: FormArrayName): void {     this._cleanUpFormContainer(dir);   }    /**    * @description    * Retrieves the `FormArray` for a provided `FormArrayName` directive instance.    *    * @param dir The `FormArrayName` directive instance.    */   getFormArray(dir: FormArrayName): FormArray {     return <FormArray>this.form.get(dir.path);   }    /**    * Sets the new value for the provided `FormControlName` directive.    *    * @param dir The `FormControlName` directive instance.    * @param value The new value for the directive's control.    */   updateModel(dir: FormControlName, value: any): void {     const ctrl = <FormControl>this.form.get(dir.path);     ctrl.setValue(value);   }    /**    * @description    * Method called with the \"submit\" event is triggered on the form.    * Triggers the `ngSubmit` emitter to emit the \"submit\" event as its payload.    *    * @param $event The \"submit\" event object    */   onSubmit($event: Event): boolean {     (this as {submitted: boolean}).submitted = true;     syncPendingControls(this.form, this.directives);     this.ngSubmit.emit($event);     // Forms with `method=\"dialog\"` have some special behavior that won't reload the page and that     // shouldn't be prevented. Note that we need to null check the `event` and the `target`, because     // some internal apps call this method directly with the wrong arguments.     return ($event?.target as HTMLFormElement | null)?.method === 'dialog';   }    /**    * @description    * Method called when the \"reset\" event is triggered on the form.    */   onReset(): void {     this.resetForm();   }    /**    * @description    * Resets the form to an initial value and resets its submitted status.    *    * @param value The new value for the form.    */   resetForm(value: any = undefined): void {     this.form.reset(value);     (this as {submitted: boolean}).submitted = false;   }    /** @internal */   _updateDomValue() {     this.directives.forEach(dir => {       const oldCtrl = dir.control;       const newCtrl = this.form.get(dir.path);       if (oldCtrl !== newCtrl) {         // Note: the value of the `dir.control` may not be defined, for example when it's a first         // `FormControl` that is added to a `FormGroup` instance (via `addControl` call).         cleanUpControl(oldCtrl || null, dir);          // Check whether new control at the same location inside the corresponding `FormGroup` is an         // instance of `FormControl` and perform control setup only if that's the case.         // Note: we don't need to clear the list of directives (`this.directives`) here, it would be         // taken care of in the `removeControl` method invoked when corresponding `formControlName`         // directive instance is being removed (invoked from `FormControlName.ngOnDestroy`).         if (isFormControl(newCtrl)) {           setUpControl(newCtrl, dir, this.callSetDisabledState);           (dir as {control: FormControl}).control = newCtrl;         }       }     });      this.form._updateTreeValidity({emitEvent: false});   }    private _setUpFormContainer(dir: FormArrayName|FormGroupName): void {     const ctrl: any = this.form.get(dir.path);     setUpFormContainer(ctrl, dir);     // NOTE: this operation looks unnecessary in case no new validators were added in     // `setUpFormContainer` call. Consider updating this code to match the logic in     // `_cleanUpFormContainer` function.     ctrl.updateValueAndValidity({emitEvent: false});   }    private _cleanUpFormContainer(dir: FormArrayName|FormGroupName): void {     if (this.form) {       const ctrl: any = this.form.get(dir.path);       if (ctrl) {         const isControlUpdated = cleanUpFormContainer(ctrl, dir);         if (isControlUpdated) {           // Run validity check only in case a control was updated (i.e. view validators were           // removed) as removing view validators might cause validity to change.           ctrl.updateValueAndValidity({emitEvent: false});         }       }     }   }    private _updateRegistrations() {     this.form._registerOnCollectionChange(this._onCollectionChange);     if (this._oldForm) {       this._oldForm._registerOnCollectionChange(() => {});     }   }    private _updateValidators() {     setUpValidators(this.form, this);     if (this._oldForm) {       cleanUpValidators(this._oldForm, this);     }   }    private _checkFormPresent() {     if (!this.form && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw missingFormException();     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, forwardRef, Host, Inject, Input, OnDestroy, OnInit, Optional, Provider, Self, SkipSelf} from '@angular/core';  import {FormArray} from '../../model/form_array'; import {NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../../validators'; import {AbstractFormGroupDirective} from '../abstract_form_group_directive'; import {ControlContainer} from '../control_container'; import {arrayParentException, groupParentException} from '../reactive_errors'; import {controlPath} from '../shared'; import {AsyncValidator, AsyncValidatorFn, Validator, ValidatorFn} from '../validators';  import {FormGroupDirective} from './form_group_directive';  const formGroupNameProvider: Provider = {   provide: ControlContainer,   useExisting: forwardRef(() => FormGroupName) };  /**  * @description  *  * Syncs a nested `FormGroup` or `FormRecord` to a DOM element.  *  * This directive can only be used with a parent `FormGroupDirective`.  *  * It accepts the string name of the nested `FormGroup` or `FormRecord` to link, and  * looks for a `FormGroup` or `FormRecord` registered with that name in the parent  * `FormGroup` instance you passed into `FormGroupDirective`.  *  * Use nested form groups to validate a sub-group of a  * form separately from the rest or to group the values of certain  * controls into their own nested object.  *  * @see [Reactive Forms Guide](guide/reactive-forms)  *  * @usageNotes  *  * ### Access the group by name  *  * The following example uses the `AbstractControl.get` method to access the  * associated `FormGroup`  *  * ```ts  *   this.form.get('name');  * ```  *  * ### Access individual controls in the group  *  * The following example uses the `AbstractControl.get` method to access  * individual controls within the group using dot syntax.  *  * ```ts  *   this.form.get('name.first');  * ```  *  * ### Register a nested `FormGroup`.  *  * The following example registers a nested *name* `FormGroup` within an existing `FormGroup`,  * and provides methods to retrieve the nested `FormGroup` and individual controls.  *  * {@example forms/ts/nestedFormGroup/nested_form_group_example.ts region='Component'}  *  * @ngModule ReactiveFormsModule  * @publicApi  */ @Directive({selector: '[formGroupName]', providers: [formGroupNameProvider]}) export class FormGroupName extends AbstractFormGroupDirective implements OnInit, OnDestroy {   /**    * @description    * Tracks the name of the `FormGroup` bound to the directive. The name corresponds    * to a key in the parent `FormGroup` or `FormArray`.    * Accepts a name as a string or a number.    * The name in the form of a string is useful for individual forms,    * while the numerical form allows for form groups to be bound    * to indices when iterating over groups in a `FormArray`.    */   // TODO(issue/24571): remove '!'.   @Input('formGroupName') override name!: string|number|null;    constructor(       @Optional() @Host() @SkipSelf() parent: ControlContainer,       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[]) {     super();     this._parent = parent;     this._setValidators(validators);     this._setAsyncValidators(asyncValidators);   }    /** @internal */   override _checkParentType(): void {     if (_hasInvalidParent(this._parent) && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw groupParentException();     }   } }  export const formArrayNameProvider: any = {   provide: ControlContainer,   useExisting: forwardRef(() => FormArrayName) };  /**  * @description  *  * Syncs a nested `FormArray` to a DOM element.  *  * This directive is designed to be used with a parent `FormGroupDirective` (selector:  * `[formGroup]`).  *  * It accepts the string name of the nested `FormArray` you want to link, and  * will look for a `FormArray` registered with that name in the parent  * `FormGroup` instance you passed into `FormGroupDirective`.  *  * @see [Reactive Forms Guide](guide/reactive-forms)  * @see `AbstractControl`  *  * @usageNotes  *  * ### Example  *  * {@example forms/ts/nestedFormArray/nested_form_array_example.ts region='Component'}  *  * @ngModule ReactiveFormsModule  * @publicApi  */ @Directive({selector: '[formArrayName]', providers: [formArrayNameProvider]}) export class FormArrayName extends ControlContainer implements OnInit, OnDestroy {   /** @internal */   _parent: ControlContainer;    /**    * @description    * Tracks the name of the `FormArray` bound to the directive. The name corresponds    * to a key in the parent `FormGroup` or `FormArray`.    * Accepts a name as a string or a number.    * The name in the form of a string is useful for individual forms,    * while the numerical form allows for form arrays to be bound    * to indices when iterating over arrays in a `FormArray`.    */   // TODO(issue/24571): remove '!'.   @Input('formArrayName') override name!: string|number|null;    constructor(       @Optional() @Host() @SkipSelf() parent: ControlContainer,       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[]) {     super();     this._parent = parent;     this._setValidators(validators);     this._setAsyncValidators(asyncValidators);   }    /**    * A lifecycle method called when the directive's inputs are initialized. For internal use only.    * @throws If the directive does not have a valid parent.    * @nodoc    */   ngOnInit(): void {     this._checkParentType();     this.formDirective!.addFormArray(this);   }    /**    * A lifecycle method called before the directive's instance is destroyed. For internal use only.    * @nodoc    */   ngOnDestroy(): void {     if (this.formDirective) {       this.formDirective.removeFormArray(this);     }   }    /**    * @description    * The `FormArray` bound to this directive.    */   override get control(): FormArray {     return this.formDirective!.getFormArray(this);   }    /**    * @description    * The top-level directive for this group if present, otherwise null.    */   override get formDirective(): FormGroupDirective|null {     return this._parent ? <FormGroupDirective>this._parent.formDirective : null;   }    /**    * @description    * Returns an array that represents the path from the top-level form to this control.    * Each index is the string name of the control on that level.    */   override get path(): string[] {     return controlPath(this.name == null ? this.name : this.name.toString(), this._parent);   }    private _checkParentType(): void {     if (_hasInvalidParent(this._parent) && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw arrayParentException();     }   } }  function _hasInvalidParent(parent: ControlContainer): boolean {   return !(parent instanceof FormGroupName) && !(parent instanceof FormGroupDirective) &&       !(parent instanceof FormArrayName); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, EventEmitter, forwardRef, Host, Inject, Input, OnChanges, OnDestroy, Optional, Output, Provider, Self, SimpleChanges, SkipSelf} from '@angular/core';  import {FormControl} from '../../model/form_control'; import {NG_ASYNC_VALIDATORS, NG_VALIDATORS} from '../../validators'; import {AbstractFormGroupDirective} from '../abstract_form_group_directive'; import {ControlContainer} from '../control_container'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '../control_value_accessor'; import {NgControl} from '../ng_control'; import {controlParentException, disabledAttrWarning, ngModelGroupException} from '../reactive_errors'; import {_ngModelWarning, controlPath, isPropertyUpdated, selectValueAccessor} from '../shared'; import {AsyncValidator, AsyncValidatorFn, Validator, ValidatorFn} from '../validators';  import {NG_MODEL_WITH_FORM_CONTROL_WARNING} from './form_control_directive'; import {FormGroupDirective} from './form_group_directive'; import {FormArrayName, FormGroupName} from './form_group_name';  const controlNameBinding: Provider = {   provide: NgControl,   useExisting: forwardRef(() => FormControlName) };  /**  * @description  * Syncs a `FormControl` in an existing `FormGroup` to a form control  * element by name.  *  * @see [Reactive Forms Guide](guide/reactive-forms)  * @see `FormControl`  * @see `AbstractControl`  *  * @usageNotes  *  * ### Register `FormControl` within a group  *  * The following example shows how to register multiple form controls within a form group  * and set their value.  *  * {@example forms/ts/simpleFormGroup/simple_form_group_example.ts region='Component'}  *  * To see `formControlName` examples with different form control types, see:  *  * * Radio buttons: `RadioControlValueAccessor`  * * Selects: `SelectControlValueAccessor`  *  * ### Use with ngModel is deprecated  *  * Support for using the `ngModel` input property and `ngModelChange` event with reactive  * form directives has been deprecated in Angular v6 and is scheduled for removal in  * a future version of Angular.  *  * For details, see [Deprecated features](guide/deprecations#ngmodel-with-reactive-forms).  *  * @ngModule ReactiveFormsModule  * @publicApi  */ @Directive({selector: '[formControlName]', providers: [controlNameBinding]}) export class FormControlName extends NgControl implements OnChanges, OnDestroy {   private _added = false;   /**    * Internal reference to the view model value.    * @internal    */   viewModel: any;    /**    * @description    * Tracks the `FormControl` instance bound to the directive.    */   // TODO(issue/24571): remove '!'.   override readonly control!: FormControl;    /**    * @description    * Tracks the name of the `FormControl` bound to the directive. The name corresponds    * to a key in the parent `FormGroup` or `FormArray`.    * Accepts a name as a string or a number.    * The name in the form of a string is useful for individual forms,    * while the numerical form allows for form controls to be bound    * to indices when iterating over controls in a `FormArray`.    */   // TODO(issue/24571): remove '!'.   @Input('formControlName') override name!: string|number|null;    /**    * @description    * Triggers a warning in dev mode that this input should not be used with reactive forms.    */   @Input('disabled')   set isDisabled(isDisabled: boolean) {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       console.warn(disabledAttrWarning);     }   }    // TODO(kara): remove next 4 properties once deprecation period is over    /** @deprecated as of v6 */   @Input('ngModel') model: any;    /** @deprecated as of v6 */   @Output('ngModelChange') update = new EventEmitter();    /**    * @description    * Static property used to track whether any ngModel warnings have been sent across    * all instances of FormControlName. Used to support warning config of \"once\".    *    * @internal    */   static _ngModelWarningSentOnce = false;    /**    * @description    * Instance property used to track whether an ngModel warning has been sent out for this    * particular FormControlName instance. Used to support warning config of \"always\".    *    * @internal    */   _ngModelWarningSent = false;    constructor(       @Optional() @Host() @SkipSelf() parent: ControlContainer,       @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator|ValidatorFn)[],       @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:           (AsyncValidator|AsyncValidatorFn)[],       @Optional() @Self() @Inject(NG_VALUE_ACCESSOR) valueAccessors: ControlValueAccessor[],       @Optional() @Inject(NG_MODEL_WITH_FORM_CONTROL_WARNING) private _ngModelWarningConfig: string|       null) {     super();     this._parent = parent;     this._setValidators(validators);     this._setAsyncValidators(asyncValidators);     this.valueAccessor = selectValueAccessor(this, valueAccessors);   }    /** @nodoc */   ngOnChanges(changes: SimpleChanges) {     if (!this._added) this._setUpControl();     if (isPropertyUpdated(changes, this.viewModel)) {       if (typeof ngDevMode === 'undefined' || ngDevMode) {         _ngModelWarning('formControlName', FormControlName, this, this._ngModelWarningConfig);       }       this.viewModel = this.model;       this.formDirective.updateModel(this, this.model);     }   }    /** @nodoc */   ngOnDestroy(): void {     if (this.formDirective) {       this.formDirective.removeControl(this);     }   }    /**    * @description    * Sets the new value for the view model and emits an `ngModelChange` event.    *    * @param newValue The new value for the view model.    */   override viewToModelUpdate(newValue: any): void {     this.viewModel = newValue;     this.update.emit(newValue);   }    /**    * @description    * Returns an array that represents the path from the top-level form to this control.    * Each index is the string name of the control on that level.    */   override get path(): string[] {     return controlPath(this.name == null ? this.name : this.name.toString(), this._parent!);   }    /**    * @description    * The top-level directive for this group if present, otherwise null.    */   get formDirective(): any {     return this._parent ? this._parent.formDirective : null;   }    private _checkParentType(): void {     if (typeof ngDevMode === 'undefined' || ngDevMode) {       if (!(this._parent instanceof FormGroupName) &&           this._parent instanceof AbstractFormGroupDirective) {         throw ngModelGroupException();       } else if (           !(this._parent instanceof FormGroupName) &&           !(this._parent instanceof FormGroupDirective) &&           !(this._parent instanceof FormArrayName)) {         throw controlParentException();       }     }   }    private _setUpControl() {     this._checkParentType();     (this as {control: FormControl}).control = this.formDirective.addControl(this);     this._added = true;   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef, forwardRef, Host, Input, OnDestroy, Optional, Provider, Renderer2, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  import {BuiltInControlValueAccessor, ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor';  const SELECT_VALUE_ACCESSOR: Provider = {   provide: NG_VALUE_ACCESSOR,   useExisting: forwardRef(() => SelectControlValueAccessor),   multi: true };  function _buildValueString(id: string|null, value: any): string {   if (id == null) return `${value}`;   if (value && typeof value === 'object') value = 'Object';   return `${id}: ${value}`.slice(0, 50); }  function _extractId(valueString: string): string {   return valueString.split(':')[0]; }  /**  * @description  * The `ControlValueAccessor` for writing select control values and listening to select control  * changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and  * `NgModel` directives.  *  * @usageNotes  *  * ### Using select controls in a reactive form  *  * The following examples show how to use a select control in a reactive form.  *  * {@example forms/ts/reactiveSelectControl/reactive_select_control_example.ts region='Component'}  *  * ### Using select controls in a template-driven form  *  * To use a select in a template-driven form, simply add an `ngModel` and a `name`  * attribute to the main `<select>` tag.  *  * {@example forms/ts/selectControl/select_control_example.ts region='Component'}  *  * ### Customizing option selection  *  * Angular uses object identity to select option. It's possible for the identities of items  * to change while the data does not. This can happen, for example, if the items are produced  * from an RPC to the server, and that RPC is re-run. Even if the data hasn't changed, the  * second response will produce objects with different identities.  *  * To customize the default option comparison algorithm, `<select>` supports `compareWith` input.  * `compareWith` takes a **function** which has two arguments: `option1` and `option2`.  * If `compareWith` is given, Angular selects option by the return value of the function.  *  * ```ts  * const selectedCountriesControl = new FormControl();  * ```  *  * ```  * <select [compareWith]=\"compareFn\"  [formControl]=\"selectedCountriesControl\">  *     <option *ngFor=\"let country of countries\" [ngValue]=\"country\">  *         {{country.name}}  *     </option>  * </select>  *  * compareFn(c1: Country, c2: Country): boolean {  *     return c1 && c2 ? c1.id === c2.id : c1 === c2;  * }  * ```  *  * **Note:** We listen to the 'change' event because 'input' events aren't fired  * for selects in IE, see:  * https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event#browser_compatibility  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]',   host: {'(change)': 'onChange($event.target.value)', '(blur)': 'onTouched()'},   providers: [SELECT_VALUE_ACCESSOR] }) export class SelectControlValueAccessor extends BuiltInControlValueAccessor implements     ControlValueAccessor {   /** @nodoc */   value: any;    /** @internal */   _optionMap: Map<string, any> = new Map<string, any>();    /** @internal */   _idCounter: number = 0;    /**    * @description    * Tracks the option comparison algorithm for tracking identities when    * checking for changes.    */   @Input()   set compareWith(fn: (o1: any, o2: any) => boolean) {     if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw new RuntimeError(           RuntimeErrorCode.COMPAREWITH_NOT_A_FN,           `compareWith must be a function, but received ${JSON.stringify(fn)}`);     }     this._compareWith = fn;   }    private _compareWith: (o1: any, o2: any) => boolean = Object.is;    /**    * Sets the \"value\" property on the select element.    * @nodoc    */   writeValue(value: any): void {     this.value = value;     const id: string|null = this._getOptionId(value);     const valueString = _buildValueString(id, value);     this.setProperty('value', valueString);   }    /**    * Registers a function called when the control value changes.    * @nodoc    */   override registerOnChange(fn: (value: any) => any): void {     this.onChange = (valueString: string) => {       this.value = this._getOptionValue(valueString);       fn(this.value);     };   }    /** @internal */   _registerOption(): string {     return (this._idCounter++).toString();   }    /** @internal */   _getOptionId(value: any): string|null {     for (const id of Array.from(this._optionMap.keys())) {       if (this._compareWith(this._optionMap.get(id), value)) return id;     }     return null;   }    /** @internal */   _getOptionValue(valueString: string): any {     const id: string = _extractId(valueString);     return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;   } }  /**  * @description  * Marks `<option>` as dynamic, so Angular can be notified when options change.  *  * @see `SelectControlValueAccessor`  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({selector: 'option'}) export class NgSelectOption implements OnDestroy {   /**    * @description    * ID of the option element    */   // TODO(issue/24571): remove '!'.   id!: string;    constructor(       private _element: ElementRef, private _renderer: Renderer2,       @Optional() @Host() private _select: SelectControlValueAccessor) {     if (this._select) this.id = this._select._registerOption();   }    /**    * @description    * Tracks the value bound to the option element. Unlike the value binding,    * ngValue supports binding to objects.    */   @Input('ngValue')   set ngValue(value: any) {     if (this._select == null) return;     this._select._optionMap.set(this.id, value);     this._setElementValue(_buildValueString(this.id, value));     this._select.writeValue(this._select.value);   }    /**    * @description    * Tracks simple string values bound to the option element.    * For objects, use the `ngValue` input binding.    */   @Input('value')   set value(value: any) {     this._setElementValue(value);     if (this._select) this._select.writeValue(this._select.value);   }    /** @internal */   _setElementValue(value: string): void {     this._renderer.setProperty(this._element.nativeElement, 'value', value);   }    /** @nodoc */   ngOnDestroy(): void {     if (this._select) {       this._select._optionMap.delete(this.id);       this._select.writeValue(this._select.value);     }   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, ElementRef, forwardRef, Host, Input, OnDestroy, Optional, Provider, Renderer2, ɵRuntimeError as RuntimeError} from '@angular/core';  import {RuntimeErrorCode} from '../errors';  import {BuiltInControlValueAccessor, ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor';  const SELECT_MULTIPLE_VALUE_ACCESSOR: Provider = {   provide: NG_VALUE_ACCESSOR,   useExisting: forwardRef(() => SelectMultipleControlValueAccessor),   multi: true };  function _buildValueString(id: string, value: any): string {   if (id == null) return `${value}`;   if (typeof value === 'string') value = `'${value}'`;   if (value && typeof value === 'object') value = 'Object';   return `${id}: ${value}`.slice(0, 50); }  function _extractId(valueString: string): string {   return valueString.split(':')[0]; }  /** Mock interface for HTML Options */ interface HTMLOption {   value: string;   selected: boolean; }  /** Mock interface for HTMLCollection */ abstract class HTMLCollection {   // TODO(issue/24571): remove '!'.   length!: number;   abstract item(_: number): HTMLOption; }  /**  * @description  * The `ControlValueAccessor` for writing multi-select control values and listening to multi-select  * control changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and  * `NgModel` directives.  *  * @see `SelectControlValueAccessor`  *  * @usageNotes  *  * ### Using a multi-select control  *  * The follow example shows you how to use a multi-select control with a reactive form.  *  * ```ts  * const countryControl = new FormControl();  * ```  *  * ```  * <select multiple name=\"countries\" [formControl]=\"countryControl\">  *   <option *ngFor=\"let country of countries\" [ngValue]=\"country\">  *     {{ country.name }}  *   </option>  * </select>  * ```  *  * ### Customizing option selection  *  * To customize the default option comparison algorithm, `<select>` supports `compareWith` input.  * See the `SelectControlValueAccessor` for usage.  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]',   host: {'(change)': 'onChange($event.target)', '(blur)': 'onTouched()'},   providers: [SELECT_MULTIPLE_VALUE_ACCESSOR] }) export class SelectMultipleControlValueAccessor extends BuiltInControlValueAccessor implements     ControlValueAccessor {   /**    * The current value.    * @nodoc    */   value: any;    /** @internal */   _optionMap: Map<string, ɵNgSelectMultipleOption> = new Map<string, ɵNgSelectMultipleOption>();    /** @internal */   _idCounter: number = 0;    /**    * @description    * Tracks the option comparison algorithm for tracking identities when    * checking for changes.    */   @Input()   set compareWith(fn: (o1: any, o2: any) => boolean) {     if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {       throw new RuntimeError(           RuntimeErrorCode.COMPAREWITH_NOT_A_FN,           `compareWith must be a function, but received ${JSON.stringify(fn)}`);     }     this._compareWith = fn;   }    private _compareWith: (o1: any, o2: any) => boolean = Object.is;    /**    * Sets the \"value\" property on one or of more of the select's options.    * @nodoc    */   writeValue(value: any): void {     this.value = value;     let optionSelectedStateSetter: (opt: ɵNgSelectMultipleOption, o: any) => void;     if (Array.isArray(value)) {       // convert values to ids       const ids = value.map((v) => this._getOptionId(v));       optionSelectedStateSetter = (opt, o) => {         opt._setSelected(ids.indexOf(o.toString()) > -1);       };     } else {       optionSelectedStateSetter = (opt, o) => {         opt._setSelected(false);       };     }     this._optionMap.forEach(optionSelectedStateSetter);   }    /**    * Registers a function called when the control value changes    * and writes an array of the selected options.    * @nodoc    */   override registerOnChange(fn: (value: any) => any): void {     this.onChange = (element: HTMLSelectElement) => {       const selected: Array<any> = [];       const selectedOptions = element.selectedOptions;       if (selectedOptions !== undefined) {         const options = selectedOptions;         for (let i = 0; i < options.length; i++) {           const opt = options[i];           const val = this._getOptionValue(opt.value);           selected.push(val);         }       }       // Degrade to use `options` when `selectedOptions` property is not available.       // Note: the `selectedOptions` is available in all supported browsers, but the Domino lib       // doesn't have it currently, see https://github.com/fgnass/domino/issues/177.       else {         const options = element.options;         for (let i = 0; i < options.length; i++) {           const opt = options[i];           if (opt.selected) {             const val = this._getOptionValue(opt.value);             selected.push(val);           }         }       }       this.value = selected;       fn(selected);     };   }    /** @internal */   _registerOption(value: ɵNgSelectMultipleOption): string {     const id: string = (this._idCounter++).toString();     this._optionMap.set(id, value);     return id;   }    /** @internal */   _getOptionId(value: any): string|null {     for (const id of Array.from(this._optionMap.keys())) {       if (this._compareWith(this._optionMap.get(id)!._value, value)) return id;     }     return null;   }    /** @internal */   _getOptionValue(valueString: string): any {     const id: string = _extractId(valueString);     return this._optionMap.has(id) ? this._optionMap.get(id)!._value : valueString;   } }  /**  * @description  * Marks `<option>` as dynamic, so Angular can be notified when options change.  *  * @see `SelectMultipleControlValueAccessor`  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({selector: 'option'}) export class ɵNgSelectMultipleOption implements OnDestroy {   // TODO(issue/24571): remove '!'.   id!: string;   /** @internal */   _value: any;    constructor(       private _element: ElementRef, private _renderer: Renderer2,       @Optional() @Host() private _select: SelectMultipleControlValueAccessor) {     if (this._select) {       this.id = this._select._registerOption(this);     }   }    /**    * @description    * Tracks the value bound to the option element. Unlike the value binding,    * ngValue supports binding to objects.    */   @Input('ngValue')   set ngValue(value: any) {     if (this._select == null) return;     this._value = value;     this._setElementValue(_buildValueString(this.id, value));     this._select.writeValue(this._select.value);   }    /**    * @description    * Tracks simple string values bound to the option element.    * For objects, use the `ngValue` input binding.    */   @Input('value')   set value(value: any) {     if (this._select) {       this._value = value;       this._setElementValue(_buildValueString(this.id, value));       this._select.writeValue(this._select.value);     } else {       this._setElementValue(value);     }   }    /** @internal */   _setElementValue(value: string): void {     this._renderer.setProperty(this._element.nativeElement, 'value', value);   }    /** @internal */   _setSelected(selected: boolean) {     this._renderer.setProperty(this._element.nativeElement, 'selected', selected);   }    /** @nodoc */   ngOnDestroy(): void {     if (this._select) {       this._select._optionMap.delete(this.id);       this._select.writeValue(this._select.value);     }   } }  export {ɵNgSelectMultipleOption as NgSelectMultipleOption}; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {Directive, forwardRef, Input, OnChanges, Provider, SimpleChanges, ɵcoerceToBoolean as coerceToBoolean} from '@angular/core'; import {Observable} from 'rxjs';  import {AbstractControl} from '../model/abstract_model'; import {emailValidator, maxLengthValidator, maxValidator, minLengthValidator, minValidator, NG_VALIDATORS, nullValidator, patternValidator, requiredTrueValidator, requiredValidator} from '../validators';  /**  * Method that updates string to integer if not already a number  *  * @param value The value to convert to integer.  * @returns value of parameter converted to number or integer.  */ function toInteger(value: string|number): number {   return typeof value === 'number' ? value : parseInt(value, 10); }  /**  * Method that ensures that provided value is a float (and converts it to float if needed).  *  * @param value The value to convert to float.  * @returns value of parameter converted to number or float.  */ function toFloat(value: string|number): number {   return typeof value === 'number' ? value : parseFloat(value); }  /**  * @description  * Defines the map of errors returned from failed validation checks.  *  * @publicApi  */ export type ValidationErrors = {   [key: string]: any };  /**  * @description  * An interface implemented by classes that perform synchronous validation.  *  * @usageNotes  *  * ### Provide a custom validator  *  * The following example implements the `Validator` interface to create a  * validator directive with a custom error key.  *  * ```typescript  * @Directive({  *   selector: '[customValidator]',  *   providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]  * })  * class CustomValidatorDirective implements Validator {  *   validate(control: AbstractControl): ValidationErrors|null {  *     return {'custom': true};  *   }  * }  * ```  *  * @publicApi  */ export interface Validator {   /**    * @description    * Method that performs synchronous validation against the provided control.    *    * @param control The control to validate against.    *    * @returns A map of validation errors if validation fails,    * otherwise null.    */   validate(control: AbstractControl): ValidationErrors|null;    /**    * @description    * Registers a callback function to call when the validator inputs change.    *    * @param fn The callback function    */   registerOnValidatorChange?(fn: () => void): void; }  /**  * A base class for Validator-based Directives. The class contains common logic shared across such  * Directives.  *  * For internal use only, this class is not intended for use outside of the Forms package.  */ @Directive() abstract class AbstractValidatorDirective implements Validator, OnChanges {   private _validator: ValidatorFn = nullValidator;   private _onChange!: () => void;    /**    * A flag that tracks whether this validator is enabled.    *    * Marking it `internal` (vs `protected`), so that this flag can be used in host bindings of    * directive classes that extend this base class.    * @internal    */   _enabled?: boolean;    /**    * Name of an input that matches directive selector attribute (e.g. `minlength` for    * `MinLengthDirective`). An input with a given name might contain configuration information (like    * `minlength='10'`) or a flag that indicates whether validator should be enabled (like    * `[required]='false'`).    *    * @internal    */   abstract inputName: string;    /**    * Creates an instance of a validator (specific to a directive that extends this base class).    *    * @internal    */   abstract createValidator(input: unknown): ValidatorFn;    /**    * Performs the necessary input normalization based on a specific logic of a Directive.    * For example, the function might be used to convert string-based representation of the    * `minlength` input to an integer value that can later be used in the `Validators.minLength`    * validator.    *    * @internal    */   abstract normalizeInput(input: unknown): unknown;    /** @nodoc */   ngOnChanges(changes: SimpleChanges): void {     if (this.inputName in changes) {       const input = this.normalizeInput(changes[this.inputName].currentValue);       this._enabled = this.enabled(input);       this._validator = this._enabled ? this.createValidator(input) : nullValidator;       if (this._onChange) {         this._onChange();       }     }   }    /** @nodoc */   validate(control: AbstractControl): ValidationErrors|null {     return this._validator(control);   }    /** @nodoc */   registerOnValidatorChange(fn: () => void): void {     this._onChange = fn;   }    /**    * @description    * Determines whether this validator should be active or not based on an input.    * Base class implementation checks whether an input is defined (if the value is different from    * `null` and `undefined`). Validator classes that extend this base class can override this    * function with the logic specific to a particular validator directive.    */   enabled(input: unknown): boolean {     return input != null /* both `null` and `undefined` */;   } }  /**  * @description  * Provider which adds `MaxValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const MAX_VALIDATOR: Provider = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => MaxValidator),   multi: true };  /**  * A directive which installs the {@link MaxValidator} for any `formControlName`,  * `formControl`, or control with `ngModel` that also has a `max` attribute.  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding a max validator  *  * The following example shows how to add a max validator to an input attached to an  * ngModel binding.  *  * ```html  * <input type=\"number\" ngModel max=\"4\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]',   providers: [MAX_VALIDATOR],   host: {'[attr.max]': '_enabled ? max : null'} }) export class MaxValidator extends AbstractValidatorDirective {   /**    * @description    * Tracks changes to the max bound to this directive.    */   @Input() max!: string|number|null;   /** @internal */   override inputName = 'max';   /** @internal */   override normalizeInput = (input: string|number): number => toFloat(input);   /** @internal */   override createValidator = (max: number): ValidatorFn => maxValidator(max); }  /**  * @description  * Provider which adds `MinValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const MIN_VALIDATOR: Provider = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => MinValidator),   multi: true };  /**  * A directive which installs the {@link MinValidator} for any `formControlName`,  * `formControl`, or control with `ngModel` that also has a `min` attribute.  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding a min validator  *  * The following example shows how to add a min validator to an input attached to an  * ngModel binding.  *  * ```html  * <input type=\"number\" ngModel min=\"4\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector:       'input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]',   providers: [MIN_VALIDATOR],   host: {'[attr.min]': '_enabled ? min : null'} }) export class MinValidator extends AbstractValidatorDirective {   /**    * @description    * Tracks changes to the min bound to this directive.    */   @Input() min!: string|number|null;   /** @internal */   override inputName = 'min';   /** @internal */   override normalizeInput = (input: string|number): number => toFloat(input);   /** @internal */   override createValidator = (min: number): ValidatorFn => minValidator(min); }  /**  * @description  * An interface implemented by classes that perform asynchronous validation.  *  * @usageNotes  *  * ### Provide a custom async validator directive  *  * The following example implements the `AsyncValidator` interface to create an  * async validator directive with a custom error key.  *  * ```typescript  * import { of } from 'rxjs';  *  * @Directive({  *   selector: '[customAsyncValidator]',  *   providers: [{provide: NG_ASYNC_VALIDATORS, useExisting: CustomAsyncValidatorDirective, multi:  * true}]  * })  * class CustomAsyncValidatorDirective implements AsyncValidator {  *   validate(control: AbstractControl): Observable<ValidationErrors|null> {  *     return of({'custom': true});  *   }  * }  * ```  *  * @publicApi  */ export interface AsyncValidator extends Validator {   /**    * @description    * Method that performs async validation against the provided control.    *    * @param control The control to validate against.    *    * @returns A promise or observable that resolves a map of validation errors    * if validation fails, otherwise null.    */   validate(control: AbstractControl):       Promise<ValidationErrors|null>|Observable<ValidationErrors|null>; }  /**  * @description  * Provider which adds `RequiredValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const REQUIRED_VALIDATOR: Provider = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => RequiredValidator),   multi: true };  /**  * @description  * Provider which adds `CheckboxRequiredValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const CHECKBOX_REQUIRED_VALIDATOR: Provider = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => CheckboxRequiredValidator),   multi: true };   /**  * @description  * A directive that adds the `required` validator to any controls marked with the  * `required` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding a required validator using template-driven forms  *  * ```  * <input name=\"fullName\" ngModel required>  * ```  *  * @ngModule FormsModule  * @ngModule ReactiveFormsModule  * @publicApi  */ @Directive({   selector:       ':not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]',   providers: [REQUIRED_VALIDATOR],   host: {'[attr.required]': '_enabled ? \"\" : null'} }) export class RequiredValidator extends AbstractValidatorDirective {   /**    * @description    * Tracks changes to the required attribute bound to this directive.    */   @Input() required!: boolean|string;    /** @internal */   override inputName = 'required';    /** @internal */   override normalizeInput = coerceToBoolean;    /** @internal */   override createValidator = (input: boolean): ValidatorFn => requiredValidator;    /** @nodoc */   override enabled(input: boolean): boolean {     return input;   } }   /**  * A Directive that adds the `required` validator to checkbox controls marked with the  * `required` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding a required checkbox validator using template-driven forms  *  * The following example shows how to add a checkbox required validator to an input attached to an  * ngModel binding.  *  * ```  * <input type=\"checkbox\" name=\"active\" ngModel required>  * ```  *  * @publicApi  * @ngModule FormsModule  * @ngModule ReactiveFormsModule  */ @Directive({   selector:       'input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]',   providers: [CHECKBOX_REQUIRED_VALIDATOR],   host: {'[attr.required]': '_enabled ? \"\" : null'} }) export class CheckboxRequiredValidator extends RequiredValidator {   /** @internal */   override createValidator = (input: unknown): ValidatorFn => requiredTrueValidator; }  /**  * @description  * Provider which adds `EmailValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const EMAIL_VALIDATOR: any = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => EmailValidator),   multi: true };  /**  * A directive that adds the `email` validator to controls marked with the  * `email` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.  *  * The email validation is based on the WHATWG HTML specification with some enhancements to  * incorporate more RFC rules. More information can be found on the [Validators.email  * page](api/forms/Validators#email).  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding an email validator  *  * The following example shows how to add an email validator to an input attached to an ngModel  * binding.  *  * ```  * <input type=\"email\" name=\"email\" ngModel email>  * <input type=\"email\" name=\"email\" ngModel email=\"true\">  * <input type=\"email\" name=\"email\" ngModel [email]=\"true\">  * ```  *  * @publicApi  * @ngModule FormsModule  * @ngModule ReactiveFormsModule  */ @Directive({   selector: '[email][formControlName],[email][formControl],[email][ngModel]',   providers: [EMAIL_VALIDATOR] }) export class EmailValidator extends AbstractValidatorDirective {   /**    * @description    * Tracks changes to the email attribute bound to this directive.    */   @Input() email!: boolean|string;    /** @internal */   override inputName = 'email';    /** @internal */   override normalizeInput = coerceToBoolean;    /** @internal */   override createValidator = (input: number): ValidatorFn => emailValidator;    /** @nodoc */   override enabled(input: boolean): boolean {     return input;   } }  /**  * @description  * A function that receives a control and synchronously returns a map of  * validation errors if present, otherwise null.  *  * @publicApi  */ export interface ValidatorFn {   (control: AbstractControl): ValidationErrors|null; }  /**  * @description  * A function that receives a control and returns a Promise or observable  * that emits validation errors if present, otherwise null.  *  * @publicApi  */ export interface AsyncValidatorFn {   (control: AbstractControl): Promise<ValidationErrors|null>|Observable<ValidationErrors|null>; }  /**  * @description  * Provider which adds `MinLengthValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const MIN_LENGTH_VALIDATOR: any = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => MinLengthValidator),   multi: true };  /**  * A directive that adds minimum length validation to controls marked with the  * `minlength` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding a minimum length validator  *  * The following example shows how to add a minimum length validator to an input attached to an  * ngModel binding.  *  * ```html  * <input name=\"firstName\" ngModel minlength=\"4\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector: '[minlength][formControlName],[minlength][formControl],[minlength][ngModel]',   providers: [MIN_LENGTH_VALIDATOR],   host: {'[attr.minlength]': '_enabled ? minlength : null'} }) export class MinLengthValidator extends AbstractValidatorDirective {   /**    * @description    * Tracks changes to the minimum length bound to this directive.    */   @Input() minlength!: string|number|null;    /** @internal */   override inputName = 'minlength';    /** @internal */   override normalizeInput = (input: string|number): number => toInteger(input);    /** @internal */   override createValidator = (minlength: number): ValidatorFn => minLengthValidator(minlength); }  /**  * @description  * Provider which adds `MaxLengthValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const MAX_LENGTH_VALIDATOR: any = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => MaxLengthValidator),   multi: true };  /**  * A directive that adds max length validation to controls marked with the  * `maxlength` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding a maximum length validator  *  * The following example shows how to add a maximum length validator to an input attached to an  * ngModel binding.  *  * ```html  * <input name=\"firstName\" ngModel maxlength=\"25\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector: '[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]',   providers: [MAX_LENGTH_VALIDATOR],   host: {'[attr.maxlength]': '_enabled ? maxlength : null'} }) export class MaxLengthValidator extends AbstractValidatorDirective {   /**    * @description    * Tracks changes to the minimum length bound to this directive.    */   @Input() maxlength!: string|number|null;    /** @internal */   override inputName = 'maxlength';    /** @internal */   override normalizeInput = (input: string|number): number => toInteger(input);    /** @internal */   override createValidator = (maxlength: number): ValidatorFn => maxLengthValidator(maxlength); }  /**  * @description  * Provider which adds `PatternValidator` to the `NG_VALIDATORS` multi-provider list.  */ export const PATTERN_VALIDATOR: any = {   provide: NG_VALIDATORS,   useExisting: forwardRef(() => PatternValidator),   multi: true };   /**  * @description  * A directive that adds regex pattern validation to controls marked with the  * `pattern` attribute. The regex must match the entire control value.  * The directive is provided with the `NG_VALIDATORS` multi-provider list.  *  * @see [Form Validation](guide/form-validation)  *  * @usageNotes  *  * ### Adding a pattern validator  *  * The following example shows how to add a pattern validator to an input attached to an  * ngModel binding.  *  * ```html  * <input name=\"firstName\" ngModel pattern=\"[a-zA-Z ]*\">  * ```  *  * @ngModule ReactiveFormsModule  * @ngModule FormsModule  * @publicApi  */ @Directive({   selector: '[pattern][formControlName],[pattern][formControl],[pattern][ngModel]',   providers: [PATTERN_VALIDATOR],   host: {'[attr.pattern]': '_enabled ? pattern : null'} }) export class PatternValidator extends AbstractValidatorDirective {   /**    * @description    * Tracks changes to the pattern bound to this directive.    */   @Input()   pattern!: string|RegExp;  // This input is always defined, since the name matches selector.    /** @internal */   override inputName = 'pattern';    /** @internal */   override normalizeInput = (input: string|RegExp): string|RegExp => input;    /** @internal */   override createValidator = (input: string|RegExp): ValidatorFn => patternValidator(input); } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {NgModule, Type} from '@angular/core';  import {CheckboxControlValueAccessor} from './directives/checkbox_value_accessor'; import {DefaultValueAccessor} from './directives/default_value_accessor'; import {NgControlStatus, NgControlStatusGroup} from './directives/ng_control_status'; import {NgForm} from './directives/ng_form'; import {NgModel} from './directives/ng_model'; import {NgModelGroup} from './directives/ng_model_group'; import {NgNoValidate} from './directives/ng_no_validate_directive'; import {NumberValueAccessor} from './directives/number_value_accessor'; import {RadioControlRegistryModule, RadioControlValueAccessor} from './directives/radio_control_value_accessor'; import {RangeValueAccessor} from './directives/range_value_accessor'; import {FormControlDirective} from './directives/reactive_directives/form_control_directive'; import {FormControlName} from './directives/reactive_directives/form_control_name'; import {FormGroupDirective} from './directives/reactive_directives/form_group_directive'; import {FormArrayName, FormGroupName} from './directives/reactive_directives/form_group_name'; import {NgSelectOption, SelectControlValueAccessor} from './directives/select_control_value_accessor'; import {NgSelectMultipleOption, SelectMultipleControlValueAccessor} from './directives/select_multiple_control_value_accessor'; import {CheckboxRequiredValidator, EmailValidator, MaxLengthValidator, MaxValidator, MinLengthValidator, MinValidator, PatternValidator, RequiredValidator} from './directives/validators';  export {CheckboxControlValueAccessor} from './directives/checkbox_value_accessor'; export {ControlValueAccessor} from './directives/control_value_accessor'; export {DefaultValueAccessor} from './directives/default_value_accessor'; export {NgControl} from './directives/ng_control'; export {NgControlStatus, NgControlStatusGroup} from './directives/ng_control_status'; export {NgForm} from './directives/ng_form'; export {NgModel} from './directives/ng_model'; export {NgModelGroup} from './directives/ng_model_group'; export {NumberValueAccessor} from './directives/number_value_accessor'; export {RadioControlValueAccessor} from './directives/radio_control_value_accessor'; export {RangeValueAccessor} from './directives/range_value_accessor'; export {FormControlDirective, NG_MODEL_WITH_FORM_CONTROL_WARNING} from './directives/reactive_directives/form_control_directive'; export {FormControlName} from './directives/reactive_directives/form_control_name'; export {FormGroupDirective} from './directives/reactive_directives/form_group_directive'; export {FormArrayName, FormGroupName} from './directives/reactive_directives/form_group_name'; export {NgSelectOption, SelectControlValueAccessor} from './directives/select_control_value_accessor'; export {NgSelectMultipleOption, SelectMultipleControlValueAccessor} from './directives/select_multiple_control_value_accessor'; export {CALL_SET_DISABLED_STATE} from './directives/shared';  export const SHARED_FORM_DIRECTIVES: Type<any>[] = [   NgNoValidate,   NgSelectOption,   NgSelectMultipleOption,   DefaultValueAccessor,   NumberValueAccessor,   RangeValueAccessor,   CheckboxControlValueAccessor,   SelectControlValueAccessor,   SelectMultipleControlValueAccessor,   RadioControlValueAccessor,   NgControlStatus,   NgControlStatusGroup,   RequiredValidator,   MinLengthValidator,   MaxLengthValidator,   PatternValidator,   CheckboxRequiredValidator,   EmailValidator,   MinValidator,   MaxValidator, ];  export const TEMPLATE_DRIVEN_DIRECTIVES: Type<any>[] = [NgModel, NgModelGroup, NgForm];  export const REACTIVE_DRIVEN_DIRECTIVES: Type<any>[] =     [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName];  /**  * Internal module used for sharing directives between FormsModule and ReactiveFormsModule  */ @NgModule({   declarations: SHARED_FORM_DIRECTIVES,   imports: [RadioControlRegistryModule],   exports: SHARED_FORM_DIRECTIVES, }) export class ɵInternalFormsSharedModule { }  export {ɵInternalFormsSharedModule as InternalFormsSharedModule}; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {AsyncValidatorFn, ValidatorFn} from '../directives/validators';  import {AbstractControl, AbstractControlOptions, assertAllValuesPresent, assertControlPresent, pickAsyncValidators, pickValidators, ɵRawValue, ɵTypedOrUntyped, ɵValue} from './abstract_model';  /**  * FormArrayValue extracts the type of `.value` from a FormArray's element type, and wraps it in an  * array.  *  * Angular uses this type internally to support Typed Forms; do not use it directly. The untyped  * case falls back to any[].  */ export type ɵFormArrayValue<T extends AbstractControl<any>> =     ɵTypedOrUntyped<T, Array<ɵValue<T>>, any[]>;  /**  * FormArrayRawValue extracts the type of `.getRawValue()` from a FormArray's element type, and  * wraps it in an array. The untyped case falls back to any[].  *  * Angular uses this type internally to support Typed Forms; do not use it directly.  */ export type ɵFormArrayRawValue<T extends AbstractControl<any>> =     ɵTypedOrUntyped<T, Array<ɵRawValue<T>>, any[]>;  /**  * Tracks the value and validity state of an array of `FormControl`,  * `FormGroup` or `FormArray` instances.  *  * A `FormArray` aggregates the values of each child `FormControl` into an array.  * It calculates its status by reducing the status values of its children. For example, if one of  * the controls in a `FormArray` is invalid, the entire array becomes invalid.  *  * `FormArray` accepts one generic argument, which is the type of the controls inside.  * If you need a heterogenous array, use {@link UntypedFormArray}.  *  * `FormArray` is one of the four fundamental building blocks used to define forms in Angular,  * along with `FormControl`, `FormGroup`, and `FormRecord`.  *  * @usageNotes  *  * ### Create an array of form controls  *  * ```  * const arr = new FormArray([  *   new FormControl('Nancy', Validators.minLength(2)),  *   new FormControl('Drew'),  * ]);  *  * console.log(arr.value);   // ['Nancy', 'Drew']  * console.log(arr.status);  // 'VALID'  * ```  *  * ### Create a form array with array-level validators  *  * You include array-level validators and async validators. These come in handy  * when you want to perform validation that considers the value of more than one child  * control.  *  * The two types of validators are passed in separately as the second and third arg  * respectively, or together as part of an options object.  *  * ```  * const arr = new FormArray([  *   new FormControl('Nancy'),  *   new FormControl('Drew')  * ], {validators: myValidator, asyncValidators: myAsyncValidator});  * ```  *  * ### Set the updateOn property for all controls in a form array  *  * The options object is used to set a default value for each child  * control's `updateOn` property. If you set `updateOn` to `'blur'` at the  * array level, all child controls default to 'blur', unless the child  * has explicitly specified a different `updateOn` value.  *  * ```ts  * const arr = new FormArray([  *    new FormControl()  * ], {updateOn: 'blur'});  * ```  *  * ### Adding or removing controls from a form array  *  * To change the controls in the array, use the `push`, `insert`, `removeAt` or `clear` methods  * in `FormArray` itself. These methods ensure the controls are properly tracked in the  * form's hierarchy. Do not modify the array of `AbstractControl`s used to instantiate  * the `FormArray` directly, as that result in strange and unexpected behavior such  * as broken change detection.  *  * @publicApi  */ export class FormArray<TControl extends AbstractControl<any> = any> extends AbstractControl<     ɵTypedOrUntyped<TControl, ɵFormArrayValue<TControl>, any>,     ɵTypedOrUntyped<TControl, ɵFormArrayRawValue<TControl>, any>> {   /**    * Creates a new `FormArray` instance.    *    * @param controls An array of child controls. Each child control is given an index    * where it is registered.    *    * @param validatorOrOpts A synchronous validator function, or an array of    * such functions, or an `AbstractControlOptions` object that contains validation functions    * and a validation trigger.    *    * @param asyncValidator A single async validator or array of async validator functions    *    */   constructor(       controls: Array<TControl>,       validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null) {     super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts));     this.controls = controls;     this._initObservables();     this._setUpdateStrategy(validatorOrOpts);     this._setUpControls();     this.updateValueAndValidity({       onlySelf: true,       // If `asyncValidator` is present, it will trigger control status change from `PENDING` to       // `VALID` or `INVALID`.       // The status should be broadcasted via the `statusChanges` observable, so we set `emitEvent`       // to `true` to allow that during the control creation process.       emitEvent: !!this.asyncValidator     });   }    public controls: ɵTypedOrUntyped<TControl, Array<TControl>, Array<AbstractControl<any>>>;    /**    * Get the `AbstractControl` at the given `index` in the array.    *    * @param index Index in the array to retrieve the control. If `index` is negative, it will wrap    *     around from the back, and if index is greatly negative (less than `-length`), the result is    * undefined. This behavior is the same as `Array.at(index)`.    */   at(index: number): ɵTypedOrUntyped<TControl, TControl, AbstractControl<any>> {     return (this.controls as any)[this._adjustIndex(index)];   }    /**    * Insert a new `AbstractControl` at the end of the array.    *    * @param control Form control to be inserted    * @param options Specifies whether this FormArray instance should emit events after a new    *     control is added.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control is    * inserted. When false, no events are emitted.    */   push(control: TControl, options: {emitEvent?: boolean} = {}): void {     this.controls.push(control);     this._registerControl(control);     this.updateValueAndValidity({emitEvent: options.emitEvent});     this._onCollectionChange();   }    /**    * Insert a new `AbstractControl` at the given `index` in the array.    *    * @param index Index in the array to insert the control. If `index` is negative, wraps around    *     from the back. If `index` is greatly negative (less than `-length`), prepends to the array.    * This behavior is the same as `Array.splice(index, 0, control)`.    * @param control Form control to be inserted    * @param options Specifies whether this FormArray instance should emit events after a new    *     control is inserted.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control is    * inserted. When false, no events are emitted.    */   insert(index: number, control: TControl, options: {emitEvent?: boolean} = {}): void {     this.controls.splice(index, 0, control);      this._registerControl(control);     this.updateValueAndValidity({emitEvent: options.emitEvent});   }    /**    * Remove the control at the given `index` in the array.    *    * @param index Index in the array to remove the control.  If `index` is negative, wraps around    *     from the back. If `index` is greatly negative (less than `-length`), removes the first    *     element. This behavior is the same as `Array.splice(index, 1)`.    * @param options Specifies whether this FormArray instance should emit events after a    *     control is removed.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control is    * removed. When false, no events are emitted.    */   removeAt(index: number, options: {emitEvent?: boolean} = {}): void {     // Adjust the index, then clamp it at no less than 0 to prevent undesired underflows.     let adjustedIndex = this._adjustIndex(index);     if (adjustedIndex < 0) adjustedIndex = 0;      if (this.controls[adjustedIndex])       this.controls[adjustedIndex]._registerOnCollectionChange(() => {});     this.controls.splice(adjustedIndex, 1);     this.updateValueAndValidity({emitEvent: options.emitEvent});   }    /**    * Replace an existing control.    *    * @param index Index in the array to replace the control. If `index` is negative, wraps around    *     from the back. If `index` is greatly negative (less than `-length`), replaces the first    *     element. This behavior is the same as `Array.splice(index, 1, control)`.    * @param control The `AbstractControl` control to replace the existing control    * @param options Specifies whether this FormArray instance should emit events after an    *     existing control is replaced with a new one.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control is    * replaced with a new one. When false, no events are emitted.    */   setControl(index: number, control: TControl, options: {emitEvent?: boolean} = {}): void {     // Adjust the index, then clamp it at no less than 0 to prevent undesired underflows.     let adjustedIndex = this._adjustIndex(index);     if (adjustedIndex < 0) adjustedIndex = 0;      if (this.controls[adjustedIndex])       this.controls[adjustedIndex]._registerOnCollectionChange(() => {});     this.controls.splice(adjustedIndex, 1);      if (control) {       this.controls.splice(adjustedIndex, 0, control);       this._registerControl(control);     }      this.updateValueAndValidity({emitEvent: options.emitEvent});     this._onCollectionChange();   }    /**    * Length of the control array.    */   get length(): number {     return this.controls.length;   }    /**    * Sets the value of the `FormArray`. It accepts an array that matches    * the structure of the control.    *    * This method performs strict checks, and throws an error if you try    * to set the value of a control that doesn't exist or if you exclude the    * value of a control.    *    * @usageNotes    * ### Set the values for the controls in the form array    *    * ```    * const arr = new FormArray([    *   new FormControl(),    *   new FormControl()    * ]);    * console.log(arr.value);   // [null, null]    *    * arr.setValue(['Nancy', 'Drew']);    * console.log(arr.value);   // ['Nancy', 'Drew']    * ```    *    * @param value Array of values for the controls    * @param options Configure options that determine how the control propagates changes and    * emits events after the value changes    *    * * `onlySelf`: When true, each change only affects this control, and not its parent. Default    * is false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control value is updated.    * When false, no events are emitted.    * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity    * updateValueAndValidity} method.    */   override setValue(value: ɵFormArrayRawValue<TControl>, options: {     onlySelf?: boolean,     emitEvent?: boolean   } = {}): void {     assertAllValuesPresent(this, false, value);     value.forEach((newValue: any, index: number) => {       assertControlPresent(this, false, index);       this.at(index).setValue(newValue, {onlySelf: true, emitEvent: options.emitEvent});     });     this.updateValueAndValidity(options);   }    /**    * Patches the value of the `FormArray`. It accepts an array that matches the    * structure of the control, and does its best to match the values to the correct    * controls in the group.    *    * It accepts both super-sets and sub-sets of the array without throwing an error.    *    * @usageNotes    * ### Patch the values for controls in a form array    *    * ```    * const arr = new FormArray([    *    new FormControl(),    *    new FormControl()    * ]);    * console.log(arr.value);   // [null, null]    *    * arr.patchValue(['Nancy']);    * console.log(arr.value);   // ['Nancy', null]    * ```    *    * @param value Array of latest values for the controls    * @param options Configure options that determine how the control propagates changes and    * emits events after the value changes    *    * * `onlySelf`: When true, each change only affects this control, and not its parent. Default    * is false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when the control    * value is updated. When false, no events are emitted. The configuration options are passed to    * the {@link AbstractControl#updateValueAndValidity updateValueAndValidity} method.    */   override patchValue(value: ɵFormArrayValue<TControl>, options: {     onlySelf?: boolean,     emitEvent?: boolean   } = {}): void {     // Even though the `value` argument type doesn't allow `null` and `undefined` values, the     // `patchValue` can be called recursively and inner data structures might have these values,     // so we just ignore such cases when a field containing FormArray instance receives `null` or     // `undefined` as a value.     if (value == null /* both `null` and `undefined` */) return;      value.forEach((newValue, index) => {       if (this.at(index)) {         this.at(index).patchValue(newValue, {onlySelf: true, emitEvent: options.emitEvent});       }     });     this.updateValueAndValidity(options);   }    /**    * Resets the `FormArray` and all descendants are marked `pristine` and `untouched`, and the    * value of all descendants to null or null maps.    *    * You reset to a specific form state by passing in an array of states    * that matches the structure of the control. The state is a standalone value    * or a form state object with both a value and a disabled status.    *    * @usageNotes    * ### Reset the values in a form array    *    * ```ts    * const arr = new FormArray([    *    new FormControl(),    *    new FormControl()    * ]);    * arr.reset(['name', 'last name']);    *    * console.log(arr.value);  // ['name', 'last name']    * ```    *    * ### Reset the values in a form array and the disabled status for the first control    *    * ```    * arr.reset([    *   {value: 'name', disabled: true},    *   'last'    * ]);    *    * console.log(arr.value);  // ['last']    * console.log(arr.at(0).status);  // 'DISABLED'    * ```    *    * @param value Array of values for the controls    * @param options Configure options that determine how the control propagates changes and    * emits events after the value changes    *    * * `onlySelf`: When true, each change only affects this control, and not its parent. Default    * is false.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges`    * observables emit events with the latest status and value when the control is reset.    * When false, no events are emitted.    * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity    * updateValueAndValidity} method.    */   override reset(value: ɵTypedOrUntyped<TControl, ɵFormArrayValue<TControl>, any> = [], options: {     onlySelf?: boolean,     emitEvent?: boolean   } = {}): void {     this._forEachChild((control: AbstractControl, index: number) => {       control.reset(value[index], {onlySelf: true, emitEvent: options.emitEvent});     });     this._updatePristine(options);     this._updateTouched(options);     this.updateValueAndValidity(options);   }    /**    * The aggregate value of the array, including any disabled controls.    *    * Reports all values regardless of disabled status.    */   override getRawValue(): ɵFormArrayRawValue<TControl> {     return this.controls.map((control: AbstractControl) => control.getRawValue());   }    /**    * Remove all controls in the `FormArray`.    *    * @param options Specifies whether this FormArray instance should emit events after all    *     controls are removed.    * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and    * `valueChanges` observables emit events with the latest status and value when all controls    * in this FormArray instance are removed. When false, no events are emitted.    *    * @usageNotes    * ### Remove all elements from a FormArray    *    * ```ts    * const arr = new FormArray([    *    new FormControl(),    *    new FormControl()    * ]);    * console.log(arr.length);  // 2    *    * arr.clear();    * console.log(arr.length);  // 0    * ```    *    * It's a simpler and more efficient alternative to removing all elements one by one:    *    * ```ts    * const arr = new FormArray([    *    new FormControl(),    *    new FormControl()    * ]);    *    * while (arr.length) {    *    arr.removeAt(0);    * }    * ```    */   clear(options: {emitEvent?: boolean} = {}): void {     if (this.controls.length < 1) return;     this._forEachChild((control) => control._registerOnCollectionChange(() => {}));     this.controls.splice(0);     this.updateValueAndValidity({emitEvent: options.emitEvent});   }    /**    * Adjusts a negative index by summing it with the length of the array. For very negative    * indices, the result may remain negative.    * @internal    */   private _adjustIndex(index: number): number {     return index < 0 ? index + this.length : index;   }    /** @internal */   override _syncPendingControls(): boolean {     let subtreeUpdated = (this.controls as any).reduce((updated: any, child: any) => {       return child._syncPendingControls() ? true : updated;     }, false);     if (subtreeUpdated) this.updateValueAndValidity({onlySelf: true});     return subtreeUpdated;   }    /** @internal */   override _forEachChild(cb: (c: AbstractControl, index: number) => void): void {     this.controls.forEach((control: AbstractControl, index: number) => {       cb(control, index);     });   }    /** @internal */   override _updateValue(): void {     (this as {value: any}).value =         this.controls.filter((control) => control.enabled || this.disabled)             .map((control) => control.value);   }    /** @internal */   override _anyControls(condition: (c: AbstractControl) => boolean): boolean {     return this.controls.some((control) => control.enabled && condition(control));   }    /** @internal */   _setUpControls(): void {     this._forEachChild((control) => this._registerControl(control));   }    /** @internal */   override _allControlsDisabled(): boolean {     for (const control of this.controls) {       if (control.enabled) return false;     }     return this.controls.length > 0 || this.disabled;   }    private _registerControl(control: AbstractControl) {     control.setParent(this);     control._registerOnCollectionChange(this._onCollectionChange);   }    /** @internal */   override _find(name: string|number): AbstractControl|null {     return this.at(name as number) ?? null;   } }  interface UntypedFormArrayCtor {   new(controls: AbstractControl[],       validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): UntypedFormArray;    /**    * The presence of an explicit `prototype` property provides backwards-compatibility for apps that    * manually inspect the prototype chain.    */   prototype: FormArray<any>; }  /**  * UntypedFormArray is a non-strongly-typed version of @see FormArray, which  * permits heterogenous controls.  */ export type UntypedFormArray = FormArray<any>;  export const UntypedFormArray: UntypedFormArrayCtor = FormArray;  /**  * @description  * Asserts that the given control is an instance of `FormArray`  *  * @publicApi  */ export const isFormArray = (control: unknown): control is FormArray => control instanceof FormArray; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {inject, Injectable} from '@angular/core';  import {AsyncValidatorFn, ValidatorFn} from './directives/validators'; import {AbstractControl, AbstractControlOptions, FormHooks} from './model/abstract_model'; import {FormArray, UntypedFormArray} from './model/form_array'; import {FormControl, FormControlOptions, FormControlState, UntypedFormControl} from './model/form_control'; import {FormGroup, FormRecord, UntypedFormGroup} from './model/form_group';  function isAbstractControlOptions(options: AbstractControlOptions|{[key: string]: any}|null|                                   undefined): options is AbstractControlOptions {   return !!options &&       ((options as AbstractControlOptions).asyncValidators !== undefined ||        (options as AbstractControlOptions).validators !== undefined ||        (options as AbstractControlOptions).updateOn !== undefined); }  /**  * The union of all validator types that can be accepted by a ControlConfig.  */ type ValidatorConfig = ValidatorFn|AsyncValidatorFn|ValidatorFn[]|AsyncValidatorFn[];  /**  * The compiler may not always be able to prove that the elements of the control config are a tuple  * (i.e. occur in a fixed order). This slightly looser type is used for inference, to catch cases  * where the compiler cannot prove order and position.  *  * For example, consider the simple case `fb.group({foo: ['bar', Validators.required]})`. The  * compiler will infer this as an array, not as a tuple.  */ type PermissiveControlConfig<T> = Array<T|FormControlState<T>|ValidatorConfig>;  /**  * Helper type to allow the compiler to accept [XXXX, { updateOn: string }] as a valid shorthand  * argument for .group()  */ interface PermissiveAbstractControlOptions extends Omit<AbstractControlOptions, 'updateOn'> {   updateOn?: string; }  /**  * ControlConfig<T> is a tuple containing a value of type T, plus optional validators and async  * validators.  *  * @publicApi  */ export type ControlConfig<T> = [T|FormControlState<T>, (ValidatorFn|(ValidatorFn[]))?, (AsyncValidatorFn|AsyncValidatorFn[])?];  // Disable clang-format to produce clearer formatting for this multiline type. // clang-format off  /**  * FormBuilder accepts values in various container shapes, as well as raw values.  * Element returns the appropriate corresponding model class, given the container T.  * The flag N, if not never, makes the resulting `FormControl` have N in its type.  */ export type ɵElement<T, N extends null> =   // The `extends` checks are wrapped in arrays in order to prevent TypeScript from applying type unions   // through the distributive conditional type. This is the officially recommended solution:   // https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types   //   // Identify FormControl container types.   [T] extends [FormControl<infer U>] ? FormControl<U> :   // Or FormControl containers that are optional in their parent group.   [T] extends [FormControl<infer U>|undefined] ? FormControl<U> :   // FormGroup containers.   [T] extends [FormGroup<infer U>] ? FormGroup<U> :   // Optional FormGroup containers.   [T] extends [FormGroup<infer U>|undefined] ? FormGroup<U> :   // FormRecord containers.   [T] extends [FormRecord<infer U>] ? FormRecord<U> :   // Optional FormRecord containers.   [T] extends [FormRecord<infer U>|undefined] ? FormRecord<U> :   // FormArray containers.   [T] extends [FormArray<infer U>] ? FormArray<U> :   // Optional FormArray containers.   [T] extends [FormArray<infer U>|undefined] ? FormArray<U> :   // Otherwise unknown AbstractControl containers.   [T] extends [AbstractControl<infer U>] ? AbstractControl<U> :   // Optional AbstractControl containers.   [T] extends [AbstractControl<infer U>|undefined] ? AbstractControl<U> :   // FormControlState object container, which produces a nullable control.   [T] extends [FormControlState<infer U>] ? FormControl<U|N> :   // A ControlConfig tuple, which produces a nullable control.   [T] extends [PermissiveControlConfig<infer U>] ? FormControl<Exclude<U, ValidatorConfig| PermissiveAbstractControlOptions>|N> :   FormControl<T|N>;  // clang-format on  /**  * @description  * Creates an `AbstractControl` from a user-specified configuration.  *  * The `FormBuilder` provides syntactic sugar that shortens creating instances of a  * `FormControl`, `FormGroup`, or `FormArray`. It reduces the amount of boilerplate needed to  * build complex forms.  *  * @see [Reactive Forms Guide](guide/reactive-forms)  *  * @publicApi  */ @Injectable({providedIn: 'root'}) export class FormBuilder {   private useNonNullable: boolean = false;    /**    * @description    * Returns a FormBuilder in which automatically constructed @see FormControl} elements    * have `{nonNullable: true}` and are non-nullable.    *    * **Constructing non-nullable controls**    *    * When constructing a control, it will be non-nullable, and will reset to its initial value.    *    * ```ts    * let nnfb = new FormBuilder().nonNullable;    * let name = nnfb.control('Alex'); // FormControl<string>    * name.reset();    * console.log(name); // 'Alex'    * ```    *    * **Constructing non-nullable groups or arrays**    *    * When constructing a group or array, all automatically created inner controls will be    * non-nullable, and will reset to their initial values.    *    * ```ts    * let nnfb = new FormBuilder().nonNullable;    * let name = nnfb.group({who: 'Alex'}); // FormGroup<{who: FormControl<string>}>    * name.reset();    * console.log(name); // {who: 'Alex'}    * ```    * **Constructing *nullable* fields on groups or arrays**    *    * It is still possible to have a nullable field. In particular, any `FormControl` which is    * *already* constructed will not be altered. For example:    *    * ```ts    * let nnfb = new FormBuilder().nonNullable;    * // FormGroup<{who: FormControl<string|null>}>    * let name = nnfb.group({who: new FormControl('Alex')});    * name.reset(); console.log(name); // {who: null}    * ```    *    * Because the inner control is constructed explicitly by the caller, the builder has    * no control over how it is created, and cannot exclude the `null`.    */   get nonNullable(): NonNullableFormBuilder {     const nnfb = new FormBuilder();     nnfb.useNonNullable = true;     return nnfb as NonNullableFormBuilder;   }    /**    * @description    * Constructs a new `FormGroup` instance. Accepts a single generic argument, which is an object    * containing all the keys and corresponding inner control types.    *    * @param controls A collection of child controls. The key for each child is the name    * under which it is registered.    *    * @param options Configuration options object for the `FormGroup`. The object should have the    * `AbstractControlOptions` type and might contain the following fields:    * * `validators`: A synchronous validator function, or an array of validator functions.    * * `asyncValidators`: A single async validator or array of async validator functions.    * * `updateOn`: The event upon which the control should be updated (options: 'change' | 'blur'    * | submit').    */   group<T extends {}>(       controls: T,       options?: AbstractControlOptions|null,       ): FormGroup<{[K in keyof T]: ɵElement<T[K], null>}>;    /**    * @description    * Constructs a new `FormGroup` instance.    *    * @deprecated This API is not typesafe and can result in issues with Closure Compiler renaming.    * Use the `FormBuilder#group` overload with `AbstractControlOptions` instead.    * Note that `AbstractControlOptions` expects `validators` and `asyncValidators` to be valid    * validators. If you have custom validators, make sure their validation function parameter is    * `AbstractControl` and not a sub-class, such as `FormGroup`. These functions will be called    * with an object of type `AbstractControl` and that cannot be automatically downcast to a    * subclass, so TypeScript sees this as an error. For example, change the `(group: FormGroup) =>    * ValidationErrors|null` signature to be `(group: AbstractControl) => ValidationErrors|null`.    *    * @param controls A record of child controls. The key for each child is the name    * under which the control is registered.    *    * @param options Configuration options object for the `FormGroup`. The legacy configuration    * object consists of:    * * `validator`: A synchronous validator function, or an array of validator functions.    * * `asyncValidator`: A single async validator or array of async validator functions    * Note: the legacy format is deprecated and might be removed in one of the next major versions    * of Angular.    */   group(       controls: {[key: string]: any},       options: {[key: string]: any},       ): FormGroup;    group(controls: {[key: string]: any}, options: AbstractControlOptions|{[key: string]:                                                                              any}|null = null):       FormGroup {     const reducedControls = this._reduceControls(controls);     let newOptions: FormControlOptions = {};     if (isAbstractControlOptions(options)) {       // `options` are `AbstractControlOptions`       newOptions = options;     } else if (options !== null) {       // `options` are legacy form group options       newOptions.validators = (options as any).validator;       newOptions.asyncValidators = (options as any).asyncValidator;     }     return new FormGroup(reducedControls, newOptions);   }    /**    * @description    * Constructs a new `FormRecord` instance. Accepts a single generic argument, which is an object    * containing all the keys and corresponding inner control types.    *    * @param controls A collection of child controls. The key for each child is the name    * under which it is registered.    *    * @param options Configuration options object for the `FormRecord`. The object should have the    * `AbstractControlOptions` type and might contain the following fields:    * * `validators`: A synchronous validator function, or an array of validator functions.    * * `asyncValidators`: A single async validator or array of async validator functions.    * * `updateOn`: The event upon which the control should be updated (options: 'change' | 'blur'    * | submit').    */   record<T>(controls: {[key: string]: T}, options: AbstractControlOptions|null = null):       FormRecord<ɵElement<T, null>> {     const reducedControls = this._reduceControls(controls);     // Cast to `any` because the inferred types are not as specific as Element.     return new FormRecord(reducedControls, options) as any;   }    /** @deprecated Use `nonNullable` instead. */   control<T>(formState: T|FormControlState<T>, opts: FormControlOptions&{     initialValueIsDefault: true   }): FormControl<T>;    control<T>(formState: T|FormControlState<T>, opts: FormControlOptions&{nonNullable: true}):       FormControl<T>;    /**    * @deprecated When passing an `options` argument, the `asyncValidator` argument has no effect.    */   control<T>(       formState: T|FormControlState<T>, opts: FormControlOptions,       asyncValidator: AsyncValidatorFn|AsyncValidatorFn[]): FormControl<T|null>;    control<T>(       formState: T|FormControlState<T>,       validatorOrOpts?: ValidatorFn|ValidatorFn[]|FormControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): FormControl<T|null>;    /**    * @description    * Constructs a new `FormControl` with the given state, validators and options. Sets    * `{nonNullable: true}` in the options to get a non-nullable control. Otherwise, the    * control will be nullable. Accepts a single generic argument, which is the type  of the    * control's value.    *    * @param formState Initializes the control with an initial state value, or    * with an object that contains both a value and a disabled status.    *    * @param validatorOrOpts A synchronous validator function, or an array of    * such functions, or a `FormControlOptions` object that contains    * validation functions and a validation trigger.    *    * @param asyncValidator A single async validator or array of async validator    * functions.    *    * @usageNotes    *    * ### Initialize a control as disabled    *    * The following example returns a control with an initial value in a disabled state.    *    * <code-example path=\"forms/ts/formBuilder/form_builder_example.ts\" region=\"disabled-control\">    * </code-example>    */   control<T>(       formState: T|FormControlState<T>,       validatorOrOpts?: ValidatorFn|ValidatorFn[]|FormControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): FormControl {     let newOptions: FormControlOptions = {};     if (!this.useNonNullable) {       return new FormControl(formState, validatorOrOpts, asyncValidator);     }     if (isAbstractControlOptions(validatorOrOpts)) {       // If the second argument is options, then they are copied.       newOptions = validatorOrOpts;     } else {       // If the other arguments are validators, they are copied into an options object.       newOptions.validators = validatorOrOpts;       newOptions.asyncValidators = asyncValidator;     }     return new FormControl<T>(formState, {...newOptions, nonNullable: true});   }    /**    * Constructs a new `FormArray` from the given array of configurations,    * validators and options. Accepts a single generic argument, which is the type of each control    * inside the array.    *    * @param controls An array of child controls or control configs. Each child control is given an    *     index when it is registered.    *    * @param validatorOrOpts A synchronous validator function, or an array of such functions, or an    *     `AbstractControlOptions` object that contains    * validation functions and a validation trigger.    *    * @param asyncValidator A single async validator or array of async validator functions.    */   array<T>(       controls: Array<T>, validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): FormArray<ɵElement<T, null>> {     const createdControls = controls.map(c => this._createControl(c));     // Cast to `any` because the inferred types are not as specific as Element.     return new FormArray(createdControls, validatorOrOpts, asyncValidator) as any;   }    /** @internal */   _reduceControls<T>(controls:                          {[k: string]: T|ControlConfig<T>|FormControlState<T>|AbstractControl<T>}):       {[key: string]: AbstractControl} {     const createdControls: {[key: string]: AbstractControl} = {};     Object.keys(controls).forEach(controlName => {       createdControls[controlName] = this._createControl(controls[controlName]);     });     return createdControls;   }    /** @internal */   _createControl<T>(controls: T|FormControlState<T>|ControlConfig<T>|FormControl<T>|                     AbstractControl<T>): FormControl<T>|FormControl<T|null>|AbstractControl<T> {     if (controls instanceof FormControl) {       return controls as FormControl<T>;     } else if (controls instanceof AbstractControl) {  // A control; just return it       return controls;     } else if (Array.isArray(controls)) {  // ControlConfig Tuple       const value: T|FormControlState<T> = controls[0];       const validator: ValidatorFn|ValidatorFn[]|null = controls.length > 1 ? controls[1]! : null;       const asyncValidator: AsyncValidatorFn|AsyncValidatorFn[]|null =           controls.length > 2 ? controls[2]! : null;       return this.control<T>(value, validator, asyncValidator);     } else {  // T or FormControlState<T>       return this.control<T>(controls);     }   } }  /**  * @description  * `NonNullableFormBuilder` is similar to {@link FormBuilder}, but automatically constructed  * {@link FormControl} elements have `{nonNullable: true}` and are non-nullable.  *  * @publicApi  */ @Injectable({   providedIn: 'root',   useFactory: () => inject(FormBuilder).nonNullable, }) export abstract class NonNullableFormBuilder {   /**    * Similar to `FormBuilder#group`, except any implicitly constructed `FormControl`    * will be non-nullable (i.e. it will have `nonNullable` set to true). Note    * that already-constructed controls will not be altered.    */   abstract group<T extends {}>(       controls: T,       options?: AbstractControlOptions|null,       ): FormGroup<{[K in keyof T]: ɵElement<T[K], never>}>;    /**    * Similar to `FormBuilder#record`, except any implicitly constructed `FormControl`    * will be non-nullable (i.e. it will have `nonNullable` set to true). Note    * that already-constructed controls will not be altered.    */   abstract record<T>(       controls: {[key: string]: T},       options?: AbstractControlOptions|null,       ): FormRecord<ɵElement<T, never>>;    /**    * Similar to `FormBuilder#array`, except any implicitly constructed `FormControl`    * will be non-nullable (i.e. it will have `nonNullable` set to true). Note    * that already-constructed controls will not be altered.    */   abstract array<T>(       controls: Array<T>, validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): FormArray<ɵElement<T, never>>;    /**    * Similar to `FormBuilder#control`, except this overridden version of `control` forces    * `nonNullable` to be `true`, resulting in the control always being non-nullable.    */   abstract control<T>(       formState: T|FormControlState<T>,       validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): FormControl<T>; }  /**  * UntypedFormBuilder is the same as @see FormBuilder, but it provides untyped controls.  */ @Injectable({providedIn: 'root'}) export class UntypedFormBuilder extends FormBuilder {   /**    * Like `FormBuilder#group`, except the resulting group is untyped.    */   override group(       controlsConfig: {[key: string]: any},       options?: AbstractControlOptions|null,       ): UntypedFormGroup;    /**    * @deprecated This API is not typesafe and can result in issues with Closure Compiler renaming.    * Use the `FormBuilder#group` overload with `AbstractControlOptions` instead.    */   override group(       controlsConfig: {[key: string]: any},       options: {[key: string]: any},       ): UntypedFormGroup;    override group(       controlsConfig: {[key: string]: any},       options: AbstractControlOptions|{[key: string]: any}|null = null): UntypedFormGroup {     return super.group(controlsConfig, options);   }    /**    * Like `FormBuilder#control`, except the resulting control is untyped.    */   override control(       formState: any, validatorOrOpts?: ValidatorFn|ValidatorFn[]|FormControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): UntypedFormControl {     return super.control(formState, validatorOrOpts, asyncValidator);   }    /**    * Like `FormBuilder#array`, except the resulting array is untyped.    */   override array(       controlsConfig: any[],       validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null,       asyncValidator?: AsyncValidatorFn|AsyncValidatorFn[]|null): UntypedFormArray {     return super.array(controlsConfig, validatorOrOpts, asyncValidator);   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of the forms package.  */  import {Version} from '@angular/core';  /**  * @publicApi  */ export const VERSION = new Version('15.2.0'); ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  import {ModuleWithProviders, NgModule} from '@angular/core';  import {InternalFormsSharedModule, NG_MODEL_WITH_FORM_CONTROL_WARNING, REACTIVE_DRIVEN_DIRECTIVES, TEMPLATE_DRIVEN_DIRECTIVES} from './directives'; import {CALL_SET_DISABLED_STATE, setDisabledStateDefault, SetDisabledStateOption} from './directives/shared';  /**  * Exports the required providers and directives for template-driven forms,  * making them available for import by NgModules that import this module.  *  * Providers associated with this module:  * * `RadioControlRegistry`  *  * @see [Forms Overview](/guide/forms-overview)  * @see [Template-driven Forms Guide](/guide/forms)  *  * @publicApi  */ @NgModule({   declarations: TEMPLATE_DRIVEN_DIRECTIVES,   exports: [InternalFormsSharedModule, TEMPLATE_DRIVEN_DIRECTIVES] }) export class FormsModule {   /**    * @description    * Provides options for configuring the forms module.    *    * @param opts An object of configuration options    * * `callSetDisabledState` Configures whether to `always` call `setDisabledState`, which is more    * correct, or to only call it `whenDisabled`, which is the legacy behavior.    */   static withConfig(opts: {     callSetDisabledState?: SetDisabledStateOption,   }): ModuleWithProviders<FormsModule> {     return {       ngModule: FormsModule,       providers: [{         provide: CALL_SET_DISABLED_STATE,         useValue: opts.callSetDisabledState ?? setDisabledStateDefault       }]     };   } }  /**  * Exports the required infrastructure and directives for reactive forms,  * making them available for import by NgModules that import this module.  *  * Providers associated with this module:  * * `FormBuilder`  * * `RadioControlRegistry`  *  * @see [Forms Overview](guide/forms-overview)  * @see [Reactive Forms Guide](guide/reactive-forms)  *  * @publicApi  */ @NgModule({   declarations: [REACTIVE_DRIVEN_DIRECTIVES],   exports: [InternalFormsSharedModule, REACTIVE_DRIVEN_DIRECTIVES] }) export class ReactiveFormsModule {   /**    * @description    * Provides options for configuring the reactive forms module.    *    * @param opts An object of configuration options    * * `warnOnNgModelWithFormControl` Configures when to emit a warning when an `ngModel`    * binding is used with reactive form directives.    * * `callSetDisabledState` Configures whether to `always` call `setDisabledState`, which is more    * correct, or to only call it `whenDisabled`, which is the legacy behavior.    */   static withConfig(opts: {                     /** @deprecated as of v6 */ warnOnNgModelWithFormControl?: 'never'|'once'|                                                                             'always',                     callSetDisabledState?: SetDisabledStateOption,                     }): ModuleWithProviders<ReactiveFormsModule> {     return {       ngModule: ReactiveFormsModule,       providers: [         {           provide: NG_MODEL_WITH_FORM_CONTROL_WARNING,           useValue: opts.warnOnNgModelWithFormControl ?? 'always'         },         {           provide: CALL_SET_DISABLED_STATE,           useValue: opts.callSetDisabledState ?? setDisabledStateDefault         }       ]     };   } } ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * This module is used for handling user input, by defining and building a `FormGroup` that  * consists of `FormControl` objects, and mapping them onto the DOM. `FormControl`  * objects can then be used to read information from the form DOM elements.  *  * Forms providers are not included in default providers; you must import these providers  * explicitly.  */  export {ɵInternalFormsSharedModule} from './directives'; export {AbstractControlDirective} from './directives/abstract_control_directive'; export {AbstractFormGroupDirective} from './directives/abstract_form_group_directive'; export {CheckboxControlValueAccessor} from './directives/checkbox_value_accessor'; export {ControlContainer} from './directives/control_container'; export {ControlValueAccessor, NG_VALUE_ACCESSOR} from './directives/control_value_accessor'; export {COMPOSITION_BUFFER_MODE, DefaultValueAccessor} from './directives/default_value_accessor'; export {Form} from './directives/form_interface'; export {NgControl} from './directives/ng_control'; export {NgControlStatus, NgControlStatusGroup} from './directives/ng_control_status'; export {NgForm} from './directives/ng_form'; export {NgModel} from './directives/ng_model'; export {NgModelGroup} from './directives/ng_model_group'; export {ɵNgNoValidate} from './directives/ng_no_validate_directive'; export {NumberValueAccessor} from './directives/number_value_accessor'; export {RadioControlValueAccessor} from './directives/radio_control_value_accessor'; export {RangeValueAccessor} from './directives/range_value_accessor'; export {FormControlDirective} from './directives/reactive_directives/form_control_directive'; export {FormControlName} from './directives/reactive_directives/form_control_name'; export {FormGroupDirective} from './directives/reactive_directives/form_group_directive'; export {FormArrayName, FormGroupName} from './directives/reactive_directives/form_group_name'; export {NgSelectOption, SelectControlValueAccessor} from './directives/select_control_value_accessor'; export {SelectMultipleControlValueAccessor, ɵNgSelectMultipleOption} from './directives/select_multiple_control_value_accessor'; export {SetDisabledStateOption} from './directives/shared'; export {AsyncValidator, AsyncValidatorFn, CheckboxRequiredValidator, EmailValidator, MaxLengthValidator, MaxValidator, MinLengthValidator, MinValidator, PatternValidator, RequiredValidator, ValidationErrors, Validator, ValidatorFn} from './directives/validators'; export {ControlConfig, FormBuilder, NonNullableFormBuilder, UntypedFormBuilder, ɵElement} from './form_builder'; export {AbstractControl, AbstractControlOptions, FormControlStatus, ɵCoerceStrArrToNumArr, ɵGetProperty, ɵNavigate, ɵRawValue, ɵTokenize, ɵTypedOrUntyped, ɵValue, ɵWriteable} from './model/abstract_model'; export {FormArray, isFormArray, UntypedFormArray, ɵFormArrayRawValue, ɵFormArrayValue} from './model/form_array'; export {FormControl, FormControlOptions, FormControlState, isFormControl, UntypedFormControl, ɵFormControlCtor} from './model/form_control'; export {FormGroup, FormRecord, isFormGroup, isFormRecord, UntypedFormGroup, ɵFormGroupRawValue, ɵFormGroupValue, ɵOptionalKeys} from './model/form_group'; export {NG_ASYNC_VALIDATORS, NG_VALIDATORS, Validators} from './validators'; export {VERSION} from './version';  export * from './form_providers'; ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  /**  * @module  * @description  * Entry point for all public APIs of this package.  */ export * from './src/forms';  // This file only reexports content of the `src` folder. Keep it that way. ","/**  * @license  * Copyright Google LLC All Rights Reserved.  *  * Use of this source code is governed by an MIT-style license that can be  * found in the LICENSE file at https://angular.io/license  */  // This file is not used to build this module. It is only used during editing // by the TypeScript language service and during build for verification. `ngc` // replaces this file with production index.ts when it rewrites private symbol // names.  export * from './public_api'; ","/**  * Generated bundle index. Do not edit.  */  export * from './index'; "],"names":["getDOM","NG_DEV_MODE","isPromise","isObservable","RuntimeError","i1.NgControl","i2.ControlContainer","removeListItem","formDirectiveProvider","resolvedPromise","i1.ControlContainer","formControlBinding","coerceToBoolean","_buildValueString","_extractId","NgNoValidate","NgSelectMultipleOption","InternalFormsSharedModule","i1.NgModel","i2.NgModelGroup","i3.NgForm","i4.FormControlDirective","i5.FormGroupDirective","i6.FormControlName","i7.FormGroupName","i7.FormArrayName"],"mappings":";;;;;;;;;;;;AAqIA;;;;;;AAMG;MAEU,wBAAwB,CAAA;IAcnC,WAAoB,CAAA,SAAoB,EAAU,WAAuB,EAAA;QAArD,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QAAU,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;AAbzE;;;;AAIG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,GAAG,CAAC;AAE1B;;;AAGG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAG,CAAC;KAEwD;AAE7E;;;;AAIG;IACO,WAAW,CAAC,GAAW,EAAE,KAAU,EAAA;AAC3C,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;KACxE;AAED;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAAkB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;KAC1C;;gIA/CU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oHAAxB,wBAAwB,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,SAAS;;AAmDV;;;;;;;;AAQG;AAEG,MAAO,2BAA4B,SAAQ,wBAAwB,CAAA;;mIAA5D,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;uHAA3B,2BAA2B,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,SAAS;;AAIV;;;;;;AAMG;MACU,iBAAiB,GAC1B,IAAI,cAAc,CAAsC,iBAAiB;;ACxM7E,MAAM,uBAAuB,GAAa;AACxC,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,4BAA4B,CAAC;AAC3D,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAOG,MAAO,4BAA6B,SAAQ,2BAA2B,CAAA;AAE3E;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KACpC;;oIARU,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wHAA5B,4BAA4B,EAAA,QAAA,EAAA,uGAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAF5B,CAAC,uBAAuB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAEzB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EACJ,uGAAuG;oBAC3G,IAAI,EAAE,EAAC,UAAU,EAAE,iCAAiC,EAAE,QAAQ,EAAE,aAAa,EAAC;oBAC9E,SAAS,EAAE,CAAC,uBAAuB,CAAC;AACrC,iBAAA,CAAA;;;ACjCM,MAAM,sBAAsB,GAAQ;AACzC,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF;;;AAGG;AACH,SAAS,UAAU,GAAA;AACjB,IAAA,MAAM,SAAS,GAAGA,OAAM,EAAE,GAAGA,OAAM,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC;IAC1D,OAAO,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;AACvD,CAAC;AAED;;;;;AAKG;MACU,uBAAuB,GAAG,IAAI,cAAc,CAAU,sBAAsB,EAAE;AAE3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCG;AAeG,MAAO,oBAAqB,SAAQ,wBAAwB,CAAA;AAIhE,IAAA,WAAA,CACI,QAAmB,EAAE,UAAsB,EACU,gBAAyB,EAAA;AAChF,QAAA,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAD2B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAS;;QAJ1E,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAMzB,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,UAAU,EAAE,CAAC;AACvC,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,MAAM,eAAe,GAAG,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC;AACnD,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;KAC5C;;AAGD,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACzE,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtB,SAAA;KACF;;IAGD,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KACxB;;AAGD,IAAA,eAAe,CAAC,KAAU,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC/C;;AAtCU,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,qEAMP,uBAAuB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gHANpC,oBAAoB,EAAA,QAAA,EAAA,8MAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,gBAAA,EAAA,iDAAA,EAAA,EAAA,EAAA,SAAA,EAFpB,CAAC,sBAAsB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAExB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EACJ,8MAA8M;;;;AAIlN,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,8CAA8C;AACzD,wBAAA,QAAQ,EAAE,aAAa;AACvB,wBAAA,oBAAoB,EAAE,gCAAgC;AACtD,wBAAA,kBAAkB,EAAE,iDAAiD;AACtE,qBAAA;oBACD,SAAS,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;;0BAOM,QAAQ;;0BAAI,MAAM;2BAAC,uBAAuB,CAAA;;;AC3EjD,MAAMC,aAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC;AAEpE,SAAS,iBAAiB,CAAC,KAAU,EAAA;AACnC;;;;AAIG;IACH,OAAO,KAAK,IAAI,IAAI;SACf,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,cAAc,CAAC,KAAU,EAAA;;IAEhC,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;MACU,aAAa,GAAG,IAAI,cAAc,CAA4B,cAAc,EAAE;AAE3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;MACU,mBAAmB,GAC5B,IAAI,cAAc,CAA4B,mBAAmB,EAAE;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;AACH,MAAM,YAAY,GACd,oMAAoM,CAAC;AAEzM;;;;;;;;;;AAUG;MACU,UAAU,CAAA;AACrB;;;;;;;;;;;;;;;;;;;AAmBG;IACH,OAAO,GAAG,CAAC,GAAW,EAAA;AACpB,QAAA,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;KAC1B;AAED;;;;;;;;;;;;;;;;;;;AAmBG;IACH,OAAO,GAAG,CAAC,GAAW,EAAA;AACpB,QAAA,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;KAC1B;AAED;;;;;;;;;;;;;;;;;;;AAmBG;IACH,OAAO,QAAQ,CAAC,OAAwB,EAAA;AACtC,QAAA,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;KACnC;AAED;;;;;;;;;;;;;;;;;;;;AAoBG;IACH,OAAO,YAAY,CAAC,OAAwB,EAAA;AAC1C,QAAA,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;KACvC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCG;IACH,OAAO,KAAK,CAAC,OAAwB,EAAA;AACnC,QAAA,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;KAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;IACH,OAAO,SAAS,CAAC,SAAiB,EAAA;AAChC,QAAA,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC;KACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;IACH,OAAO,SAAS,CAAC,SAAiB,EAAA;AAChC,QAAA,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC;KACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDG;IACH,OAAO,OAAO,CAAC,OAAsB,EAAA;AACnC,QAAA,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;KAClC;AAED;;;;;;AAMG;IACH,OAAO,aAAa,CAAC,OAAwB,EAAA;AAC3C,QAAA,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;KAC/B;IAeD,OAAO,OAAO,CAAC,UAA+C,EAAA;AAC5D,QAAA,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;KAC5B;AAED;;;;;;;;;;AAUG;IACH,OAAO,YAAY,CAAC,UAAqC,EAAA;AACvD,QAAA,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;KACjC;AACF,CAAA;AAED;;;AAGG;AACG,SAAU,YAAY,CAAC,GAAW,EAAA;IACtC,OAAO,CAAC,OAAwB,KAA2B;QACzD,IAAI,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE;YAC9D,OAAO,IAAI,CAAC;AACb,SAAA;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;;AAGxC,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,GAAG,GAAG,EAAC,KAAK,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAC,EAAC,GAAG,IAAI,CAAC;AAC9F,KAAC,CAAC;AACJ,CAAC;AAED;;;AAGG;AACG,SAAU,YAAY,CAAC,GAAW,EAAA;IACtC,OAAO,CAAC,OAAwB,KAA2B;QACzD,IAAI,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE;YAC9D,OAAO,IAAI,CAAC;AACb,SAAA;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;;AAGxC,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,GAAG,GAAG,EAAC,KAAK,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAC,EAAC,GAAG,IAAI,CAAC;AAC9F,KAAC,CAAC;AACJ,CAAC;AAED;;;AAGG;AACG,SAAU,iBAAiB,CAAC,OAAwB,EAAA;AACxD,IAAA,OAAO,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAC,UAAU,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC;AACtE,CAAC;AAED;;;;AAIG;AACG,SAAU,qBAAqB,CAAC,OAAwB,EAAA;AAC5D,IAAA,OAAO,OAAO,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC;AAC5D,CAAC;AAED;;;AAGG;AACG,SAAU,cAAc,CAAC,OAAwB,EAAA;AACrD,IAAA,IAAI,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACpC,OAAO,IAAI,CAAC;AACb,KAAA;IACD,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;AACnE,CAAC;AAED;;;AAGG;AACG,SAAU,kBAAkB,CAAC,SAAiB,EAAA;IAClD,OAAO,CAAC,OAAwB,KAA2B;AACzD,QAAA,IAAI,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;;AAGtE,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS;AACnC,YAAA,EAAC,WAAW,EAAE,EAAC,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAC,EAAC;AAClF,YAAA,IAAI,CAAC;AACX,KAAC,CAAC;AACJ,CAAC;AAED;;;AAGG;AACG,SAAU,kBAAkB,CAAC,SAAiB,EAAA;IAClD,OAAO,CAAC,OAAwB,KAA2B;AACzD,QAAA,OAAO,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS;AACpE,YAAA,EAAC,WAAW,EAAE,EAAC,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAC,EAAC;AAClF,YAAA,IAAI,CAAC;AACX,KAAC,CAAC;AACJ,CAAC;AAED;;;AAGG;AACG,SAAU,gBAAgB,CAAC,OAAsB,EAAA;AACrD,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,aAAa,CAAC;AACnC,IAAA,IAAI,KAAa,CAAC;AAClB,IAAA,IAAI,QAAgB,CAAC;AACrB,IAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,QAAQ,GAAG,EAAE,CAAC;AAEd,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,QAAQ,IAAI,GAAG,CAAC;QAE/C,QAAQ,IAAI,OAAO,CAAC;QAEpB,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;YAAE,QAAQ,IAAI,GAAG,CAAC;AAEhE,QAAA,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9B,KAAA;AAAM,SAAA;AACL,QAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC9B,KAAK,GAAG,OAAO,CAAC;AACjB,KAAA;IACD,OAAO,CAAC,OAAwB,KAA2B;AACzD,QAAA,IAAI,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACpC,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,MAAM,KAAK,GAAW,OAAO,CAAC,KAAK,CAAC;QACpC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;AACJ,YAAA,EAAC,SAAS,EAAE,EAAC,iBAAiB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAC,EAAC,CAAC;AAC9F,KAAC,CAAC;AACJ,CAAC;AAED;;AAEG;AACG,SAAU,aAAa,CAAC,OAAwB,EAAA;AACpD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,CAAM,EAAA;IACvB,OAAO,CAAC,IAAI,IAAI,CAAC;AACnB,CAAC;AAEK,SAAU,YAAY,CAAC,KAAU,EAAA;AACrC,IAAA,MAAM,GAAG,GAAGC,UAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACnD,IAAID,aAAW,IAAI,EAAEE,aAAY,CAAC,GAAG,CAAC,CAAC,EAAE;QACvC,IAAI,YAAY,GAAG,CAAA,yDAAA,CAA2D,CAAC;;AAE/E,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,YAAY;AACR,gBAAA,8EAA8E,CAAC;AACpF,SAAA;AACD,QAAA,MAAM,IAAIC,aAAY,CAA+C,CAAA,IAAA,qDAAA,YAAY,CAAC,CAAC;AACpF,KAAA;AACD,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,aAAwC,EAAA;IAC3D,IAAI,GAAG,GAAyB,EAAE,CAAC;AACnC,IAAA,aAAa,CAAC,OAAO,CAAC,CAAC,MAA6B,KAAI;AACtD,QAAA,GAAG,GAAG,MAAM,IAAI,IAAI,GAAG,EAAC,GAAG,GAAI,EAAE,GAAG,MAAM,EAAC,GAAG,GAAI,CAAC;AACrD,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC;AACpD,CAAC;AAID,SAAS,iBAAiB,CACtB,OAAwB,EAAE,UAAe,EAAA;AAC3C,IAAA,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,aAAa,CAAI,SAAqC,EAAA;AAC7D,IAAA,OAAO,CAAE,SAAuB,CAAC,QAAQ,CAAC;AAC5C,CAAC;AAED;;;;;;;AAOG;AACG,SAAU,mBAAmB,CAAI,UAA0C,EAAA;AAC/E,IAAA,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,IAAG;AAChC,QAAA,OAAO,aAAa,CAAI,SAAS,CAAC;AAC9B,YAAA,SAAS;AACT,aAAC,CAAC,CAAkB,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAiB,CAAC;AACtE,KAAC,CAAC,CAAC;AACL,CAAC;AAED;;;AAGG;AACH,SAAS,OAAO,CAAC,UAA+C,EAAA;AAC9D,IAAA,IAAI,CAAC,UAAU;AAAE,QAAA,OAAO,IAAI,CAAC;IAC7B,MAAM,iBAAiB,GAAkB,UAAU,CAAC,MAAM,CAAC,SAAS,CAAQ,CAAC;AAC7E,IAAA,IAAI,iBAAiB,CAAC,MAAM,IAAI,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;AAE/C,IAAA,OAAO,UAAS,OAAwB,EAAA;QACtC,OAAO,WAAW,CAAC,iBAAiB,CAAc,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;AACjF,KAAC,CAAC;AACJ,CAAC;AAED;;;;AAIG;AACG,SAAU,iBAAiB,CAAC,UAAwC,EAAA;AACxE,IAAA,OAAO,UAAU,IAAI,IAAI,GAAG,OAAO,CAAC,mBAAmB,CAAc,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC;AAC3F,CAAC;AAED;;;AAGG;AACH,SAAS,YAAY,CAAC,UAAqC,EAAA;AACzD,IAAA,IAAI,CAAC,UAAU;AAAE,QAAA,OAAO,IAAI,CAAC;IAC7B,MAAM,iBAAiB,GAAuB,UAAU,CAAC,MAAM,CAAC,SAAS,CAAQ,CAAC;AAClF,IAAA,IAAI,iBAAiB,CAAC,MAAM,IAAI,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;AAE/C,IAAA,OAAO,UAAS,OAAwB,EAAA;AACtC,QAAA,MAAM,WAAW,GACb,iBAAiB,CAAmB,OAAO,EAAE,iBAAiB,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACtF,QAAA,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACtD,KAAC,CAAC;AACJ,CAAC;AAED;;;;AAIG;AACG,SAAU,sBAAsB,CAAC,UAAkD,EAAA;AAEvF,IAAA,OAAO,UAAU,IAAI,IAAI,GAAG,YAAY,CAAC,mBAAmB,CAAmB,UAAU,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC;AACnC,CAAC;AAED;;;AAGG;AACa,SAAA,eAAe,CAAI,iBAA6B,EAAE,YAAe,EAAA;IAC/E,IAAI,iBAAiB,KAAK,IAAI;QAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AACtD,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,iBAAiB,EAAE,YAAY,CAAC;AACpC,QAAA,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAC9E,CAAC;AAED;;AAEG;AACG,SAAU,oBAAoB,CAAC,OAAwB,EAAA;IAC3D,OAAQ,OAAe,CAAC,cAAoD,CAAC;AAC/E,CAAC;AAED;;AAEG;AACG,SAAU,yBAAyB,CAAC,OAAwB,EAAA;IAEhE,OAAQ,OAAe,CAAC,mBAAmE,CAAC;AAC9F,CAAC;AAED;;;;;;AAMG;AACG,SAAU,mBAAmB,CAAyC,UACI,EAAA;AAC9E,IAAA,IAAI,CAAC,UAAU;AAAE,QAAA,OAAO,EAAE,CAAC;AAC3B,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;AAMG;AACa,SAAA,YAAY,CACxB,UAAsB,EAAE,SAAY,EAAA;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,UAAU,KAAK,SAAS,CAAC;AAC/F,CAAC;AAED;;;;;;AAMG;AACa,SAAA,aAAa,CACzB,UAAiB,EAAE,iBAA6B,EAAA;AAClD,IAAA,MAAM,OAAO,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AACvD,IAAA,MAAM,eAAe,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;AACxD,IAAA,eAAe,CAAC,OAAO,CAAC,CAAC,CAAI,KAAI;;;;;AAK/B,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;AAC7B,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,SAAA;AACH,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,OAAO,CAAC;AACjB,CAAC;AAEe,SAAA,gBAAgB,CAC5B,UAAiB,EAAE,iBAA6B,EAAA;AAClD,IAAA,OAAO,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1F;;AC5tBA;;;;;;;AAOG;MACmB,wBAAwB,CAAA;AAA9C,IAAA,WAAA,GAAA;AA+JE;;;AAGG;QACH,IAAc,CAAA,cAAA,GAAiC,EAAE,CAAC;AAElD;;;;AAIG;QACH,IAAmB,CAAA,mBAAA,GAA2C,EAAE,CAAC;AAsCjE;;AAEG;QACK,IAAmB,CAAA,mBAAA,GAAmB,EAAE,CAAC;KA6FlD;AAvSC;;;AAGG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;KACjD;AAED;;;;;AAKG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;KACjD;AAED;;;;AAIG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;KACnD;AAED;;;;;AAKG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;KACnD;AAED;;;;;AAKG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;KACpD;AAED;;;;AAIG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;KACnD;AAED;;;AAGG;AACH,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;KAClD;AAED;;;;AAIG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;KACpD;AAED;;;;AAIG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;KACjD;AAED;;;;AAIG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;KACnD;AAED;;;;;AAKG;AACH,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;KAClD;AAED;;;;AAIG;AACH,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;KACrD;AAED;;;;AAIG;AACH,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;KACzD;AAED;;;;;AAKG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;KACxD;AAED;;;;AAIG;AACH,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC;KACb;AA2BD;;;AAGG;AACH,IAAA,cAAc,CAAC,UAAkD,EAAA;AAC/D,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,oBAAoB,GAAG,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACpE;AAED;;;AAGG;AACH,IAAA,mBAAmB,CAAC,UAA4D,EAAA;AAC9E,QAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,yBAAyB,GAAG,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;KACnF;AAED;;;;AAIG;AACH,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC;KAC1C;AAED;;;;AAIG;AACH,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC;KAC/C;AAOD;;;;AAIG;AACH,IAAA,kBAAkB,CAAC,EAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACnC;AAED;;;;AAIG;IACH,yBAAyB,GAAA;AACvB,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;KAC/B;AAED;;;AAGG;IACH,KAAK,CAAC,QAAa,SAAS,EAAA;QAC1B,IAAI,IAAI,CAAC,OAAO;AAAE,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;IACH,QAAQ,CAAC,SAAiB,EAAE,IAAkC,EAAA;QAC5D,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;KACtE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;IACH,QAAQ,CAAC,SAAiB,EAAE,IAAkC,EAAA;QAC5D,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;KACrE;AACF;;AC5TD;;;;;;AAMG;AACG,MAAgB,gBAAiB,SAAQ,wBAAwB,CAAA;AAQrE;;;AAGG;AACH,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;AAGG;AACH,IAAA,IAAa,IAAI,GAAA;AACf,QAAA,OAAO,IAAI,CAAC;KACb;AACF;;AC7BD;;;;;;AAMG;AACG,MAAgB,SAAU,SAAQ,wBAAwB,CAAA;AAAhE,IAAA,WAAA,GAAA;;AACE;;;;;AAKG;QACH,IAAO,CAAA,OAAA,GAA0B,IAAI,CAAC;AAEtC;;;AAGG;QACH,IAAI,CAAA,IAAA,GAAuB,IAAI,CAAC;AAEhC;;;AAGG;QACH,IAAa,CAAA,aAAA,GAA8B,IAAI,CAAC;KASjD;AAAA;;AClCD;AACA;AACA;AACA;MACa,qBAAqB,CAAA;AAGhC,IAAA,WAAA,CAAY,EAAiC,EAAA;AAC3C,QAAA,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;KACf;AAED,IAAA,IAAc,SAAS,GAAA;QACrB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC;KACrC;AAED,IAAA,IAAc,WAAW,GAAA;QACvB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC;KACvC;AAED,IAAA,IAAc,UAAU,GAAA;QACtB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC;KACtC;AAED,IAAA,IAAc,OAAO,GAAA;QACnB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC;KACnC;AAED,IAAA,IAAc,OAAO,GAAA;QACnB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC;KACnC;AAED,IAAA,IAAc,SAAS,GAAA;QACrB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC;KACrC;AAED,IAAA,IAAc,SAAS,GAAA;QACrB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC;KACrC;AAED,IAAA,IAAc,WAAW,GAAA;;;AAGvB,QAAA,OAAO,CAAC,CAAE,IAAI,CAAC,GAA8C,EAAE,SAAS,CAAC;KAC1E;AACF,CAAA;AAEM,MAAM,mBAAmB,GAAG;AACjC,IAAA,sBAAsB,EAAE,aAAa;AACrC,IAAA,oBAAoB,EAAE,WAAW;AACjC,IAAA,qBAAqB,EAAE,YAAY;AACnC,IAAA,kBAAkB,EAAE,SAAS;AAC7B,IAAA,kBAAkB,EAAE,SAAS;AAC7B,IAAA,oBAAoB,EAAE,WAAW;AACjC,IAAA,oBAAoB,EAAE,WAAW;CAClC,CAAC;AAEK,MAAM,iBAAiB,GAAG;AAC/B,IAAA,GAAG,mBAAmB;AACtB,IAAA,sBAAsB,EAAE,aAAa;CACtC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAEG,MAAO,eAAgB,SAAQ,qBAAqB,CAAA;AACxD,IAAA,WAAA,CAAoB,EAAa,EAAA;QAC/B,KAAK,CAAC,EAAE,CAAC,CAAC;KACX;;uHAHU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2GAAf,eAAe,EAAA,QAAA,EAAA,2CAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAC,QAAQ,EAAE,2CAA2C,EAAE,IAAI,EAAE,mBAAmB,EAAC,CAAA;;0BAE9E,IAAI;;AAKnB;;;;;;;;;;;AAWG;AAMG,MAAO,oBAAqB,SAAQ,qBAAqB,CAAA;AAC7D,IAAA,WAAA,CAAgC,EAAoB,EAAA;QAClD,KAAK,CAAC,EAAE,CAAC,CAAC;KACX;;4HAHU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gHAApB,oBAAoB,EAAA,QAAA,EAAA,0FAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EACJ,0FAA0F;AAC9F,oBAAA,IAAI,EAAE,iBAAiB;AACxB,iBAAA,CAAA;;0BAEc,QAAQ;;0BAAI,IAAI;;;ACnHxB,MAAM,sBAAsB,GAAG,CAAA;;;;;;;;;MAShC,CAAC;AAEA,MAAM,oBAAoB,GAAG,CAAA;;;;;;;;;;;MAW9B,CAAC;AAEA,MAAM,oBAAoB,GAAG,CAAA;;;;;;;;;;;;;;MAc9B,CAAC;AAEA,MAAM,mBAAmB,GAAG,CAAA;;;;;UAKzB,CAAC;AAEJ,MAAM,2BAA2B,GAAG,CAAA;;;;;CAK1C;;SC7Ce,sBAAsB,GAAA;IACpC,OAAO,IAAIF,aAAY,CAEnB,IAAA,0DAAA,CAAA;;;;;MAKA,sBAAsB,CAAA,CAAE,CAAC,CAAC;AAChC,CAAC;SAEe,qBAAqB,GAAA;IACnC,OAAO,IAAIA,aAAY,CAEnB,IAAA,8DAAA,CAAA;;;;;QAKE,oBAAoB,CAAA;;;;QAIpB,mBAAmB,CAAA,CAAE,CAAC,CAAC;AAC/B,CAAC;SAEe,oBAAoB,GAAA;IAClC,OAAO,IAAIA,aAAY,CAEnB,IAAA,qDAAA,CAAA;;;;QAIE,sBAAsB,CAAA,CAAE,CAAC,CAAC;AAClC,CAAC;SAEe,oBAAoB,GAAA;IAClC,OAAO,IAAIA,aAAY,CAEnB,IAAA,wDAAA,CAAA;;;;;MAKA,oBAAoB,CAAA,CAAE,CAAC,CAAC;AAC9B,CAAC;SAEe,oBAAoB,GAAA;IAClC,OAAO,IAAIA,aAAY,CAEnB,IAAA,wDAAA,CAAA;;;;;QAKE,oBAAoB,CAAA,CAAE,CAAC,CAAC;AAChC,CAAC;AAEM,MAAM,mBAAmB,GAAG,CAAA;;;;;;;;;;;;;;;CAelC,CAAC;AAEK,MAAM,qCAAqC,GAAG,CAAA;;;;;;;;;;;;;;CAcpD,CAAC;AAEI,SAAU,cAAc,CAAC,aAAqB,EAAA;IAClD,OAAO,CAAA;iEACwD,aAAa,CAAA;;;;;;iCAOxE,aAAa,KAAK,aAAa,GAAG,sBAAsB,GAAG,iBAAiB,CAAA;GAC/E,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,WAAoB,EAAE,GAAkB,EAAA;AAC3D,IAAA,OAAO,WAAW,GAAG,CAAe,YAAA,EAAA,GAAG,CAAG,CAAA,CAAA,GAAG,CAAa,UAAA,EAAA,GAAG,EAAE,CAAC;AAClE,CAAC;AAEK,SAAU,eAAe,CAAC,WAAoB,EAAA;IAClD,OAAO,CAAA;AAEH,oDAAA,EAAA,WAAW,GAAG,OAAO,GAAG,OAAO,CAAA;;GAElC,CAAC;AACJ,CAAC;AAEe,SAAA,mBAAmB,CAAC,WAAoB,EAAE,GAAkB,EAAA;IAC1E,OAAO,CAAA,yBAAA,EAA4B,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;AACrE,CAAC;AAEe,SAAA,wBAAwB,CAAC,WAAoB,EAAE,GAAkB,EAAA;IAC/E,OAAO,CAAA,qCAAA,EAAwC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;AACjF;;ACxHA,MAAM,WAAW,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC;AAEpE;;;;AAIG;AACI,MAAM,KAAK,GAAG,OAAO,CAAC;AAE7B;;;;AAIG;AACI,MAAM,OAAO,GAAG,SAAS,CAAC;AAEjC;;;;;;AAMG;AACI,MAAM,OAAO,GAAG,SAAS,CAAC;AAEjC;;;;;;AAMG;AACI,MAAM,QAAQ,GAAG,UAAU,CAAC;AAmBnC;;AAEG;AACG,SAAU,cAAc,CAAC,eACI,EAAA;AACjC,IAAA,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC,UAAU,GAAG,eAAe,KAAK,IAAI,CAAC;AAChG,CAAC;AAED;;AAEG;AACH,SAAS,iBAAiB,CAAC,SAAyC,EAAA;AAClE,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,iBAAiB,CAAC,SAAS,CAAC,GAAG,SAAS,IAAI,IAAI,CAAC;AACrF,CAAC;AAED;;AAEG;AACa,SAAA,mBAAmB,CAC/B,cAAyD,EACzD,eAAuE,EAAA;AAEzE,IAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,QAAA,IAAI,YAAY,CAAC,eAAe,CAAC,IAAI,cAAc,EAAE;AACnD,YAAA,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;AACrD,SAAA;AACF,KAAA;AACD,IAAA,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC,eAAe,GAAG,cAAc,KAAK,IAAI,CAAC;AACpG,CAAC;AAED;;AAEG;AACH,SAAS,sBAAsB,CAAC,cACI,EAAA;AAClC,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,sBAAsB,CAAC,cAAc,CAAC;QACtC,cAAc,IAAI,IAAI,CAAC;AAChE,CAAC;AA2BK,SAAU,YAAY,CAAC,eACI,EAAA;IAC/B,OAAO,eAAe,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;QAC7D,OAAO,eAAe,KAAK,QAAQ,CAAC;AAC1C,CAAC;SAEe,oBAAoB,CAAC,MAAW,EAAE,OAAgB,EAAE,GAAkB,EAAA;AACpF,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAA2C,CAAC;AACpE,IAAA,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAC9D,IAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACtB,QAAA,MAAM,IAAIA,aAAY,CAAA,IAAA,qCACY,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAChF,KAAA;AACD,IAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAClB,QAAA,MAAM,IAAIA,aAAY,CAAA,IAAA,yCACgB,WAAW,GAAG,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7F,KAAA;AACH,CAAC;SAEe,sBAAsB,CAAC,OAAY,EAAE,OAAgB,EAAE,KAAU,EAAA;IAC/E,OAAO,CAAC,aAAa,CAAC,CAAC,CAAU,EAAE,GAAkB,KAAI;AACvD,QAAA,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AAC5B,YAAA,MAAM,IAAIA,aAAY,CAAA,IAAA,+CAElB,WAAW,GAAG,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAChE,SAAA;AACH,KAAC,CAAC,CAAC;AACL,CAAC;AAuKD;AAEA;;;;;;;;;;;;;;;;AAgBG;MACmB,eAAe,CAAA;AAyEnC;;;;;;;AAOG;IACH,WACI,CAAA,UAA0C,EAC1C,eAAyD,EAAA;;QAjF7D,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAEtB;;;;AAIG;QACH,IAA4B,CAAA,4BAAA,GAAG,KAAK,CAAC;;QAGrC,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;;AAGxB,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAK,GAAG,CAAC;QAKvB,IAAO,CAAA,OAAA,GAA6B,IAAI,CAAC;AAmLjD;;;;;;AAMG;QACa,IAAQ,CAAA,QAAA,GAAY,IAAI,CAAC;AAazC;;;;;AAKG;QACa,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;;QA0wBzC,IAAiB,CAAA,iBAAA,GAAyC,EAAE,CAAC;AAv5B3D,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;KAC9C;AAED;;;;AAIG;AACH,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,oBAAoB,CAAC;KAClC;IACD,IAAI,SAAS,CAAC,WAA6B,EAAA;QACzC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;KAC/D;AAED;;;;AAIG;AACH,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,yBAAyB,CAAC;KACvC;IACD,IAAI,cAAc,CAAC,gBAAuC,EAAA;QACxD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,GAAG,gBAAgB,CAAC;KAC9E;AAED;;AAEG;AACH,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAYD;;;;;;;AAOG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC;KAC9B;AAED;;;;;;;AAOG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC;KAChC;AAED;;;;;;;AAOG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC;KAC/B;AAED;;;;;;;;;;AAUG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;KACjC;AAED;;;;;;;;AAQG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;KACjC;AAiBD;;;;;;AAMG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;KACvB;AAUD;;;;;AAKG;AACH,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;KACtB;AAmBD;;;;;AAKG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;KAC1F;AAED;;;;;;;;;AASG;AACH,IAAA,aAAa,CAAC,UAA0C,EAAA;AACtD,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;KACpC;AAED;;;;;;;;;AASG;AACH,IAAA,kBAAkB,CAAC,UAAoD,EAAA;AACrE,QAAA,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;KACzC;AAED;;;;;;;;;;;AAWG;AACH,IAAA,aAAa,CAAC,UAAqC,EAAA;AACjD,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;KACpE;AAED;;;;;;;;;;AAUG;AACH,IAAA,kBAAkB,CAAC,UAA+C,EAAA;AAChE,QAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;KAC9E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACH,IAAA,gBAAgB,CAAC,UAAqC,EAAA;AACpD,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;KACvE;AAED;;;;;;;;;;AAUG;AACH,IAAA,qBAAqB,CAAC,UAA+C,EAAA;AACnE,QAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;KACjF;AAED;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACH,IAAA,YAAY,CAAC,SAAsB,EAAA;QACjC,OAAO,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;KACrD;AAED;;;;;;;AAOG;AACH,IAAA,iBAAiB,CAAC,SAA2B,EAAA;QAC3C,OAAO,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;KAC1D;AAED;;;;;;AAMG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACvB;AAED;;;;;;AAMG;IACH,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC5B;AAED;;;;;;;;;;;;AAYG;IACH,aAAa,CAAC,OAA6B,EAAE,EAAA;AAC1C,QAAA,IAA2B,CAAC,OAAO,GAAG,IAAI,CAAC;QAE5C,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAClC,SAAA;KACF;AAED;;;AAGG;IACH,gBAAgB,GAAA;QACd,IAAI,CAAC,aAAa,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAErC,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,OAAwB,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;KAC9E;AAED;;;;;;;;;;;;;;AAcG;IACH,eAAe,CAAC,OAA6B,EAAE,EAAA;AAC5C,QAAA,IAA2B,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAE7B,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,OAAwB,KAAI;YAC9C,OAAO,CAAC,eAAe,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACnC,SAAA;KACF;AAED;;;;;;;;;;;;AAYG;IACH,WAAW,CAAC,OAA6B,EAAE,EAAA;AACxC,QAAA,IAA4B,CAAC,QAAQ,GAAG,KAAK,CAAC;QAE/C,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAChC,SAAA;KACF;AAED;;;;;;;;;;;;;;;AAeG;IACH,cAAc,CAAC,OAA6B,EAAE,EAAA;AAC3C,QAAA,IAA4B,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAE3B,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,OAAwB,KAAI;YAC9C,OAAO,CAAC,cAAc,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAC3C,SAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACpC,SAAA;KACF;AAED;;;;;;;;;;;;;;;AAeG;IACH,aAAa,CAAC,OAAkD,EAAE,EAAA;AAC/D,QAAA,IAAoC,CAAC,MAAM,GAAG,OAAO,CAAC;AAEvD,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;YAC3B,IAAI,CAAC,aAAiD,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3E,SAAA;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAClC,SAAA;KACF;AAED;;;;;;;;;;;;;;;;AAgBG;IACH,OAAO,CAAC,OAAkD,EAAE,EAAA;;;QAG1D,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEhE,QAAA,IAAoC,CAAC,MAAM,GAAG,QAAQ,CAAC;AACvD,QAAA,IAA0C,CAAC,MAAM,GAAG,IAAI,CAAC;AAC1D,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,OAAwB,KAAI;AAC9C,YAAA,OAAO,CAAC,OAAO,CAAC,EAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,EAAE,CAAC;AAEpB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;YAC3B,IAAI,CAAC,YAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAiD,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3E,SAAA;QAED,IAAI,CAAC,gBAAgB,CAAC,EAAC,GAAG,IAAI,EAAE,iBAAiB,EAAC,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;KAC9D;AAED;;;;;;;;;;;;;;;;;AAiBG;IACH,MAAM,CAAC,OAAkD,EAAE,EAAA;;;QAGzD,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEhE,QAAA,IAAoC,CAAC,MAAM,GAAG,KAAK,CAAC;AACrD,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,OAAwB,KAAI;AAC9C,YAAA,OAAO,CAAC,MAAM,CAAC,EAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,sBAAsB,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC;QAEzE,IAAI,CAAC,gBAAgB,CAAC,EAAC,GAAG,IAAI,EAAE,iBAAiB,EAAC,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;KAC/D;AAEO,IAAA,gBAAgB,CACpB,IAA4E,EAAA;QAC9E,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAC1C,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAC3B,gBAAA,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;AAChC,aAAA;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AAC/B,SAAA;KACF;AAED;;;;AAIG;AACH,IAAA,SAAS,CAAC,MAAgC,EAAA;AACxC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;KACvB;AAiBD;;;AAGG;IACH,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAED;;;;;;;;;;;;;AAaG;IACH,sBAAsB,CAAC,OAAkD,EAAE,EAAA;QACzE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,2BAA2B,EAAE,CAAC;AAClC,YAAA,IAA0C,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACzE,YAAA,IAAoC,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAEvE,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACpD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzC,aAAA;AACF,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;YAC3B,IAAI,CAAC,YAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAiD,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3E,SAAA;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAC3C,SAAA;KACF;;AAGD,IAAA,mBAAmB,CAAC,IAA8B,GAAA,EAAC,SAAS,EAAE,IAAI,EAAC,EAAA;AACjE,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,IAAqB,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,sBAAsB,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC;KAC1E;IAEO,iBAAiB,GAAA;AACtB,QAAA,IAAoC,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,QAAQ,GAAG,KAAK,CAAC;KAC/F;IAEO,aAAa,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KACrD;AAEO,IAAA,kBAAkB,CAAC,SAAmB,EAAA;QAC5C,IAAI,IAAI,CAAC,cAAc,EAAE;AACtB,YAAA,IAAoC,CAAC,MAAM,GAAG,OAAO,CAAC;AACvD,YAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;YACzC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,4BAA4B,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,MAA6B,KAAI;AAClF,gBAAA,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;;;;gBAI1C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAC,SAAS,EAAC,CAAC,CAAC;AACtC,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAEO,2BAA2B,GAAA;QACjC,IAAI,IAAI,CAAC,4BAA4B,EAAE;AACrC,YAAA,IAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,CAAC;AAChD,YAAA,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;AAC3C,SAAA;KACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AACH,IAAA,SAAS,CAAC,MAA6B,EAAE,IAAA,GAA8B,EAAE,EAAA;AACtE,QAAA,IAA0C,CAAC,MAAM,GAAG,MAAM,CAAC;QAC5D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC;KACtD;AAmBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;AACH,IAAA,GAAG,CAAyC,IAAO,EAAA;QAEjD,IAAI,QAAQ,GAAgC,IAAI,CAAC;QACjD,IAAI,QAAQ,IAAI,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AAAE,YAAA,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7D,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;QACvC,OAAO,QAAQ,CAAC,MAAM,CAClB,CAAC,OAA6B,EAAE,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;KACpF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;IACH,QAAQ,CAAC,SAAiB,EAAE,IAAkC,EAAA;AAC5D,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC7C,QAAA,OAAO,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;KACrE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;IACH,QAAQ,CAAC,SAAiB,EAAE,IAAkC,EAAA;QAC5D,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;KACzC;AAED;;AAEG;AACH,IAAA,IAAI,IAAI,GAAA;QACN,IAAI,CAAC,GAAoB,IAAI,CAAC;QAE9B,OAAO,CAAC,CAAC,OAAO,EAAE;AAChB,YAAA,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AACf,SAAA;AAED,QAAA,OAAO,CAAC,CAAC;KACV;;AAGD,IAAA,qBAAqB,CAAC,SAAkB,EAAA;AACrC,QAAA,IAAoC,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAEvE,QAAA,IAAI,SAAS,EAAE;YACZ,IAAI,CAAC,aAAiD,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3E,SAAA;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;AAC/C,SAAA;KACF;;IAGD,gBAAgB,GAAA;AACb,QAAA,IAA2C,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AAC9E,QAAA,IAAuD,CAAC,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;KAC7F;IAGO,gBAAgB,GAAA;QACtB,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAAE,YAAA,OAAO,QAAQ,CAAC;QACjD,IAAI,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,OAAO,CAAC;QAChC,IAAI,IAAI,CAAC,4BAA4B,IAAI,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAAE,YAAA,OAAO,OAAO,CAAC;AAC9F,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAAE,YAAA,OAAO,OAAO,CAAC;AACzD,QAAA,OAAO,KAAK,CAAC;KACd;;AAkBD,IAAA,sBAAsB,CAAC,MAAyB,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,OAAwB,KAAK,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;KACnF;;IAGD,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,OAAwB,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;KACvE;;IAGD,mBAAmB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,OAAwB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KACzE;;IAGD,eAAe,CAAC,OAA6B,EAAE,EAAA;QAC5C,IAA4B,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEnE,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACpC,SAAA;KACF;;IAGD,cAAc,CAAC,OAA6B,EAAE,EAAA;AAC3C,QAAA,IAA2B,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAElE,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACnC,SAAA;KACF;;AAMD,IAAA,2BAA2B,CAAC,EAAc,EAAA;AACxC,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;KAC/B;;AAGD,IAAA,kBAAkB,CAAC,IAA4D,EAAA;QAC7E,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;AAC/C,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAS,CAAC;AACjC,SAAA;KACF;AACD;;;;AAIG;AACK,IAAA,kBAAkB,CAAC,QAAkB,EAAA;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACvD,QAAA,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAQ,CAAC,iBAAiB,EAAE,CAAC;KACzE;;AAGD,IAAA,KAAK,CAAC,IAAmB,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;;AAIG;AACK,IAAA,iBAAiB,CAAC,UAA0C,EAAA;QAClE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC;QAClF,IAAI,CAAC,oBAAoB,GAAG,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACpE;AAED;;;;AAIG;AACK,IAAA,sBAAsB,CAAC,UAAoD,EAAA;QACjF,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC;QACvF,IAAI,CAAC,yBAAyB,GAAG,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;KACnF;AACF;;ACx0CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgHG;AACG,MAAO,SAAgF,SACzF,eAEiE,CAAA;AACnE;;;;;;;;;;;;AAYG;AACH,IAAA,WAAA,CACI,QAAkB,EAAE,eAAuE,EAC3F,cAAyD,EAAA;AAC3D,QAAA,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,mBAAmB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;AAC7F,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACzC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,sBAAsB,CAAC;AAC1B,YAAA,QAAQ,EAAE,IAAI;;;;AAId,YAAA,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc;AACjC,SAAA,CAAC,CAAC;KACJ;IAmBD,eAAe,CAAkC,IAAO,EAAE,OAAoB,EAAA;AAC5E,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAAE,YAAA,OAAQ,IAAI,CAAC,QAAgB,CAAC,IAAI,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;AAC9B,QAAA,OAAO,CAAC,SAAS,CAAC,IAAiB,CAAC,CAAC;AACrC,QAAA,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC9D,QAAA,OAAO,OAAO,CAAC;KAChB;AAyBD,IAAA,UAAU,CAAkC,IAAO,EAAE,OAA8B,EAAE,UAEjF,EAAE,EAAA;AACJ,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AASD;;;;;;;;;;;;AAYG;AACH,IAAA,aAAa,CAAC,IAAY,EAAE,OAAA,GAAkC,EAAE,EAAA;AAC9D,QAAA,IAAK,IAAI,CAAC,QAAgB,CAAC,IAAI,CAAC;AAC7B,YAAA,IAAI,CAAC,QAAgB,CAAC,IAAI,CAAC,CAAC,2BAA2B,CAAC,MAAO,GAAC,CAAC,CAAC;QACrE,QAAS,IAAI,CAAC,QAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AAuBD,IAAA,UAAU,CAAkC,IAAO,EAAE,OAAoB,EAAE,UAEvE,EAAE,EAAA;AACJ,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,2BAA2B,CAAC,MAAO,GAAC,CAAC,CAAC;QACnF,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAI,OAAO;AAAE,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AAeD,IAAA,QAAQ,CAAkC,WAAc,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;KACxF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCG;AACM,IAAA,QAAQ,CAAC,KAAmC,EAAE,OAAA,GAGnD,EAAE,EAAA;AACJ,QAAA,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,KAAK,CAA2B,CAAC,OAAO,CAAC,IAAI,IAAG;AAC3D,YAAA,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAW,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAChC,KAAa,CAAC,IAAI,CAAC,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC;AAC5E,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;KACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;AACM,IAAA,UAAU,CAAC,KAAgC,EAAE,OAAA,GAGlD,EAAE,EAAA;;;;;AAKJ,QAAA,IAAI,KAAK,IAAI,IAAI;YAAoC,OAAO;QAC3D,MAAM,CAAC,IAAI,CAAC,KAAK,CAA2B,CAAC,OAAO,CAAC,IAAI,IAAG;;;YAG3D,MAAM,OAAO,GAAI,IAAI,CAAC,QAAgB,CAAC,IAAI,CAAC,CAAC;AAC7C,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,CAAC,UAAU;AACd,0EAA0D,KAAK,CAC1D,IAAuC,CAAE,EAC9C,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC;AACrD,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;KACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDG;AACM,IAAA,KAAK,CACV,KAAA,GAAmE,EACtC,EAC7B,UAAqD,EAAE,EAAA;QACzD,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,IAAI,KAAI;YACnC,OAAO,CAAC,KAAK,CAAE,KAAa,CAAC,IAAI,CAAC,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC;AACtF,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;KACtC;AAED;;;;AAIG;IACM,WAAW,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,KAAI;YACpD,GAAW,CAAC,IAAI,CAAC,GAAI,OAAe,CAAC,WAAW,EAAE,CAAC;AACpD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAQ,CAAC;KACX;;IAGQ,oBAAoB,GAAA;AAC3B,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,OAAgB,EAAE,KAAK,KAAI;AAC3E,YAAA,OAAO,KAAK,CAAC,oBAAoB,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC;AACvD,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,cAAc;YAAE,IAAI,CAAC,sBAAsB,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAClE,QAAA,OAAO,cAAc,CAAC;KACvB;;AAGQ,IAAA,aAAa,CAAC,EAA4B,EAAA;AACjD,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;;;;YAIvC,MAAM,OAAO,GAAI,IAAI,CAAC,QAAgB,CAAC,GAAG,CAAC,CAAC;AAC5C,YAAA,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC9B,SAAC,CAAC,CAAC;KACJ;;IAGD,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,KAAI;AAC7B,YAAA,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxB,YAAA,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAChE,SAAC,CAAC,CAAC;KACJ;;IAGQ,YAAY,GAAA;AAClB,QAAA,IAAqB,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;KACpD;;AAGQ,IAAA,YAAY,CAAC,SAA0C,EAAA;AAC9D,QAAA,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAClE,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAkB,CAAC,IAAI,SAAS,CAAC,OAAc,CAAC,EAAE;AAClE,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;;IAGD,YAAY,GAAA;QACV,IAAI,GAAG,GAAsB,EAAE,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,KAAI;AACtD,YAAA,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;AACpC,gBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;AAC3B,aAAA;AACD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC,CAAC;KACJ;;IAGD,eAAe,CACX,SAAY,EAAE,EAAgD,EAAA;QAChE,IAAI,GAAG,GAAG,SAAS,CAAC;QACpB,IAAI,CAAC,aAAa,CAAC,CAAC,OAAoB,EAAE,IAAO,KAAI;YACnD,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,GAAG,CAAC;KACZ;;IAGQ,oBAAoB,GAAA;QAC3B,KAAK,MAAM,WAAW,IAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAA2B,EAAE;YAC/E,IAAK,IAAI,CAAC,QAAgB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;AAC/C,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AACF,SAAA;AACD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;KAC/D;;AAGQ,IAAA,KAAK,CAAC,IAAmB,EAAA;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAc,CAAC;AAC9C,YAAA,IAAI,CAAC,QAAgB,CAAC,IAAsB,CAAC;AAC9C,YAAA,IAAI,CAAC;KACV;AACF,CAAA;AAmBM,MAAM,gBAAgB,GAAyB,UAAU;AAEhE;;;;;AAKG;AACI,MAAM,WAAW,GAAG,CAAC,OAAgB,KAA2B,OAAO,YAAY,UAAU;AAEpG;;;;;;;;;;;;;;;;;;AAkBG;AACG,MAAO,UAA+D,SACxE,SAAoC,CAAA;AAAG,CAAA;AAgF3C;;;;;AAKG;AACI,MAAM,YAAY,GAAG,CAAC,OAAgB,KACzC,OAAO,YAAY;;ACtrBvB;;;;;AAKG;AACI,MAAM,uBAAuB,GAAG,IAAI,cAAc,CACrD,sBAAsB,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,uBAAuB,EAAC,CAAC,CAAC;AAY1F;;AAEG;AACI,MAAM,uBAAuB,GAA2B,QAAQ,CAAC;AAExD,SAAA,WAAW,CAAC,IAAiB,EAAE,MAAwB,EAAA;IACrE,OAAO,CAAC,GAAG,MAAM,CAAC,IAAK,EAAE,IAAK,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;AAMG;AACG,SAAU,YAAY,CACxB,OAAoB,EAAE,GAAc,EACpC,uBAA+C,uBAAuB,EAAA;AACxE,IAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,WAAW,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;QAC3D,IAAI,CAAC,GAAG,CAAC,aAAa;YAAE,+BAA+B,CAAC,GAAG,CAAC,CAAC;AAC9D,KAAA;AAED,IAAA,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAE9B,GAAG,CAAC,aAAc,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;;;AAK7C,IAAA,IAAI,OAAO,CAAC,QAAQ,IAAI,oBAAoB,KAAK,QAAQ,EAAE;QACzD,GAAG,CAAC,aAAc,CAAC,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACzD,KAAA;AAED,IAAA,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACtC,IAAA,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAEvC,IAAA,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAEhC,IAAA,0BAA0B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;AAUG;AACG,SAAU,cAAc,CAC1B,OAAyB,EAAE,GAAc,EACzC,kCAA2C,IAAI,EAAA;IACjD,MAAM,IAAI,GAAG,MAAK;QAChB,IAAI,+BAA+B,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;YACtF,eAAe,CAAC,GAAG,CAAC,CAAC;AACtB,SAAA;AACH,KAAC,CAAC;;;;;;IAOF,IAAI,GAAG,CAAC,aAAa,EAAE;AACrB,QAAA,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACzC,QAAA,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC3C,KAAA;AAED,IAAA,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAEhC,IAAA,IAAI,OAAO,EAAE;QACX,GAAG,CAAC,yBAAyB,EAAE,CAAC;QAChC,OAAO,CAAC,2BAA2B,CAAC,MAAO,GAAC,CAAC,CAAC;AAC/C,KAAA;AACH,CAAC;AAED,SAAS,yBAAyB,CAAI,UAA2B,EAAE,QAAoB,EAAA;AACrF,IAAA,UAAU,CAAC,OAAO,CAAC,CAAC,SAAsB,KAAI;QAC5C,IAAgB,SAAU,CAAC,yBAAyB;AACtC,YAAA,SAAU,CAAC,yBAA0B,CAAC,QAAQ,CAAC,CAAC;AAChE,KAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;AAMG;AACa,SAAA,0BAA0B,CAAC,OAAoB,EAAE,GAAc,EAAA;AAC7E,IAAA,IAAI,GAAG,CAAC,aAAc,CAAC,gBAAgB,EAAE;AACvC,QAAA,MAAM,gBAAgB,GAAG,CAAC,UAAmB,KAAI;AAC/C,YAAA,GAAG,CAAC,aAAc,CAAC,gBAAiB,CAAC,UAAU,CAAC,CAAC;AACnD,SAAC,CAAC;AACF,QAAA,OAAO,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;;;AAInD,QAAA,GAAG,CAAC,kBAAkB,CAAC,MAAK;AAC1B,YAAA,OAAO,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,CAAC;AACxD,SAAC,CAAC,CAAC;AACJ,KAAA;AACH,CAAC;AAED;;;;;;AAMG;AACa,SAAA,eAAe,CAAC,OAAwB,EAAE,GAA6B,EAAA;AACrF,IAAA,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACjD,IAAA,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,EAAE;AAC1B,QAAA,OAAO,CAAC,aAAa,CAAC,eAAe,CAAc,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AAChF,KAAA;AAAM,SAAA,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;;;;;;;;AAQ3C,QAAA,OAAO,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACrC,KAAA;AAED,IAAA,MAAM,eAAe,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAC3D,IAAA,IAAI,GAAG,CAAC,cAAc,KAAK,IAAI,EAAE;AAC/B,QAAA,OAAO,CAAC,kBAAkB,CACtB,eAAe,CAAmB,eAAe,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AAC7E,KAAA;AAAM,SAAA,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;AAChD,QAAA,OAAO,CAAC,kBAAkB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AAC/C,KAAA;;IAGD,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACjE,IAAA,yBAAyB,CAAc,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAC9E,IAAA,yBAAyB,CAAmB,GAAG,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;AAC1F,CAAC;AAED;;;;;;;;AAQG;AACa,SAAA,iBAAiB,CAC7B,OAA6B,EAAE,GAA6B,EAAA;IAC9D,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,QAAA,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,EAAE;AAC1B,YAAA,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACjD,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEtD,gBAAA,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;AACxF,gBAAA,IAAI,iBAAiB,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;oBAClD,gBAAgB,GAAG,IAAI,CAAC;AACxB,oBAAA,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAC1C,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,IAAI,GAAG,CAAC,cAAc,KAAK,IAAI,EAAE;AAC/B,YAAA,MAAM,eAAe,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAC3D,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEhE,gBAAA,MAAM,sBAAsB,GACxB,eAAe,CAAC,MAAM,CAAC,CAAC,cAAc,KAAK,cAAc,KAAK,GAAG,CAAC,cAAc,CAAC,CAAC;AACtF,gBAAA,IAAI,sBAAsB,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,EAAE;oBAC5D,gBAAgB,GAAG,IAAI,CAAC;AACxB,oBAAA,OAAO,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC;AACpD,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;;AAGD,IAAA,MAAM,IAAI,GAAG,MAAK,GAAG,CAAC;AACtB,IAAA,yBAAyB,CAAc,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACjE,IAAA,yBAAyB,CAAmB,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AAE3E,IAAA,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAoB,EAAE,GAAc,EAAA;IACnE,GAAG,CAAC,aAAc,CAAC,gBAAgB,CAAC,CAAC,QAAa,KAAI;AACpD,QAAA,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC;AACjC,QAAA,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;AAC9B,QAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;AAE7B,QAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;AAAE,YAAA,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACjE,KAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAoB,EAAE,GAAc,EAAA;AAC7D,IAAA,GAAG,CAAC,aAAc,CAAC,iBAAiB,CAAC,MAAK;AACxC,QAAA,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;QAE/B,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAO,CAAC,cAAc;AAAE,YAAA,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACvF,QAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,CAAC,aAAa,EAAE,CAAC;AAC7D,KAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,OAAoB,EAAE,GAAc,EAAA;IACzD,IAAI,OAAO,CAAC,aAAa;QAAE,OAAO,CAAC,WAAW,EAAE,CAAC;AACjD,IAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,EAAC,qBAAqB,EAAE,KAAK,EAAC,CAAC,CAAC;AACxE,IAAA,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC7C,IAAA,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC;AACjC,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAoB,EAAE,GAAc,EAAA;AACpE,IAAA,MAAM,QAAQ,GAAG,CAAC,QAAc,EAAE,cAAwB,KAAI;;AAE5D,QAAA,GAAG,CAAC,aAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;;AAGxC,QAAA,IAAI,cAAc;AAAE,YAAA,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACtD,KAAC,CAAC;AACF,IAAA,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;;;AAInC,IAAA,GAAG,CAAC,kBAAkB,CAAC,MAAK;AAC1B,QAAA,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACxC,KAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;AAMG;AACa,SAAA,kBAAkB,CAC9B,OAA4B,EAAE,GAA6C,EAAA;IAC7E,IAAI,OAAO,IAAI,IAAI,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC;AACpE,QAAA,WAAW,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;AAC/C,IAAA,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;AAMG;AACa,SAAA,oBAAoB,CAChC,OAA4B,EAAE,GAA6C,EAAA;AAC7E,IAAA,OAAO,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,eAAe,CAAC,GAAc,EAAA;AACrC,IAAA,OAAO,WAAW,CAAC,GAAG,EAAE,wEAAwE,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,WAAW,CAAC,GAA6B,EAAE,OAAe,EAAA;AACjE,IAAA,MAAM,UAAU,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,IAAI,KAAK,CAAC,CAAA,EAAG,OAAO,CAAI,CAAA,EAAA,UAAU,CAAE,CAAA,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,wBAAwB,CAAC,GAA6B,EAAA;AAC7D,IAAA,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AACtB,IAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACnE,IAAA,IAAI,IAAI,GAAG,CAAC,CAAC;QAAE,OAAO,CAAA,OAAA,EAAU,IAAI,CAAA,CAAA,CAAG,CAAC;AACxC,IAAA,OAAO,4BAA4B,CAAC;AACtC,CAAC;AAED,SAAS,+BAA+B,CAAC,GAA6B,EAAA;AACpE,IAAA,MAAM,GAAG,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;AAC1C,IAAA,MAAM,IAAIA,aAAY,CAAA,CAAA,IAAA,mDAC0B,sCAAsC,GAAG,CAAA,CAAA,CAAG,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,+BAA+B,CAAC,GAA6B,EAAA;AACpE,IAAA,MAAM,GAAG,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;AAC1C,IAAA,MAAM,IAAIA,aAAY,CAElB,IAAA,wDAAA,CAAA,kEAAA,EAAqE,GAAG,CAAI,EAAA,CAAA;AACxE,QAAA,CAAA,uFAAA,CAAyF,CAAC,CAAC;AACrG,CAAC;AAEe,SAAA,iBAAiB,CAAC,OAA6B,EAAE,SAAc,EAAA;AAC7E,IAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC;AAAE,QAAA,OAAO,KAAK,CAAC;AACnD,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhC,IAAI,MAAM,CAAC,aAAa,EAAE;AAAE,QAAA,OAAO,IAAI,CAAC;IACxC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;AACpD,CAAC;AAEK,SAAU,iBAAiB,CAAC,aAAmC,EAAA;;;IAGnE,OAAO,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,2BAA2B,CAAC;AAC1F,CAAC;AAEe,SAAA,mBAAmB,CAAC,IAAe,EAAE,UAAsC,EAAA;IACzF,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,IAAA,UAAU,CAAC,OAAO,CAAC,CAAC,GAAc,KAAI;AACpC,QAAA,MAAM,OAAO,GAAG,GAAG,CAAC,OAAsB,CAAC;QAC3C,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE;AAC3D,YAAA,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC7C,YAAA,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC;AAChC,SAAA;AACH,KAAC,CAAC,CAAC;AACL,CAAC;AAED;AACgB,SAAA,mBAAmB,CAC/B,GAAc,EAAE,cAAsC,EAAA;AACxD,IAAA,IAAI,CAAC,cAAc;AAAE,QAAA,OAAO,IAAI,CAAC;AAEjC,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC;QACnF,+BAA+B,CAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,eAAe,GAAmC,SAAS,CAAC;IAChE,IAAI,eAAe,GAAmC,SAAS,CAAC;IAChE,IAAI,cAAc,GAAmC,SAAS,CAAC;AAE/D,IAAA,cAAc,CAAC,OAAO,CAAC,CAAC,CAAuB,KAAI;AACjD,QAAA,IAAI,CAAC,CAAC,WAAW,KAAK,oBAAoB,EAAE;YAC1C,eAAe,GAAG,CAAC,CAAC;AACrB,SAAA;AAAM,aAAA,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE;YAC/B,IAAI,eAAe,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC;AACpE,gBAAA,WAAW,CAAC,GAAG,EAAE,iEAAiE,CAAC,CAAC;YACtF,eAAe,GAAG,CAAC,CAAC;AACrB,SAAA;AAAM,aAAA;YACL,IAAI,cAAc,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC;AACnE,gBAAA,WAAW,CAAC,GAAG,EAAE,+DAA+D,CAAC,CAAC;YACpF,cAAc,GAAG,CAAC,CAAC;AACpB,SAAA;AACH,KAAC,CAAC,CAAC;AAEH,IAAA,IAAI,cAAc;AAAE,QAAA,OAAO,cAAc,CAAC;AAC1C,IAAA,IAAI,eAAe;AAAE,QAAA,OAAO,eAAe,CAAC;AAC5C,IAAA,IAAI,eAAe;AAAE,QAAA,OAAO,eAAe,CAAC;AAE5C,IAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,QAAA,WAAW,CAAC,GAAG,EAAE,+CAA+C,CAAC,CAAC;AACnE,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAEe,SAAAG,gBAAc,CAAI,IAAS,EAAE,EAAK,EAAA;IAChD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;AAAE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;AACM,SAAU,eAAe,CAC3B,IAAY,EAAE,IAAwC,EACtD,QAAwC,EAAE,aAA0B,EAAA;IACtE,IAAI,aAAa,KAAK,OAAO;QAAE,OAAO;AAEtC,IAAA,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,KAAK,CAAC,IAAI,CAAC,uBAAuB;SACrF,aAAa,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;QACjE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACpC,QAAA,QAAQ,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACrC,KAAA;AACH;;ACzYA,MAAMC,uBAAqB,GAAa;AACtC,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,MAAM,CAAC;CACtC,CAAC;AAEF,MAAMC,iBAAe,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DG;AAQG,MAAO,MAAO,SAAQ,gBAAgB,CAAA;AAiC1C,IAAA,WAAA,CAC+C,UAAqC,EAC/B,eACV,EACc,oBAC3B,EAAA;AAC5B,QAAA,KAAK,EAAE,CAAC;QAF+C,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAC/C;AArC9B;;;AAGG;QACa,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAEnC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAAW,CAAC;AAQzC;;;AAGG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAqB5B,QAAA,IAAI,CAAC,IAAI;AACL,YAAA,IAAI,SAAS,CAAC,EAAE,EAAE,iBAAiB,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC,eAAe,CAAC,CAAC,CAAC;KAC/F;;IAGD,eAAe,GAAA;QACb,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;AAED;;;AAGG;AACH,IAAA,IAAa,aAAa,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;AAGG;AACH,IAAA,IAAa,OAAO,GAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;AAED;;;;AAIG;AACH,IAAA,IAAa,IAAI,GAAA;AACf,QAAA,OAAO,EAAE,CAAC;KACX;AAED;;;AAGG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;KAC3B;AAED;;;;;;AAMG;AACH,IAAA,UAAU,CAAC,GAAY,EAAA;AACrB,QAAAA,iBAAe,CAAC,IAAI,CAAC,MAAK;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/C,YAAA,GAA8B,CAAC,OAAO;gBACtB,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAClE,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC1D,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAC,CAAC,CAAC;KACJ;AAED;;;;;AAKG;AACH,IAAA,UAAU,CAAC,GAAY,EAAA;QACrB,OAAoB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC7C;AAED;;;;;AAKG;AACH,IAAA,aAAa,CAAC,GAAY,EAAA;AACxB,QAAAA,iBAAe,CAAC,IAAI,CAAC,MAAK;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChD,YAAA,IAAI,SAAS,EAAE;AACb,gBAAA,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,aAAA;AACD,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;KACJ;AAED;;;;;AAKG;AACH,IAAA,YAAY,CAAC,GAAiB,EAAA;AAC5B,QAAAA,iBAAe,CAAC,IAAI,CAAC,MAAK;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChD,YAAA,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;AAChC,YAAA,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC/B,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC3C,KAAK,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;AACnD,SAAC,CAAC,CAAC;KACJ;AAED;;;;;AAKG;AACH,IAAA,eAAe,CAAC,GAAiB,EAAA;AAC/B,QAAAA,iBAAe,CAAC,IAAI,CAAC,MAAK;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChD,YAAA,IAAI,SAAS,EAAE;AACb,gBAAA,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;;;;AAKG;AACH,IAAA,YAAY,CAAC,GAAiB,EAAA;QAC5B,OAAkB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC3C;AAED;;;;;AAKG;IACH,WAAW,CAAC,GAAc,EAAE,KAAU,EAAA;AACpC,QAAAA,iBAAe,CAAC,IAAI,CAAC,MAAK;AACxB,YAAA,MAAM,IAAI,GAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvB,SAAC,CAAC,CAAC;KACJ;AAED;;;;;AAKG;AACH,IAAA,QAAQ,CAAC,KAA2B,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED;;;;;;AAMG;AACH,IAAA,QAAQ,CAAC,MAAa,EAAA;AACnB,QAAA,IAA6B,CAAC,SAAS,GAAG,IAAI,CAAC;QAChD,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;;AAG3B,QAAA,OAAQ,MAAM,EAAE,MAAiC,EAAE,MAAM,KAAK,QAAQ,CAAC;KACxE;AAED;;;AAGG;IACH,OAAO,GAAA;QACL,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAED;;;;;AAKG;IACH,SAAS,CAAC,QAAa,SAAS,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtB,QAAA,IAA6B,CAAC,SAAS,GAAG,KAAK,CAAC;KAClD;IAEO,kBAAkB,GAAA;QACxB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC7C,SAAA;KACF;AAEO,IAAA,cAAc,CAAC,IAAc,EAAA;QACnC,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,OAAO,IAAI,CAAC,MAAM,GAAc,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;KACjE;;AA1OU,MAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAM,EAkCe,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,aAAa,EACb,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,mBAAmB,yCAE3B,uBAAuB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGArCpC,MAAM,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,SAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EALN,CAACD,uBAAqB,CAAC,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAKvB,MAAM,EAAA,UAAA,EAAA,CAAA;kBAPlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wDAAwD;oBAClE,SAAS,EAAE,CAACA,uBAAqB,CAAC;oBAClC,IAAI,EAAE,EAAC,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAC;oBAC9D,OAAO,EAAE,CAAC,UAAU,CAAC;AACrB,oBAAA,QAAQ,EAAE,QAAQ;AACnB,iBAAA,CAAA;;0BAmCM,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,aAAa,CAAA;;0BACxC,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,mBAAmB,CAAA;;0BAE9C,QAAQ;;0BAAI,MAAM;2BAAC,uBAAuB,CAAA;4CANvB,OAAO,EAAA,CAAA;sBAA9B,KAAK;uBAAC,eAAe,CAAA;;;AC5HR,SAAA,cAAc,CAAI,IAAS,EAAE,EAAK,EAAA;IAChD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;AAAE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxC;;ACyYA,SAAS,kBAAkB,CAAC,SAAkB,EAAA;AAC5C,IAAA,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI;AACtD,QAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,CAAC;AAC7F,CAAC;MAEY,WAAW,IACnB,MAAM,WAA0B,SAAQ,eAC7B,CAAA;AAaV,IAAA,WAAA;;AAEI,IAAA,SAAA,GAA6C,IAAyB,EACtE,eAAmE,EACnE,cAAyD,EAAA;AAC3D,QAAA,KAAK,CACD,cAAc,CAAC,eAAe,CAAC,EAAE,mBAAmB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;;QAjB7E,IAAY,CAAA,YAAA,GAAW,IAAyB,CAAC;;QAGjE,IAAS,CAAA,SAAA,GAAoB,EAAE,CAAC;;QAMhC,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;AAS9B,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACzC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,sBAAsB,CAAC;AAC1B,YAAA,QAAQ,EAAE,IAAI;;;;;AAKd,YAAA,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc;AACjC,SAAA,CAAC,CAAC;QACH,IAAI,YAAY,CAAC,eAAe,CAAC;aAC5B,eAAe,CAAC,WAAW,IAAI,eAAe,CAAC,qBAAqB,CAAC,EAAE;AAC1E,YAAA,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE;AACjC,gBAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;AACrC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AAC/B,aAAA;AACF,SAAA;KACF;AAEQ,IAAA,QAAQ,CAAC,KAAa,EAAE,OAAA,GAK7B,EAAE,EAAA;QACH,IAAwB,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7D,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,OAAO,CAAC,qBAAqB,KAAK,KAAK,EAAE;YACpE,IAAI,CAAC,SAAS,CAAC,OAAO,CAClB,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,KAAK,KAAK,CAAC,CAAC,CAAC;AAClF,SAAA;AACD,QAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;KACtC;AAEQ,IAAA,UAAU,CAAC,KAAa,EAAE,OAAA,GAK/B,EAAE,EAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KAC/B;AAEQ,IAAA,KAAK,CACV,SAA6C,GAAA,IAAI,CAAC,YAAY,EAC9D,UAAqD,EAAE,EAAA;AACzD,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC7B;;AAGQ,IAAA,YAAY,MAAW;;AAGvB,IAAA,YAAY,CAAC,SAA0C,EAAA;AAC9D,QAAA,OAAO,KAAK,CAAC;KACd;;IAGQ,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AAED,IAAA,gBAAgB,CAAC,EAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACzB;;AAGD,IAAA,mBAAmB,CAAC,EAAmD,EAAA;AACrE,QAAA,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;KACpC;AAED,IAAA,wBAAwB,CAAC,EAAiC,EAAA;AACxD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACjC;;AAGD,IAAA,2BAA2B,CAAC,EAAiC,EAAA;AAC3D,QAAA,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;KAC5C;;IAGQ,aAAa,CAAC,EAAgC,EAAA,GAAU;;IAGxD,oBAAoB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;YAC9B,IAAI,IAAI,CAAC,aAAa;gBAAE,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,eAAe;gBAAE,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAC,CAAC,CAAC;AAClF,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,eAAe,CAAC,SAA0C,EAAA;AAChE,QAAA,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE;YAChC,IAAwB,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC;YACvE,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC;AAChD,gBAAA,IAAI,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;AACtE,SAAA;AAAM,aAAA;YACJ,IAAwB,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;AAClE,SAAA;KACF;AACF,CAAA,EAAE;AAoBA,MAAM,kBAAkB,GAA2B,YAAY;AAEtE;;;;;AAKG;AACI,MAAM,aAAa,GAAG,CAAC,OAAgB,KAC1C,OAAO,YAAY;;ACxiBvB;;;;;AAKG;AAEG,MAAO,0BAA2B,SAAQ,gBAAgB,CAAA;;IAW9D,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,EAAE,CAAC;;AAExB,QAAA,IAAI,CAAC,aAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KACxC;;IAGD,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,aAAa,EAAE;;AAEtB,YAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC1C,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,IAAa,OAAO,GAAA;QAClB,OAAO,IAAI,CAAC,aAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KAC/C;AAED;;;AAGG;AACH,IAAA,IAAa,IAAI,GAAA;QACf,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACxF;AAED;;;AAGG;AACH,IAAA,IAAa,aAAa,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;KACzD;;AAGD,IAAA,gBAAgB,MAAW;;kIAlDhB,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAA1B,0BAA0B,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,SAAS;;;SCTM,oBAAoB,GAAA;IAClC,OAAO,IAAIJ,aAAY,CAAyC,IAAA,+CAAA,CAAA;;;;MAI5D,sBAAsB,CAAA;;;;;;MAMtB,2BAA2B,CAAA,CAAE,CAAC,CAAC;AACrC,CAAC;SAEe,sBAAsB,GAAA;IACpC,OAAO,IAAIA,aAAY,CAA8C,IAAA,oDAAA,CAAA;;;;;MAKjE,oBAAoB,CAAA;;;;MAIpB,mBAAmB,CAAA,CAAE,CAAC,CAAC;AAC7B,CAAC;SAEe,oBAAoB,GAAA;IAClC,OAAO,IAAIA,aAAY,CAEnB,IAAA,8CAAA,CAAA;;;;AAIsF,2FAAA,CAAA,CAAC,CAAC;AAC9F,CAAC;SAEe,yBAAyB,GAAA;IACvC,OAAO,IAAIA,aAAY,CAA8C,IAAA,oDAAA,CAAA;;;;;MAKjE,oBAAoB,CAAA;;;;MAIpB,mBAAmB,CAAA,CAAE,CAAC,CAAC;AAC7B;;AC7CO,MAAM,kBAAkB,GAAQ;AACrC,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,YAAY,CAAC;CAC5C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AAEG,MAAO,YAAa,SAAQ,0BAA0B,CAAA;AAS1D,IAAA,WAAA,CACwB,MAAwB,EACD,UAAqC,EAC/B,eACV,EAAA;AACzC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;KAC3C;;IAGQ,gBAAgB,GAAA;AACvB,QAAA,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,MAAM,CAAC;AAC5E,aAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;YACnD,MAAM,yBAAyB,EAAE,CAAC;AACnC,SAAA;KACF;;oHA1BU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAWS,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EACb,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAZxC,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,cAAA,EAAA,MAAA,CAAA,EAAA,EAAA,SAAA,EAD0B,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAC1D,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAC,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAC,CAAA;;0BAW3F,IAAI;;0BAAI,QAAQ;;0BAChB,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,aAAa,CAAA;;0BACxC,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,mBAAmB,CAAA;4CALnB,IAAI,EAAA,CAAA;sBAAnC,KAAK;uBAAC,cAAc,CAAA;;;ACjCvB,MAAMC,oBAAkB,GAAa;AACnC,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,OAAO,CAAC;CACvC,CAAC;AAEF;;;;;;;;;;;;;;;;AAgBG;AACH,MAAM,eAAe,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFG;AAMG,MAAO,OAAQ,SAAQ,SAAS,CAAA;IAoEpC,WACwB,CAAA,MAAwB,EACD,UAAqC,EAC/B,eACV,EACQ,cAAsC,EACtC,kBAA2C,EACrC,oBAC3B,EAAA;AAC5B,QAAA,KAAK,EAAE,CAAC;QAHyC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAyB;QACrC,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAC/C;AA3EL,QAAA,IAAA,CAAA,OAAO,GAAgB,IAAI,WAAW,EAAE,CAAC;;QAYlE,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAgDpB;;;;AAIG;AACsB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAYnD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;KAChE;;AAGD,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,IAAI,OAAO,EAAE;YAC1C,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,IAAI,CAAC,aAAa,EAAE;;;;;oBAKtB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;oBAC9C,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC;AACjF,iBAAA;AACF,aAAA;YACD,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,SAAA;QACD,IAAI,YAAY,IAAI,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC/B,SAAA;QAED,IAAI,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7B,SAAA;KACF;;IAGD,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KAC9D;AAED;;;;AAIG;AACH,IAAA,IAAa,IAAI,GAAA;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;AAED;;;AAGG;AACH,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;KACzD;AAED;;;;;AAKG;AACM,IAAA,iBAAiB,CAAC,QAAa,EAAA;AACtC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC5B;IAEO,aAAa,GAAA;QACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACrF,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KACzB;IAEO,kBAAkB,GAAA;QACxB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE;YACjD,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAChD,SAAA;KACF;IAEO,aAAa,GAAA;AACnB,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KACrE;IAEO,gBAAgB,GAAA;QACtB,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;KACzD;IAEO,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAA;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAEO,gBAAgB,GAAA;AACtB,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,YAAA,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,YAAY,CAAC;AACvC,gBAAA,IAAI,CAAC,OAAO,YAAY,0BAA0B,EAAE;gBACtD,MAAM,sBAAsB,EAAE,CAAC;AAChC,aAAA;AAAM,iBAAA,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,MAAM,CAAC,EAAE;gBACvF,MAAM,oBAAoB,EAAE,CAAC;AAC9B,aAAA;AACF,SAAA;KACF;IAEO,UAAU,GAAA;QAChB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAErE,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;YAC1F,MAAM,oBAAoB,EAAE,CAAC;AAC9B,SAAA;KACF;AAEO,IAAA,YAAY,CAAC,KAAU,EAAA;AAC7B,QAAA,eAAe,CAAC,IAAI,CAAC,MAAK;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAC,qBAAqB,EAAE,KAAK,EAAC,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,kBAAkB,EAAE,YAAY,EAAE,CAAC;AAC1C,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,eAAe,CAAC,OAAsB,EAAA;QAC5C,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC;;QAEzD,MAAM,UAAU,GAAG,aAAa,KAAK,CAAC,IAAIC,gBAAe,CAAC,aAAa,CAAC,CAAC;AAEzE,QAAA,eAAe,CAAC,IAAI,CAAC,MAAK;YACxB,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACxC,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACxB,aAAA;iBAAM,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC/C,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AACvB,aAAA;AAED,YAAA,IAAI,CAAC,kBAAkB,EAAE,YAAY,EAAE,CAAC;AAC1C,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,QAAQ,CAAC,WAAmB,EAAA;QAClC,OAAO,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KAC9E;;+GAxNU,OAAO,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAsEc,aAAa,EACb,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,mBAAmB,yCAEnB,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EACzB,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EACjB,uBAAuB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGA3EpC,OAAO,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,KAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAHP,CAACC,oBAAkB,CAAC,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAGpB,OAAO,EAAA,UAAA,EAAA,CAAA;kBALnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qDAAqD;oBAC/D,SAAS,EAAE,CAACA,oBAAkB,CAAC;AAC/B,oBAAA,QAAQ,EAAE,SAAS;AACpB,iBAAA,CAAA;;0BAsEM,QAAQ;;0BAAI,IAAI;;0BAChB,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,aAAa,CAAA;;0BACxC,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,mBAAmB,CAAA;;0BAE9C,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,iBAAiB,CAAA;;0BAC5C,QAAQ;;0BAAI,MAAM;2BAAC,iBAAiB,CAAA;;0BACpC,QAAQ;;0BAAI,MAAM;2BAAC,uBAAuB,CAAA;4CAhD7B,IAAI,EAAA,CAAA;sBAArB,KAAK;gBAOa,UAAU,EAAA,CAAA;sBAA5B,KAAK;uBAAC,UAAU,CAAA;gBAMC,KAAK,EAAA,CAAA;sBAAtB,KAAK;uBAAC,SAAS,CAAA;gBAmBS,OAAO,EAAA,CAAA;sBAA/B,KAAK;uBAAC,gBAAgB,CAAA;gBAOE,MAAM,EAAA,CAAA;sBAA9B,MAAM;uBAAC,eAAe,CAAA;;;AClMzB;;;;;;;;;;;;;;;;AAgBG;MAKU,aAAa,CAAA;;qHAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yGAAb,aAAa,EAAA,QAAA,EAAA,8CAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8CAA8C;AACxD,oBAAA,IAAI,EAAE,EAAC,YAAY,EAAE,EAAE,EAAC;AACzB,iBAAA,CAAA;;;AClBD,MAAM,qBAAqB,GAAa;AACtC,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AAOG,MAAO,mBAAoB,SAAQ,2BAA2B,CAAA;AAElE;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAa,EAAA;;AAEtB,QAAA,MAAM,eAAe,GAAG,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC;AACnD,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;KAC5C;AAED;;;AAGG;AACM,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AACpD,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,KAAI;AACxB,YAAA,EAAE,CAAC,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,SAAC,CAAC;KACH;;2HApBU,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,QAAA,EAAA,iGAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAFnB,CAAC,qBAAqB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAEvB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EACJ,iGAAiG;oBACrG,IAAI,EAAE,EAAC,SAAS,EAAE,+BAA+B,EAAE,QAAQ,EAAE,aAAa,EAAC;oBAC3E,SAAS,EAAE,CAAC,qBAAqB,CAAC;AACnC,iBAAA,CAAA;;;AC/BD,MAAM,oBAAoB,GAAa;AACrC,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,SAAS,cAAc,GAAA;IACrB,MAAM,IAAIP,aAAY,CAAyD,IAAA,+DAAA,CAAA;;;AAG5E,IAAA,CAAA,CAAC,CAAC;AACP,CAAC;AAED;;;;;AAKG;MAEU,0BAA0B,CAAA;;kIAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;mIAA1B,0BAA0B,EAAA,CAAA,CAAA;mIAA1B,0BAA0B,EAAA,CAAA,CAAA;sGAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,QAAQ;;AAIT;;;AAGG;MAEU,oBAAoB,CAAA;AADjC,IAAA,WAAA,GAAA;QAEU,IAAU,CAAA,UAAA,GAAU,EAAE,CAAC;AA0ChC,KAAA;AAxCC;;;AAGG;IACH,GAAG,CAAC,OAAkB,EAAE,QAAmC,EAAA;QACzD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;KAC3C;AAED;;;AAGG;AACH,IAAA,MAAM,CAAC,QAAmC,EAAA;AACxC,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;YACpD,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBACtC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7B,OAAO;AACR,aAAA;AACF,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,MAAM,CAAC,QAAmC,EAAA;QACxC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC5B,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBACvD,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,YAAY,CAChB,WAAmD,EACnD,QAAmC,EAAA;AACrC,QAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK,CAAC;QAC1C,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,QAAQ,CAAC,OAAO;YACvD,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC;KAC3C;;4HA1CU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADR,0BAA0B,EAAA,CAAA,CAAA;sGACtC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAC,UAAU,EAAE,0BAA0B,EAAC,CAAA;;AA8CpD;;;;;;;;;;;;;;;;;;;AAmBG;AAOG,MAAO,yBAA0B,SAAQ,2BAA2B,CAAA;AA+CxE,IAAA,WAAA,CACI,QAAmB,EAAE,UAAsB,EAAU,SAA+B,EAC5E,SAAmB,EAAA;AAC7B,QAAA,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAF2B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAsB;QAC5E,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;QArCvB,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;AAEtC;;;;;;AAMG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAK,GAAG,CAAC;AAuBrB,QAAA,IAAA,CAAA,oBAAoB,GACxB,MAAM,CAAC,uBAAuB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,uBAAuB,CAAC;KAMhF;;IAGD,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KACzC;;IAGD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC7B;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KAC1C;AAED;;;AAGG;AACM,IAAA,gBAAgB,CAAC,EAAkB,EAAA;AAC1C,QAAA,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AACd,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAK;AACnB,YAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACf,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAC,CAAC;KACH;;AAGQ,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAC3C;;;;;;;;;;;;;;;;;AAiBG;AACH,QAAA,IAAI,IAAI,CAAC,qBAAqB,IAAI,UAAU;AACxC,YAAA,IAAI,CAAC,oBAAoB,KAAK,2BAA2B,EAAE;AAC7D,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC1C,SAAA;AACD,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;KACnC;AAED;;;;AAIG;AACH,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACxB;IAEO,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe;AACvE,aAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AACnD,YAAA,cAAc,EAAE,CAAC;AAClB,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe;AAAE,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC;KAC1E;;iIAhIU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAAzB,yBAAyB,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAFzB,CAAC,oBAAoB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAEtB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EACJ,8FAA8F;oBAClG,IAAI,EAAE,EAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAC;oBACzD,SAAS,EAAE,CAAC,oBAAoB,CAAC;AAClC,iBAAA,CAAA;gLA6BU,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAQG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAMG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;ACjJR,MAAM,oBAAoB,GAAa;AACrC,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACjD,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AAWG,MAAO,kBAAmB,SAAQ,2BAA2B,CAAA;AAEjE;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;KAC9C;AAED;;;AAGG;AACM,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AACpD,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,KAAI;AACxB,YAAA,EAAE,CAAC,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,SAAC,CAAC;KACH;;0HAlBU,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8GAAlB,kBAAkB,EAAA,QAAA,EAAA,8FAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,OAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAFlB,CAAC,oBAAoB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAEtB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAV9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EACJ,8FAA8F;AAClG,oBAAA,IAAI,EAAE;AACJ,wBAAA,UAAU,EAAE,+BAA+B;AAC3C,wBAAA,SAAS,EAAE,+BAA+B;AAC1C,wBAAA,QAAQ,EAAE,aAAa;AACxB,qBAAA;oBACD,SAAS,EAAE,CAAC,oBAAoB,CAAC;AAClC,iBAAA,CAAA;;;AChCD;;AAEG;AACI,MAAM,kCAAkC,GAC3C,IAAI,cAAc,CAAC,+BAA+B,CAAC,CAAC;AAExD,MAAM,kBAAkB,GAAa;AACnC,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;CACpD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;AAqBG;AAEG,MAAO,oBAAqB,SAAQ,SAAS,CAAA;AAcjD;;;AAGG;IACH,IACI,UAAU,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,YAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACnC,SAAA;KACF;IA4BD,WAC+C,CAAA,UAAqC,EAC/B,eACV,EACQ,cAAsC,EACrB,qBAC5D,EACiD,oBAC3B,EAAA;AAC5B,QAAA,KAAK,EAAE,CAAC;QAJ0D,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CACjF;QACiD,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAC/C;;AA5BL,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAWrD;;;;;;AAMG;QACH,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAY1B,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;KAChE;;AAGD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;YACnC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;AACnD,YAAA,IAAI,YAAY,EAAE;gBAChB,cAAc,CAAC,YAAY,EAAE,IAAI,wCAAwC,KAAK,CAAC,CAAC;AACjF,aAAA;YACD,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;AACtD,SAAA;QACD,IAAI,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;AAC9C,YAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;gBACjD,eAAe,CAAC,aAAa,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACxF,aAAA;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7B,SAAA;KACF;;IAGD,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,wCAAwC,KAAK,CAAC,CAAC;AAC9E,SAAA;KACF;AAED;;;;AAIG;AACH,IAAA,IAAa,IAAI,GAAA;AACf,QAAA,OAAO,EAAE,CAAC;KACX;AAED;;;AAGG;AACH,IAAA,IAAa,OAAO,GAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;AAED;;;;;AAKG;AACM,IAAA,iBAAiB,CAAC,QAAa,EAAA;AACtC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC5B;AAEO,IAAA,iBAAiB,CAAC,OAA6B,EAAA;AACrD,QAAA,OAAO,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;KACvC;;AAzFD;;;;;;AAMG;AACI,oBAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;4HAxC5B,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAoDC,aAAa,EACb,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,mBAAmB,yCAEnB,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EACzB,kCAAkC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAElC,uBAAuB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gHA1DpC,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,UAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,KAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EADiB,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGACzD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAA;;0BAqDpF,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,aAAa,CAAA;;0BACxC,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,mBAAmB,CAAA;;0BAE9C,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,iBAAiB,CAAA;;0BAC5C,QAAQ;;0BAAI,MAAM;2BAAC,kCAAkC,CAAA;;0BAErD,QAAQ;;0BAAI,MAAM;2BAAC,uBAAuB,CAAA;4CA9CzB,IAAI,EAAA,CAAA;sBAAzB,KAAK;uBAAC,aAAa,CAAA;gBAOhB,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,UAAU,CAAA;gBAUC,KAAK,EAAA,CAAA;sBAAtB,KAAK;uBAAC,SAAS,CAAA;gBAGS,MAAM,EAAA,CAAA;sBAA9B,MAAM;uBAAC,eAAe,CAAA;;;AC7DzB,MAAM,qBAAqB,GAAa;AACtC,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;CAClD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AAOG,MAAO,kBAAmB,SAAQ,gBAAgB,CAAA;AAqCtD,IAAA,WAAA,CAC+C,UAAqC,EAC/B,eACV,EACc,oBAC3B,EAAA;AAC5B,QAAA,KAAK,EAAE,CAAC;QAF+C,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAC/C;AAzC9B;;;AAGG;QACa,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAQ3C;;;AAGG;QACc,IAAmB,CAAA,mBAAA,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AAEpE;;;AAGG;QACH,IAAU,CAAA,UAAA,GAAsB,EAAE,CAAC;AAEnC;;;AAGG;QACiB,IAAI,CAAA,IAAA,GAAc,IAAK,CAAC;AAE5C;;;AAGG;AACO,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAStC,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;KAC3C;;AAGD,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;YAClC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3B,SAAA;KACF;;IAGD,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;;;;;;YAQnC,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,KAAK,IAAI,CAAC,mBAAmB,EAAE;gBAC9D,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAK,GAAG,CAAC,CAAC;AACjD,aAAA;AACF,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,IAAa,aAAa,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;AAGG;AACH,IAAA,IAAa,OAAO,GAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;AAED;;;;AAIG;AACH,IAAA,IAAa,IAAI,GAAA;AACf,QAAA,OAAO,EAAE,CAAC;KACX;AAED;;;;;;AAMG;AACH,IAAA,UAAU,CAAC,GAAoB,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACnD,IAAI,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;;;AAKG;AACH,IAAA,UAAU,CAAC,GAAoB,EAAA;QAC7B,OAAoB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC7C;AAED;;;;;AAKG;AACH,IAAA,aAAa,CAAC,GAAoB,EAAA;AAChC,QAAA,cAAc,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,EAAE,GAAG,wCAAwC,KAAK,CAAC,CAAC;AACtF,QAAAG,gBAAc,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;KACtC;AAED;;;;AAIG;AACH,IAAA,YAAY,CAAC,GAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;KAC/B;AAED;;;;;AAKG;AACH,IAAA,eAAe,CAAC,GAAkB,EAAA;AAChC,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;KACjC;AAED;;;;;AAKG;AACH,IAAA,YAAY,CAAC,GAAkB,EAAA;QAC7B,OAAkB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC3C;AAED;;;;AAIG;AACH,IAAA,YAAY,CAAC,GAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;KAC/B;AAED;;;;;AAKG;AACH,IAAA,eAAe,CAAC,GAAkB,EAAA;AAChC,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;KACjC;AAED;;;;;AAKG;AACH,IAAA,YAAY,CAAC,GAAkB,EAAA;QAC7B,OAAkB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC3C;AAED;;;;;AAKG;IACH,WAAW,CAAC,GAAoB,EAAE,KAAU,EAAA;AAC1C,QAAA,MAAM,IAAI,GAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACtB;AAED;;;;;;AAMG;AACH,IAAA,QAAQ,CAAC,MAAa,EAAA;AACnB,QAAA,IAA6B,CAAC,SAAS,GAAG,IAAI,CAAC;QAChD,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;;;AAI3B,QAAA,OAAQ,MAAM,EAAE,MAAiC,EAAE,MAAM,KAAK,QAAQ,CAAC;KACxE;AAED;;;AAGG;IACH,OAAO,GAAA;QACL,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAED;;;;;AAKG;IACH,SAAS,CAAC,QAAa,SAAS,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtB,QAAA,IAA6B,CAAC,SAAS,GAAG,KAAK,CAAC;KAClD;;IAGD,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,IAAG;AAC5B,YAAA,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAC5B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,OAAO,KAAK,OAAO,EAAE;;;AAGvB,gBAAA,cAAc,CAAC,OAAO,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;;;;;;AAOrC,gBAAA,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;oBAC1B,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACrD,oBAAA,GAA8B,CAAC,OAAO,GAAG,OAAO,CAAC;AACnD,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;KACnD;AAEO,IAAA,mBAAmB,CAAC,GAAgC,EAAA;AAC1D,QAAA,MAAM,IAAI,GAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAA,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;;;;QAI9B,IAAI,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;KACjD;AAEO,IAAA,qBAAqB,CAAC,GAAgC,EAAA;QAC5D,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,MAAM,IAAI,GAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,YAAA,IAAI,IAAI,EAAE;gBACR,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACzD,gBAAA,IAAI,gBAAgB,EAAE;;;oBAGpB,IAAI,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;AACjD,iBAAA;AACF,aAAA;AACF,SAAA;KACF;IAEO,oBAAoB,GAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,MAAK,GAAG,CAAC,CAAC;AACrD,SAAA;KACF;IAEO,iBAAiB,GAAA;AACvB,QAAA,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACxC,SAAA;KACF;IAEO,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;YACjE,MAAM,oBAAoB,EAAE,CAAC;AAC9B,SAAA;KACF;;AApTU,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAsCG,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,aAAa,EACb,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,mBAAmB,yCAE3B,uBAAuB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8GAzCpC,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,WAAA,EAAA,MAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAJlB,CAAC,qBAAqB,CAAC,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAIvB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;oBACvB,SAAS,EAAE,CAAC,qBAAqB,CAAC;oBAClC,IAAI,EAAE,EAAC,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAC;AAC9D,oBAAA,QAAQ,EAAE,QAAQ;AACnB,iBAAA,CAAA;;0BAuCM,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,aAAa,CAAA;;0BACxC,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,mBAAmB,CAAA;;0BAE9C,QAAQ;;0BAAI,MAAM;2BAAC,uBAAuB,CAAA;4CAZ3B,IAAI,EAAA,CAAA;sBAAvB,KAAK;uBAAC,WAAW,CAAA;gBAMR,QAAQ,EAAA,CAAA;sBAAjB,MAAM;;;ACzET,MAAM,qBAAqB,GAAa;AACtC,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,aAAa,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CG;AAEG,MAAO,aAAc,SAAQ,0BAA0B,CAAA;AAa3D,IAAA,WAAA,CACoC,MAAwB,EACb,UAAqC,EAC/B,eACV,EAAA;AACzC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;KAC3C;;IAGQ,gBAAgB,GAAA;AACvB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;YACtF,MAAM,oBAAoB,EAAE,CAAC;AAC9B,SAAA;KACF;;qHA7BU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAeQ,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EACb,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yGAhBxC,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,eAAA,EAAA,MAAA,CAAA,EAAA,EAAA,SAAA,EAD0B,CAAC,qBAAqB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAC9D,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,SAAS;mBAAC,EAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,qBAAqB,CAAC,EAAC,CAAA;;0BAerE,QAAQ;;0BAAI,IAAI;;0BAAI,QAAQ;;0BAC5B,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,aAAa,CAAA;;0BACxC,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,mBAAmB,CAAA;4CALlB,IAAI,EAAA,CAAA;sBAApC,KAAK;uBAAC,eAAe,CAAA;;AAqBjB,MAAM,qBAAqB,GAAQ;AACxC,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,aAAa,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AAEG,MAAO,aAAc,SAAQ,gBAAgB,CAAA;AAgBjD,IAAA,WAAA,CACoC,MAAwB,EACb,UAAqC,EAC/B,eACV,EAAA;AACzC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;KAC3C;AAED;;;;AAIG;IACH,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,aAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KACxC;AAED;;;AAGG;IACH,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC1C,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,IAAa,OAAO,GAAA;QAClB,OAAO,IAAI,CAAC,aAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KAC/C;AAED;;;AAGG;AACH,IAAA,IAAa,aAAa,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,OAAO,GAAuB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7E;AAED;;;;AAIG;AACH,IAAA,IAAa,IAAI,GAAA;QACf,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACxF;IAEO,gBAAgB,GAAA;AACtB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;YACtF,MAAM,oBAAoB,EAAE,CAAC;AAC9B,SAAA;KACF;;qHA5EU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAkBQ,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EACb,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yGAnBxC,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,eAAA,EAAA,MAAA,CAAA,EAAA,EAAA,SAAA,EAD0B,CAAC,qBAAqB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAC9D,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,SAAS;mBAAC,EAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,qBAAqB,CAAC,EAAC,CAAA;;0BAkBrE,QAAQ;;0BAAI,IAAI;;0BAAI,QAAQ;;0BAC5B,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,aAAa,CAAA;;0BACxC,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,mBAAmB,CAAA;4CALlB,IAAI,EAAA,CAAA;sBAApC,KAAK;uBAAC,eAAe,CAAA;;AAiExB,SAAS,iBAAiB,CAAC,MAAwB,EAAA;AACjD,IAAA,OAAO,EAAE,MAAM,YAAY,aAAa,CAAC,IAAI,EAAE,MAAM,YAAY,kBAAkB,CAAC;AAChF,QAAA,EAAE,MAAM,YAAY,aAAa,CAAC,CAAC;AACzC;;ACjMA,MAAM,kBAAkB,GAAa;AACnC,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;CAC/C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCG;AAEG,MAAO,eAAgB,SAAQ,SAAS,CAAA;AA2B5C;;;AAGG;IACH,IACI,UAAU,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,YAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACnC,SAAA;KACF;IA4BD,WACoC,CAAA,MAAwB,EACb,UAAqC,EAC/B,eACV,EACQ,cAAsC,EACrB,qBAC5D,EAAA;AACN,QAAA,KAAK,EAAE,CAAC;QAF0D,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CACjF;QAtEA,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;;AA2CE,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAWrD;;;;;;AAMG;QACH,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAW1B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;KAChE;;AAGD,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,IAAI,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;AAC9C,YAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;gBACjD,eAAe,CAAC,iBAAiB,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACvF,aAAA;AACD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAClD,SAAA;KACF;;IAGD,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACxC,SAAA;KACF;AAED;;;;;AAKG;AACM,IAAA,iBAAiB,CAAC,QAAa,EAAA;AACtC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC5B;AAED;;;;AAIG;AACH,IAAA,IAAa,IAAI,GAAA;QACf,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAQ,CAAC,CAAC;KACzF;AAED;;;AAGG;AACH,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;KACzD;IAEO,gBAAgB,GAAA;AACtB,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,YAAA,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,aAAa,CAAC;AACxC,gBAAA,IAAI,CAAC,OAAO,YAAY,0BAA0B,EAAE;gBACtD,MAAM,qBAAqB,EAAE,CAAC;AAC/B,aAAA;AAAM,iBAAA,IACH,EAAE,IAAI,CAAC,OAAO,YAAY,aAAa,CAAC;AACxC,gBAAA,EAAE,IAAI,CAAC,OAAO,YAAY,kBAAkB,CAAC;AAC7C,gBAAA,EAAE,IAAI,CAAC,OAAO,YAAY,aAAa,CAAC,EAAE;gBAC5C,MAAM,sBAAsB,EAAE,CAAC;AAChC,aAAA;AACF,SAAA;KACF;IAEO,aAAa,GAAA;QACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvB,IAA+B,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACpB;;AAlGD;;;;;;AAMG;AACI,eAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;AArD5B,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,2FAkEM,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EACb,mBAAmB,EAEnB,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,iBAAiB,yCACzB,kCAAkC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2GAtE/C,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,EAAA,UAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,KAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAD0B,CAAC,kBAAkB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAC7D,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,SAAS;mBAAC,EAAC,QAAQ,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,kBAAkB,CAAC,EAAC,CAAA;;0BAkEpE,QAAQ;;0BAAI,IAAI;;0BAAI,QAAQ;;0BAC5B,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,aAAa,CAAA;;0BACxC,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,mBAAmB,CAAA;;0BAE9C,QAAQ;;0BAAI,IAAI;;0BAAI,MAAM;2BAAC,iBAAiB,CAAA;;0BAC5C,QAAQ;;0BAAI,MAAM;2BAAC,kCAAkC,CAAA;4CA7CvB,IAAI,EAAA,CAAA;sBAAtC,KAAK;uBAAC,iBAAiB,CAAA;gBAOpB,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,UAAU,CAAA;gBAUC,KAAK,EAAA,CAAA;sBAAtB,KAAK;uBAAC,SAAS,CAAA;gBAGS,MAAM,EAAA,CAAA;sBAA9B,MAAM;uBAAC,eAAe,CAAA;;;AC9FzB,MAAM,qBAAqB,GAAa;AACtC,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,SAASG,mBAAiB,CAAC,EAAe,EAAE,KAAU,EAAA;IACpD,IAAI,EAAE,IAAI,IAAI;QAAE,OAAO,CAAA,EAAG,KAAK,CAAA,CAAE,CAAC;AAClC,IAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,KAAK,GAAG,QAAQ,CAAC;AACzD,IAAA,OAAO,CAAG,EAAA,EAAE,CAAK,EAAA,EAAA,KAAK,CAAE,CAAA,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAASC,YAAU,CAAC,WAAmB,EAAA;IACrC,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDG;AAOG,MAAO,0BAA2B,SAAQ,2BAA2B,CAAA;AAN3E,IAAA,WAAA,GAAA;;;AAYE,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,GAAG,EAAe,CAAC;;QAGtD,IAAU,CAAA,UAAA,GAAW,CAAC,CAAC;AAiBf,QAAA,IAAA,CAAA,YAAY,GAAkC,MAAM,CAAC,EAAE,CAAC;AA0CjE,KAAA;AAzDC;;;;AAIG;IACH,IACI,WAAW,CAAC,EAAiC,EAAA;AAC/C,QAAA,IAAI,OAAO,EAAE,KAAK,UAAU,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AAC/E,YAAA,MAAM,IAAIV,aAAY,CAElB,IAAA,8CAAA,CAAA,6CAAA,EAAgD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAE,CAAA,CAAC,CAAC;AAC3E,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;KACxB;AAID;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,MAAM,EAAE,GAAgB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,WAAW,GAAGS,mBAAiB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;KACxC;AAED;;;AAGG;AACM,IAAA,gBAAgB,CAAC,EAAuB,EAAA;AAC/C,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,WAAmB,KAAI;YACtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AAC/C,YAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjB,SAAC,CAAC;KACH;;IAGD,eAAe,GAAA;QACb,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC;KACvC;;AAGD,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE;AACnD,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;AAAE,gBAAA,OAAO,EAAE,CAAC;AAClE,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;AAGD,IAAA,eAAe,CAAC,WAAmB,EAAA;AACjC,QAAA,MAAM,EAAE,GAAWC,YAAU,CAAC,WAAW,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC;KACxE;;kIAnEU,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAA1B,0BAA0B,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAF1B,CAAC,qBAAqB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAEvB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EACJ,6GAA6G;oBACjH,IAAI,EAAE,EAAC,UAAU,EAAE,+BAA+B,EAAE,QAAQ,EAAE,aAAa,EAAC;oBAC5E,SAAS,EAAE,CAAC,qBAAqB,CAAC;AACnC,iBAAA,CAAA;8BAkBK,WAAW,EAAA,CAAA;sBADd,KAAK;;AAsDR;;;;;;;;;AASG;MAEU,cAAc,CAAA;AAQzB,IAAA,WAAA,CACY,QAAoB,EAAU,SAAoB,EAC9B,OAAmC,EAAA;QADvD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAY;QAAU,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QAC9B,IAAO,CAAA,OAAA,GAAP,OAAO,CAA4B;QACjE,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;KAC5D;AAED;;;;AAIG;IACH,IACI,OAAO,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI;YAAE,OAAO;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,gBAAgB,CAACD,mBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC7C;AAED;;;;AAIG;IACH,IACI,KAAK,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC/D;;AAGD,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;KACzE;;IAGD,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7C,SAAA;KACF;;sHAjDU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0GAAd,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,SAAS;mBAAC,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAA;;0BAWxB,QAAQ;;0BAAI,IAAI;4CAUjB,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,SAAS,CAAA;gBAcZ,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,OAAO,CAAA;;;AC/LhB,MAAM,8BAA8B,GAAa;AAC/C,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kCAAkC,CAAC;AACjE,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,SAAS,iBAAiB,CAAC,EAAU,EAAE,KAAU,EAAA;IAC/C,IAAI,EAAE,IAAI,IAAI;QAAE,OAAO,CAAA,EAAG,KAAK,CAAA,CAAE,CAAC;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG,CAAC;AACpD,IAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,KAAK,GAAG,QAAQ,CAAC;AACzD,IAAA,OAAO,CAAG,EAAA,EAAE,CAAK,EAAA,EAAA,KAAK,CAAE,CAAA,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,UAAU,CAAC,WAAmB,EAAA;IACrC,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAQD;AACA,MAAe,cAAc,CAAA;AAI5B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCG;AAOG,MAAO,kCAAmC,SAAQ,2BAA2B,CAAA;AANnF,IAAA,WAAA,GAAA;;;AAeE,QAAA,IAAA,CAAA,UAAU,GAAyC,IAAI,GAAG,EAAmC,CAAC;;QAG9F,IAAU,CAAA,UAAA,GAAW,CAAC,CAAC;AAiBf,QAAA,IAAA,CAAA,YAAY,GAAkC,MAAM,CAAC,EAAE,CAAC;AA8EjE,KAAA;AA7FC;;;;AAIG;IACH,IACI,WAAW,CAAC,EAAiC,EAAA;AAC/C,QAAA,IAAI,OAAO,EAAE,KAAK,UAAU,KAAK,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,EAAE;AAC/E,YAAA,MAAM,IAAIT,aAAY,CAElB,IAAA,8CAAA,CAAA,6CAAA,EAAgD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAE,CAAA,CAAC,CAAC;AAC3E,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;KACxB;AAID;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,yBAAyE,CAAC;AAC9E,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;AAExB,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,YAAA,yBAAyB,GAAG,CAAC,GAAG,EAAE,CAAC,KAAI;AACrC,gBAAA,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnD,aAAC,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,yBAAyB,GAAG,CAAC,GAAG,EAAE,CAAC,KAAI;AACrC,gBAAA,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1B,aAAC,CAAC;AACH,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;KACpD;AAED;;;;AAIG;AACM,IAAA,gBAAgB,CAAC,EAAuB,EAAA;AAC/C,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,OAA0B,KAAI;YAC7C,MAAM,QAAQ,GAAe,EAAE,CAAC;AAChC,YAAA,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;YAChD,IAAI,eAAe,KAAK,SAAS,EAAE;gBACjC,MAAM,OAAO,GAAG,eAAe,CAAC;AAChC,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,oBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACvB,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5C,oBAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpB,iBAAA;AACF,aAAA;;;;AAII,iBAAA;AACH,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAChC,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,oBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACvB,IAAI,GAAG,CAAC,QAAQ,EAAE;wBAChB,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5C,wBAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpB,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;YACtB,EAAE,CAAC,QAAQ,CAAC,CAAC;AACf,SAAC,CAAC;KACH;;AAGD,IAAA,eAAe,CAAC,KAA8B,EAAA;QAC5C,MAAM,EAAE,GAAW,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/B,QAAA,OAAO,EAAE,CAAC;KACX;;AAGD,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE;AACnD,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,MAAM,EAAE,KAAK,CAAC;AAAE,gBAAA,OAAO,EAAE,CAAC;AAC1E,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;AAGD,IAAA,eAAe,CAAC,WAAmB,EAAA;AACjC,QAAA,MAAM,EAAE,GAAW,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,MAAM,GAAG,WAAW,CAAC;KAChF;;0IA1GU,kCAAkC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8HAAlC,kCAAkC,EAAA,QAAA,EAAA,2FAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAFlC,CAAC,8BAA8B,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAEhC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAN9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EACJ,2FAA2F;oBAC/F,IAAI,EAAE,EAAC,UAAU,EAAE,yBAAyB,EAAE,QAAQ,EAAE,aAAa,EAAC;oBACtE,SAAS,EAAE,CAAC,8BAA8B,CAAC;AAC5C,iBAAA,CAAA;8BAqBK,WAAW,EAAA,CAAA;sBADd,KAAK;;AA0FR;;;;;;;;;AASG;MAEU,uBAAuB,CAAA;AAMlC,IAAA,WAAA,CACY,QAAoB,EAAU,SAAoB,EAC9B,OAA2C,EAAA;QAD/D,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAY;QAAU,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QAC9B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAoC;QACzE,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC9C,SAAA;KACF;AAED;;;;AAIG;IACH,IACI,OAAO,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI;YAAE,OAAO;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC7C;AAED;;;;AAIG;IACH,IACI,KAAK,CAAC,KAAU,EAAA;QAClB,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7C,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC9B,SAAA;KACF;;AAGD,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;KACzE;;AAGD,IAAA,YAAY,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;KAC/E;;IAGD,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7C,SAAA;KACF;;+HA3DU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,kCAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mHAAvB,uBAAuB,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,SAAS;mBAAC,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAA;;0BASxB,QAAQ;;0BAAI,IAAI;4CAYjB,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,SAAS,CAAA;gBAcZ,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,OAAO,CAAA;;;AC/NhB;;;;;AAKG;AACH,SAAS,SAAS,CAAC,KAAoB,EAAA;AACrC,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;;;;AAKG;AACH,SAAS,OAAO,CAAC,KAAoB,EAAA;AACnC,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AA0DD;;;;;AAKG;AACH,MACe,0BAA0B,CAAA;AADzC,IAAA,WAAA,GAAA;QAEU,IAAU,CAAA,UAAA,GAAgB,aAAa,CAAC;AAuEjD,KAAA;;AA/BC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,EAAE;AAC7B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;YACxE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC;YAC9E,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,aAAA;AACF,SAAA;KACF;;AAGD,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;KACjC;;AAGD,IAAA,yBAAyB,CAAC,EAAc,EAAA;AACtC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED;;;;;;AAMG;AACH,IAAA,OAAO,CAAC,KAAc,EAAA;AACpB,QAAA,OAAO,KAAK,IAAI,IAAI,mCAAmC;KACxD;;kIAvEY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAA1B,0BAA0B,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;;AA2EV;;;AAGG;AACI,MAAM,aAAa,GAAa;AACrC,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,YAAY,CAAC;AAC3C,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;AAoBG;AAOG,MAAO,YAAa,SAAQ,0BAA0B,CAAA;AAN5D,IAAA,WAAA,GAAA;;;QAaW,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;;QAElB,IAAc,CAAA,cAAA,GAAG,CAAC,KAAoB,KAAa,OAAO,CAAC,KAAK,CAAC,CAAC;;QAElE,IAAe,CAAA,eAAA,GAAG,CAAC,GAAW,KAAkB,YAAY,CAAC,GAAG,CAAC,CAAC;AAC5E,KAAA;;oHAZY,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAZ,YAAY,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,SAAA,EAHZ,CAAC,aAAa,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAGf,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EACJ,gHAAgH;oBACpH,SAAS,EAAE,CAAC,aAAa,CAAC;AAC1B,oBAAA,IAAI,EAAE,EAAC,YAAY,EAAE,uBAAuB,EAAC;AAC9C,iBAAA,CAAA;8BAMU,GAAG,EAAA,CAAA;sBAAX,KAAK;;AASR;;;AAGG;AACI,MAAM,aAAa,GAAa;AACrC,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,YAAY,CAAC;AAC3C,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;AAoBG;AAOG,MAAO,YAAa,SAAQ,0BAA0B,CAAA;AAN5D,IAAA,WAAA,GAAA;;;QAaW,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;;QAElB,IAAc,CAAA,cAAA,GAAG,CAAC,KAAoB,KAAa,OAAO,CAAC,KAAK,CAAC,CAAC;;QAElE,IAAe,CAAA,eAAA,GAAG,CAAC,GAAW,KAAkB,YAAY,CAAC,GAAG,CAAC,CAAC;AAC5E,KAAA;;oHAZY,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAZ,YAAY,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,SAAA,EAHZ,CAAC,aAAa,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAGf,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EACJ,gHAAgH;oBACpH,SAAS,EAAE,CAAC,aAAa,CAAC;AAC1B,oBAAA,IAAI,EAAE,EAAC,YAAY,EAAE,uBAAuB,EAAC;AAC9C,iBAAA,CAAA;8BAMU,GAAG,EAAA,CAAA;sBAAX,KAAK;;AAmDR;;;AAGG;AACI,MAAM,kBAAkB,GAAa;AAC1C,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF;;;AAGG;AACI,MAAM,2BAA2B,GAAa;AACnD,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAGF;;;;;;;;;;;;;;;;;;AAkBG;AAOG,MAAO,iBAAkB,SAAQ,0BAA0B,CAAA;AANjE,IAAA,WAAA,GAAA;;;QAcW,IAAS,CAAA,SAAA,GAAG,UAAU,CAAC;;QAGvB,IAAc,CAAA,cAAA,GAAGQ,gBAAe,CAAC;;AAGjC,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,KAAc,KAAkB,iBAAiB,CAAC;AAM/E,KAAA;;AAHU,IAAA,OAAO,CAAC,KAAc,EAAA;AAC7B,QAAA,OAAO,KAAK,CAAC;KACd;;yHAnBU,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;6GAAjB,iBAAiB,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,SAAA,EAHjB,CAAC,kBAAkB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAGpB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EACJ,wIAAwI;oBAC5I,SAAS,EAAE,CAAC,kBAAkB,CAAC;AAC/B,oBAAA,IAAI,EAAE,EAAC,iBAAiB,EAAE,sBAAsB,EAAC;AAClD,iBAAA,CAAA;8BAMU,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;AAkBR;;;;;;;;;;;;;;;;;;;;AAoBG;AAOG,MAAO,yBAA0B,SAAQ,iBAAiB,CAAA;AANhE,IAAA,WAAA,GAAA;;;AAQW,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,KAAc,KAAkB,qBAAqB,CAAC;AACnF,KAAA;;iIAHY,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAAzB,yBAAyB,EAAA,QAAA,EAAA,qIAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,SAAA,EAHzB,CAAC,2BAA2B,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAG7B,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EACJ,qIAAqI;oBACzI,SAAS,EAAE,CAAC,2BAA2B,CAAC;AACxC,oBAAA,IAAI,EAAE,EAAC,iBAAiB,EAAE,sBAAsB,EAAC;AAClD,iBAAA,CAAA;;AAMD;;;AAGG;AACI,MAAM,eAAe,GAAQ;AAClC,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;AAKG,MAAO,cAAe,SAAQ,0BAA0B,CAAA;AAJ9D,IAAA,WAAA,GAAA;;;QAYW,IAAS,CAAA,SAAA,GAAG,OAAO,CAAC;;QAGpB,IAAc,CAAA,cAAA,GAAGA,gBAAe,CAAC;;AAGjC,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,KAAa,KAAkB,cAAc,CAAC;AAM3E,KAAA;;AAHU,IAAA,OAAO,CAAC,KAAc,EAAA;AAC7B,QAAA,OAAO,KAAK,CAAC;KACd;;sHAnBU,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0GAAd,cAAc,EAAA,QAAA,EAAA,gEAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAFd,CAAC,eAAe,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAEjB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gEAAgE;oBAC1E,SAAS,EAAE,CAAC,eAAe,CAAC;AAC7B,iBAAA,CAAA;8BAMU,KAAK,EAAA,CAAA;sBAAb,KAAK;;AAuCR;;;AAGG;AACI,MAAM,oBAAoB,GAAQ;AACvC,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACjD,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;AAoBG;AAMG,MAAO,kBAAmB,SAAQ,0BAA0B,CAAA;AALlE,IAAA,WAAA,GAAA;;;QAaW,IAAS,CAAA,SAAA,GAAG,WAAW,CAAC;;QAGxB,IAAc,CAAA,cAAA,GAAG,CAAC,KAAoB,KAAa,SAAS,CAAC,KAAK,CAAC,CAAC;;QAGpE,IAAe,CAAA,eAAA,GAAG,CAAC,SAAiB,KAAkB,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC9F,KAAA;;0HAfY,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8GAAlB,kBAAkB,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,SAAA,EAHlB,CAAC,oBAAoB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAGtB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4EAA4E;oBACtF,SAAS,EAAE,CAAC,oBAAoB,CAAC;AACjC,oBAAA,IAAI,EAAE,EAAC,kBAAkB,EAAE,6BAA6B,EAAC;AAC1D,iBAAA,CAAA;8BAMU,SAAS,EAAA,CAAA;sBAAjB,KAAK;;AAYR;;;AAGG;AACI,MAAM,oBAAoB,GAAQ;AACvC,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACjD,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;AAoBG;AAMG,MAAO,kBAAmB,SAAQ,0BAA0B,CAAA;AALlE,IAAA,WAAA,GAAA;;;QAaW,IAAS,CAAA,SAAA,GAAG,WAAW,CAAC;;QAGxB,IAAc,CAAA,cAAA,GAAG,CAAC,KAAoB,KAAa,SAAS,CAAC,KAAK,CAAC,CAAC;;QAGpE,IAAe,CAAA,eAAA,GAAG,CAAC,SAAiB,KAAkB,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC9F,KAAA;;0HAfY,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8GAAlB,kBAAkB,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,SAAA,EAHlB,CAAC,oBAAoB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAGtB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4EAA4E;oBACtF,SAAS,EAAE,CAAC,oBAAoB,CAAC;AACjC,oBAAA,IAAI,EAAE,EAAC,kBAAkB,EAAE,6BAA6B,EAAC;AAC1D,iBAAA,CAAA;8BAMU,SAAS,EAAA,CAAA;sBAAjB,KAAK;;AAYR;;;AAGG;AACI,MAAM,iBAAiB,GAAQ;AACpC,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAC/C,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAGF;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAMG,MAAO,gBAAiB,SAAQ,0BAA0B,CAAA;AALhE,IAAA,WAAA,GAAA;;;QAcW,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;;AAGtB,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,KAAoB,KAAoB,KAAK,CAAC;;QAGhE,IAAe,CAAA,eAAA,GAAG,CAAC,KAAoB,KAAkB,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC3F,KAAA;;wHAhBY,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4GAAhB,gBAAgB,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,SAAA,EAHhB,CAAC,iBAAiB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;sGAGnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sEAAsE;oBAChF,SAAS,EAAE,CAAC,iBAAiB,CAAC;AAC9B,oBAAA,IAAI,EAAE,EAAC,gBAAgB,EAAE,2BAA2B,EAAC;AACtD,iBAAA,CAAA;8BAOC,OAAO,EAAA,CAAA;sBADN,KAAK;;;AC5lBD,MAAM,sBAAsB,GAAgB;IACjDG,aAAY;IACZ,cAAc;IACdC,uBAAsB;IACtB,oBAAoB;IACpB,mBAAmB;IACnB,kBAAkB;IAClB,4BAA4B;IAC5B,0BAA0B;IAC1B,kCAAkC;IAClC,yBAAyB;IACzB,eAAe;IACf,oBAAoB;IACpB,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,gBAAgB;IAChB,yBAAyB;IACzB,cAAc;IACd,YAAY;IACZ,YAAY;CACb,CAAC;AAEK,MAAM,0BAA0B,GAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AAEhF,MAAM,0BAA0B,GACnC,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AAE9F;;AAEG;MAMU,0BAA0B,CAAA;;kIAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,iBAnCrCD,aAAY;QACZ,cAAc;QACdC,uBAAsB;QACtB,oBAAoB;QACpB,mBAAmB;QACnB,kBAAkB;QAClB,4BAA4B;QAC5B,0BAA0B;QAC1B,kCAAkC;QAClC,yBAAyB;QACzB,eAAe;QACf,oBAAoB;QACpB,iBAAiB;QACjB,kBAAkB;QAClB,kBAAkB;QAClB,gBAAgB;QAChB,yBAAyB;QACzB,cAAc;QACd,YAAY;QACZ,YAAY,CAAA,EAAA,OAAA,EAAA,CAaF,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAhCpCD,aAAY;QACZ,cAAc;QACdC,uBAAsB;QACtB,oBAAoB;QACpB,mBAAmB;QACnB,kBAAkB;QAClB,4BAA4B;QAC5B,0BAA0B;QAC1B,kCAAkC;QAClC,yBAAyB;QACzB,eAAe;QACf,oBAAoB;QACpB,iBAAiB;QACjB,kBAAkB;QAClB,kBAAkB;QAClB,gBAAgB;QAChB,yBAAyB;QACzB,cAAc;QACd,YAAY;QACZ,YAAY,CAAA,EAAA,CAAA,CAAA;AAgBD,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YAH3B,0BAA0B,CAAA,EAAA,CAAA,CAAA;sGAGzB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,sBAAsB;oBACpC,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACrC,oBAAA,OAAO,EAAE,sBAAsB;AAChC,iBAAA,CAAA;;;ACnDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEG;AACG,MAAO,SAAuD,SAAQ,eAEX,CAAA;AAC/D;;;;;;;;;;;;AAYG;AACH,IAAA,WAAA,CACI,QAAyB,EACzB,eAAuE,EACvE,cAAyD,EAAA;AAC3D,QAAA,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,mBAAmB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;AAC7F,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACzC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,sBAAsB,CAAC;AAC1B,YAAA,QAAQ,EAAE,IAAI;;;;;AAKd,YAAA,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc;AACjC,SAAA,CAAC,CAAC;KACJ;AAID;;;;;;AAMG;AACH,IAAA,EAAE,CAAC,KAAa,EAAA;QACd,OAAQ,IAAI,CAAC,QAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;KACzD;AAED;;;;;;;;;AASG;AACH,IAAA,IAAI,CAAC,OAAiB,EAAE,OAAA,GAAiC,EAAE,EAAA;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AAED;;;;;;;;;;;;AAYG;AACH,IAAA,MAAM,CAAC,KAAa,EAAE,OAAiB,EAAE,UAAiC,EAAE,EAAA;QAC1E,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AAExC,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC;KAC7D;AAED;;;;;;;;;;;AAWG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAE,OAAA,GAAiC,EAAE,EAAA;;QAEzD,IAAI,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,aAAa,GAAG,CAAC;YAAE,aAAa,GAAG,CAAC,CAAC;AAEzC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,2BAA2B,CAAC,MAAO,GAAC,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC;KAC7D;AAED;;;;;;;;;;;;AAYG;AACH,IAAA,UAAU,CAAC,KAAa,EAAE,OAAiB,EAAE,UAAiC,EAAE,EAAA;;QAE9E,IAAI,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,aAAa,GAAG,CAAC;YAAE,aAAa,GAAG,CAAC,CAAC;AAEzC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,2BAA2B,CAAC,MAAO,GAAC,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AAEvC,QAAA,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAChC,SAAA;QAED,IAAI,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AAED;;AAEG;AACH,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;KAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCG;AACM,IAAA,QAAQ,CAAC,KAAmC,EAAE,OAAA,GAGnD,EAAE,EAAA;AACJ,QAAA,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC,QAAa,EAAE,KAAa,KAAI;AAC7C,YAAA,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC;AACpF,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;KACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BG;AACM,IAAA,UAAU,CAAC,KAAgC,EAAE,OAAA,GAGlD,EAAE,EAAA;;;;;AAKJ,QAAA,IAAI,KAAK,IAAI,IAAI;YAAoC,OAAO;QAE5D,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAI;AAChC,YAAA,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;gBAClB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC;AACrF,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;KACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CG;AACM,IAAA,KAAK,CAAC,KAAA,GAAmE,EAAE,EAAE,UAGlF,EAAE,EAAA;QACJ,IAAI,CAAC,aAAa,CAAC,CAAC,OAAwB,EAAE,KAAa,KAAI;YAC7D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC;AAC9E,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;KACtC;AAED;;;;AAIG;IACM,WAAW,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAwB,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;KAC/E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCG;IACH,KAAK,CAAC,UAAiC,EAAE,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;AACrC,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,2BAA2B,CAAC,SAAQ,CAAC,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC;KAC7D;AAED;;;;AAIG;AACK,IAAA,YAAY,CAAC,KAAa,EAAA;AAChC,QAAA,OAAO,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KAChD;;IAGQ,oBAAoB,GAAA;AAC3B,QAAA,IAAI,cAAc,GAAI,IAAI,CAAC,QAAgB,CAAC,MAAM,CAAC,CAAC,OAAY,EAAE,KAAU,KAAI;AAC9E,YAAA,OAAO,KAAK,CAAC,oBAAoB,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC;SACtD,EAAE,KAAK,CAAC,CAAC;AACV,QAAA,IAAI,cAAc;YAAE,IAAI,CAAC,sBAAsB,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAClE,QAAA,OAAO,cAAc,CAAC;KACvB;;AAGQ,IAAA,aAAa,CAAC,EAA+C,EAAA;QACpE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAwB,EAAE,KAAa,KAAI;AAChE,YAAA,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACrB,SAAC,CAAC,CAAC;KACJ;;IAGQ,YAAY,GAAA;AAClB,QAAA,IAAqB,CAAC,KAAK;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC;iBAC9D,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;KAC1C;;AAGQ,IAAA,YAAY,CAAC,SAA0C,EAAA;QAC9D,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;KAC/E;;IAGD,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;KACjE;;IAGQ,oBAAoB,GAAA;AAC3B,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnC,IAAI,OAAO,CAAC,OAAO;AAAE,gBAAA,OAAO,KAAK,CAAC;AACnC,SAAA;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;KAClD;AAEO,IAAA,gBAAgB,CAAC,OAAwB,EAAA;AAC/C,QAAA,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxB,QAAA,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;KAC/D;;AAGQ,IAAA,KAAK,CAAC,IAAmB,EAAA;QAChC,OAAO,IAAI,CAAC,EAAE,CAAC,IAAc,CAAC,IAAI,IAAI,CAAC;KACxC;AACF,CAAA;AAoBM,MAAM,gBAAgB,GAAyB,UAAU;AAEhE;;;;;AAKG;AACI,MAAM,WAAW,GAAG,CAAC,OAAgB,KAA2B,OAAO,YAAY;;AC1gB1F,SAAS,wBAAwB,CAAC,OACS,EAAA;IACzC,OAAO,CAAC,CAAC,OAAO;AACZ,SAAE,OAAkC,CAAC,eAAe,KAAK,SAAS;YAChE,OAAkC,CAAC,UAAU,KAAK,SAAS;AAC3D,YAAA,OAAkC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;AACnE,CAAC;AAwED;AAEA;;;;;;;;;;;AAWG;MAEU,WAAW,CAAA;AADxB,IAAA,WAAA,GAAA;QAEU,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;AA2PzC,KAAA;AAzPC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCG;AACH,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,QAAA,OAAO,IAA8B,CAAC;KACvC;AAkDD,IAAA,KAAK,CAAC,QAA8B,EAAE,OAAA,GACiD,IAAI,EAAA;QAEzF,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,UAAU,GAAuB,EAAE,CAAC;AACxC,QAAA,IAAI,wBAAwB,CAAC,OAAO,CAAC,EAAE;;YAErC,UAAU,GAAG,OAAO,CAAC;AACtB,SAAA;aAAM,IAAI,OAAO,KAAK,IAAI,EAAE;;AAE3B,YAAA,UAAU,CAAC,UAAU,GAAI,OAAe,CAAC,SAAS,CAAC;AACnD,YAAA,UAAU,CAAC,eAAe,GAAI,OAAe,CAAC,cAAc,CAAC;AAC9D,SAAA;AACD,QAAA,OAAO,IAAI,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;KACnD;AAED;;;;;;;;;;;;;;AAcG;AACH,IAAA,MAAM,CAAI,QAA4B,EAAE,OAAA,GAAuC,IAAI,EAAA;QAEjF,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;;AAEvD,QAAA,OAAO,IAAI,UAAU,CAAC,eAAe,EAAE,OAAO,CAAQ,CAAC;KACxD;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACH,IAAA,OAAO,CACH,SAAgC,EAChC,eAAmE,EACnE,cAAyD,EAAA;QAC3D,IAAI,UAAU,GAAuB,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO,IAAI,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;AACpE,SAAA;AACD,QAAA,IAAI,wBAAwB,CAAC,eAAe,CAAC,EAAE;;YAE7C,UAAU,GAAG,eAAe,CAAC;AAC9B,SAAA;AAAM,aAAA;;AAEL,YAAA,UAAU,CAAC,UAAU,GAAG,eAAe,CAAC;AACxC,YAAA,UAAU,CAAC,eAAe,GAAG,cAAc,CAAC;AAC7C,SAAA;AACD,QAAA,OAAO,IAAI,WAAW,CAAI,SAAS,EAAE,EAAC,GAAG,UAAU,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC,CAAC;KAC1E;AAED;;;;;;;;;;;;;AAaG;AACH,IAAA,KAAK,CACD,QAAkB,EAAE,eAAuE,EAC3F,cAAyD,EAAA;AAC3D,QAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;;QAElE,OAAO,IAAI,SAAS,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,CAAQ,CAAC;KAC/E;;AAGD,IAAA,eAAe,CAAI,QAC4E,EAAA;QAE7F,MAAM,eAAe,GAAqC,EAAE,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,WAAW,IAAG;AAC1C,YAAA,eAAe,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5E,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,eAAe,CAAC;KACxB;;AAGD,IAAA,cAAc,CAAI,QACkB,EAAA;QAClC,IAAI,QAAQ,YAAY,WAAW,EAAE;AACnC,YAAA,OAAO,QAA0B,CAAC;AACnC,SAAA;AAAM,aAAA,IAAI,QAAQ,YAAY,eAAe,EAAE;AAC9C,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAA;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAClC,YAAA,MAAM,KAAK,GAA0B,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjD,YAAA,MAAM,SAAS,GAAmC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC;AAC5F,YAAA,MAAM,cAAc,GAChB,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC;YAC9C,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AAC1D,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,CAAC,CAAC;AAClC,SAAA;KACF;;mHA3PU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cADC,MAAM,EAAA,CAAA,CAAA;sGAClB,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;AA+PhC;;;;;;AAMG;MAKmB,sBAAsB,CAAA;;8HAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kIAAtB,sBAAsB,EAAA,UAAA,EAH9B,MAAM,EAAA,UAAA,EACN,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAA,CAAA,CAAA;sGAE7B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJ3C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;oBAClB,UAAU,EAAE,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW;AAClD,iBAAA,CAAA;;AAyCD;;AAEG;AAEG,MAAO,kBAAmB,SAAQ,WAAW,CAAA;AAkBxC,IAAA,KAAK,CACV,cAAoC,EACpC,OAAA,GAA4D,IAAI,EAAA;QAClE,OAAO,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;KAC7C;AAED;;AAEG;AACM,IAAA,OAAO,CACZ,SAAc,EAAE,eAAmE,EACnF,cAAyD,EAAA;QAC3D,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;KAClE;AAED;;AAEG;AACM,IAAA,KAAK,CACV,cAAqB,EACrB,eAAuE,EACvE,cAAyD,EAAA;QAC3D,OAAO,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;KACrE;;0HAzCU,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADN,MAAM,EAAA,CAAA,CAAA;sGAClB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;;ACzZhC;;;;AAIG;AAIH;;AAEG;MACU,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB;;ACNtD;;;;;;;;;;;AAWG;MAKU,WAAW,CAAA;AACtB;;;;;;;AAOG;IACH,OAAO,UAAU,CAAC,IAEjB,EAAA;QACC,OAAO;AACL,YAAA,QAAQ,EAAE,WAAW;AACrB,YAAA,SAAS,EAAE,CAAC;AACV,oBAAA,OAAO,EAAE,uBAAuB;AAChC,oBAAA,QAAQ,EAAE,IAAI,CAAC,oBAAoB,IAAI,uBAAuB;iBAC/D,CAAC;SACH,CAAC;KACH;;mHAnBU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,2DAFZC,0BAAyB,EAAAC,OAAA,EAAAC,YAAA,EAAAC,MAAA,CAAA,EAAA,CAAA,CAAA;AAExB,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAFZH,0BAAyB,CAAA,EAAA,CAAA,CAAA;sGAExB,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,0BAA0B;AACxC,oBAAA,OAAO,EAAE,CAACA,0BAAyB,EAAE,0BAA0B,CAAC;AACjE,iBAAA,CAAA;;AAuBD;;;;;;;;;;;;AAYG;MAKU,mBAAmB,CAAA;AAC9B;;;;;;;;;AASG;IACH,OAAO,UAAU,CAAC,IAIC,EAAA;QACjB,OAAO;AACL,YAAA,QAAQ,EAAE,mBAAmB;AAC7B,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,kCAAkC;AAC3C,oBAAA,QAAQ,EAAE,IAAI,CAAC,4BAA4B,IAAI,QAAQ;AACxD,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,uBAAuB;AAChC,oBAAA,QAAQ,EAAE,IAAI,CAAC,oBAAoB,IAAI,uBAAuB;AAC/D,iBAAA;AACF,aAAA;SACF,CAAC;KACH;;2HA7BU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,qHAFpBA,0BAAyB,EAAAI,oBAAA,EAAAC,kBAAA,EAAAC,eAAA,EAAAC,aAAA,EAAAC,aAAA,CAAA,EAAA,CAAA,CAAA;AAExB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAFpBR,0BAAyB,CAAA,EAAA,CAAA,CAAA;sGAExB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,0BAA0B,CAAC;AAC1C,oBAAA,OAAO,EAAE,CAACA,0BAAyB,EAAE,0BAA0B,CAAC;AACjE,iBAAA,CAAA;;;AC3DD;;;;;;;;;AASG;;ACTH;;;;AAIG;AAGH;;ACPA;;ACRA;;AAEG;;;;"}
-------------------- SECTION 239 --------------------
    Use of this source code is governed by an MIT-style license that
    can be found in the LICENSE file at http://angular.io/license`;
	
	
	
======================================================================

To the extent any open source components are licensed under the GPL
and/or LGPL, or other similar licenses that require the source code
and/or modifications to source code to be made available (as would be
noted above), you may obtain a copy of the source code corresponding to
the binaries for such open source components and modifications thereto,
if any, (the "Source Files"), by downloading the Source Files from
VMware's website at http://www.vmware.com/download/open_source.html, or
by sending a request, with your name and address to: VMware, Inc., 3401
Hillview Avenue, Palo Alto, CA 94304, United States of America. All such
requests should clearly specify: OPEN SOURCE FILES REQUEST, Attention
General Counsel. VMware shall mail a copy of the Source Files to you on
a CD or equivalent physical medium. This offer to obtain a copy of the
Source Files is valid for three years from the date you acquired this
Software product. Alternatively, the Source Files may accompany the
VMware service.

[VCDUIEMULATOR1502GAVS092123]